2012-10-01 14 views
7

私はM x N行列を持っています。 Nの各列にM x Mの行列を掛けたいと思います。以下はループでこれを行いますが、ベクトル化する方法はわかりません。行列の各列に別の行列を掛けてください

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 

答えて

13

は、あなたは、単に二つの行列を乗算する必要があります。

answer = W*u; 

はそれについて考える:あなたのループの各反復であなたは、ベクトルで行列を掛けます。その操作の結果はベクトルで、これは列iの答えに保存されます。行列の乗算も同様のことです。行列の形をとるベクトルの集合による行列(W)の乗算と理解できます。

だからあなたのコードが良いですが、ちょうどループを削除:)

+2

だけではなく、間隔をあけたり、実際に遅れた場合に確認してください。 :-)ありがとう。 – mac389

関連する問題