How to efficiently do matrix multiplication for 2 specific dimensions of the tensor?

조회 수: 3(최근 30일)
SC 2019년 11월 20일
답변: James Tursa 2019년 11월 20일
Hi,
I have a rank-5 tensor A and a rank-2 matrix B, and I want to captured the first two dimentions of A as slices and do the mutiplication with B to form an output C.
I can do it as below by using 3 for loops. But that is not efficient. How can I do it vectorizedly (i.e. without using the for loops)?
Many thanks!
My current code
A=randn(3,4,8,2,14);
B=randn(7,3);
C=zeros(7,4,8,2,14); % (7, 4) is due to matrix mutiplication of (7, 3)x(3, 4)
for i=1:8
for j=1:2
for k=1:14
A_slice=A(:,:,i,j,k);
C_slice=B*A_slice;
C(:,:,i,j,k)=C_slice;
end
end
end
C % the output I want

댓글을 달려면 로그인하십시오.

채택된 답변

James Tursa 2019년 11월 20일

댓글을 달려면 로그인하십시오.

범주

Find more on Matrices and Arrays in Help Center and File Exchange

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by