scipy.signal.
zoom_fft#
- scipy.signal.zoom_fft(x, fn, m=None, *, fs=2, endpoint=False, axis=-1)[source]#
僅針對頻率範圍 fn 計算 x 的 DFT。
- 參數:
- x陣列
要轉換的訊號。
- fn類陣列
長度為 2 的序列 [f1, f2],表示頻率範圍;或純量,表示範圍為 [0, fn]。
- m整數,選用
要評估的點數。預設值為 x 的長度。
- fs浮點數,選用
取樣頻率。例如,如果
fs=10
代表 10 kHz,則 f1 和 f2 也會以 kHz 為單位。預設取樣頻率為 2,因此 f1 和 f2 應在 [0, 1] 範圍內,以使轉換保持在奈奎斯特頻率以下。- endpoint布林值,選用
如果為 True,則 f2 是最後一個樣本。否則,不包含在內。預設值為 False。
- axis整數,選用
計算 FFT 的軸。如果未給定,則使用最後一個軸。
- 回傳值:
- outndarray
轉換後的訊號。傅立葉轉換將在 f1、f1+df、f1+2df、…、f2 這些點上計算,其中 df=(f2-f1)/m。
另請參閱
ZoomFFT
建立可呼叫的部分 FFT 函數的類別。
註解
選擇預設值是為了使
signal.zoom_fft(x, 2)
等同於fft.fft(x)
;並且,如果m > len(x)
,則signal.zoom_fft(x, 2, m)
等同於fft.fft(x, m)
。若要繪製結果轉換的量值圖,請使用
plot(linspace(f1, f2, m, endpoint=False), abs(zoom_fft(x, [f1, f2], m)))
如果需要重複轉換,請使用
ZoomFFT
建構一個專門的轉換函數,該函數可以重複使用而無需重新計算常數。範例
若要繪製轉換結果,請使用如下程式碼
>>> import numpy as np >>> from scipy.signal import zoom_fft >>> t = np.linspace(0, 1, 1021) >>> x = np.cos(2*np.pi*15*t) + np.sin(2*np.pi*17*t) >>> f1, f2 = 5, 27 >>> X = zoom_fft(x, [f1, f2], len(x), fs=1021) >>> f = np.linspace(f1, f2, len(x)) >>> import matplotlib.pyplot as plt >>> plt.plot(f, 20*np.log10(np.abs(X))) >>> plt.show()