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

在MATLAB中乘以矩阵行的所有组合,matlab,Matlab,我有两个矩阵A(3X4)和B(3X4)。我想计算一个新的矩阵(3X3X4),它的行元素是a的每一行与B的每一行的元素相乘。我想这就像一个多维外积。有没有办法以矢量化的方式实现这一点 bsxfun(@times, A, permute(B, [3, 2, 1])) 或者可能 permute(bsxfun(@times, A, permute(B, [3,2,1])), [1,3,2]) 试试下面的方法 Z=[] for i=1:3 for j=1:3 Z=[Z;A(i,:).*B(i,:)]

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

bsxfun(@times, A, permute(B, [3, 2, 1]))
或者可能

permute(bsxfun(@times, A, permute(B, [3,2,1])), [1,3,2])
试试下面的方法

Z=[]

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

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

现在Z得到了您需要的结果

在开始时删除“@”。这一次无法编辑:)@LuisMendo但结果没有那么有意义。@Divakar为什么?它将是:(A行,B行,公共列)。对我来说比当前(A行,公共列,B行)@LuisMendo更有意义,因为您正在执行行乘法,所以自然的做法是将它们存储在最终3D的2D部分的行中。在MATLAB中,3D输出的显示方式也有意义,因为人们不必一直滚动到3D数据的最后一个维度才能看到第一行乘法。你是指(3x4x4)还是(3X4X3)?