發表文章

目前顯示的是 8月, 2026的文章

DSP筆記1_使用 NumPy自帶的fft做_觀察fft結果、ifft後的訊號波形圖、頻率對應相位

圖片
在Python當中我們可使用 FFT 函式,將時域訊號轉換成頻域訊號。 例如使用 NumPy自帶的: import numpy.fft as fft 而另一套scipy引入方式則是用 import scipy.fftpack as scifft fft功能:主要就是把時間序列訊號做FFT,獲得其幾個頻率、振福和初始相位。 ifft功能:也就是把複數值序列做傅立葉逆變化,獲得複數值的訊號,取其實部,是時頻訊號。可以寫出訊號的余弦函數的結構式。 以下就DSP幾個術語做個介紹 訊號頻率: 指訊號本身週期性變化的速度,通常使用 f 表示,單位為赫茲(Hz)。 例如,一秒鐘重複 10 次的訊號,其頻率為 10 Hz。 取樣頻率: 指每秒鐘對連續訊號取樣的次數,通常使用 Fs 表示,單位也是 Hz。 表示每秒取得 100 個取樣點。 奈奎斯(Nyquist-Shannon sampling theorem)取樣定理: 為了正確還原訊號,取樣頻率至少必須大於訊號最高頻率的兩倍。 舉例:像是人類聽力範圍坐落於20赫茲-20000赫茲(20kHz) 根據奈奎斯取樣定理,fs > 2 fH 也就是 fs > 2 * 20kHz 目前網際網路流傳的音樂檔mp3,其取樣頻率也通常是設在44kHz、48kHz。 實際應用通常會選擇比兩倍更高的取樣頻率,以降低混疊現象。 FFT 頻譜幅值: fft_magnitude = np.abs(np.fft.fft(signal, n=NFFT)) np.abs() 用來計算 FFT 複數結果的絕對值,也就是頻譜的幅值。 振幅(頻)譜(amplitude spectrum): 透過傅立葉變換(Fourier Transform)將時域訊號轉成頻域後,取其絕對值或強度大小而得到的結果。 能量訊號: 若訊號振幅的絕對值平方,在整個時間範圍 (−∞,+∞) 內的積分為有限值,則稱為能量訊號。 常見例子包括有限時間的方波訊號、三角形訊號、脈衝訊號、暫態訊號、非週期性的確定訊號,以及非隨機訊號。 能量頻譜: 又稱為「能量頻譜密度」。圖形的橫軸表示頻率,縱軸表示訊號在各頻率上的能量。 訊號總能量可由各頻率成分的幅值平方加總或積分得到。 實際分析時,可以利用快速傅立葉轉換 FFT 計算訊號的頻率成分,再將頻譜幅值取絕對值平方,得到能量頻譜。 能量頻譜的實...