Effacer les filtres
Effacer les filtres

Multiply a "stack" of matrices with a "stack" of vectors

4 vues (au cours des 30 derniers jours)
Michael
Michael le 4 Mar 2014
Commenté : James Tursa le 7 Mar 2014
I have a matrix 2 x 2 x n and a vector 2 x n. So basically, I have n layers of 2 x 2 matrices and n layers of vectors with 2 entries. I d like to do a matrix-vector multiplication on each layer.
I could easily do this using a for loop, but is there a way which directly supports such an operation?

Réponse acceptée

Jos (10584)
Jos (10584) le 4 Mar 2014
Modifié(e) : Jos (10584) le 7 Mar 2014
One option:
n = 6
% M is your 2x2xn array of "matrices
M = rand(2,2,n)
% V is your 2xn array of "vectors"
V = rand(2,n)
fh = @(k) M(:,:,k) * V(:,k)
C = arrayfun(fh,1:n,'un',0)
C2 = cat(3,C{:})
Corrected.
  3 commentaires
Jos (10584)
Jos (10584) le 7 Mar 2014
You did ask for " a way which directly supports such an operation ", not for a faster way! ;-)
To be honest, I think a straight forward for-loop is as good as the accumarray approach in this case.
James Tursa
James Tursa le 7 Mar 2014
If you want speed, I would suggest looking at one of the solutions I have posted.

Connectez-vous pour commenter.

Plus de réponses (1)

James Tursa
James Tursa le 4 Mar 2014
Modifié(e) : James Tursa le 7 Mar 2014

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by