2016-04-03 9 views
2

私は3次元の配列Uと2次元の行列Aを持っています。私は以下のように乗算をしたいと思います。コードをどのようにベクトル化できますか?もちろん、ループは遅すぎます。配列の乗算のためのベクトル化

for j=1:N 
for k=1:N 
UU(:,j,k)=A*U(:,j,k); 
end 
end 

答えて

0

あなたの行列のサイズに応じて、あなたが見つけるかもしれないという両方のループは、多くのメモリ、および列の上にちょうどループを除去することが十分であること、

for k = 1:N 
    UU(:,:,k) = A*U(:,:,k); 
end 
2

リシェープUをチューズ排除2Dに変換して行列乗算を実行すると、Aの最後の軸であるUの最初の軸/寸法が2次元配列に縮小されます。最後に、最終結果を得るために3Dに改造します。

[m1,n1] = size(A); 
[~,m2,n2] = size(U); 
out = reshape(A*reshape(U,[n1,m2*n2]),[m1,m2,n2]) 
関連する問題