cupyx.scipy.signal.CZT#

class cupyx.scipy.signal.CZT(n, m=None, w=None, a=1 + 0j)[源码]#

创建一个可调用的 Chirp Z 变换函数。

用于计算沿螺旋线频率响应的变换。此类的对象是可调用对象,它们可以计算其输入的 Chirp Z 变换。此对象预先计算给定变换中使用的常量 Chirp。

参数:
  • n (int) – 信号的大小。

  • m (int, optional) – 期望的输出点数。默认为 n

  • w (complex, optional) – 每一步中点之间的比率。此值必须精确,否则累积误差将降低输出序列的尾部质量。默认为单位圆周围等间距的点。

  • a (complex, optional) – 复平面中的起始点。默认为 1+0j。

返回值:

f – 可调用对象 f(x, axis=-1),用于计算 x 的 Chirp Z 变换。

返回类型:

CZT

另请参阅

czt

用于快速计算 CZT 的便捷函数。

ZoomFFT

创建一个可调用的部分 FFT 函数的类。

scipy.signal.CZT

注释

选择默认值使得 f(x) 等同于 fft.fft(x),并且如果 m > len(x),则 f(x, m) 等同于 fft.fft(x, m)

如果 w 不在单位圆上,则变换将围绕半径指数增长的螺旋线进行。无论如何,角度将线性增长。

对于确实位于单位圆上的变换,使用 ZoomFFT 时精度更高,因为 w 中的任何数值误差都会在较长数据长度下累积,导致偏离单位圆。

Chirp Z 变换可能比等效的零填充 FFT 更快。您可以使用自己的数组大小进行尝试验证。

然而,Chirp Z 变换的精度远低于等效的零填充 FFT。

由于此 CZT 是使用 Bluestein 算法 [1] 实现的,它可以在 O(N log N) 时间内计算大型素数长度的傅里叶变换,而不是直接 DFT 计算所需的 O(N**2) 时间。( scipy.fft 也使用 Bluestein 算法。)

(“Chirp Z 变换”这个名称来源于 Bluestein 算法中使用了 Chirp [2]。它不像其他名称中带有“chirp”的变换那样将信号分解为 Chirp。)

参考文献

方法

__call__(x, *, axis=-1)[源码]#

计算信号的 Chirp Z 变换。

参数:
  • x (array) – 要进行变换的信号。

  • axis (int, optional) – 计算 FFT 的轴。如果未给出,则使用最后一个轴。

返回值:

out – 一个与 x 维度相同的数组,但变换轴的长度设置为 m

返回类型:

ndarray

points()[源码]#

返回计算 Chirp Z 变换的点。

__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。