【问题标题】:Euclidean distance between two vectors (single row matrix)两个向量之间的欧几里得距离(单行矩阵)
【发布时间】:2012-11-13 20:53:24
【问题描述】:

我有两个向量(单行矩阵)。假设我们已经知道len的长度。

A = [ x1 x2 x3 x4 x5 .... ]
B = [ y1 y2 y3 y4 y5 .... ]

要计算它们之间的欧几里得距离,最快的方法是什么。我的第一次尝试是:

diff = A - B
sum = 0
for column = 1:len
    sum += diff(1, column)^2
distance = sqrt(sum)

我已经循环使用这种方法数百万次。所以,我正在寻找快速且正确的东西。请注意,我没有使用 MATLAB,也没有可用的 pdist2 API。

【问题讨论】:

    标签: matlab octave


    【解决方案1】:
    diff = A - B;
    distance = sqrt(diff * diff');
    

    或

    distance = norm(A - B);
    

    【讨论】:

      【解决方案2】:
      [val idx]    =  sort(sum(abs(Ti-Qi)./(1+Ti+Qi)));   
      

      或

      [val idx]    =  sort(sqrt(sum((Ti-Qi).^2))); 
      

      Val 是值,idx 是应用欧几里得距离后被排序的列的原始索引值。 (Matlab代码)

      【讨论】:

        【解决方案3】:

        要添加到@kol 答案,

        diff = A - B;
        distance = sqrt(sum(diff * diff')) % sum of squared diff
        

        或

        distance = norm(A-B);
        

        【讨论】:

          猜你喜欢
          • 2014-06-08
          • 1970-01-01
          • 1970-01-01
          • 2014-05-31
          • 2018-06-14
          • 1970-01-01
          • 2014-11-12
          • 1970-01-01
          • 2014-08-15
          相关资源
          最近更新 更多