我的欧几里德距离计算有什么问题? (朱丽亚)

时间:2017-12-31 20:55:40

标签: julia distance euclidean-distance

我正在尝试使用三种不同的方法来计算感知重要点。

  1. 欧几里德距离;
  2. 垂直距离;
  3. 垂直距离。
  4. 方法2和3给出了相同的点,但不是欧几里德距离。找不到我犯的错误。希望有人可以帮助我。

    pt = 7.6 #pt
    _t = 1 #t
    ptT = 10.7 #p(t+T)
    _T = 253 #t+T
    
    # Distances
    dE = Float64[] #Euclidean Distances
    dP = Float64[] #Perpendicular Distances
    dV = Float64[] #Vertical Distances
    xi = Float64[] #x values
    
    for i in 2:length(stockdf[:Price])-1
    _de = sqrt((_t - i)^2 + (pt - stockdf[:Price][i])^2) + sqrt((_T - i)^2 + (ptT - stockdf[:Price][i])^2)
    push!(dE,_de)
    
    _dP = abs(_s*i+_c-stockdf[:Price][i])/sqrt(_s^2+1)
    push!(dP,_dP)
    
    _dV = abs(_s*i+_c-stockdf[:Price][i])
    push!(dV,_dV)
    
    push!(xi,i)
    end
    

    方法2和3都给出了索引为153的最大点,但方法1给出了一个点,它不是最大点,并且索引为230.

    具有欧几里德距离的第3个PIP的公式为:

    dE = sqrt((t-i)^2 + (pt-pi)^2) + sqrt((t+T-i)^2+(pt+T-pi)^2)
    

    修改 为了更好地理解,我将代码与其他变量一起复制,您可以自己测试。

    xs = Array(1:10)
    ys = rand(1:1:10,10)
    
    dde = Float64[]
    ddP = Float64[]
    ddV = Float64[]
    xxi = Float64[]
    
    # Connecting Line of first 2 PIPs
    _ss = (ys[end]-ys[1])/10
    _cc = ys[1]-(1*(ys[end]-ys[1]))/10
    _zz = Float64[]
    
    for i in 1:length(dedf[:Price])
        push!(_zz,_ss*i+_cc)
    end
    
    
    for i in 2:length(xs)-1
        _dde = sqrt((1-i)^2+(ys[1]-ys[i])) + sqrt((10-i)^2 + (ys[end]-    ys[i])^2)
        push!(dde,_dde)
    
        _ddP = abs(_ss*i+_cc-ys[i])/sqrt(_ss^2+1)
        push!(ddP,_ddP)
    
        _ddV = abs(_ss*i+_cc-ys[i])
        push!(ddV,_ddV)
    
        push!(xxi,i)
    end
    println(dde)
    
    for i in 1:length(dde)
        if ddV[i] == maximum(ddV)
            println(i)
        end
    end
    

    对于欧几里德距离我得到索引7
    对于垂直和垂直距离,我得到索引5.查看图表 Euclidean Distance on graph

    Perpendicular Distance on graph

    修改 我正在编写一本关于金融时间序列中模式识别的书。现在我下载了相同的数据,这本书使用了,现在结果是一样的。所有3种方法都给了我相同的指数。但是对于不同的数据集,方法1与2和3不同。我不知道为什么。

0 个答案:

没有答案