假设有两个大小相同的矩阵,我想计算它们按列的克罗内克积的总和。由于有时列的尺寸很大,因此速度可能很慢。因此,是否有矢量化该功能的方法,或者任何功能都可以帮助降低matlab的复杂性?提前致谢。
下面提供了带有for循环的相应matlab代码,而答案d
是感兴趣的输出:
A = rand(3,7);
B = rand(3,7);
d = zeros(size(A,1)*size(B,1),1);
for i=1:size(A,2)
d = d + kron(A(:,i),B(:,i));
end
使用Daniels Answer给出的Kronecker产品的重写
e=zeros(size(B,1),size(A,1));
for i=1:size(A,2)
e = e + B(:,i)*A(:,i).';
end
e=reshape(e,[],1);
我们说
C = A'
因此
for i=1:m
e = e + B(:,i)*C(i,:);
end
这是矩阵乘积的定义
B*C.
总之,可以通过简单的矩阵乘积来解决问题
d = reshape(B*A',[],1);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句