An open API service indexing awesome lists of open source software.

https://github.com/lin-jun-xiang/python-fourier-transform

Python 離散傅立葉轉換與可視化 (without any fft module)
https://github.com/lin-jun-xiang/python-fourier-transform

fourier fourier-transform nufft python

Last synced: 6 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# 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 太小將無法抓取高頻訊號 ! 會將高頻訊號誤認為低頻訊號