matlab - 将二维矩阵与向量相乘以跨越第三维 - MATLAB

标签 matlab matrix vectorization multiplication dimension

当我尝试将 m x n 矩阵与 p 维 向量相乘时,我遇到了一些困难。

尽量避免循环,这就是我想要实现的目标

enter code here
M = [1 2 3;                   p = [1;2;3]
     4 5 6;
     7 8 9]

我想获得一个 3x3x3 矩阵,其中三维切片只是 M 的条目乘以 p 中的相应条目>.

非常感谢帮助

最佳答案

您可以使用 bsxfunpermute对于 vectorized像这样的(无循环)方法 -

out = bsxfun(@times,M,permute(p(:),[3 2 1]))

你最终会得到 -

out(:,:,1) =
     1     2     3
     4     5     6
     7     8     9
out(:,:,2) =
     2     4     6
     8    10    12
    14    16    18
out(:,:,3) =
     3     6     9
    12    15    18
    21    24    27

使用矩阵乘法 -

out = permute(reshape(reshape(M.',[],1)*p(:).',[size(M) numel(p)]),[2 1 3])

关于matlab - 将二维矩阵与向量相乘以跨越第三维 - MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29276924/

相关文章:

MATLAB:从压缩列存储创建稀疏矩阵

c - Mex 链接 visa32.lib

matlab - 突出显示部分 matlab 图

CSS矩阵动画问题

arrays - 如何总是做一个做作的副本?

python-3.x - 在 python 3 中使用 numpy 创建低秩矩阵近似

x86 - 带增量的 AVX 加载指令

python - 使用 Python 进行文本分类

python - 在所有 pandas 数据框列上应用 statsmodels 自回归函数

arrays - MATLAB 查找字符串,存储在数组中并连接