如何生成“交换”地图a.k.a.“交换”地图

时间:2011-09-26 17:21:08

标签: matlab linear-algebra octave

我正在寻找一种在Octave中生成简单线性贴图的简便方法。我需要的矩阵,称为 sigma(n),由以下属性定义:对于所有矩阵 A B (两个维度) 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,所以效率不是问题。

编辑:现在使用正确的定义等式

2 个答案:

答案 0 :(得分: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

如果有人有更简洁的方法,我仍然感兴趣。

答案 1 :(得分:0)

有趣的问题!

我不认为你所要求的是完全可能的。然而,两个kronecker产品通过置换矩阵是相似的,即一个具有:

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

这个置换矩阵是这样的,Px的值是通过将x逐行放入矩阵,并将得到的矩阵的列堆叠在一起得到的。

修改您无法提出要求的证明。考虑矩阵

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

然后两个kronecker产品是:

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

假设您将左侧的第一个矩阵乘以任何矩阵sigma:最后两列将保持为零,因此结果不能等于第二个矩阵。 QED。