您当前的位置: 首页 >  矩阵

B417科研笔记

暂无认证

  • 7浏览

    0关注

    154博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

交换矩阵 commutation matrix:理论与matlab仿真

B417科研笔记 发布时间:2021-02-07 21:18:48 ,浏览量:7

最近接触了一些克罗内克积和 Khatri-Rao Product及向量化的相关问题, 本文记录下非常重要的一个概念: 交换矩阵。

定义

在线性代数中, 有一类矩阵被称为 置换矩阵 (permutation matrix):

对于一个正方矩阵, 每一行和每一列有且仅有一个非零元素, 就是置换矩阵。

比如:

P = [ 1 0 0 0 0 1 0 1 0 ] \mathbf{P} =\left[\begin{array}{lll} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{array}\right] P=⎣⎡​100​001​010​⎦⎤​ 显然, 单位阵也是一种特殊的置换矩阵。

关于置换矩阵的作用, 比如我们经常希望更换矩阵 A \mathbf{A} A中行或列的排列顺序, 这样的操作可以通过对矩阵 A \mathbf{A} A:

  • 左乘置换矩阵, 实现对行的重新排列
  • 右乘置换矩阵, 实现对列的重新排列

这很容易理解:

[ 1 0 0 0 0 1 0 1 0 ] [ a 1 a 2 a 3 ] = [ a 1 a 3 a 2 ] \left[\begin{array}{lll} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{array}\right]\left[\begin{array}{lll} \mathbf{a}_1 \\ \mathbf{a}_2 \\ \mathbf{a}_3 \end{array}\right] = \left[\begin{array}{lll} \mathbf{a}_1 \\ \mathbf{a}_3 \\ \mathbf{a}_2 \end{array}\right] ⎣⎡​100​001​010​⎦⎤​⎣⎡​a1​a2​a3​​⎦⎤​=⎣⎡​a1​a3​a2​​⎦⎤​

因此, 置换矩阵就是一类实现对行列重新排列的矩阵。 而其中最常用也最特殊的, 就是 交换矩阵 commutation matrix。

对于一个 m × n m\times n m×n的矩阵 A \mathbf{A} A, 存在一个 m n × m n mn\times mn mn×mn的置换矩阵 K m n \mathbf{K}_{mn} Kmn​, 使得 K m n v e c ( A ) = v e c ( A T ) \mathbf{K}_{mn}\mathrm{vec}(\mathbf{A}) = \mathrm{vec}(\mathbf{A}^T) Kmn​vec(A)=vec(AT), K m n \mathbf{K}_{mn} Kmn​就是一个交换矩阵。

性质

常用的性质:

  • K m n vec ⁡ ( A ) = vec ⁡ ( A T ) K_{m n} \operatorname{vec}(A)=\operatorname{vec}\left(A^{\mathrm{T}}\right) Kmn​vec(A)=vec(AT), K n m vec ⁡ ( A T ) = vec ⁡ ( A ) \boldsymbol{K}_{\boldsymbol{n} m} \operatorname{vec}\left(\boldsymbol{A}^{\mathrm{T}}\right)=\operatorname{vec}(\boldsymbol{A}) Knm​vec(AT)=vec(A)
  • K m n T K m n = K m n K m n T = I m n \boldsymbol{K}_{m n}^{\mathrm{T}} \boldsymbol{K}_{m n}=\boldsymbol{K}_{m n} \boldsymbol{K}_{m n}^{\mathrm{T}}=\boldsymbol{I}_{m n} KmnT​Kmn​=Kmn​KmnT​=Imn​
  • K m n T = K n m \mathbf{K}_{m n}^{\mathrm{T}}=\mathbf{K}_{n m} KmnT​=Knm​
  • K m n = ∑ j = 1 n ( e j T ⊗ I m ⊗ e j ) \boldsymbol{K}_{m n}=\sum_{j=1}^{n}\left(\mathbf{e}_{j}^{\mathrm{T}} \otimes \mathbf{I}_{m} \otimes \mathbf{e}_{j}\right) Kmn​=∑j=1n​(ejT​⊗Im​⊗ej​), 其中 e j \mathbf{e}_{j} ej​ 是基本向量, 即只有第 j j j个元素为1,其余元素均为0.

最重要的是则是他与克罗内克积的关系: K m n ( A ⊗ B ) K p q = B ⊗ A \boldsymbol{K}_{m n}(\boldsymbol{A} \otimes \boldsymbol{B}) \boldsymbol{K}_{p q}=\boldsymbol{B} \otimes \boldsymbol{A} Kmn​(A⊗B)Kpq​=B⊗A

其中, A \mathbf{A} A的维度是 n × p n\times p n×p, B \mathbf{B} B的维度是 m × q m\times q m×q。

同样还有和Khatri-Rao Product的关系:

K m n ( A ⊗ B ) = B ⊗ A \boldsymbol{K}_{m n}(\boldsymbol{A} \otimes \boldsymbol{B}) =\boldsymbol{B} \otimes \boldsymbol{A} Kmn​(A⊗B)=B⊗A

其中, A \mathbf{A} A的维度是 n × p n\times p n×p, B \mathbf{B} B的维度是 m × p m\times p m×p。 很容易可以从克罗内克积的性质中推导出该式。

代码

附上生成 K m n \mathbf{K}_{mn} Kmn​的matlab代码:

function K = gen_commutation(m,n)

K = 0;
for j = 1 : n
   ej= zeros(n, 1);
   ej(j) = 1;
   K = K + (kron(kron(ej.', eye(m)), ej));
end

即,利用性质4.

关注
打赏
1649265742
查看更多评论
立即登录/注册

微信扫码登录

0.1410s