2012-10-01 13 views
7

J'ai une matrice M x N. Je veux multiplier chacune des colonnes N par une matrice M x M. Ce qui suit le fait en boucle, mais je n'ai aucune idée de comment le vectoriser.Multiplier chaque colonne d'une matrice par une autre matrice

u=repmat(sin(2*pi*f*t),[n 1]); 
W = rand(n); 
answer = size(u); 
for i=1:size(u,2) 
    answer(:,i) = W*u(:,i); 
end 

Répondre

13

Il vous suffit de multiplier les deux matrices:

answer = W*u; 

Pensez-y: à chaque itération de la boucle, vous multipliez une matrice par un vecteur. Le résultat de cette opération est un vecteur que vous sauvegardez dans votre réponse dans la colonne i. La multiplication matricielle est une chose similaire: vous pouvez la comprendre comme la multiplication d'une matrice (W) par un ensemble de vecteurs, qui forment votre matrice u.

Donc, votre code est bon, il suffit de retirer la boucle :)

+2

Je ne sais pas si simplement espacées ou en fait retardé. :-) Merci. – mac389

Questions connexes