这一讲我们来讲一下复矩阵。线性代数中,复矩阵是避免不了的话题,因为一个简单实矩阵都有可能有复数特征值。
复矩阵
我们着重看一下复矩阵和实矩阵在运算上的区别。
- 距离
首先,一个复数向量的的距离求法发生了变化
x
⊤
x
→
x
H
x
\bm{x}^\top\bm{x}~~\rightarrow~~ \bm{x}^H\bm{x}
x⊤x → xHx
其中, x H \bm{x}^H xH 指的是共轭转置。
相应的,内积也发生了变化
-
内积
x ⊤ y → x H y \bm{x}^\top\bm{y}~~\rightarrow ~~ \bm{x}^H\bm{y} x⊤y → xHy -
对称矩阵 symmetric matrix → \rightarrow → 厄米矩阵 Hermitian matrix
之前讲到对阵矩阵时说过,对称矩阵很好的性质在复数矩阵的情况下应该变为
A
⊤
=
A
→
A
H
=
A
\bm{A}^\top=\bm{A}~~\rightarrow ~~ \bm{A}^H=\bm{A}
A⊤=A → AH=A
- 正交矩阵 orthogonal matrix → \rightarrow → 酉矩阵 Unitary matrix
Q ⊤ Q = I → Q H = Q \bm{Q}^\top\bm{Q}=I~~\rightarrow ~~ \bm{Q}^H=\bm{Q} Q⊤Q=I → QH=Q
傅里叶矩阵
下面我们讲一下目前为止最重要的复数矩阵: 傅里叶矩阵 Fourier Matrix. 它实际上是傅里叶变换的矩阵形式。
定义
我们来看看什么是傅里叶矩阵
F
n
=
[
1
1
1
⋯
1
1
W
1
W
2
⋯
W
n
−
1
1
W
2
W
4
⋯
W
2
(
n
−
1
)
⋮
⋮
⋮
⋮
⋮
1
W
n
−
1
W
2
(
n
−
1
)
⋯
W
(
n
−
1
)
2
]
\bm{F}_n=\begin{bmatrix} 1 & 1 & 1& \cdots & 1\\ 1 & W^1 & W^2& \cdots & W^{n-1}\\ 1 & W^2 & W^4& \cdots & W^{2(n-1)}\\ \vdots & \vdots & \vdots & \vdots & \vdots\\ 1 & W^{n-1}& W^{2(n-1)}& \cdots& W^{(n-1)^2}\\ \end{bmatrix}
Fn=⎣⎢⎢⎢⎢⎢⎡111⋮11W1W2⋮Wn−11W2W4⋮W2(n−1)⋯⋯⋯⋮⋯1Wn−1W2(n−1)⋮W(n−1)2⎦⎥⎥⎥⎥⎥⎤
可以看出,其中每一项
(
F
n
)
i
j
=
W
i
j
(F_n)_{ij}=W^{ij}
(Fn)ij=Wij,
i
,
i
=
0
,
1
,
2
,
.
.
.
,
n
−
1
i,i=0,1,2,...,n-1
i,i=0,1,2,...,n−1, 其中
W
W
W 是复平面单元圆分割成
n
n
n 份得到的向量,即
W
=
e
j
2
π
n
W=e^{j\frac{2\pi}{n}}
W=ejn2π
一个最简单的例子是
F
4
\bm{F}_4
F4, 因为相位刚刚好取到坐标轴上,此时
F
4
=
[
1
1
1
1
1
i
−
1
−
i
1
−
1
1
−
1
1
−
i
−
1
i
]
\bm{F}_4=\begin{bmatrix} 1 & 1 & 1& 1\\ 1 & i & -1 & -i\\ 1 & -1 & 1 & -1\\ 1 & -i& -1& i\\ \end{bmatrix}
F4=⎣⎢⎢⎡11111i−1−i1−11−11−i−1i⎦⎥⎥⎤
这个矩阵有什么特点尼?它是一个酉矩阵,且其中的每一项都是单位圆上的一个相位。
F
n
H
F
n
=
I
\bm{F}_n^H\bm{F}_n=I
FnHFn=I
它的逆也很容易写出来
F
n
−
1
=
F
n
H
{\bm{F}}_n^{-1}= \bm{F}_n^H
Fn−1=FnH
因此,傅里叶变换和逆傅里叶变换可以写成矩阵形式为
y
=
F
n
x
\bm{y=F_n}\bm{x}
y=Fnx
x = F n H y \bm{x=F^{H}_n}\bm{y} x=FnHy
快速傅里叶变换
长久以来,傅里叶变换的运算复杂度 O ( n 2 ) \mathcal{O}(n^2) O(n2) 对没有高速计算机的时代非常不友好。快速傅里叶变换 FFT 应运而生。FFT的基本原理是divide and conquer,就是把一个 高维的傅里叶变换用低维表示出来,看下图就很明了了。
从矩阵角度我们也能得到相似的结论,
即,把一个高维
F
64
F_{64}
F64 分解为 三部分乘积,其中最右侧是一个permutation matrix,是对输入的
x
\bm{x}
x 做 odd-even shuffle,中间的是俩低维
F
32
F_{32}
F32 matrix组成的分块对角阵,左侧是butterfly network。这个分解与上图一一对应。
我们可以继续divide and conquer把FFT进一步分解直至最低维度,最终写成矩阵连乘结果,复杂度降为 O ( 1 2 n log 2 n ) \mathcal{O} (\frac{1}{2}n\log_2 n) O(21nlog2n), 只要看下图就非常明了了。