cupyx.scipy.signal.butter#
- cupyx.scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba', fs=None)[source]#
巴特沃斯数字和模拟滤波器设计。
设计N阶数字或模拟巴特沃斯滤波器并返回滤波器系数。
- 参数:
N (int) – 滤波器的阶数。对于 'bandpass' 和 'bandstop' 滤波器,最终二阶节 ('sos') 矩阵的所得阶数为
2*N
,其中 N 是所需系统的双二阶节数。Wn (array_like) –
临界频率。对于低通和高通滤波器,Wn 是一个标量;对于带通和带阻滤波器,Wn 是一个长度为 2 的序列。
对于巴特沃斯滤波器,这是增益降至通带增益的 1/sqrt(2) 的点(即“-3 dB 点”)。
对于数字滤波器,如果未指定 fs,则 Wn 的单位从 0 归一化到 1,其中 1 是奈奎斯特频率(因此 Wn 的单位是半周期/采样点,定义为 2 * 临界频率 / fs)。如果指定了 fs,则 Wn 的单位与 fs 相同。
对于模拟滤波器,Wn 是角频率(例如 rad/s)。
btype ({'lowpass', 'highpass', 'bandpass', 'bandstop'}, 可选) – 滤波器类型。默认为 'lowpass'。
analog (bool, 可选) – 为 True 时,返回模拟滤波器,否则返回数字滤波器。
output ({'ba', 'zpk', 'sos'}, 可选) – 输出类型:分子/分母 ('ba'),极点-零点 ('zpk'),或二阶节 ('sos')。为了向后兼容,默认为 'ba',但对于通用滤波,应使用 'sos'。
fs (float, 可选) – 数字系统的采样频率。
- 返回:
b, a (ndarray, ndarray) – IIR 滤波器的分子 (b) 和分母 (a) 多项式。仅在
output='ba'
时返回。z, p, k (ndarray, ndarray, float) – IIR 滤波器传递函数的零点、极点和系统增益。仅在
output='zpk'
时返回。sos (ndarray) – IIR 滤波器的二阶节表示。仅在
output='sos'
时返回。
另请参阅
注意事项
巴特沃斯滤波器在通带内具有最大平坦的频率响应。
如果请求传递函数形式
[b, a]
,可能会出现数值问题,因为根和多项式系数之间的转换是数值敏感的操作,即使对于 N >= 4 也是如此。建议使用 SOS 表示。警告
以 TF 形式设计高阶窄带 IIR 滤波器可能会由于浮点数值精度问题导致滤波不稳定或不正确。请考虑检查输出滤波器的特性 freqz 或通过
output='sos'
使用二阶节设计滤波器。