本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。