# Matrix multiplication along a specified dimension?

23 Ansichten (letzte 30 Tage)
Darcy Cordell am 28 Sep. 2022
Kommentiert: James Tursa am 28 Sep. 2022
I have a 2x2xN matrix, A, and a 2xN matrix, X. I want to multiply each Nth 2x2 matrix in A by the Nth 2x1 matrix in X. I can do this with:
for i = 1:N
B(:,i) = A(:,:,i)*X(:,i);
end
However, this is very slow, especially in my case where N is large.
Is there a way to do matrix multiplication "along a specified dimension" without a for loop?
Apologies if this is a duplicate question, I looked and could not find anything. Most of the other answers I found involve element-wise multiplication along a specified dimension, which is different than what I am doing.
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Matt J am 28 Sep. 2022
B=pagemtimes(A,X)
##### 2 KommentareKeine anzeigenKeine ausblenden
Darcy Cordell am 28 Sep. 2022
Exactly what I was looking for! The speed up is impressive. I would just add that in order for this to work, it is necessary to permute X to be 2x1xN using permute(X,[1,3,2]). Thanks!
James Tursa am 28 Sep. 2022
Or reshape(X,2,1,[]);

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Creating and Concatenating Matrices 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!

Translated by