我正在寻找一种在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,所以效率不是问题。
编辑:现在使用正确的定义等式
答案 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。