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

CD8*_*D86 2 matlab matrix vectorization multiplication dimension

当我试图将m x n矩阵与p-dimensional向量相乘时,我遇到了一些困难.

试图避免for循环,这是我想要实现的

enter code here
M = [1 2 3;                   p = [1;2;3]
     4 5 6;
     7 8 9]
Run Code Online (Sandbox Code Playgroud)

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

非常感谢帮助

Div*_*kar 6

您可以使用bsxfunpermute用于vectorized(无环)的方式,像这样-

out = bsxfun(@times,M,permute(p(:),[3 2 1]))
Run Code Online (Sandbox Code Playgroud)

你最终会 -

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
Run Code Online (Sandbox Code Playgroud)

随着matrix-multiplication-

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

  • @CarstenD如果这篇文章回答了你的所有问题,请考虑接受它.阅读更多关于接受解决方案的信息[这里](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). (5认同)