我有两个(v1,v2)
包含坐标的向量。从理论上讲,这些向量应具有相同的长度,并且配对(v1(1)~v2(1), ... v1(n)~v2(n))
。但是,实际上,有时两个向量中的任何一个都缺少数据点。因此我可能必须在v1中跳过3行,或在v2中跳过1行,依此类推。如果我们v2(20)
在匹配项中使用了“ used” ,则下一个可能的索引大于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
希望以下内容对您有所帮助:
似乎您需要计算两个序列X和Y之间的动态时间规整(DTW)。DTW将找到最小误差规整,即一条将X的每个点与Y的一个点匹配的路径。
您可以检查许多DTW教程(检查pdf,youtube视频)和matlab代码。
根据您的问题,您可能需要在DTW中进行一些更改,以便以最适合您的应用程序的方式处理丢失的数据。
还要检查Edit Distance,它使用与DTW相似的原理,可以使您更好地了解序列的匹配方式。
祝你好运!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句