设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
。
关于Matlab:将矩阵的行乘以向量元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34121573/