強烈推薦“掐死教程”
傅里葉變換是數字信號處理中最基本的方法之一,是溝通時域和頻域的橋梁,本文試圖用通俗語言對傅里葉分析中常見的一些難點加以解釋,更嚴格的公式推導和幾何證明在知乎上有更多的大神解答,翻看知乎上多位大神的解答,大體分為兩類:一派是以“掐死教程”為代表的圖形派,包含大量的圖形影片輔助理解;另一派是公式派,其內容是對公式進行嚴格的推導、證明,而這兩派中對一些關鍵性的細節默認為常識并不加以解釋,而這些細節問題對整個問題的理解產生障礙,這篇文章更多的從信號處理的初學者角度出發,解釋傅里葉變換的同時對一些相對“弱智”但又非常關鍵的問題進行討論,
0.傅里葉級數(FS)
在討論傅里葉變換之前,首先要解釋“正交基”這一概念,在平面直角坐標系下,任意一個向量均能用單位向量x、y表示,其中“正交”的意思是表示向量的基底之間的內積為零,在二維空間下,兩個相互垂直的向量即為正交,

一個通俗的例子是計算機中對顏色的表示,任意顏色的光均可由三基色紅色、綠色、藍色的疊加來表示,

在這個例子中,紅色、綠色、藍色為三個正交基,
那么對于任意的一維信號,是否也能表示為正交基的線性組合呢?如果可以,正交基是什么?
根據讓·巴普蒂斯·約瑟夫·傅里葉男爵的猜測,任意的周期函式均能表示成不同頻率的正弦函式和余弦函式的線性組合,假設周期為T的信號x(t),可表示為:
x
(
t
)
=
C
+
∑
n
=
1
∞
[
a
n
cos
?
(
n
ω
0
t
)
+
b
n
sin
?
(
n
ω
0
t
)
]
x\left(t\right)=C+\sum_{n=1}^{\infty}\left[a_n\cos{\left(n\omega_0t\right)}+b_n\sin{\left(n\omega_0t\right)}\right]
x(t)=C+n=1∑∞?[an?cos(nω0?t)+bn?sin(nω0?t)](1)
式中
ω
0
=
2
π
/
T
\omega_0=2\pi/T
ω0?=2π/T式為信號x(t)的傅里葉級數表示,這里,
[
1
,
c
o
s
(
ω
0
)
,
c
o
s
(
2
ω
0
t
)
,
…
,
c
o
s
(
n
ω
0
t
)
,
s
i
n
(
ω
0
t
)
,
s
i
n
(
2
ω
0
t
)
,
…
,
s
i
n
(
n
ω
0
t
)
]
[1,cos(\omega_0), cos(2\omega_0t),…,cos(n\omega_0t),sin(\omega_0t),sin(2\omega_0t),…,sin(n\omega_0t)]
[1,cos(ω0?),cos(2ω0?t),…,cos(nω0?t),sin(ω0?t),sin(2ω0?t),…,sin(nω0?t)]為一組正交基,其正交性可由三角函式的三個性質證明:
∫
t
0
t
0
+
k
T
sin
?
(
n
ω
0
t
)
sin
?
(
m
ω
0
t
)
=
0
\int_{t_0}^{t_0+kT}{\sin{\left(n\omega_0t\right)}\sin{\left(m\omega_0t\right)}}=0
∫t0?t0?+kT?sin(nω0?t)sin(mω0?t)=0,m、n為自然數,m≠n
∫
t
0
t
0
+
k
T
cos
?
(
n
ω
0
t
)
cos
?
(
m
ω
0
t
)
=
0
\int_{t_0}^{t_0+kT}{\cos{\left(n\omega_0t\right)}\cos{\left(m\omega_0t\right)}}=0
∫t0?t0?+kT?cos(nω0?t)cos(mω0?t)=0,m、n為自然數,m≠n
∫
t
0
t
0
+
k
T
sin
?
(
n
ω
0
t
)
cos
?
(
m
ω
0
t
)
=
0
\int_{t_0}^{t_0+kT}{\sin{\left(n\omega_0t\right)}\cos{\left(m\omega_0t\right)}}=0
∫t0?t0?+kT?sin(nω0?t)cos(mω0?t)=0,m、n為自然數
根據上式,
[
1
,
c
o
s
(
ω
0
)
,
c
o
s
(
2
ω
0
t
)
,
…
,
c
o
s
(
n
ω
0
t
)
,
s
i
n
(
ω
0
t
)
,
s
i
n
(
2
ω
0
t
)
,
…
,
s
i
n
(
n
ω
0
t
)
]
[1,cos(\omega_0), cos(2\omega_0t),…,cos(n\omega_0t),sin(\omega_0t),sin(2\omega_0t),…,sin(n\omega_0t)]
[1,cos(ω0?),cos(2ω0?t),…,cos(nω0?t),sin(ω0?t),sin(2ω0?t),…,sin(nω0?t)]中任意兩個元素在信號周期內積分為0,滿足正交條件,
那么對于未知的信號x(t),如何確定各個基的系數C、
a
n
a_n
an?、
b
n
b_n
bn?呢?還是根據正交性,
首先確定直流分量C,在信號的最小周期內對式1兩邊取定積分得:
∫
0
T
x
(
t
)
d
t
=
∫
0
T
C
d
t
+
∫
0
T
∑
n
=
1
∞
[
a
n
cos
?
(
n
ω
0
t
)
+
b
n
sin
?
(
n
ω
0
t
)
]
d
t
\int_{0}^{T}x\left(t\right)dt=\int_{0}^{T}Cdt+\int_{0}^{T}{\sum_{n=1}^{\infty}\left[a_n\cos{\left(n\omega_0t\right)}+b_n\sin{\left(n\omega_0t\right)}\right]dt}
∫0T?x(t)dt=∫0T?Cdt+∫0T?n=1∑∞?[an?cos(nω0?t)+bn?sin(nω0?t)]dt
等式右側第二項中,根據三角函式的性質,在任意周期內對sin和cos的定積分均為0,則有:
∫
0
T
x
(
t
)
d
t
=
∫
0
T
C
d
t
\int_{0}^{T}x\left(t\right)dt=\int_{0}^{T}Cdt
∫0T?x(t)dt=∫0T?Cdt
C
=
1
T
∫
0
T
x
(
t
)
d
t
C=\frac{1}{T}\int_{0}^{T}x\left(t\right)dt
C=T1?∫0T?x(t)dt
接下來求
a
n
a_n
an?和
b
n
b_n
bn?:
式1兩側同乘
s
i
n
(
m
ω
0
t
)
sin(m\omega_0t)
sin(mω0?t),在[0,T]區間取定積分:
∫
0
T
x
(
t
)
?
sin
?
(
m
ω
0
t
)
d
t
=
∫
0
T
C
?
sin
?
(
m
ω
0
t
)
d
t
+
∫
0
T
∑
n
=
1
∞
[
a
n
cos
?
(
n
ω
0
t
)
?
sin
?
(
m
ω
0
t
)
+
b
n
sin
?
(
n
ω
0
t
)
?
sin
?
(
m
ω
0
t
)
]
d
t
\int_{0}^{T}{x\left(t\right)\bullet\sin(m\omega_0t)}dt =\int_{0}^{T}{C\bullet\sin(m\omega_0t)dt}+\int_{0}^{T}{\sum_{n=1}^{\infty}\left[a_n\cos{\left(n\omega_0t\right)\bullet\sin(m\omega_0t)}+b_n\sin{\left(n\omega_0t\right)\bullet\sin(m\omega_0t)}\right]dt}
∫0T?x(t)?sin(mω0?t)dt=∫0T?C?sin(mω0?t)dt+∫0T?n=1∑∞?[an?cos(nω0?t)?sin(mω0?t)+bn?sin(nω0?t)?sin(mω0?t)]dt
上式中,根據正交性質:
∫
0
T
C
?
sin
?
(
m
ω
0
t
)
d
t
≡
0
\int_{0}^{T}{C\bullet\sin{\left(m\omega_0t\right)dt}}\equiv0
∫0T?C?sin(mω0?t)dt≡0
∫
0
T
∑
n
=
1
∞
[
a
n
sin
?
(
n
ω
0
t
)
?
cos
?
(
m
ω
0
t
)
]
d
t
≡
0
\int_{0}^{T}{\sum_{n=1}^{\infty}\left[a_n\sin{\left(n\omega_0t\right)\bullet\cos(m\omega_0t)}\right]dt}\equiv0
∫0T?n=1∑∞?[an?sin(nω0?t)?cos(mω0?t)]dt≡0
對于
∫
0
T
∑
n
=
1
∞
[
b
n
sin
?
(
n
ω
0
t
)
?
sin
?
(
m
ω
0
t
)
]
d
t
\int_{0}^{T}\sum_{n=1}^{\infty}\left[b_n\sin{\left(n\omega_0t\right)\bullet\sin(m\omega_0t)}\right]dt
∫0T?∑n=1∞?[bn?sin(nω0?t)?sin(mω0?t)]dt當且僅當m=n是積分不為0,當m=n時有:
∫
0
T
∑
n
=
1
∞
[
b
n
sin
?
(
n
ω
0
t
)
?
sin
?
(
m
ω
0
t
)
]
d
t
=
∫
0
T
b
n
sin
?
2
(
n
ω
0
t
)
d
t
=
b
n
2
∫
0
T
(
1
?
c
o
s
(
2
n
ω
0
t
)
)
d
t
=
b
n
2
T
\int_{0}^{T}{\sum_{n=1}^{\infty}\left[b_n\sin{\left(n\omega_0t\right)\bullet\sin{\left(m\omega_0t\right)}}\right]dt} =\int_{0}^{T}{b_n\sin^2\left(n\omega_0t\right)dt} =\frac{b_n}{2}\int_{0}^{T}\left(1-cos\left(2n\omega_0t\right)\right)dt=\frac{b_n}{2}T
∫0T?n=1∑∞?[bn?sin(nω0?t)?sin(mω0?t)]dt=∫0T?bn?sin2(nω0?t)dt=2bn??∫0T?(1?cos(2nω0?t))dt=2bn??T
帶入式 得:
b
n
=
2
T
∫
0
T
x
(
t
)
?
sin
?
(
m
ω
0
t
)
d
t
b_n=\frac{2}{T}\int_{0}^{T}{x\left(t\right)\bullet\sin(m\omega_0t)}dt
bn?=T2?∫0T?x(t)?sin(mω0?t)dt
同理,式1兩側同乘
c
o
s
(
m
ω
0
t
)
cos(m\omega_0t)
cos(mω0?t),即可求出
a
n
a_n
an?得:
a
n
=
2
T
∫
0
T
x
(
t
)
?
cos
?
(
m
ω
0
t
)
d
t
a_n=\frac{2}{T}\int_{0}^{T}{x\left(t\right)\bullet\cos(m\omega_0t)}dt
an?=T2?∫0T?x(t)?cos(mω0?t)dt
至此,常數C、
a
n
a_n
an?和
b
n
b_n
bn?已被計算求得,周期x(t)可由頻率不同的正弦函式和余弦函式唯一表示,
但是,,,,,
在大多數的教材中,傅里葉級數是這樣表示的:
x
(
t
)
=
∑
n
=
?
∞
+
∞
c
n
e
i
n
ω
0
t
x\left(t\right)=\sum_{n=-\infty}^{+\infty}{c_ne^{in\omega_0t}}
x(t)=n=?∞∑+∞?cn?einω0?t
???
相信對于剛剛入門信號處理的童鞋來說,這個公式具有很強的勸退效果(手動捂臉!),
其實呢,部分童鞋對于這個等式的疑惑主要有兩點:
說好的用sin和cos表示呢?咋還不見了呢?
怎么還整出來了復數?
首先介紹一下被稱為“上帝公式”的歐拉公式:
e
i
θ
=
c
o
s
θ
+
i
s
i
n
θ
e^iθ=cosθ+isinθ
eiθ=cosθ+isinθ
它將三角函式和復指數函式結合了起來,關于它的推導程序和幾何涵義,詳見傳送門:
那么根據歐拉公式,我們很容易將sin和cos用復指數形式表示:
s
i
n
θ
=
e
i
θ
?
e
?
i
θ
2
i
sin\theta=\frac{e^{i\theta}-e^{-i\theta}}{2i}
sinθ=2ieiθ?e?iθ?
c
o
s
θ
=
e
i
θ
+
e
?
i
θ
2
cos\theta=\frac{e^{i\theta}+e^{-i\theta}}{2}
cosθ=2eiθ+e?iθ?
傅里葉級數變為:
x
(
t
)
=
C
+
∑
n
=
1
∞
[
a
n
cos
?
(
n
ω
0
t
)
+
b
n
sin
?
(
n
ω
0
t
)
]
x\left(t\right)=C+\sum_{n=1}^{\infty}\left[a_n\cos{\left(n\omega_0t\right)}+b_n\sin{\left(n\omega_0t\right)}\right]
x(t)=C+n=1∑∞?[an?cos(nω0?t)+bn?sin(nω0?t)]
=
C
+
∑
n
=
1
∞
[
a
n
(
e
i
n
ω
0
t
+
e
?
i
n
ω
0
t
)
2
+
b
n
(
e
i
n
ω
0
t
?
e
?
i
n
ω
0
t
)
2
i
]
=C+\sum_{n=1}^{\infty}\left[\frac{a_n\left(e^{in\omega_0t}+e^{-in\omega_0t}\right)}{2}+\frac{b_n\left(e^{in\omega_0t}-e^{-in\omega_0t}\right)}{2i}\right]
=C+n=1∑∞?[2an?(einω0?t+e?inω0?t)?+2ibn?(einω0?t?e?inω0?t)?]
=
C
+
∑
n
=
1
∞
[
a
n
(
e
i
n
ω
0
t
+
e
?
i
n
ω
0
t
)
2
?
b
n
i
(
e
i
n
ω
0
t
?
e
?
i
n
ω
0
t
)
2
]
=C+\sum_{n=1}^{\infty}\left[\frac{a_n\left(e^{in\omega_0t}+e^{-in\omega_0t}\right)}{2}-\frac{b_ni\left(e^{in\omega_0t}-e^{-in\omega_0t}\right)}{2}\right]
=C+n=1∑∞?[2an?(einω0?t+e?inω0?t)??2bn?i(einω0?t?e?inω0?t)?]
=
C
+
∑
n
=
1
∞
[
(
a
n
?
i
b
n
2
)
e
i
n
ω
0
t
+
(
a
n
+
i
b
n
2
)
e
?
i
n
ω
0
t
]
=C+\sum_{n=1}^{\infty}\left[\left(\frac{a_n-ib_n}{2}\right)e^{in\omega_0t}+(\frac{a_n+ib_n}{2})e^{-in\omega_0t}\right]
=C+n=1∑∞?[(2an??ibn??)einω0?t+(2an?+ibn??)e?inω0?t]
=
C
+
∑
n
=
1
∞
[
(
a
n
?
i
b
n
2
)
e
i
n
ω
0
t
]
+
∑
n
=
?
1
?
∞
[
(
a
?
n
+
i
b
?
n
2
)
e
i
n
ω
0
t
]
=C+\sum_{n=1}^{\infty}\left[\left(\frac{a_n-ib_n}{2}\right)e^{in\omega_0t}\right]+\sum_{n=-1}^{-\infty}\left[(\frac{a_{-n}+ib_{-n}}{2})e^{in\omega_0t}\right]
=C+n=1∑∞?[(2an??ibn??)einω0?t]+n=?1∑?∞?[(2a?n?+ib?n??)einω0?t]
令C=
c
0
c_0
c0?,則有:
x
(
t
)
=
∑
n
=
?
∞
+
∞
c
n
e
i
n
ω
0
t
x\left(t\right)=\sum_{n=-\infty}^{+\infty}{c_ne^{in\omega_0t}}
x(t)=n=?∞∑+∞?cn?einω0?t
其中:
c
n
=
{
C
n
=
0
a
n
?
b
n
i
2
n
>
0
a
∣
n
∣
+
b
∣
n
∣
i
2
n
<
0
c_n=\left\{\begin{matrix}C&n=0\\\frac{a_n-b_ni}{2}&n>0\\\frac{a_{\left|n\right|}+b_{\left|n\right|}i}{2}&n<0\\\end{matrix}\right.
cn?=????C2an??bn?i?2a∣n∣?+b∣n∣?i??n=0n>0n<0?
可見由復指數形式表示時,系數
c
n
c_n
cn?為復數,與三角函式類似,
e
i
n
ω
0
t
e^{in\omega_0t}
einω0?t也具有正交性,在這里就不證明了,那么有:
c
n
=
1
T
∫
0
T
x
(
t
)
e
?
i
n
ω
0
t
d
t
c_n=\frac{1}{T}\int_{0}^{T}x\left(t\right)e^{-in\omega_0t}dt
cn?=T1?∫0T?x(t)e?inω0?tdt
為什么非得用復指數表示呢?有什么優點?
我們知道,在使用三角函式表示時,正交基包括正弦和余弦函式,在同一角頻率
n
ω
0
n\omega_0
nω0?下,對應的正交基有
s
i
n
(
n
ω
0
t
)
sin(n\omega_0t)
sin(nω0?t)和
c
o
s
(
n
ω
0
t
)
cos(n\omega_0t)
cos(nω0?t),首先思考一個問題,為什么要同時使用sin和cos作為正交基,單獨使用sin或cos不可以嗎?
當然不可以,因為有要考慮相位的因素,舉個最簡單的例子,對于具有初相位的函式
x
(
t
)
=
s
i
n
(
n
ω
0
t
+
π
/
3
)
x(t)=sin(n\omega_0t+π/3)
x(t)=sin(nω0?t+π/3),如果只用
s
i
n
n
ω
0
t
sinn\omega_0t
sinnω0?t或者
c
o
s
n
ω
0
t
cosn\omega_0t
cosnω0?t表示,是無論如何無法做到的,而同時使用
s
i
n
n
ω
0
t
sinn\omega_0t
sinnω0?t和
c
o
s
n
ω
0
t
cosn\omega_0t
cosnω0?t即可輕松表示:
x
(
t
)
=
0.5
s
i
n
ω
0
t
+
3
2
c
o
s
ω
0
t
x(t)=0.5sin\omega_0t+\frac{\sqrt3}{2}cos\omega_0t
x(t)=0.5sinω0?t+23
??cosω0?t
那么如果使用三角函式表示傅里葉級數的話,應該包括正弦譜和余弦譜,而通常情況下,我們并不關心在分析的頻率中包含“正弦”和“余弦”的值分別為多少,更多的是關心分析頻率的總體幅值,還是對于上述信號x(t),如果只知道在角頻率為
ω
0
\omega_0
ω0?時其正弦分量為0.5,余弦分量為
3
2
\frac{\sqrt3}{2}
23
??,那么也可以算出包含頻率為
ω
0
\omega_0
ω0?信號的總幅值為
0.5
2
+
(
3
2
)
2
=
1
\sqrt{{0.5}^2+{(\frac{\sqrt3}{2})}^2}=1
0.52+(23
??)2
?=1,但這樣做過于繁瑣,繪出的頻譜圖不直觀,而使用復指數描述時,
c
n
c_n
cn?為復數,其模即能表示角頻率
n
ω
0
n\omega_0
nω0?諧波的幅值,而
c
n
c_n
cn?在復平面上與實軸的夾角
a
r
c
t
a
n
b
n
a
n
arctan\frac{b_n}{a_n}
arctanan?bn??為相位角,這樣,用信號的幅值譜和相位譜代替正弦譜和余弦譜,在分析結果上更加直觀,
1.傅里葉變換(FT)、離散傅里葉級數(DFS)、離散傅里葉變換(DFT)、離散時間傅里葉變換(DTFT)
1.0 傅里葉變換
在傅里葉級數中,分析物件要求是周期性信號,那么對于非周期信號如何處理?其實非周期信號也可以看成是周期無限大的周期信號,在復指數表示的傅里葉級數公式中:
x
(
t
)
=
∑
n
=
?
∞
+
∞
c
n
e
i
n
ω
0
t
x\left(t\right)=\sum_{n=-\infty}^{+\infty}{c_ne^{in\omega_0t}}
x(t)=n=?∞∑+∞?cn?einω0?t
假設x(t)的周期為1,基頻
ω
0
=
2
π
\omega_0=2π
ω0?=2π,那么頻譜成分為
[
0
,
±
2
π
,
±
4
π
,
…
,
±
2
n
π
]
[0,±2π,±4π,…,±2nπ]
[0,±2π,±4π,…,±2nπ];
如果將x(t)的周期變為2,則基頻
ω
0
=
π
\omega_0=π
ω0?=π,那么頻譜成分相應變為
[
0
,
±
π
,
±
π
,
…
,
±
n
π
]
[0,±π,±π,…,±nπ]
[0,±π,±π,…,±nπ],
可以看出,如果僅改變分析信號的周期,則其頻率間隔變小、頻率成分看起來更加“密集”,當周期變為無窮大時,此時頻率間隔無窮小,頻譜為連續值,這就是信號的傅里葉變換,其基本思路可參考下圖:

此圖出處:(侵刪)
公式如下:
x
(
t
)
=
∑
n
=
?
∞
+
∞
c
n
e
i
n
ω
0
t
=
∑
n
=
?
∞
+
∞
c
n
e
i
n
2
π
T
t
x\left(t\right)=\sum_{n=-\infty}^{+\infty}{c_ne^{in\omega_0t}}=\sum_{n=-\infty}^{+\infty}{c_ne^{in\frac{2\pi}{T}t}}
x(t)=n=?∞∑+∞?cn?einω0?t=n=?∞∑+∞?cn?einT2π?t
當
T
→
∞
T→\infty
T→∞時,求和符號變為積分符號,表示為:
x
(
t
)
=
∫
?
∞
+
∞
F
(
ω
)
e
i
ω
t
d
ω
x\left(t\right)=\int_{-\infty}^{+\infty}{F(\omega)e^{i\omega t}d\omega}
x(t)=∫?∞+∞?F(ω)eiωtdω
類似地,信號的傅里葉變換為:
F
(
ω
)
=
1
2
π
∫
?
∞
+
∞
f
(
x
)
e
?
i
ω
t
d
t
F\left(\omega\right)=\frac{1}{2\pi}\int_{-\infty}^{+\infty}{f(x)e^{-i\omega t}dt}
F(ω)=2π1?∫?∞+∞?f(x)e?iωtdt
這些根據公式一步步推導就可以了,邏輯性較強,較容易理解,唯一需要注意的是,由于頻譜連續,在有限功率信號下,其頻率幅值無限小,但頻率間的相對關系保持不變,故傅里葉變換結果只反映了信號的頻率間的相對大小,
1.1 離散傅里葉級數(DFS)、離散時間傅里葉變換(DTFT)、離散傅里葉變換(DFT)、快速傅里葉變換
上述信號中討論的都是連續信號,而在計算機中只能處理時域離散的信號,我們通過在時間軸上對連續信號進行采樣達到離散化信號的目的,所謂采樣,就是將脈沖周期函式與連續信號相乘,



DFS處理的是時間離散的周期信號,其運算式形式與傅里葉級數類似:
X
[
k
]
=
1
N
∑
n
=
0
N
?
1
x
[
n
]
e
?
i
2
π
N
k
n
X\left[k\right]=\frac{1}{N}\sum_{n=0}^{N-1}{x[n]e^{-i\frac{2π}{N}kn}}
X[k]=N1?n=0∑N?1?x[n]e?iN2π?kn
其頻域計算結果是離散的、周期的,
DTFT處理的是時間離散的非周期信號,DTFT和DFS的關系與FS和FT間的關系相同,其公式為:
X
[
ω
]
=
x
(
t
)
=
∑
n
=
?
∞
+
∞
x
[
n
]
e
i
ω
n
X\left[\omega\right]=x\left(t\right)=\sum_{n=-\infty}^{+\infty}{x[n]e^{i\omega n}}
X[ω]=x(t)=n=?∞∑+∞?x[n]eiωn
其頻域計算結果是連續的、周期的,
同樣,這兩個公式理解起來相對簡單,分別是FS和FT的離散表達形式,故在公式層面不做過多解釋,
對于上述提到的傅里葉分析方法做一個簡單的總結:
| 時域 | 時域 | 頻域 | 頻域 | |
|---|---|---|---|---|
| FS | 連續 | 周期 | 離散 | 非周期 |
| FT | 連續 | 非周期 | 連續 | 非周期 |
| DFS | 離散 | 周期 | 離散 | 周期 |
| DTFT | 離散 | 非周期 | 連續 | 周期 |
這里需要解釋一個問題,連續信號經過采樣之后,其離散信號的頻譜為什么會變為周期的,這個問題困擾了我好久,在教材中大多用的是公式邏輯的推導,一般先引出性質:在時域中的乘積運算等于在頻域中的卷積運算,然后給出周期脈沖信號和連續函式信號的頻譜,再做卷積,程序十分繁瑣不易理解,直到多年知乎上一個匿名大神的解釋讓我豁然開朗,

離散信號頻譜的周期性(此圖出處:奧本海姆《信號與系統》)
舉個栗子,有這樣一個離散序列,采樣間隔為1,

這樣的一個離散序列的頻譜如何求解,根據傅里葉變換的思想,其各頻率的系數等于信號與對應頻率基向量的內積,為方便圖形表示,用三角函式形式描述,


顯而易見,周期為4基向量與信號的內積不為零,記為X;同樣對于周期為4/5的基向量經采樣后與周期為4基向量具有相同的值,對應地與信號的內積同樣為X,以此類推,周期為4/(N+4)的基向量均具有相同的特征,信號的頻譜圖因此具有周期性,
這只是為了方便理解做的一個最為粗淺的解釋,更嚴密的論證詳見傳送門:
終于到了DFT了(一滴都沒有了),簡單理解,DFT只是在DFS基礎上,截取時域上的主值區間,即只取1個周期的信號描述整個時間序列,從另外一個角度分析,DFT是DTFT基礎上,在頻域上進行采樣的結果,也就是說,在形式上DFT在時域和頻域上均滿足離散、有限長度的條件,這樣便于在計算機上進行存盤運算,事實上,只有DFT在計算機上能夠實作,而目前數字信號處理中最常用的FFT演算法是DFT的一個快速實作,其本質上仍然是DFT,關于二十世紀最牛逼的演算法FFT,B站上的一個視頻講的很透徹:
快速傅里葉變換(FFT)——有史以來最巧妙的演算法?
附上筆者寫的一款簡易的FFT工具,可以方便對信號進行截取操作,需要留郵箱

下期預告:
FFT應用實體及常見問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255321.html
標籤:其他
下一篇:linux常用命令
