矩阵的向量化与向量的矩阵化
向量化
向量化 vec(A) 是线性变换,将矩阵元素按列堆栈排列成一个 mn×1 向量
vec(A)=[a11,⋯,am1,⋯,a1n,⋯,amn]T
也可以按行堆栈为行向量,称为矩阵的行向量化,用符号 rvec(A) 表示,定义为
rvec(A)=[a11,⋯,a1n,⋯,am1,⋯,amn]
矩阵的向量化结果为列向量,行向量化结果为行向量
rvec(A)=(vec(AT))T,vec(AT)=(rvec(A))T
交换矩阵
定义
交换矩阵是一个可以把矩阵的向量化 vec(A) 变换为其转置矩阵的向量化 vec(AT) 的置换矩阵(每行每列只有一个 1 元素)。记作 Kmn
Kmnvec(A)=vec(AT)
类似地,可以将转置矩阵的向量化 vec(AT) 变换为原矩阵的向量化 vec(A) 的交换矩阵记作 Knm
Knmvec(AT)=vec(A)
易知 KnmKmnvec(A)=Knmvec(AT)=vec(A); KnmKmn=Imn,即 Kmn−1=Knm。
性质
- KmnTKmn=KmnKmnT=Imn 或 Kmn−1=Knm。
- KmnT=Knm。
- Kmn 可以表示为基本向量的 Kronecker 积:
Kmn=j=1∑n(ejT⊗Im⊗ej)
- K1n=Kn1=In。
- 交换矩阵的秩 rank(Kmn)=1+d(m−1,n−1),其中 d(m,n) 是 m 和 n 之间的最大公约数
- 交换矩阵 Kmn 的特征值取 1 和 -1,它们的多重度分别为 21n(n+1) 和 21n(n−1)。
- Kmn(A⊗B)Kpq=B⊗A,或等价写作Kmn(A⊗B)=(B⊗A)Kqp,其中 A 是 n×p 矩阵,B 为 m×q 矩阵。特别地,Kmn(Am×n⊗Bm×n)=(B⊗A)Kmn。
- tr(Kmn(Am×n⊗Bm×n))=tr(ATB)=(vec(AT))TKmn(vec(A))
构造方法
- 每一行只赋一个元素 1,其他元素全部为 0
- 第 1 行第 1 个元素为 1,然后这个 1 元素右移 m 位,变成第 2 行该位置的 1 元素
- 第 2 行该位置的 1 元素再右移 m 位,又变成第 3 行该位置的 1 元素
- 依此类推,找到下一行 1 元素的位置。但是,如果向右移位时超过第 mn 列,则应该转到下一行继续移位,并且多移 1 位,再在此位置赋 1
矩阵化
mn×1 向量 a=[a1,⋯,amn]T 转换为一个 m×n 矩阵 A 的运算称为矩阵化,用符号 unvecm,n(a) 表示,定义为
Am×n=unvecm,n(a)=a1a2⋮amam+1am+2⋮a2m⋯⋯⋱⋯am(n−1)+1am(n−1)+2⋮amn(1.11.6)
矩阵 A 第 (i,j) 元素 Aij 与向量 a 的第 k 个元素 ak 存在转换公式 Aij=ai+(j−1)m,i=1,⋯,m;j=1,⋯,n
类似地,行向量的矩阵化,记作 unrvecm,n(b),定义为
Bm×n=unrvecm,n(b)=b1bn+1⋮b(m−1)n+1b2bn+2⋮b(m−1)n+2⋯⋯⋱⋯bnb2n⋮bmn
矩阵 B 的元素 Bij 与行向量 b 的元素 bk 存在关系Bij=bj+(i−1)n,i=1,⋯,m;j=1,⋯,n
按照定义,矩阵化和向量化之间存在以下关系:
unvecm,n(a)=Am×n⟺vec(Am×n)=amn×1
unrvecm,n(b)=Bm×n⟺rvec(Bm×n)=b1×mn
向量化算子的性质
- 转置矩阵的向量化:vec(AT)=Kmnvec(A),其中 A∈Cm×n
- 矩阵之和的向量化:vec(A+B)=vec(A)+vec(B)
- 矩阵乘积的迹:
tr(ATB)=(vec(A))Tvec(B)
tr(AHB)=(vec(A))Hvec(B)
tr(ABC)=(vec(A))T(Ip⊗B)vec(C)
tr(ABCD)=(vec(DT))T(CT⊗A)vec(B)=(vec(D))T(A⊗CT)vec(BT)
- m×n 矩阵 A 和 B 的 Hadamard 积的向量化函数:
vec(A∗B)=vec(A)∗vec(B)=diag(vec(A))vec(B)(1.11.15)
式中 diag(vec(A)) 表示向量化函数 vec(A) 各元素为对角元素的对角矩阵。
- 两个向量的 Kronecker 积可以表示成向量外积的向量化:
a⊗b=vec(baT)=vec(b∘a)
vec(Um×pVp×pWp×n)=(WT⊙U)d(V)
式中,d(V)=[v11,⋯,vpp]T 是由矩阵 V 的对角元素组成的列向量。
- 矩阵 Am×pBp×qCq×n 乘积的向量化与 Kronecker 积的关系:
vec(ABC)=(CT⊗A)vec(B)
vec(ABC)=(Iq⊗AB)vec(C)=(CTBT⊗Im)vec(A)
vec(AC)=(Ip⊗A)vec(C)=(CT⊗Im)vec(A)
- Kronecker 积的向量化:令 X∈Rp×m 和 Y∈Rn×q,则:
vec(X⊗Y)=(Im⊗Kqp⊗In)(vecX⊗vecY)
应用(求解矩阵方程)
求解矩阵方程AXB=C,A∈Rm×n,X∈Rn×p,B∈Rp×q:
矩阵方程 AXB=C 利用向量化函数的性质 vec(AXB)=(BT⊗A)vec(X),原矩阵方程的向量化 vec(AXB)=vec(C) 可以用 Kronecker 积改写为 (BT⊗A)vec(X)=vec(C),由此得 vec(X)=(BT⊗A)†vec(C)。然后,将 vec(X) 矩阵化,即可获得原矩阵方程 AXB=C 的解矩阵 X。
求解矩阵方程 AX+XB=Y,所有矩阵的维数均为 n×n:
利用向量化算子的性质 vec(ADB)=(BT⊗A)vec(D),有(In⊗A+BT⊗In)vec(X)=vec(Y)。由此得vec(X)=(In⊗A+BT⊗In)†vec(Y)。然后,将 vec(X) 矩阵化,即可得到矩阵方程 AX+XB=Y 的解 X。