2012-02-16 175 views
13

有不同的方法来计算相同长度的两个向量之间的距离:欧几里得,曼哈顿,海明...计算距离

我想了解一下,将计算出的距离的任何方法不同长度的矢量。

+0

你的载体包含什么? (位,浮游物,...)?你不能用0填充它们并应用相同长度的矢量距离吗? – Scharron 2012-02-16 16:32:18

+0

@Scharron,我认为你把矢量的维数与矢量的长度(常数)混淆了。 OP没有提及任何一个矢量中的组件数量与另一个矢量中的组件数量不同的地方。 – ardnew 2012-02-16 20:06:07

+3

@ardnew你是纯粹的数学。但是,这个问题的表达方式,我认为他谈到了“计算机科学”的长度,这意味着矢量元素的数量。否则,他不会计算不同长度向量的距离。 – Scharron 2012-02-17 09:26:19

回答

6

欧几里得距离公式找出欧几里得空间中任意两点之间的距离。

欧几里德空间中的点也称为欧几里德向量。

您可以使用欧几里得距离公式来计算两个不同长度的向量之间的距离。

对于不同维数的载体,适用相同的原理。

假设较低维度的向量也存在于较高维空间中。然后可以将低维向量中的所有缺失分量设置为0,以便两个向量具有相同的维度。然后,您将使用任何提及的距离公式来计算距离。

例如,考虑一个2维向量A与部件(a1,a2),和一个3维向量在B与部件(b1,b2,b3)

要在中表示A,您需要将其组件设置为(a1,a2,0)。然后,AB之间的欧几里得距离d可以使用下面的公式可以找到:

d² = (b1 - a1)² + (b2 - a2)² + (b3 - 0)² 

d = sqrt((b1 - a1)² + (b2 - a2)² + b3²) 

为您的特定情况下,组分将或者01,所以所有差异将被-10,或1。平方差将仅为01

如果您使用的整数或指定位来表示的组件,你可以用它代替一些简单的算术位操作(^意味着XORexclusive or):

d = sqrt(b1^a1 + b2^a2 + ... + b(n-1)^a(n-1) + b(n)^a(n)) 

而且我们假设尾随的A组分0,所以最终公式将是:

d = sqrt(b1^a1 + b2^a2 + ... + b(n-1) + b(n)) 
+0

在开始时,它是有道理的。但是现在,经过一段时间的思考,如果使用欧几里德计算定位的指纹匹配,将丢失的维度的缺失值设置为零可能会导致问题。在你的例子中...假设向量A包含(0,0),vektor B包含(0,0,0)并且Vektor C包含(0,0,0),那么对于两个距离,欧几里得都会导致零距离计算。但是A比C更远离B。 – JacksOnF1re 2014-04-30 21:51:05

+0

@ JacksOnF1re我不知道我关注。在你的例子中,为什么从A到B的距离不同于从B到C的距离? – ardnew 2014-04-30 23:21:13

+0

我的解释有点不好。我的意思是,如果你用欧几里德计算距离,A和B之间的距离与B和C相同,但那就是问题! A到B应该返回更高的距离,因为缺少尺寸。这可能会导致问题(我猜),如果涉及本地化计算。数学上正确,但对编程问题有限。对不起我的英语不好。 – JacksOnF1re 2014-04-30 23:40:22

0

可以尝试计算两个向量p之间的平均最短距离以及尺寸n和m(n〜= m)的q:

d = 1/n * sum_i=1:n (min_j=1:m (p(i) - q(j))) + 1/m * sum_j=1:m (min_i=1:n (p(i) - q(j))) 
0

您不能直接计算不同长度向量之间的距离。

这里的所有建议都以一个函数将较低长度的矢量映射到较高长度的矢量,然后按正常方式进行计算。

有许多,许多功能(无限多,其实)是一个可以使用:

  • 填写了零。这是最容易做的事情。比如说,如果你有一辆汽车,并且需要计算它与飞机的距离,这就将汽车放置在海平面上。
  • 在某处查找缺失值。以汽车飞机为例,您可以启动地理数据库并从经度/纬度查找高度。
  • 使用一些数学函数。

由于距离计算的结果强烈依赖于将较短向量转换为较长的函数,因此每个人都需要清楚使用哪个函数。要么是因为字段中的每个人都认为只有一个函数有意义,或者因为转换中使用的函数被记录下来。

0

用零填充短尺寸数组以获得与长尺寸数组相同长度的想法似乎不是“通常”的正确思想。例如,如果我们在同一个参数(例如,温度,速度或二进制参数作为开/关开关的状态)上有两组测量值(不同时间点)的测量值(数组,矢量,...)瞬间。假设第一组A1由在一组时刻T1处进行的N次测量组成,而第二组A2由在一组时刻T2处取得的M次测量值(M- = N)组成。

请注意,T2的分布任意不同于T1的分布。因此,这里用零填充没有意义。

在这种情况下,我建议通过使用一组共同的时刻的使用插值,说T作为如下:

A1_new =内插(T1,A1,T);

A2_new = interpolate(T2,A2,T);

其中interpolate(x,y,xq)接受输入作为变量x,函数y(x)和查询点xq。 'interpolate'函数返回插值输出y(xq)。

现在,我们可以通过任何适当的度量比较相同大小的集合A1_new和A2_new,例如,欧几里德距离。