多个阵列中的克罗内克积

计算科学 matlab 算法 矩阵 表现
2021-12-11 23:33:44

我想知道 Matlab 中是否有一种智能有效的方法来计算几个一维数组的 kronecker 积。

我的意思是这样的

A = [a1, a2];
B = [b1, b2];
C = [c1, c2];
K = f(A,B,C) = [a1*b1*c1, a1*b1*c2, a1*b2*c1, ... ]

一种可能的方法是使用 kron(X,Y) 函数,但必须将其放入循环中才能获得上述结果,因为 kron 函数每次只接受 2 个参数。

K = 1;
tot_arrays = [A, B, C];
for i=1:num_arrays
    K = kron(K,tot_arrays(:,i));
end

对于每次超过 2 个数组的 kron 乘法,难道没有更智能、更有效的方法来获得相同的结果吗?

谢谢

1个回答

写得更快:我认为没有。更快地运行更大的数组长度:我要尝试的第一件事是以下。

>> a = [1 2];
>> b = [3 4];
>> c = [5 6];
>> a = reshape(a, [length(a) 1 1]);
>> b = reshape(b, [1 length(b) 1]);
>> c = reshape(c, [1 1 length(c)]);
>> P = a.*b.*c;
>> P = reshape(P, [1 length(P)])
P =
    15    30    20    40    18    36    24    48