如何计算两个向量上的归一化欧氏距离?

时间:2016-07-02 14:10:48

标签: matlab euclidean-distance

假设我有以下两个向量:

x = [(10-1).*rand(7,1) + 1; randi(10,1,1)];
y = [(10-1).*rand(7,1) + 1; randi(10,1,1)];

前七个元素是[1,10]范围内的连续值。最后一个元素是[1,10]范围内的整数。

现在我想计算x和y之间的欧氏距离。我认为整数元素是一个问题,因为所有其他元素可以非常接近,但整数元素总是间距为1。因此存在对整数元素的偏见。

如何计算欧几里德距离标准化的东西呢?

3 个答案:

答案 0 :(得分:3)

根据Wolfram Alphathe following answer from cross validated,归一化的Eucledean距离定义如下:

enter image description here

您可以使用MATLAB计算它:

0.5*(std(x-y)^2) / (std(x)^2+std(y)^2)

或者,您可以使用:

0.5*((norm((x-mean(x))-(y-mean(y)))^2)/(norm(x-mean(x))^2+norm(y-mean(y))^2))

答案 1 :(得分:1)

我宁愿在计算距离之前将x和y标准化,然后香草欧几里德就足够了。

在你的例子中

x_norm = (x -1) / 9;          % normalised x
y_norm = (y -1) / 9;          % normalised y
dist = norm(x_norm - y_norm); % Euclidean distance between normalised x, y

但是,我不确定是否有一个整数元素会导致某种偏见,但我们已经得到了一些关于堆栈溢出的偏离主题:)

答案 2 :(得分:0)

来自Euclidean Distance - raw, normalized and double‐scaled coefficients

  

SYSTAT Primer 5 SPSS 提供了数据的归一化选项,以允许研究者计算距离   基本上是“无标度”的系数。 Systat 10.2   归一化的欧几里得距离通过除法产生其“归一化”   属性或人员之间的每个平方差,按总数   差异平方(或样本量)。

normalised Euclidean distance

  

坦率地说,我看不到这种标准化的意义-最后   系数仍然对比例敏感。也就是说,这是不可能的   知道该值表明与   仅系数值