在订单相关时匹配两个向量的好方法

时间:2015-10-06 14:27:53

标签: matlab vector match nearest-neighbor

我有两个包含坐标的矢量(v1,v2)。从理论上讲,这些向量应具有相同的长度和匹配对(v1(1)~v2(1), ... v1(n)~v2(n))。然而,实际上,有时在任一矢量中都缺少数据点。所以我可以在v1中跳过3行,或者在v2中跳过1行,等等。如果我们使用了'匹配中v2(20),下一个可能的索引大于20。

如何找到两者的正确匹配?

我考虑过计算距离(因为坐标应该大致相等)......但我不确定如何确定最佳匹配。 这种做法对我来说似乎并不太优雅。任何优雅的建议? 我尝试了k-最近邻居,这只是部分原因,因为对顺序没有限制,我的载体中有重复。

我使用MATLAB,或许已经存在一个有用的功能?

v1                 v2
   0   100 (a)         100  -50
 150  -220 (b)        -10    90 (a)
-280  -200 (c)        -20    100
-330   330             160  -200 (b)
 300   220 (d)        -240  -200 (c)
 350   400 (e)         320   250 (d)
-100  -300 (f)         320   250
-150  -250             320   380 (e)
   0  -250 (g)        -110  -320 (f)
   0  -100             0    -250 (g)

我在正确的比赛旁边写了字母

好吧,我认为以下应该有效,将在明天实施。仍然愿意接受建议。:

while not found
see if v1(i) matches v2(i+a)
if it doesn't, swap v1 and v2 and increase a, comparing from a=0 upto a=x

1 个答案:

答案 0 :(得分:-1)

我希望以下内容可以帮助您:

似乎您需要计算两个序列X和Y之间的动态时间扭曲(DTW).DTW将找到最小误差扭曲,即匹配X的每个点与Y的一个点的路径。 / p>

您可以查看许多DTW教程(检查pdf,youtube视频)和matlab code

根据您的问题,您可能需要更改DTW中的一些内容,以便以最适合您的应用程序的方式处理缺失的数据。

同时检查Edit Distance,它使用与DTW类似的原则,可以让您更好地了解序列的匹配方式。

祝你好运!