2012-10-01 31 views
7

Tengo una matriz M x N. Quiero multiplicar cada una de las columnas N por una matriz M x M. Lo siguiente hace esto en un bucle, pero no tengo idea de cómo vectorizarlo.Multiplicar cada columna de una matriz por otra matriz

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 

Respuesta

13

sólo hay que multiplicar las dos matrices:

answer = W*u; 

Piense en esto: en cada iteración de su bucle se multiplica una matriz por un vector. El resultado de esa operación es un vector, que guarda en su respuesta en la columna i. La multiplicación de matrices es algo similar: puedes entenderlo como la multiplicación de una matriz (W) por un conjunto de vectores, que forman tu matriz u.

Así que su código es bueno, simplemente elimine el bucle :)

+2

No estoy seguro si está espaciado o realmente retrasado. :-) Gracias. – mac389

Cuestiones relacionadas