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

标签 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 循环来做到这一点吗?

最佳答案

如果 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/

相关文章:

matlab - Matlab中的小计计算

matlab - 搜索整数中的特定数字

java - 给定角度和大小的运动模糊卷积矩阵

Python 矩阵

python - CSR scipy 矩阵在更新其值后不会更新

c - SSE 中的 0xFFFF 标志

c - matlab中C数组的思想

matlab - Peekdata 只返回一个 channel

c++ - ARM NEON : How to convert from uint8x16_t to uint8x8x2_t?

c - 启用 for 循环的强制矢量化