4. 傅立葉轉換


Posted by 高肥 on 2022-07-16

4. 傅立葉轉換

傅立葉級數為法國數家傅立葉(Joseph Fourier)所提出的三角級數,可以將任何週期函數分解為 sin()cos() 函數的集合,也就是對週期波進行分解,之後可透過傅立葉轉換(Fourier Transform)將函數轉換為另一個函數表現形式。

4.1 傅立葉級數定義(Fourier Series)

若函數 x(t) 定義於時間區間LtL
則傅立葉級數為:
x(t)=a0+n=1[ancos(nπLt)+bnsin(nπLt)]

其中:
a0=12LLLx(t)dtan=1LLLx(t)cos(nπtL)dtbn=1LLLx(t)sin(nπtL)dtn=1,2,

4.2 複數傅立葉級數(Complex Fourier Series)

參考Euler's Formula

ejt=cos(t)+jsin(t)cos(t)=12(ejt+ejt)sin(t)=12j(ejtejt)

則:
x(t)=cnejntcn=12πππx(t)ejntdt

範例

理想方波函數定義為
δ[n]={1,if1<t<01,if0t<1
求函數的傅立葉級數

解法

a0=12LLLx(t)dt=11x(t)dt=01(1)dt+10(1)dt=0an=1LLLx(t)cos(nπtL)dt=11x(t)cos(nπt)dt=01(1)cos(nπt)dt+10(1)cos(nπt)dt=[1nπsin(nπt)]01+[1nπsin(nπt)]10=0bn=1LLLx(t)sin(nπtL)dt=11x(t)sin(nπt)dt=01(1)sin(nπt)dt+10(1)sin(nπt)dt=[1nπcos(nπt)]01+[1nπcos(nπt)]10=2nπ2nπcos(nπ)=2nπ[1(1)n]

因此理想方波的傅立葉級數為
x(t)=n=12nπ[1(1)n]sin(nπt)

理想方波的傅立葉級數,若取出部分總和畫圖,可呈現如下圖的效果
下左圖取傅立葉級數前5項總和,下右圖取傅立葉級數前100項總和
可以看到在方波的波峰與波谷部分有跳動現象,稱為Gibbs現象

繪圖程式如下

import numpy as np
import matplotlib.pyplot as plt

N = eval( input( "Please enter number of terms for partial sum: " ) )

t = np.linspace( -1, 1, 1000 )  # 定義時間陣列    

x = np.zeros( 1000 )            # 方波的傅立葉級數
for n in range( 1, N + 1 ):
    x += 2 / ( n * np.pi ) * ( 1 - np.power( -1, n ) ) * np.sin( n * np.pi * t ) 

plt.plot( t, x )                                
plt.xlabel( 't (second)' )
plt.ylabel( 'Amplitude' )

plt.show( )

4.3 連續時間傅立葉轉換

函數 x(t)
傅立葉轉換:X(ω)=x(t)ejωtdt
反傅立葉轉換:x(t)=12πX(ω)ejωtdω

範例

弦波定義
x(t)=Acos(ω0t)
求傅立葉轉換?

解法

X(ω)=x(t)ejωtdt=Acos(ω0t)ejωtdt=A(ejωt+ejωt2)ejωtdt=A2[F{ejωt}+F{ejωt}]=Aπ[δ(ωω0)+δ(ω+ω0)]
其中F{ejωt}=2πδ(ωω0)

上述的傅立葉轉換可畫出下圖
可以看到訊號經過傅立葉轉換後,在頻域會有共軛性
但是在實際應用中,我們並不理會負頻率

此特性要記住,在後續 [5. 頻譜分析]的章節 (待續),

會Demo透過Numpy的FFT計算出的結果也會有這個現象,
然後說明如何在程式中去除負頻率的部分。

4.4 傅立葉轉換性質

  1. 時間平移定理 (Time-Shifting Theorem

    f 為時間函數,且 F 為傅立葉轉換
    則:F{f(tt0)}=F(ω)ejωt0
    其中 t0 為平移的時間,且 t0>0

  2. 頻率平移定理 (Frequency-Shifting Theorem)

    F 為頻率函數,且 F1 為反傅立葉轉換
    則:F1{F(ωω0)}=f(t)ejω0t
    其中 ω0 為平移的時間,且 ω0>0

  3. 卷積定理

    fg 為時間函數,且 F 為傅立葉轉換
    則:F{fg}=FfFg

4.5 離散傅立葉轉換 (Discrete Fourier Transform)

現實中在處理資料時型式通常為有限多點的狀況,是對取樣值而非函數來進行處理。在這種情況下我們可透過離散時間傅立葉轉換(DTFT)來處理資料。

若給定離散時間序列
則離散時間傅立葉轉換為:X[k]=N1n=0x[n]ej2πNkn

反離散時間傅立葉轉換為:x[n]=1NN1k=0X[k]ej2πNkn

範例

若數位訊號為:x={1,2,3,4},n=0,1,2,3
其中N=4
求離散傅立葉轉換?

解法

透過離散傅立葉轉換公式
X[k]=N1n=0x[n]ej2πNkn

可求得
X=10,3+j,0,3j

上述習題結果注意幾點

  • X[0]為訊號的直流分量 (DC Component)
  • X[1]X[3]為訊號的交流分量 (AC Component)
  • X[1]X[3]互為共軛複數

Ref:


#Signal_Processing #DSP_Class







Related Posts

This is shell script for example code

This is shell script for example code

Rails API 學習紀錄 (Part 1)

Rails API 學習紀錄 (Part 1)

Survey Web3.js v4

Survey Web3.js v4


Comments