克劳内克积(Kronecker Product)是两个矩阵的乘积,结果是一个新的矩阵,其元素是原矩阵元素的乘积。对于两个矩阵 A 和 B,其克劳内克积记作 A⊗B。常用于信号处理、图像处理等领域。也叫做张量积或直积。
设 A 是一个 m×n 的矩阵,B 是一个 p×q 的矩阵,则它们的克劳内克积 A⊗B 是一个 mp×nq 的矩阵,其定义为
A⊗B=a11Ba21B⋮am1Ba12Ba22B⋮am2B⋯⋯⋱⋯a1nBa2nB⋮amnB其中 aij 是矩阵 A 的元素,B 是矩阵 B, aijB 表示将矩阵 B 的每个元素都乘以 aij 后形成的子块。
例如,设
A=[1324],B=[0657]则
A⊗B=[1⋅B3⋅B2⋅B4⋅B]=06018571521012182410142028- 结合律 (A⊗B)⊗C=A⊗(B⊗C)
- 分配律 A⊗(B+C)=A⊗B+A⊗C
- 交换律 (仅当 A 和 B 都是方阵时成立) A⊗B=B⊗A
- 分配律 (A+B)⊗C=A⊗C+B⊗C
- 单位矩阵 Im⊗In=Imn
- 混合乘积 (A⊗B)(C⊗D)=(AC)⊗(BD)
- 转置与逆 (A⊗B)⊤=A⊤⊗B⊤ (A⊗B)−1=A−1⊗B−1
- 克劳内克积的迹 tr(A⊗B)=tr(A)⋅tr(B)
- 克劳内克积的秩 rank(A⊗B)=rank(A)⋅rank(B)
求解 Sylvester 方程#
克劳内克积在求解 Sylvester 方程中非常有用。Sylvester 方程的形式为
AX+XB=C其中 A 和 B 是已知矩阵,C 是已知矩阵,X 是未知矩阵。可以将其转化为向量形式
(I⊗A+B⊤⊗I)vec(X)=vec(C)用这个形式可以使用线性代数的方法求解 X。
证明:
首先说明,
vec(X)=x11x21⋮xm1x12x22⋮xm2⋮x1nx2n⋮xmn即 vec(⋅) 函数是按照列优先的顺序将矩阵展开为一个向量。
我们对等式两侧同时向量化,得到
vec(AX+XB)=vec(C)利用性质 vec(AXB)=(B⊤⊗A)vec(X),得到
⇒vec(AX)+vec(XB)=vec(C)(I⊗A+B⊤⊗I)vec(X)=vec(C)两边同时左乘 (I⊗A+B⊤⊗I)−1,得到
vec(X)=(I⊗A+B⊤⊗I)−1vec(C)即可求解 X。
卷积定理#
克劳内克积在信号处理中的卷积定理中也有重要应用。设 x[n] 和 h[n] 是两个离散时间信号,它们的卷积可以表示为
y[n]=(x∗h)[n]=k=−∞∑∞x[k]h[n−k]利用克劳内克积,可以将其表示为矩阵形式
vec(y)=(I⊗h)vec(x)其中 I 是单位矩阵,vec(⋅) 是将矩阵按列展开为向量的操作。