gpt4 book ai didi

matlab - 在 matlab 中向量化成对的克罗内克积

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:26 25 4
gpt4 key购买 nike

假设有两个相同大小的矩阵,我想计算它们按列的克罗内克积的总和。由于有时列大小很大,因此速度可能会很慢。因此,无论如何要矢量化这个函数或者任何函数都可以帮助降低 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 product的重写

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);

关于matlab - 在 matlab 中向量化成对的克罗内克积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com