Skip to content

Python 離散傅立葉轉換與可視化 (without any fft module)

Notifications You must be signed in to change notification settings

Lin-jun-xiang/python-fourier-transform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Fourier-Transform

  • Visualize and analyze the fourier transform result.
  • Final project

Introduction

  • 用 Python 實現傅立葉正(逆)轉換,並可視化結果。
  • 傅立葉轉換目的 :了解原始訊號是由哪些頻率的cos,sin組成,將時域訊號轉換成頻域訊號觀看 (不同角度觀看數據)。
    • 濾波處理 : 當時域訊號非常雜亂複雜時,可以先進行正轉換取得頻域訊號,並針對感興趣的部分篩選,例如: 留下分量大的訊號,將分量小的頻號排除,再進行反轉換為時域訊號。

  • 每個訊號都是sin, cos以不同頻率組成,因此FT轉換目的是要得知訊號由哪些頻率的sin, cos組成。

  • FT轉換後,大致上會得到實部 (cos) 跟虛部 (sin),因此做圖因該分為實部與虛部來畫。

  • 如果signal裡面只含有cos訊號,則得到的FT頻域應當只含有實部,這也是在積分項evev(cos)*odd(sin)會為0的原因。

Method

例子 - 時域訊號及頻域解析解如下:

正轉換與逆轉換流程如下 (h為時域訊號;H為頻域訊號) :

Results

針對時域訊號進行不同採樣數量 (N=16, N=32, N=128),並以不同採樣數量得數據進行正轉換,結果如下 : (時域訊號中的紅色點,為採樣點)

可以發現 N=16 的轉換結果較為不同 (與解析解不同),主要是採樣點不足 (dt > 0.5) 導致 映頻效應(Aliasing)

逆轉換結果如下 :

Conclusion

  • 採樣頻率(fs)需大於等於訊號最大頻率的2倍,才能建立完整訊號
  • fs = 1/dt = N/T
  • 例子中的訊號其最大頻率為 1,因此 fs 需大於等於 24
  • 當 N = 16 時,不滿足條件,因此發生映頻效應
  • fs 太小將無法抓取高頻訊號 ! 會將高頻訊號誤認為低頻訊號

About

Python 離散傅立葉轉換與可視化 (without any fft module)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages