MIT 18.06 linear algebra 第二十七讲笔记
- Complex inner products
- Vector
- Matrices
- Discrete Fourier
- Fourier Matrix Fn F n
- Fast Transform = FFT F F T
一个普通的 n n 阶矩阵和一个向量做乘法时需要进行次乘法运算。而进行快速傅里叶变换后可以降低到 nlogn2 n log 2 n 次。
如果有一个复数向量,那么求向量长度时: ||Z||2=[x1¯¯¯¯¯x2¯¯¯¯¯⋯xn¯¯¯¯¯]⎡⎣⎢⎢⎢⎢z1z2⋮zn⎤⎦⎥⎥⎥⎥ | | Z | | 2 = [ x 1 ¯ x 2 ¯ ⋯ x n ¯ ] [ z 1 z 2 ⋮ z n ] 。这里是与实数向量不一样的。也就是说求一个复数向量长度的时候,需要以其共轭向量的转置乘以它。即 ||Z||2=Z¯¯¯¯TZ | | Z | | 2 = Z ¯ T Z 。
计算复数向量的内积时,假设计算 y y 与的内积时,公式为 y¯¯¯Tx=yHx y ¯ T x = y H x 。其中的 H H 的作用就是求其共轭并转置,此处的英文为 Hermitian H e r m i t i a n 。
在实数矩阵时,我们关于对称阵的定义为 AT=A A T = A ,但是这对复数矩阵不适用。关于复数对称矩阵的定义为 A¯¯¯¯T=A=AH A ¯ T = A = A H 。这也意味着复数对称矩阵的对角线元素均为实数。例如 [23−i3+i5] [ 2 3 + i 3 − i 5 ] ,这种矩阵又称为埃尔米特矩阵(又称“自共轭矩阵”)是共轭对称的方阵。满足 AH=A A H = A 这些矩阵的特征值为实数。
复数标准正交向量 q1,q2,⋯,qn q 1 , q 2 , ⋯ , q n 垂直,那么满足 qi¯¯¯¯Tqj{0ifi≠j1ifi=j q i ¯ T q j { 0 i f i ≠ j 1 i f i = j 。
标准正交矩阵 Q Q 满足。即 QHQ=I Q H Q = I 。这种矩阵又称为酉矩阵,酉矩阵是正交矩阵往复数向量上的推广。
n n 阶傅里叶矩阵。这个矩阵满足 (Fn)ij=wi∗j ( F n ) i j = w i ∗ j ,其中 i,j=0,1,⋯,n−1 i , j = 0 , 1 , ⋯ , n − 1 。
如果有
wn=1
w
n
=
1
,那么
w=ei2πn
w
=
e
i
2
π
n
。
w=cos(2πn)+isin(2πn)
w
=
c
o
s
(
2
π
n
)
+
i
s
i
n
(
2
π
n
)
上面是
w6=1
w
6
=
1
。
当
n=4
n
=
4
时,
w4=1
w
4
=
1
,
w=eiπ2=i
w
=
e
i
π
2
=
i
,
i2=−1,i3=−i,i4=1
i
2
=
−
1
,
i
3
=
−
i
,
i
4
=
1
。因此
F4=⎡⎣⎢⎢⎢⎢11111ii2i31i2i4i61i3i6i9⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢11111i−1−i1−11−11−i−1i⎤⎦⎥⎥⎥
F
4
=
[
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
]
。通过这个
4×4
4
×
4
的矩阵可以得到一个4点的傅里叶变换。
上面的矩阵乘以 12 1 2 后就是一个酉矩阵,即 12F4 1 2 F 4 为酉矩阵。
当有 w64=1,w32=1 w 64 = 1 , w 3 2 = 1 ,那么 w264=w32 w 64 2 = w 32 。我们可以将 F64 F 64 变换为关于 F32 F 32 的。 [F64]=[IID−D][F3200F32][p] [ F 64 ] = [ I D I − D ] [ F 32 0 0 F 32 ] [ p ] 。以前 F64 F 64 乘以一个向量需要做 64×64 64 × 64 次乘法操作,现在只需要 2(32)2+fix 2 ( 32 ) 2 + f i x ,其中fix是关于左右两侧关于修正矩阵的计算量。
其中右侧的修正矩阵是一个就置换矩阵,形如 p=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢111111⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥ p = [ 1 1 1 1 1 1 ] 。当 p p 乘以一个向量,它能把所有奇数位置的分量统统排列到偶数分量之前。其中。现在的计算量为 2(32)2+32 2 ( 32 ) 2 + 32 ,其中乘以 I I 和都不需要大量的计算开销。
F32
F
32
又可以进一步分解
[F64]=[IID−D][F3200F32][p]=[IID−D]⎡⎣⎢⎢⎢IID−DIID−D⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢F16F16F16F16⎤⎦⎥⎥⎥[pp][p]
[
F
64
]
=
[
I
D
I
−
D
]
[
F
32
0
0
F
32
]
[
p
]
=
[
I
D
I
−
D
]
[
I
D
I
−
D
I
D
I
−
D
]
[
F
16
F
16
F
16
F
16
]
[
p
p
]
[
p
]
。
现在的计算量变为
2[x×162+16]+32
2
[
x
×
16
2
+
16
]
+
32
,如果像这样依次展开,左右两边扩展为修正矩阵,由于
log642=6
l
o
g
2
64
=
6
,因此左右各有6个修正矩阵。一共
log642∗642
l
o
g
2
64
∗
64
2
。也就是计算公式为
logn2∗n2
l
o
g
2
n
∗
n
2
。
假设现有有一个1024*1024维度的矩阵,那么它乘以一个向量计算量为1024*1024,但如果对其进行分解后,那么计算量为5*1024。降到了原来的 1200 1 200 .