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)
- Host: GitHub
- URL: https://github.com/lin-jun-xiang/python-fourier-transform
- Owner: Lin-jun-xiang
- Created: 2022-07-10T06:38:18.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-08T09:46:29.000Z (over 2 years ago)
- Last Synced: 2025-04-07T18:16:31.622Z (6 months ago)
- Topics: fourier, fourier-transform, nufft, python
- Language: Python
- Homepage:
- Size: 16.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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 太小將無法抓取高頻訊號 ! 會將高頻訊號誤認為低頻訊號