我有两个包含坐标的矢量(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
答案 0 :(得分:-1)
我希望以下内容可以帮助您:
似乎您需要计算两个序列X和Y之间的动态时间扭曲(DTW).DTW将找到最小误差扭曲,即匹配X的每个点与Y的一个点的路径。 / p>
您可以查看许多DTW教程(检查pdf,youtube视频)和matlab code。
根据您的问题,您可能需要更改DTW中的一些内容,以便以最适合您的应用程序的方式处理缺失的数据。
同时检查Edit Distance,它使用与DTW类似的原则,可以让您更好地了解序列的匹配方式。
祝你好运!