在MATLAB中将矩阵行的所有组合相乘

时间:2014-03-10 12:49:00

标签: matlab

我有两个矩阵A(3X4)和B(3X4)。我想计算一个新的矩阵(3X3X4),它具有行元素,即A的每一行的元素乘法与B的每一行。我猜它就像一个多维外积。有没有办法以矢量化的方式做到这一点?

2 个答案:

答案 0 :(得分:3)

bsxfun(@times, A, permute(B, [3, 2, 1]))

或可能

permute(bsxfun(@times, A, permute(B, [3,2,1])), [1,3,2])

答案 1 :(得分:0)

尝试以下

Z=[]

for i=1:3
for j=1:3
Z=[Z;A(i,:).*B(i,:)];
end
end

Z=reshape(Z(:),[3,3,4]);

现在Z有你需要的结果