3

我在 matlab 中有两个数组,通过两种不同的方法表示跟踪点。在每个数组中,第一列包含帧号,第二列和第三列是 x、y 坐标。轨道不一定在同一帧开始或结束,但我想比较任何常见帧的轨道之间的距离。

我的输入数据大致如下:

d1 =              d2 = 
[ 130 50 20;      [ 128 48 17;
  131 50 21;        129 52 19;
  ...               ...
  195 70 36 ]       180 65 34 ]

我可以使用找到相交的帧号

commonFrames = intersect(d1(:,1), d2(:,1));

但我被困在如何对齐这些数组(最好没有 for 循环)?

我会沿着[frameNumber x1 y1 x2 y2]x1, y1 是来自数组 d1 的帧 frameNumber 的值,而 x2,y2 是来自数组 d2 的帧 frameNumber 的值来寻找输出。

4

1 回答 1

4

'intersect' 函数有两个额外的输出值:输入数组中公共值的索引。

您的脚本可以如下:

[commonFrames,ia,ib] = intersect(d1(:,1), d2(:,1));
commonData = [commonFrames d1(ia,2:3) d2(ib,2:3)];
于 2012-11-09T14:42:11.700 回答