当我试图将m x n
矩阵与p-dimensional
向量相乘时,我遇到了一些困难。
试图避免for循环,这是我想要实现的目标
enter code here
M = [1 2 3; p = [1;2;3]
4 5 6;
7 8 9]
我想获得一个3x3x3
矩阵,其中第三维中的切片只是M
的条目乘以p
中的相应条目。
非常感谢帮助
答案 0 :(得分:6)
您可以将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
使用matrix-multiplication
-
out = permute(reshape(reshape(M.',[],1)*p(:).',[size(M) numel(p)]),[2 1 3])