3

2 つの異なる方法で追跡ポイントを表す 2 つの配列が matlab にあります。各配列の最初の列にはフレーム番号が含まれ、2 列目と 3 列目は 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' 関数には 2 つの追加の出力値があります: 入力配列内の共通値のインデックスです。

スクリプトは次のようになります。

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