让v
是行向量(1 x n
矩阵)和M
是一个n 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循环的情况下执行此操作?
如果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
.