线性代数学习笔记8-1:复数矩阵与Hermite矩阵、酉矩阵、傅里叶矩阵和快速傅里叶变换FFT
即使是实矩阵,也可能有复特征值,因此矩阵运算中无法避免的会碰到复数
这里我们先特别关注复数矩阵的情况,并明确如何处理复矩阵,而在后续学习中一般只研究实矩阵,可以将其推广到复数情况
复向量的内积和共轭转置
对于复向量 x = [ x 1 x 2 ⋮ x n ] ∈ C n \mathbf{x}=\left[\begin{array}{c}x_{1} \\x_{2} \\\vdots \\x_{\mathrm{n}}\end{array}\right] \in \mathbf{C}^{n} x=⎣ ⎡x1x2⋮xn⎦ ⎤∈Cn,其中每个分量都是复数
在实数情况下,我们学习过, x T x {\mathbf{x}}^{T} \mathbf{x} xTx表示 x \mathbf{x} x与自己的内积/点积,结果是一个正实数(向量 x \mathbf{x} x长度的平方)
- 复向量的模长的平方:在
x
\mathbf{x}
x为复数情的况下不能再使用
x
T
x
{\mathbf{x}}^{T} \mathbf{x}
xTx,复向量模长的平方应推广为
x
‾
T
x
\overline{\mathbf{x}}^{T} \mathbf{x}
xTx,对于复向量,这是一个常见、很重要的运算
具体带入可知, x ‾ T x \overline{\mathbf{x}}^{T} \mathbf{x} xTx的结果必然为非负实数(仅当 x = 0 \mathbf{x}=\mathbf 0 x=0时 x ‾ T x = 0 \overline{\mathbf{x}}^{T} \mathbf{x}=0 xTx=0),这符合“模长平方”的数学意义: x ‾ T x = [ x ˉ 1 x ˉ 2 x ˉ 3 x ˉ 4 ] [ x 1 x 2 x 3 x 4 ] = ∣ x 1 ∣ 2 + ∣ x 2 ∣ 2 + ∣ x 3 ∣ 2 + ∣ x 4 ∣ 2 \overline{\mathbf{x}}^{T} \mathbf{x}=\left[\begin{array}{llll}\bar{x}_{1} & \bar{x}_{2} & \bar{x}_{3} & \bar{x}_{4}\end{array}\right]\left[\begin{array}{l}x_{1} \\ x_{2} \\ x_{3} \\ x_{4}\end{array}\right]=\left|x_{1}\right|^{2}+\left|x_{2}\right|^{2}+\left|x_{3}\right|^{2}+\left|x_{4}\right|^{2} xTx=[xˉ1xˉ2xˉ3xˉ4]⎣ ⎡x1x2x3x4⎦ ⎤=∣x1∣2+∣x2∣2+∣x3∣2+∣x4∣2其中,对于复数 x i x_i xi, x ˉ i x i = ∣ x i ∣ 2 \bar{x}_{i}x_i=\left|x_{i}\right|^{2} xˉixi=∣xi∣2(由于 ( a + i b ) ( a − i b ) = a 2 + b 2 (a+ib)(a-ib)=a^2+b^2 (a+ib)(a−ib)=a2+b2),可见,结果的每一项都是非负实数
例如,我们认为复向量 [ 1 i ] \left[\begin{array}{c}1 \\i\end{array}\right] [1i]模长的平方为2,因为 [ 1 − i ] [ 1 i ] = 2 \left[\begin{array}{ll}1 & -i\end{array}\right]\left[\begin{array}{c}1 \\i\end{array}\right]=2 [1−i][1i]=2
- 一般的,复向量的内积运算为
y
H
x
\mathbf{y}^{H} \mathbf{x}
yHx:
y
H
x
=
y
‾
T
x
=
y
ˉ
1
x
1
+
y
ˉ
2
x
2
+
⋯
+
y
ˉ
n
x
n
\mathbf{y}^{H} \mathbf{x}=\overline{\mathbf{y}}^{T} \mathbf{x}=\bar{y}_{1} x_{1}+\bar{y}_{2} x_{2}+\cdots+\bar{y}_{n} x_{n}
yHx=yTx=yˉ1x1+yˉ2x2+⋯+yˉnxn
若 y H x = 0 \mathbf{y}^{H} \mathbf{x}=0 yHx=0,说明两个复向量互相垂直/正交
可见,实数情况下的转置 x T \mathbf{x}^{T} xT,在复数情况下推广为共轭转置 x ‾ T = x H \overline{\mathbf{x}}^{T}=\mathbf{x}^{H} xT=xH,也称为Hermite转置
复数矩阵 Complex matrices 与Hermite转置
由上,矩阵的转置运算 A T \mathbf A^T AT,在复空间中推广为Hermite转置 A H \mathbf A^H AH
- Hermite矩阵: A H = A ˉ T \mathbf A^H=\mathbf{\bar A}^T AH=AˉT
一般而言,从n维实空间 R n \mathbf{R}^{n} Rn,推广到n维复空间 C n \mathbf{C}^{n} Cn,将各个转置运算换为Hermite转置即可,如:
Hermitian矩阵
- 对称矩阵,实数下为 A = A T \mathbf A=\mathbf A^T A=AT,复数下为 A = A H \mathbf A=\mathbf A^H A=AH,称为Hermitian矩阵
酉矩阵
- 正交矩阵,实数下为
Q
T
Q
=
I
\mathbf Q^T\mathbf Q=\mathbf I
QTQ=I,复数下为
Q
H
Q
=
I
\mathbf Q^H\mathbf Q=\mathbf I
QHQ=I,称为酉矩阵(unitary matrix)
酉矩阵的列向量都是复向量,且构成复空间中的标准正交向量组,满足 q ‾ j T q k = { 0 j ≠ k 1 j = k \overline{\mathbf{q}}_{j}^{T} \mathbf{q}_{k}=\left\{\begin{array}{ll} 0 & j \neq k \\1 & j=k\end{array}\right. qjTqk={01j=kj=k
傅里叶矩阵
使用傅里叶矩阵,可以实现离散傅里叶变换DFT
离散傅里叶变换DFT: X [ k ] = ∑ n = 0 N − 1 x [ n ] e − j 2 π N k n X[k]= \sum_{n=0}^{N-1} x[n] \mathrm{e}^{-\mathrm{j} \frac{2 \pi}{N} k n} X[k]=∑n=0N−1x[n]e−jN2πkn
离散傅里叶逆变换IDFT: x [ n ] = 1 N ∑ k = 0 N − 1 x [ n ] e j 2 π N k n x[n]=\frac{1}{N}\sum_{k=0}^{N-1} x[n] \mathrm{e}^{\mathrm{j} \frac{2 \pi}{N} k n} x[n]=N1∑k=0N−1x[n]ejN2πkn
长度为 n n n的离散向量 x n \boldsymbol x_n xn:
- 做离散傅里叶变换DFT: F n x n \boldsymbol{F}_{n}\boldsymbol x_n Fnxn;(结果是 n × 1 n\times 1 n×1的列向量,第 k k k行来自于 F n \boldsymbol{F}_{n} Fn的第 k k k行与 x n \boldsymbol x_n xn相乘)
- 做离散傅里叶逆变换IDFT: F n − 1 x n \boldsymbol{F}_{n}^{-1}\boldsymbol x_n Fn−1xn
根据DFT和IDFT定义式,提取基本元素
ω
=
e
j
2
π
/
n
\omega=e^{j 2 \pi / n}
ω=ej2π/n,从而得到n阶傅里叶矩阵
F
n
\boldsymbol{F}_{n}
Fn:
F
n
=
[
1
1
1
⋯
1
1
ω
ω
2
ω
(
n
−
1
)
1
ω
2
ω
4
ω
2
(
n
−
1
)
⋮
⋱
1
ω
n
−
1
ω
2
(
n
−
1
)
ω
(
n
−
1
)
2
]
\boldsymbol{F}_{n}=\left[\begin{array}{rrrrr} 1 & 1 & 1 & \cdots & 1 \\ 1 & \omega & \omega^{2} & & \omega^{(n-1)} \\ 1 & \omega^{2} & \omega^{4} & & \omega^{2(n-1)} \\ \vdots & & & \ddots & \\ 1 & \omega^{n-1} & \omega^{2(n-1)} & & \omega^{(n-1)^{2}}\end{array}\right]
Fn=⎣
⎡111⋮11ωω2ωn−11ω2ω4ω2(n−1)⋯⋱1ω(n−1)ω2(n−1)ω(n−1)2⎦
⎤其中,基本元素
ω
=
e
j
2
π
/
n
\omega=e^{j 2 \pi / n}
ω=ej2π/n的特点在于:
- ω = e j 2 π / n \omega=e^{j 2 \pi / n} ω=ej2π/n是复元素,但模长为1,因此其幂次方仅对应于单位圆上的旋转;
- 并且 ω = e j 2 π / n \omega=e^{j 2 \pi / n} ω=ej2π/n的相角,就是将一整圈单位圆( 2 π 2\pi 2π)划分为 n n n份得到的,从而 ω n = 1 \omega^{n}=1 ωn=1
傅里叶矩阵的性质
注意,n阶傅里叶矩阵 F n \boldsymbol{F}_{n} Fn满足:
- 矩阵元素通项公式: ( F n ) i j = ω ( i − 1 ) ( j − 1 ) = ( e j 2 π / n ) ( i − 1 ) ( j − 1 ) \left(\boldsymbol{F}_{n}\right)_{ij}=\omega^{(i-1)(j-1)}=(e^{j 2 \pi / n})^{(i-1)(j-1)} (Fn)ij=ω(i−1)(j−1)=(ej2π/n)(i−1)(j−1),即第 i i i行第 j j j列元素的指数,由 ( i − 1 ) ( j − 1 ) (i-1)(j-1) (i−1)(j−1)相乘得到( i , j ∈ [ 1 , n ] i,j\in[1,n] i,j∈[1,n])
- 有一定的对称性(满足 F n = F n T \boldsymbol{F}_{n}=\boldsymbol{F}_{n}^{T} Fn=FnT),但并不是Hermitian矩阵(复空间下不能算是对称矩阵,因为不满足 A = A H \boldsymbol{A}=\boldsymbol{A}^{H} A=AH)
- 傅里叶矩阵,各个列向量正交,但不是酉矩阵(列向量模长为
N
\sqrt{N}
N)(复空间下不是“列向量标准正交”的正交矩阵)
好处:列向量正交,可以将傅里叶矩阵分解为一系列稀疏矩阵(含有大量零元素),从而可以轻易做乘法、求逆 - 由上,各列向量正交但模长为 N \sqrt{N} N,整个矩阵除以 N \sqrt{N} N可以得到酉矩阵 1 N F n \frac{1}{\sqrt{N}}\boldsymbol{F}_{n} N1Fn(正交矩阵在复空间下的推广,列向量为复向量且标准正交)
- 推论:
F
n
−
1
=
1
N
F
n
H
F_n^{-1}=\frac{1}{N} F_n^{H}
Fn−1=N1FnH,或者说
1
N
F
n
H
F
n
=
I
\frac{1}{N} \boldsymbol{F}_{n}{ }^{H} \boldsymbol{F}_{n}=\boldsymbol{I}
N1FnHFn=I
证明:根据上面, 1 N F n \frac{1}{\sqrt{N}}\boldsymbol{F}_{n} N1Fn为酉矩阵,其逆矩阵为 ( 1 N F n ) − 1 = ( 1 N F n ) H = 1 N F n H \left(\frac{1}{\sqrt{N}} F_n\right)^{-1}=\left(\frac{1}{\sqrt{N}} F_n\right)^{H}=\frac{1}{\sqrt{N}} F_n^{H} (N1Fn)−1=(N1Fn)H=N1FnH
两步同乘以 1 N \frac{1}{\sqrt{N}} N1,即可得到 F n − 1 = 1 N F n H F_n^{-1}=\frac{1}{N} F_n^{H} Fn−1=N1FnH,证毕
(ps. 这就是为什么DFT有系数 1 N \frac{1}{N} N1)
例如,对于 F 4 = [ 1 1 1 1 1 e j ( π 2 ) e j ( π 2 ) 2 e j ( π 2 ) 3 1 e j ( π 2 ) 2 e j ( π 2 ) 2 ∗ 2 e j ( π 2 ) 2 ∗ 3 1 e j ( π 2 ) 3 e j ( π 2 ) 3 ∗ 2 e j ( π 2 ) 3 ∗ 3 ] = [ 1 1 1 1 1 i i 2 i 3 1 i 2 i 4 i 6 1 i 3 i 6 i 9 ] = [ 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ] \boldsymbol{F}_{4}=\left[\begin{array}{cccc} 1 & 1 & 1 & 1 \\ 1 & e^{j\left(\frac{\pi}{2}\right)} & e^{j\left(\frac{\pi}{2}\right) 2} & e^{j\left(\frac{\pi}{2}\right) 3} \\ 1 & e^{j\left(\frac{\pi}{2}\right) 2} & e^{j\left(\frac{\pi}{2}\right) 2 * 2} & e^{j\left(\frac{\pi}{2}\right) 2 * 3} \\ 1 & e^{j\left(\frac{\pi}{2}\right) 3} & e^{j\left(\frac{\pi}{2}\right) 3 * 2} & e^{j\left(\frac{\pi}{2}\right) 3 * 3} \end{array}\right]=\left[\begin{array}{cccc} 1 & 1 & 1 & 1 \\1 & i & i^{2} & i^{3} \\1 & i^{2} & i^{4} & i^{6} \\1 & i^{3} & i^{6} & i^{9}\end{array}\right] =\left[\begin{array}{rrrr}1 & 1 & 1 & 1 \\1 & i & -1 & -i \\1 & -1 & 1 & -1 \\1 & -i & -1 & i\end{array}\right] F4=⎣ ⎡11111ej(2π)ej(2π)2ej(2π)31ej(2π)2ej(2π)2∗2ej(2π)3∗21ej(2π)3ej(2π)2∗3ej(2π)3∗3⎦ ⎤=⎣ ⎡11111ii2i31i2i4i61i3i6i9⎦ ⎤=⎣ ⎡11111i−1−i1−11−11−i−1i⎦ ⎤各个列向量正交(内积 x i ˉ T x j = 0 \bar{\boldsymbol x_i}^T\boldsymbol x_j=0 xiˉTxj=0),但列向量的模长平方 x i ˉ T x i = 4 \bar{\boldsymbol x_i}^T\boldsymbol x_i=4 xiˉTxi=4
因此,可以修正得到一个酉矩阵: 1 2 F 4 = 1 2 [ 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ] \frac{1}{2}\boldsymbol{F}_{4}=\frac{1}{2}\left[\begin{array}{rrrr}1 & 1 & 1 & 1 \\1 & i & -1 & -i \\1 & -1 & 1 & -1 \\1 & -i & -1 & i\end{array}\right] 21F4=21⎣ ⎡11111i−1−i1−11−11−i−1i⎦ ⎤
酉矩阵 1 2 F 4 \frac{1}{2}\boldsymbol{F}_{4} 21F4(复数下的正交矩阵)的逆矩阵: 1 2 F 4 H \frac{1}{2}\boldsymbol{F}_{4}^H 21F4H(共轭转置即可)
满足 1 4 F 4 H F 4 = I \frac{1}{4} \boldsymbol{F}_{4}{ }^{H} \boldsymbol{F}_{4}=\boldsymbol{I} 41F4HF4=I
另外也可以验证 F 4 \boldsymbol{F}_{4} F4的逆矩阵: F 4 − 1 = 1 4 F 4 H = 1 4 [ 1 1 1 1 1 e − j ( π 2 ) e − j ( π 2 ) 2 e − j ( π 2 ) 3 1 e − j ( π 2 ) 2 e − j ( π 2 ) 2 ∗ 2 e − j ( π 2 ) 2 ∗ 3 1 e − j ( π 2 ) 3 e − j ( π 2 ) 3 ∗ 2 e − j ( π 2 ) 3 ∗ 3 ] F_{4}^{-1}=\frac{1}{4} {F}_{4}^H=\frac{1}{4}\left[\begin{array}{cccc} 1 & 1 & 1 & 1 \\ 1 & e^{-j\left(\frac{\pi}{2}\right)} & e^{-j\left(\frac{\pi}{2}\right) 2} & e^{-j\left(\frac{\pi}{2}\right) 3} \\ 1 & e^{-j\left(\frac{\pi}{2}\right) 2} & e^{-j\left(\frac{\pi}{2}\right) 2 * 2} & e^{-j\left(\frac{\pi}{2}\right) 2 * 3} \\ 1 & e^{-j\left(\frac{\pi}{2}\right) 3} & e^{-j\left(\frac{\pi}{2}\right) 3 * 2} & e^{-j\left(\frac{\pi}{2}\right) 3 * 3} \end{array}\right] F4−1=41F4H=41⎣ ⎡11111e−j(2π)e−j(2π)2e−j(2π)31e−j(2π)2e−j(2π)2∗2e−j(2π)3∗21e−j(2π)3e−j(2π)2∗3e−j(2π)3∗3⎦ ⎤
快速傅里叶变换FFT
快速傅里叶变换FFT可以大大减少DFT的计算量,下面从矩阵角度看待这个问题
FFT中,将N=64的DFT拆为两个N=32的DFT
从矩阵角度:
- 傅里叶矩阵 F 64 \boldsymbol{F}_{64} F64和 F 32 \boldsymbol{F}_{32} F32的基本元素有如下关系: w 64 2 = w 32 w_{64}^2=w_{32} w642=w32,可见 F 64 \boldsymbol{F}_{64} F64和 F 32 \boldsymbol{F}_{32} F32有一定关系
- 具体而言, [ F 64 ] = [ I D I − D ] [ F 32 0 0 F 32 ] [ P ] \left[\boldsymbol{F}_{64}\right]=\left[\begin{array}{rr} \boldsymbol{I} & \boldsymbol{D} \\ \boldsymbol{I} & -\boldsymbol{D} \end{array}\right]\left[\begin{array}{rr} \boldsymbol{F}_{32} & 0 \\ 0 & \boldsymbol{F}_{32} \end{array}\right][\boldsymbol{P}] [F64]=[IID−D][F3200F32][P]
- 其中,置换矩阵
P
=
[
1
0
0
0
⋯
⋯
0
0
0
0
1
0
0
0
⋮
0
0
0
0
⋯
⋯
1
0
0
1
0
0
⋯
⋯
0
0
0
0
0
1
⋯
⋯
0
0
⋮
0
0
0
0
⋯
⋯
0
1
]
\boldsymbol{P}=\left[\begin{array}{cccccccc} 1 & 0 & 0 & 0 & \cdots & \cdots & 0 & 0 \\ 0 & 0 & 1 & 0 & & & 0 & 0 \\ & & & \vdots & & & & \\ 0 & 0 & 0 & 0 & \cdots & \cdots & 1 & 0 \\ 0 & 1 & 0 & 0 & \cdots & \cdots & 0 & 0 \\ 0 & 0 & 0 & 1 & \cdots & \cdots & 0 & 0 \\ & & & \vdots & & & & \\ 0 & 0 & 0 & 0 & \cdots & \cdots & 0 & 1 \end{array}\right]
P=⎣
⎡10000000010001000000⋮001⋮0⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯001000000001⎦
⎤,功能是将奇数次项(1,3,5)提到前面,将偶数次项(2,4,6)放到后面
对角阵 D = [ 1 ω ω 2 ⋱ ω 31 ] \boldsymbol{D}=\left[\begin{array}{ccccc} 1 & & & & \\ & \omega & & & & \\ & & \omega^{2} & & \\ & & & \ddots & \\ & & & & \omega^{31} \end{array}\right] D=⎣ ⎡1ωω2⋱ω31⎦ ⎤ - 计算量对比:
原来对长度为 N N N的向量 x \boldsymbol x x直接做DFT,则 F 64 x \boldsymbol{F}_{64}\boldsymbol x F64x的计算量是 N × N N\times N N×N
改写为FFT后,计算量是两个 F 32 x \boldsymbol{F}_{32}\boldsymbol x F32x再加上一些修正项,修正项主要来自于与对角矩阵D的乘法,大约为32次;并且 F 32 \boldsymbol{F}_{32} F32可进一步拆为两个 F 16 \boldsymbol{F}_{16} F16、再拆为四个 F 8 \boldsymbol{F}_{8} F8…最终,所有计算来自于修正项,FFT计算量为 ( N / 2 ) l o g 2 N (N/2)log_2N (N/2)log2N