Multiplication of matrix and first dimension of a 3-D array without for loops
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I'm fairly new to Matlab but I was wondering if there is a way to multiply a 2-D matrix by the first dimension of a 3-D array without using for loops, and obtain another 3-D array.
The matrix, let's call it A, would be something like A(n,n), while the 3-D would be something like B(n,l,k). What I would like to do is somehow multiple A(n,n)*B(n,l,k) for every value of l and k, without going through two for loops.
Example below
A = rand(4,4);
B = rand(4,10,5);
for i = 1:10
for j = 1:5
C(:,i,j) = A(:,:)*B(:,i,j);
end
end
Thanks
1 Kommentar
Rik
am 13 Jan. 2023
Why exactly do you want to remove the loop? And are you aware you're doing a matrix multiplication instead of an element-wise multiplication?
Antworten (2)
Bruno Luong
am 13 Jan. 2023
Bearbeitet: Bruno Luong
am 13 Jan. 2023
A = rand(4,4);
B = rand(4,10,5);
% orginal code
for i = 1:10
for j = 1:5
C(:,i,j) = A(:,:)*B(:,i,j);
end
end
% one loop code
Coneloop = zeros(size(A,1),size(B,2),size(B,3));
for j = 1:size(B,3)
Coneloop(:,:,j) = A*B(:,:,j);
end
% no loop code
Cnoloop = pagemtimes(A,B);
% Check matching
norm(Coneloop(:)-C(:),'Inf')
norm(Cnoloop(:)-C(:),'Inf')
norm(Cnoloop(:)-Coneloop(:),'Inf')
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!