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

Matlab: multiplying rows of a matrix by vector elements

v 为行向量(1 x n 矩阵),Mn x m 矩阵。 我使用以下代码创建了一个 "weighted vector"(我希望评论能解释它应该做什么):

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 循环的方法来做到这一点?

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

weighted_vs = V*M;

其中一个元素等于

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

首先,将 M 的每一行与 V 的相应元素相乘(V_il * M_lj 上面的修正 i),然后求和作为函数第一个索引。

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