2012-10-01 15 views
7

Mam macierz M x N. Chcę pomnożyć każdą z kolumn N przez macierz M x M. Następujące robi to w pętli, ale nie mam pojęcia, jak to wektoryzacji.Pomnóż każdą kolumnę macierzy inną macierzą

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 

Odpowiedz

13

Wystarczy pomnożyć dwie macierze:

answer = W*u; 

Pomyślcie o tym: w każdej iteracji pętli swojej pomnożyć macierzy przez wektor. Wynikiem tej operacji jest wektor, który zapisujesz w swojej odpowiedzi w kolumnie i. Mnożenie macierzy jest podobną rzeczą: można ją rozumieć jako mnożenie macierzy (W) przez zbiór wektorów, które tworzą macierz u.

Twój kod jest dobry, po prostu usuń pętlę :)

+2

Nie jestem pewien, czy po prostu rozłączony lub faktycznie opóźniony. :-) Dzięki. – mac389

Powiązane problemy