Matlab:用向量元素乘以矩阵的行

时间:2015-12-06 19:18:36

标签: matlab matrix vectorization bsxfun

v为行向量(1 x n矩阵),Mn x m矩阵。 我使用下面的代码来创建一个“加权向量”(我希望这些评论可以解释它应该做什么):

weighted_M = bsxfun(@times,v',M);
%creates a matrix with the i-th row of M being weighted (multiplied) by the i-th element of v
weighted_v = sum(weighted_M);
%sums the columns of weighted_M

现在问题是:我必须对很多输入向量v进行相同的计算。所以我想输入一个包含矢量V的矩阵v作为行,并输出一个包含加权矢量作为行的矩阵。有没有办法不使用for循环呢?

1 个答案:

答案 0 :(得分:5)

如果V的大小为[k,n]M的大小为[n,m],并且您正在寻找k加权向量,那么您可能会只需要

weighted_vs = V*M;

其元素等于

weighted_vs_ij = (V*M)ij = sum_l V_il * M_lj

首先,将M的每一行与VV_il * M_lj的相应元素相乘,以获得修正i),然后将其作为第一行的函数求和索引。

结果是k个加权行向量,每个长度为m