将矩阵的每一列乘以另一个矩阵。

7

我有一个 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
1个回答

13

你只需要将这两个矩阵相乘:

answer = W*u;

想一想:在你的循环的每次迭代中,你都将一个矩阵乘以一个向量。该操作的结果是一个向量,你将其保存在第i列的答案中。矩阵乘法也是类似的事情:你可以将其理解为将一个矩阵(W)与一组向量相乘,这些向量形成了你的矩阵u。

所以,你的代码是好的,只需删除循环即可 :)


2
不确定是只是走神了还是真的智障。 :-) 谢谢。 - mac389

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接