当我尝试将 m x n
矩阵与 p 维
向量相乘时,我遇到了一些困难。
尽量避免循环,这就是我想要实现的目标
enter code here
M = [1 2 3; p = [1;2;3]
4 5 6;
7 8 9]
我想获得一个 3x3x3
矩阵,其中三维切片只是 M
的条目乘以 p
中的相应条目>.
非常感谢帮助
最佳答案
您可以使用 bsxfun
与 permute
对于 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/