我有一个 M x 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
我有一个 M x 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
你只需要将这两个矩阵相乘:
answer = W*u;
想一想:在你的循环的每次迭代中,你都将一个矩阵乘以一个向量。该操作的结果是一个向量,你将其保存在第i列的答案中。矩阵乘法也是类似的事情:你可以将其理解为将一个矩阵(W)与一组向量相乘,这些向量形成了你的矩阵u。
所以,你的代码是好的,只需删除循环即可 :)