cupyx.scipy.signal.iirdesign#

cupyx.scipy.signal.iirdesign(wp, ws, gpass, gstop, analog=False, ftype='ellip', output='ba', fs=None)[source]#

完整的 IIR 数字和模拟滤波器设计。

给定通带和阻带频率和增益,构造给定基本类型的最小阶模拟或数字 IIR 滤波器。以分子、分母 (‘ba’)、极点-零点 (‘zpk’) 或二阶节 (‘sos’) 形式返回输出。

参数:
  • wp (浮点数类数组, 形状 (2,)) –

    通带和阻带边缘频率。可能的值是标量(用于低通和高通滤波器)或范围(用于带通和带阻滤波器)。对于数字滤波器,这些值的单位与 fs 相同。默认情况下,fs 是每采样 2 个半周期,因此这些值被归一化到 0 到 1 之间,其中 1 是奈奎斯特频率。例如

    • 低通: wp = 0.2, ws = 0.3

    • 高通: wp = 0.3, ws = 0.2

    • 带通: wp = [0.2, 0.5], ws = [0.1, 0.6]

    • 带阻: wp = [0.1, 0.6], ws = [0.2, 0.5]

    对于模拟滤波器,wpws 是角频率(例如,rad/s)。请注意,对于带通和带阻滤波器,通带必须严格位于阻带内部,反之亦然。

  • ws (浮点数类数组, 形状 (2,)) –

    通带和阻带边缘频率。可能的值是标量(用于低通和高通滤波器)或范围(用于带通和带阻滤波器)。对于数字滤波器,这些值的单位与 fs 相同。默认情况下,fs 是每采样 2 个半周期,因此这些值被归一化到 0 到 1 之间,其中 1 是奈奎斯特频率。例如

    • 低通: wp = 0.2, ws = 0.3

    • 高通: wp = 0.3, ws = 0.2

    • 带通: wp = [0.2, 0.5], ws = [0.1, 0.6]

    • 带阻: wp = [0.1, 0.6], ws = [0.2, 0.5]

    对于模拟滤波器,wpws 是角频率(例如,rad/s)。请注意,对于带通和带阻滤波器,通带必须严格位于阻带内部,反之亦然。

  • gpass (浮点数) – 通带中的最大损耗 (dB)。

  • gstop (浮点数) – 阻带中的最小衰减 (dB)。

  • analog (布尔值, 可选) – 为 True 时,返回模拟滤波器;否则返回数字滤波器。

  • ftype (字符串, 可选) –

    要设计的 IIR 滤波器类型

    • Butterworth : ‘butter’

    • Chebyshev I : ‘cheby1’

    • Chebyshev II : ‘cheby2’

    • Cauer/elliptic: ‘ellip’

  • output ({'ba', 'zpk', 'sos'}, 可选) –

    输出滤波器形式

    • 二阶节(推荐): ‘sos’

    • 分子/分母(默认): ‘ba’

    • 极点-零点: ‘zpk’

    通常推荐使用二阶节 (‘sos’) 形式,因为推断分子/分母形式 (‘ba’) 的系数会受到数值不稳定性的影响。出于向后兼容性考虑,默认形式是分子/分母形式 (‘ba’),其中 ‘ba’ 中的 ‘b’ 和 ‘a’ 指代常用系数名称。

    注意: 使用二阶节 (‘sos’) 形式有时会带来额外的计算成本:因此对于数据密集型用例,建议也研究分子/分母形式 (‘ba’)。

  • fs (浮点数, 可选) –

    数字系统的采样频率。

    版本 1.2.0 新增。

返回:

  • b, a (ndarray, ndarray) – IIR 滤波器的分子 (b) 和分母 (a) 多项式。仅当 output='ba' 时返回。

  • z, p, k (ndarray, ndarray, float) – IIR 滤波器传递函数的零点、极点和系统增益。仅当 output='zpk' 时返回。

  • sos (ndarray) – IIR 滤波器的二阶节表示。仅当 output='sos' 时返回。

另请参阅

scipy.signal.iirdesign

butter

使用阶数和临界点进行滤波器设计

cheby1, cheby2, ellip, bessel

buttord

从通带和阻带规格查找阶数和临界点

cheb1ord, cheb2ord, ellipord

iirfilter

使用阶数和临界频率进行通用滤波器设计