假设我有2个向量,并且想做一个外积。我可以使用:

A=x*y';


或者我可以这样使用bsxfun

bsxfun(@times,x,y')


但是我想批量生产外部产品。我有2个矩阵,每个矩阵都包含p个向量:

n=1000;  p=6;
A=rand(n,p);
D=rand(n,p);


我想计算所有外部乘积,并对结果求和,如下所示:

AA=zeros(n,n);

for j=1:p
    AA = AA + A(:,j) * D(:,j).';
end


我想更有效地做到这一点,但我不知道如何做。

最佳答案

只需将两个矩阵相乘即可​​:

n=1000;  p=6;
A=rand(n,p);
D=rand(n,p);

way1=zeros(n,n);

for j=1:p
    way1 = way1 + A(:,j) * D(:,j).';
end

way2 = A * D.';

any(way1(:) ~= way2(:))

10-08 15:20