UTF8gbsn
注意,不建议读者直接阅读离散傅里叶变换,而是应该先阅读并理解傅里叶级数、和(连
续)傅里叶变换。这样才能够理解离散的傅里叶变换。
Introduction
在工程上,我们通常需要对离散的信号进行处理。所以我们必须要应用一种离散的傅里叶
变换。傅里叶级数的表示形式。如果们又信号
f
(
t
)
f(t)
f(t)
α
k
=
1
2
l
∫
−
l
l
f
(
x
)
e
−
i
k
π
x
l
d
x
,
(
k
=
0
,
±
1
,
±
2
,
.
.
.
)
\alpha_k=\frac{1}{2l}\int_{-l}^{l}{f(x)e^{-i \frac{k \pi x}{l}}dx},(k=0,\pm 1,\pm 2,...)
αk=2l1∫−llf(x)e−ilkπxdx,(k=0,±1,±2,...) 令
l
=
π
l=\pi
l=π,我们有,注意一点
i
i
i是虚数单位。不是下标
α
k
=
1
2
π
∫
0
2
π
f
(
t
)
e
−
i
k
t
d
t
,
(
k
=
0
,
±
1
,
±
2
,
.
.
.
)
\alpha_k=\frac{1}{2\pi} \int_{0}^{2\pi}{f(t)e^{-ikt}dt},(k=0,\pm 1, \pm 2, ...)
αk=2π1∫02πf(t)e−iktdt,(k=0,±1,±2,...)
我们看
α
k
\alpha_k
αk对应频率成分是
k
2
π
\frac{k}{2\pi}
2πk,那么我们可以看到。那么我们可以
看到,我们恒可以把离散的数据
y
=
{
y
i
}
,
y
=
(
1
,
2
,
.
.
.
,
n
)
y=\{y_i\},y=(1,2,...,n)
y={yi},y=(1,2,...,n),看做一个周期
2
π
2\pi
2π上的
采样点。因为
y
y
y是一定离散的数据。
那么我们如何来计算
α
k
\alpha_k
αk?因为
f
(
t
)
=
{
y
i
}
f(t)=\{y_i\}
f(t)={yi},是离散信号。所以我们必须变换
α
k
\alpha_k
αk为如下的等式,注意有一点儿,也就是
i
i
i是虚数单位,不是标号。
α
k
=
1
n
∑
j
=
0
n
−
1
f
(
2
π
j
n
)
e
−
2
π
i
j
k
n
\alpha_k=\frac{1}{n}\sum_{j=0}^{n-1}f(\frac{2\pi j}{n})e^{\frac{-2\pi i j k}{n}}
αk=n1j=0∑n−1f(n2πj)en−2πijk
也就是说
y ^ k / n ≈ α k ≈ 1 n ∑ j = 0 n − 1 y j w ‾ j k \widehat{y}_{k}/n\approx\alpha_k\approx \frac{1}{n}\sum_{j=0}^{n-1}y_j \overline{w}^{jk} y k/n≈αk≈n1j=0∑n−1yjwjk
y
j
=
f
(
2
π
j
n
)
,
w
=
e
2
π
i
n
y_j=f(\frac{2\pi j}{n}), w=e^{\frac{2\pi i}{n}}
yj=f(n2πj),w=en2πi
我们把
y
^
k
\widehat{y}_k
y
k叫做离散傅里叶变换。
Discrete Fourier Analysis
我们来看看离散傅里叶级数的一些分析,离散傅里叶变换,实际上就是对下面的公式进行
离散化。也就是离散
(
0
,
2
π
)
(0,2\pi)
(0,2π),用离散的数据来替代。所以积分
∫
0
2
π
\int_{0}^{2\pi}
∫02π变
成了累加
∑
j
=
0
n
−
1
\sum_{j=0}^{n-1}
∑j=0n−1,
f
(
t
)
↦
y
j
f(t)\mapsto y_j
f(t)↦yj
α k = 1 2 π ∫ 0 2 π f ( t ) e − i k t d t , ( k = 0 , ± 1 , ± 2 , . . . ) \alpha_k=\frac{1}{2\pi} \int_{0}^{2\pi}{f(t)e^{-ikt}dt},(k=0,\pm 1, \pm 2, ...) αk=2π1∫02πf(t)e−iktdt,(k=0,±1,±2,...)
y ^ k / n ≈ α k ≈ 1 n ∑ j = 0 n − 1 y j w ‾ j k \widehat{y}_{k}/n\approx\alpha_k\approx \frac{1}{n}\sum_{j=0}^{n-1}y_j \overline{w}^{jk} y k/n≈αk≈n1j=0∑n−1yjwjk
所以不难理解,这是用离散的值来计算
α
k
\alpha_k
αk的直接表现。那么下面我们来看看当
k
>
n
k>n
k>n时会发生什么
一般我们只计算
y
^
0
,
.
.
.
,
y
^
n
−
1
\widehat{y}_0,...,\widehat{y}_{n-1}
y
0,...,y
n−1,为什么我们不计算
y
^
n
\widehat{y}_{n}
y
n?,让我们来看看为什么?
k
=
n
k=n
k=n,首先计算下
w
‾
n
=
w
=
(
e
2
π
i
n
)
n
=
e
2
π
i
=
w
0
\overline{w}^{n}=w=(e^{\frac{2\pi i}{n}})^n=e^{2\pi i}=w^0
wn=w=(en2πi)n=e2πi=w0,
同理,
w
n
+
1
=
w
,
w
n
+
2
=
w
2
w^{n+1}=w,w^{n+2}=w^2
wn+1=w,wn+2=w2,所以,实际上我们实在计算重复的东西。另外,这也
解释了一定采样频率的信号,不可能含有比采样频率更高频率的信号。于是我们得出结论
y
‾
0
,
.
.
.
,
y
‾
n
−
1
\overline{y}_0,...,\overline{y}_{n-1}
y0,...,yn−1就是我们需要的离散傅里叶变换。
Matrix Form
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 ) F_n=\left( \begin{array}{ccccc} 1 & 1 & 1 & ... & 1 \\ 1 & \omega & \omega^2 & ... & \omega^{n-1}\\ 1 & \omega^2 & \omega^4 & ... & \omega^{2(n-1)} \\ \vdots & & & & \vdots \\ 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⎠⎟⎟⎟⎟⎟⎞
那么离散傅里叶变换就直接转换为了矩阵算法。方便工程上的实践。
Example
我们来看看一个具体的例子。这个例子我是从别的文章中看到的。我们先来看看原始信号
的
f
(
t
)
=
2
+
3
2
c
o
s
(
150
π
t
+
π
2
)
+
3
s
i
n
(
100
π
t
−
π
6
)
f(t)=2+\frac{3}{2}cos(150\pi t+\frac{\pi}{2})+3sin(100\pi t-\frac{\pi}{6})
f(t)=2+23cos(150πt+2π)+3sin(100πt−6π)
很明显,这个信号含有两种频率成分的信号,一种是
f
1
=
75
H
z
,
f
2
=
50
H
z
f_1=75Hz,f_2=50Hz
f1=75Hz,f2=50Hz.
我们的采样频 率取
f
s
=
512
H
z
f_s=512Hz
fs=512Hz ,这样在
t
∈
[
0
,
1
)
t\in [0, 1)
t∈[0,1)
上我们就可以取512个数据。然后使用傅里叶
变换后。我们会得到512个
y
^
j
\widehat{y}_j
y
j。注意我们得到的是复数。那么我们怎么根据
复数信息来计算频谱成分?
-
数据中大部分都是0,有效的数据为 y ^ 0 = 1024 y ^ 50 = 665.108 + 384 i y ^ 75 = − 384 i y ^ 437 = 384 i y ^ 462 = 665.108 − 384 i \left. \begin{aligned} \widehat{y}_{0}&=&1024\\ \widehat{y}_{50}&=&665.108+384i\\ \widehat{y}_{75}&=&-384i\\ \widehat{y}_{437}&=&384i\\ \widehat{y}_{462}&=&665.108 -384i \end{aligned} \right. y 0y 50y 75y 437y 462=====1024665.108+384i−384i384i665.108−384i
-
那么我们如何才能够从离散傅里叶变换中找出找出频率成分和相位,还有我们的常
数项?-
注意我们是将整个采样区间映射到了 0 , 2 l 0,2l 0,2l上,而我们一般采用的是 − l , l -l,l −l,l上。
所以根据我另外一篇文章傅里叶变换中提到的变换方法可以得。n ∗ α − λ = y ^ − 50 = 665.108 − 384 i n*\alpha_{-\lambda}=\widehat{y}_{-50}=665.108-384i n∗α−λ=y −50=665.108−384i
n ∗ α − λ = y ^ − 75 = − 384 i n*\alpha_{-\lambda}=\widehat{y}_{-75}=-384i n∗α−λ=y −75=−384i -
我们来利用公式
n ∗ α λ = 1 2 π f ^ ( λ ) = a λ − i b λ 2 n*\alpha_{\lambda}=\frac{1}{\sqrt{2\pi}}\widehat{f}(\lambda)=\frac{a_{\lambda}-ib_{\lambda}}{2} n∗αλ=2π1f (λ)=2aλ−ibλ
n ∗ α − λ = 1 2 π f ^ ( − λ ) = a λ + i b λ 2 n*\alpha_{-\lambda}=\frac{1}{\sqrt{2\pi}}\widehat{f}(-\lambda)=\frac{a_{\lambda}+ib_{\lambda}}{2} n∗α−λ=2π1f (−λ)=2aλ+ibλ -
n ∗ a 50 = 2 ∗ 665.108 , n ∗ b 50 = − 2 ∗ 384 , n ∗ a 75 = 0 , n ∗ b 75 = − 2 ∗ 384 n*a_{50}=2*665.108,n*b_{50}=-2*384,n*a_{75}=0,n*b_{75}=-2*384 n∗a50=2∗665.108,n∗b50=−2∗384,n∗a75=0,n∗b75=−2∗384
也就是说,我们离散傅里叶变换之后,发现有两个频率的信号.一个是 50 H z 50Hz 50Hz一个是 75 H z 75Hz 75Hz. -
计算 a 0 a_0 a0,其中l是什么?是半周期。而我们的采样频率是 n = 512 n=512 n=512。也就是说,
y ^ k / n ≈ α k ≈ 1 n ∑ j = 0 n − 1 y j w ‾ j k \widehat{y}_{k}/n\approx\alpha_k\approx \frac{1}{n}\sum_{j=0}^{n-1}y_j \overline{w}^{jk} y k/n≈αk≈n1j=0∑n−1yjwjk
y ^ 0 / 512 = 1024 / 512 = α 0 = a 0 2 = 2 \widehat{y}_0/512=1024/512=\alpha_0=\frac{a_0}{2}=2 y 0/512=1024/512=α0=2a0=2
由此我们可以知道 a 0 = 4 a_0=4 a0=4,也就是说 f ( x ) f(x) f(x)的常数项为 a 0 2 = 2 \frac{a_0}{2}=2 2a0=2 -
50 H z 50Hz 50Hz 信号计算。
回忆一下
a 50 c o s ( 50 ∗ 2 π t ) + b 50 s i n ( 50 ∗ 2 π t ) a_{50}cos(50*2\pi t)+b_{50}sin(50*2\pi t) a50cos(50∗2πt)+b50sin(50∗2πt)
A 50 = ( 2 × 665.108 / 512 ) 2 + ( − 2 × 384 / 512 ) 2 = 3 A_{50}=\sqrt{(2\times 665.108/512)^2+(-2\times 384/512)^2}=3 A50=(2×665.108/512)2+(−2×384/512)2=3
φ = a r c t a n ( − 384 / 665.108 ) = − π 6 \varphi = arctan(-384/665.108)= -\frac{\pi}{6} φ=arctan(−384/665.108)=−6π也就是说, 50 H z 50Hz 50Hz的信号为。
3 s i n ( 100 π t − π 6 ) 3sin(100\pi t-\frac{\pi}{6}) 3sin(100πt−6π)
-
同理 75 H z 75Hz 75Hz的信号量为
3 2 c o s ( 150 π t + π 2 ) \frac{3}{2}cos(150\pi t+\frac{\pi}{2}) 23cos(150πt+2π)
-
The End
最后,我们可以看到,离散傅里叶变换,实际上就是在傅里叶变换的基础上,使用了离散
的信号来计算。本身没有什么特别的地方。只要懂得如何计算就行。还有一点儿就是,大
家一定要记住,复数只是为了更方便计算。我们的具体计算中并没有利用复数计算的便利
性。这是我们忽略的,读者实际上自己思考一下就能明白,利用复数,可以很快的计算出
相位和幅值。至此,我们完成了傅里叶级数,傅里叶变换,离散傅里叶变换的文章。希望
能够给读者带来一些启示。因为我的能力有限。肯定有很多地方写得不好或者是错误的。,还望你们帮忙
指出。我一定,进行修改。