让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循环呢?
答案 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
的每一行与V
(V_il * M_lj
的相应元素相乘,以获得修正i
),然后将其作为第一行的函数求和索引。
结果是k
个加权行向量,每个长度为m
。