快速傅立叶变换(FFT)
Posted skywalker767
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速傅立叶变换(FFT)相关的知识,希望对你有一定的参考价值。
FFT
作用:快速求两个多项式的乘积/卷积
文章目录
前置知识
多项式乘法(点表示法):用任意n + 1个不同点,均可确定为一个n次多项式。
好处:如果有两个多项式A,B:
A
(
x
)
=
a
0
+
a
1
x
1
+
a
2
x
2
+
a
3
x
3
+
.
.
.
.
B
(
x
)
=
b
0
+
b
1
x
1
+
b
2
x
2
+
b
3
x
3
+
.
.
.
.
多
项
式
A
点
表
示
法
为
(
x
1
,
A
(
x
1
)
)
,
(
x
2
,
A
(
x
2
)
,
(
x
3
,
A
(
x
3
)
)
)
.
.
.
多
项
式
B
点
表
示
法
为
(
x
1
,
B
(
x
1
)
)
,
(
x
2
,
B
(
x
2
)
,
(
x
3
,
B
(
x
3
)
)
)
.
.
.
那
么
C
可
以
表
示
为
A
(
x
i
)
∗
B
(
x
i
)
;
多
项
式
C
点
表
示
法
为
(
x
1
,
C
(
x
1
)
)
,
(
x
2
,
C
(
x
2
)
,
(
x
3
,
C
(
x
3
)
)
)
.
.
.
(
o
(
n
)
)
A(x) = a_0 + {a_1}x^1+ {a_2}x^2+ {a_3}x^3+....\\\\ B(x) = b_0 + {b_1}x^1+ {b_2}x^2+ {b_3}x^3+....\\\\ 多项式A点表示法为(x_1 , A(x_1))~,~(x_2 , A(x_2)~,~(x_3 , A(x_3)))...\\\\ 多项式B点表示法为(x_1 , B(x_1))~,~(x_2 , B(x_2)~,~(x_3 , B(x_3)))...\\\\ 那么C可以表示为A(x_i)*B(x_i);\\\\ 多项式C点表示法为(x_1 , C(x_1))~,~(x_2 , C(x_2)~,~(x_3 , C(x_3)))...(o(n))
A(x)=a0+a1x1+a2x2+a3x3+....B(x)=b0+b1x1+b2x2+b3x3+....多项式A点表示法为(x1,A(x1)) , (x2,A(x2) , (x3,A(x3)))...多项式B点表示法为(x1,B(x1)) , (x2,B(x2) , (x3,B(x3)))...那么C可以表示为A(xi)∗B(xi);多项式C点表示法为(x1,C(x1)) , (x2,C(x2) , (x3,C(x3)))...(o(n))
复数(Complex)
定义:1.形如 a + b i a+bi a+bi,其中a为实部,b为虚部。
2.模长为: a 2 + b 2 \\sqrt{a^2 + b ^ 2} a2+b2
3.幅角:设逆时针方向为正方向,从x正半轴到向量的转角
运算法则:(满足结合律,交换律,分配律)
1.加法满足平行四边形法则
2.乘法:几何意义:幅角相加,模长相乘
代数意义: ( a c − b d ) + ( a d + b c ) i (ac-bd) + (ad + bc)i (ac−bd)+(ad+bc)i
单位根
定义: w n k w_n^k wnk为n次单位根
性质:
- w n j ≠ w n i ( ∀ i ≠ j ) w_n^j \\ne w_n^i(\\forall_{i \\ne j}) wnj=wni(∀i=j)
- w n k = c o s 2 k π n + s i n 2 k π n w_n^k = cos\\frac{2k\\pi}{n} + sin\\frac{2k\\pi}{n} wnk=cosn2kπ+sinn2kπ
- w n 0 = w n n = 1 w_n^0 = w_n^n = 1 wn0=wnn=1
- w 2 n 2 k = w n k w_{2n}^{2k} = w_n^k w2n2k=wnk(折半引理)
- w n k + n 2 = − w n k w_n^{k + \\frac{n}{2}} = -w_n^k wnk+2n=−wnk(消去引理)
离散傅立叶变换(Discrete Fourier Transform , DFT)
将系数矩阵转换为点表达式
设一个长度为n的数列FFT(FastFourier Transform,快速傅立叶变换)