ループなしでこれを行いたい:
% A ~ 4x2x3; B ~ 4x3x2; C ~ 4x2x2;
for i=1:4
C(i,:,:) = squeeze(A(i,:,:))*squeeze(B(i,:,:));
end
ありがとう!
ループなしでこれを行いたい:
% A ~ 4x2x3; B ~ 4x3x2; C ~ 4x2x2;
for i=1:4
C(i,:,:) = squeeze(A(i,:,:))*squeeze(B(i,:,:));
end
ありがとう!
これをベンチマークしていません(したがって、これがより高速であるとは限りません)が、次のようになります。
[L, ma, na] = size(A);
[L, mb, nb] = size(B);
AX = reshape(permute(A, [2 1 3]), [], na);
BX = reshape(permute(B, [2 3 1]), mb, []);
CX = reshape(permute(reshape(AX * BX, ma, L, nb, L), [1 3 2 4]), ma, nb, []);
C = permute(CX(:, :, 1:L + 1:end), [3 1 2]);
A
とが大きい場合は、メモリの問題も発生する可能性があることに注意してくださいB
(その場合、ループに頼る必要があります)。