0

2 つのベクトルm1とがあり、それぞれに サイズが 80x80x2000m2の 3 つの座標があります。マ

各時刻について、これら 2 つのベクトルの MATLAB での外積を計算したいと考えています。ネストされたループで個別に座標を抽出できることは知っていますが、ループを回避することは可能ですか? ここにループを含むサンプルコードがあります

m1x = cat(3, [1 2; 3 4], [5 6; 7 8]);

m1y = cat(3, [9 10; 11 12], [13 14; 15 16]);

m1z = cat(3, [17 18; 19 20], [21 22; 23 24]);


m2x = cat(3, [5 6; 2 6], [1 3; 7 9]);

m2y = cat(3, [6 7; 3 5], [2 11; 2 6]);

m2z = cat(3, [3 9; 0 1], [4 2; 3 15]);

result_x(2,2,2)=0; result_y(2,2,2)=0; result_z(2,2,2)=0;

for t=1:2
    for i=1:2
        for j=1:2
            a = [m1x(i,j,t); m1y(i,j,t); m1z(i,j,t);];
            b = [m2x(i,j,t); m2y(i,j,t); m2z(i,j,t);];
            c = cross(a,b);

            result_x(i,j,t) = c(1);
            result_y(i,j,t) = c(2);
            result_z(i,j,t) = c(3);
        end;
    end;
end;

最後に、各瞬間の結果ベクトルの x、y、z の 3 つのコンポーネントがあります。

4

1 に答える 1

1

たとえば、行列AとがありB、それぞれに t (時間) 行と 3 列 (x、y、z)がある場合、またはそれらを再形成してこの構成に到達できる場合は、次を使用できます。

C=cross(A,B);

および の各行 t は、 およびCの対応する行の外積にAなりBます。例:

>> A=[rand(2000,1),rand(2000,1),rand(2000,1)];
>> B=[rand(2000,1),rand(2000,1),rand(2000,1)];
>> C=cross(A,B);
>> C(1,:)

ans =

    0.0090   -0.0435    0.0756

>> cross(A(1,:),B(1,:))

ans =

    0.0090   -0.0435    0.0756
于 2014-12-26T06:23:30.607 に答える