4

3D 空間の座標と 2 つの行列の 2 つの変数 (a と b など) の値を持つ行列を考えると、同じ点の行を共通の行列にマージしたいと思います。

問題を明確に説明するために、行列があるとしましょう

A=[posX, posY, posZ, a]
and 
B=[posX, posY, posZ, b]

そしてそれらを組み合わせたい

AB = [posX, posY, posZ, a, b]

例えば

A = [0 0 1 1; 0 1 0 4; 5 0 12 8];
B = [0 0 0 5; 0 1 0 3; 5 11 7 7];

与えるだろう

AB = [0 0 0 0 5; 0 0 1 1 0; 0 1 0 4 3; 5 0 12 8 0; 5 11 7 0 7];

そのために最初に作ったのが

ATemp = [A, zeros(length(A,0)] 

BTemp = [B(:, [1 2 3]), zeros(length(B),1), B(:,4)]

関数を使用しようとしましaccumarraygrpstatsが、AB マトリックスを形成することができませんでした。

誰かが目的のマトリックスを取得する方法を提案してくれたら、とても感謝しています。

4

1 に答える 1

1
AB=union(A(:,1:3),B(:,1:3),'rows');
AB(ismember(AB,A(:,1:3),'rows'),4)=A(:,4);
AB(ismember(AB(:,1:3),B(:,1:3),'rows'),5)=B(:,4)

[編集] このソリューションは、各 (x,y,z) 点が各行列で 1 回だけ発生する場合にのみ有効です。複数ある場合は、2 行目 (または 3 行目) に寸法の不一致があります。

于 2013-02-20T12:49:22.113 に答える