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
4

1 回答 1

13

您只需将两个矩阵相乘:

answer = W*u;

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

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

于 2012-10-01T13:15:18.080 回答