2011-09-26 18 views
0

我正在寻找一种在八度中生成简单线性地图的简单方法。我需要的矩阵,称之为西格马(n)的,通过下面的属性来定义:对于所有矩阵(均为n维),我们有以下等式:
sigma(n) * kron(A,B) = kron(B,A) * sigma(n)如何生成“交换”地图又名“交换”地图

对于例如,
sigma(2) = [1,0,0,0; 0,0,1,0; 0,1,0,0; 0,0,0,1]

sigma(n)有没有简单的功能?

对于我的目的n会相当小,小于50,所以效率不是问题。

编辑:现在正确的定义式

回答

1

我意识到这是不好的形式来回答自己的问题,但头部少量搔抓,我设法产生明确的矩阵:

function sig = sigma_(n) 
    sig = zeros(n^2,n^2); 
    for i = 0:(n-1) 
    for j = 0:(n-1) 
     sig(i*n + j + 1, i+ (j*n) + 1) = 1; 
    endfor 
    endfor 
endfunction 

如果任何人有一个更合适的方法来做到这一点,我米仍然感兴趣。

+0

+1 - 永远不要错过回答你自己的问题,只要一定要感谢那些也提供了答案的人(通过评论或对他们的答案进行投票)。另外,请务必用复选标记标记答案。 –

0

有趣的问题!

我不认为你所问的是完全可能的。然而,这两个Kronecker积是类似的,通过置换矩阵,即,一个具有:

kron(A,B) = P kron(B,A) P^{-1} 

这置换矩阵是这样的:Px值是通过将X为矩阵逐行,和堆叠获得结果矩阵的列在一起。

编辑您提出的证明是不可能的。考虑矩阵

A = 1 1  B = 1 0 
    1 1   0 0 

随后两个克罗内克产品有:

1 1 0 0  1 0 1 0 
1 1 0 0  0 0 0 0 
0 0 0 0  1 0 1 0 
0 0 0 0  0 0 0 0 

假设你乘上向左任何矩阵西格玛第一矩阵:最后两列将保持在零,所以结果不能等于第二个矩阵。 QED。

+0

确实存在所需的矩阵(出于完全一般的原因),并且使用正确的索引方案可以很容易地写下来。正如你所暗示的那样,它是一个置换矩阵。我的问题是如何编写一个简短的函数来让Octave明确产生矩阵。 –

+0

有多尴尬 - 你很正确。我的错误在于:所要求的属性是'sig * kron(A,B)= kron(B,A)* sig',就像你上面所描述的那样。我会修好它。 –