gpt4 book ai didi

matlab - 如何找到逆 Kron?

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:24 28 4
gpt4 key购买 nike

如果我知道 K = kron ( A , B ),其中 kron 是 MATLAB 中定义的矩阵的克罗内克积,我如何从给定矩阵 K 中找到 A 和 B?

例如假设

K = [1 0 0 0 ;0 1 0 0 ; 0 1 0 0 ;0 1 0 0 ;1 0 0 0 ;0 1 0 0 ;0 1 0 0 ;0 1 0 0 ;1 0 0 0 ;0 1 0 0 ;0 1 0 0 ;0 1 0 0 ;0 0 1 0 ;0 0 0 1 ;0 0 0 1 ;0 0 0 1 ]

有没有办法找到 A 和 B,使得 K = kron ( A , B )?在这种情况下,A和B如下:

A = [ 1 0 ; 1 0 ; 1 0 ; 0 1 ]
B = [ 1 0 ; 0 1 ; 0 1 ; 0 1 ]

最佳答案

简短的讨论和解决方案代码

给定一个K,你不能同时找到AB,因为可能有很多可能的AB 生成特定的 kron 矩阵,K。因此,除了 K,您还需要 AB 来获取剩余的输入 BA 分别。

案例 #1 给定 AK(kron 矩阵),您可以使用 -< 找到 B/p>

B = K(1:size(K,1)/size(A,1),1:size(K,2)/size(A,2))./A(1)

案例 #2 给定 BK(kron 矩阵),您可以使用 -< 找到 A/p>

A = K(1:size(B,1):end,1:size(B,2):end)./B(1)

因此,如果不是整个其他输入,您至少需要知道它的大小和它的一个元素,最好是第一个元素。


函数代码

您可以非常轻松地将其转换为函数代码,以便于即插即用 -

%// INVERSE_KRON   Inverse of Kronecker tensor product to find one of the inputs.
% // INVERSE_KRON(K,ARRAY,INPUT_ID) finds one of the inputs used for calculating the
% // Kronecker tensor product given the other input and the ID of that other input.
% // Thus, if K was obtained with K = KRON(A,B), one must use -
% // A = INVERSE_KRON(K,B,2) to find A, and
% // B = INVERSE_KRON(K,A,1) to find B.

function out = inverse_kron(K,array,input_id)

switch input_id
case 1
out = K(1:size(K,1)/size(array,1),1:size(K,2)/size(array,2))./array(1);
case 2
out = K(1:size(array,1):end,1:size(array,2):end)./array(1);
otherwise
error('The Input ID must be either 1 or 2')
end

return;

典型用例如下所示 -

K = kron(A,B);          %// Get kron product
A = inverse_kron(K,B,2) %// Recover A
B = inverse_kron(K,A,1) %// Recover B

注意:对于矢量案例,可以找到另一个相关的问题和答案here .

关于matlab - 如何找到逆 Kron?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271439/

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