本文簡要介紹 python 語言中 scipy.signal.CZT
的用法。
用法:
class scipy.signal.CZT(n, m=None, w=None, a=1 + 0j)#
創建一個可調用的啁啾 z-transform 函數。
變換以計算圍繞螺旋的頻率響應。此類的對象是可調用的,可以在其輸入上計算啁啾z-transform。該對象預先計算給定變換中使用的常量啁啾。
- n: int
信號的大小。
- m: 整數,可選
所需的輸出點數。默認值為 n。
- w: 複雜的,可選的
每個步驟中點之間的比率。這必須是精確的,否則累積的誤差會降低輸出序列的尾部。默認為圍繞整個單位圓的等距點。
- a: 複雜的,可選的
複平麵的起點。默認為 1+0j。
- f: CZT
可調用對象
f(x, axis=-1)
用於計算啁啾 z-transform onx.
參數 ::
返回 ::
注意:
選擇默認值使得
f(x)
等效於fft.fft(x)
,如果m > len(x)
,則f(x, m)
等效於fft.fft(x, m)
。如果 w 不在單位圓上,則變換將圍繞具有exponentially-increasing 半徑的螺旋。無論如何,角度將線性增加。
對於確實位於單位圓上的變換,使用時精度更好scipy.signal.ZoomFFT, 因為任何數值錯誤w為長數據長度累積,遠離單位圓。
啁啾 z-transform 可以比具有零填充的等效 FFT 更快。嘗試使用您自己的數組大小來查看。
然而,啁啾z-transform 的精度遠低於等效的零填充 FFT。
由於此 CZT 是使用 Bluestein 算法實現的,它可以在 O(N log N) 時間內計算大型 prime-length 傅立葉變換,而不是直接 DFT 計算所需的 O(N**2) 時間。 (
scipy.fft
也使用 Bluestein 算法。)(“啁啾z-transform”這個名稱來自 Bluestein 算法中啁啾的使用。它不會像其他名稱中帶有 “chirp” 的變換那樣將信號分解為啁啾。)
參考:
[1]Leo I. Bluestein,“離散傅立葉變換計算的線性濾波方法”,東北電子研究與工程會議記錄 10, 218-219 (1968)。
[2]Rabiner、Schafer 和 Rader,“啁啾 z-transform 算法及其應用”,Bell Syst。技術。 J. 48, 1249-1292 (1969)。
例子:
計算多個prime-length FFT:
>>> from scipy.signal import CZT >>> import numpy as np >>> a = np.random.rand(7) >>> b = np.random.rand(7) >>> c = np.random.rand(7) >>> czt_7 = CZT(n=7) >>> A = czt_7(a) >>> B = czt_7(b) >>> C = czt_7(c)
顯示計算 FFT 的點:
>>> czt_7.points() array([ 1.00000000+0.j , 0.62348980+0.78183148j, -0.22252093+0.97492791j, -0.90096887+0.43388374j, -0.90096887-0.43388374j, -0.22252093-0.97492791j, 0.62348980-0.78183148j]) >>> import matplotlib.pyplot as plt >>> plt.plot(czt_7.points().real, czt_7.points().imag, 'o') >>> plt.gca().add_patch(plt.Circle((0,0), radius=1, fill=False, alpha=.3)) >>> plt.axis('equal') >>> plt.show()
相關用法
- Python SciPy signal.czt_points用法及代碼示例
- Python SciPy signal.chirp用法及代碼示例
- Python SciPy signal.residue用法及代碼示例
- Python SciPy signal.iirdesign用法及代碼示例
- Python SciPy signal.max_len_seq用法及代碼示例
- Python SciPy signal.kaiser_atten用法及代碼示例
- Python SciPy signal.oaconvolve用法及代碼示例
- Python SciPy signal.hilbert用法及代碼示例
- Python SciPy signal.ricker用法及代碼示例
- Python SciPy signal.group_delay用法及代碼示例
- Python SciPy signal.cheb2ord用法及代碼示例
- Python SciPy signal.get_window用法及代碼示例
- Python SciPy signal.lfilter用法及代碼示例
- Python SciPy signal.morlet用法及代碼示例
- Python SciPy signal.coherence用法及代碼示例
- Python SciPy signal.dfreqresp用法及代碼示例
- Python SciPy signal.TransferFunction用法及代碼示例
- Python SciPy signal.dbode用法及代碼示例
- Python SciPy signal.residuez用法及代碼示例
- Python SciPy signal.bilinear_zpk用法及代碼示例
- Python SciPy signal.firls用法及代碼示例
- Python SciPy signal.impulse用法及代碼示例
- Python SciPy signal.buttord用法及代碼示例
- Python SciPy signal.find_peaks用法及代碼示例
- Python SciPy signal.freqs用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.CZT。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。