【问题标题】:Align two arrays in matlab在matlab中对齐两个数组
【发布时间】:2012-11-09 14:36:24
【问题描述】:

我在 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 的值。

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

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

    您的脚本可以如下:

    [commonFrames,ia,ib] = intersect(d1(:,1), d2(:,1));
    commonData = [commonFrames d1(ia,2:3) d2(ib,2:3)];
    

    【讨论】:

    • 成功了,谢谢。我真的应该更仔细地阅读help intersect...
    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多