2012-10-01 4 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

관련 문제