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.
非常感谢帮助
您可以使用bsxfun与permute用于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)