scipy.signal.buttord

scipy.signal.buttord(wp, ws, gpass, gstop, analog=False, fs=None)[源代码]

巴特沃斯过滤订单精选。

返回最低阶的数字或模拟巴特沃斯过滤的顺序,损失不超过 gpass DB在通带内,并且至少具有 gstop 阻带中的dB衰减。

参数
wp、ws浮动

通带和阻带边缘频率。

对于数字滤波器,它们的单位与 fs 。默认情况下, fs 为2个半周期/采样,因此这些值从0归一化到1,其中1是奈奎斯特频率。 (wpws 因此是半周期/样品。)例如:

  • 低通: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,则返回模拟过滤,否则返回数字过滤。

fs浮动,可选

数字系统的采样频率。

1.2.0 新版功能.

退货
ord集成

符合规格的巴特沃斯过滤的最低订单。

wnndarray或浮动

巴特沃斯固有频率(即“3dB频率”)。应与一起使用 butter 给出过滤结果。如果 fs 是指定的,则使用相同的单位,并且 fs 还必须传递给 butter

参见

butter

过滤设计的使用顺序和关键点

cheb1ord

从通带和阻带规格中查找顺序和临界点

cheb2ord, ellipord
iirfilter

使用阶数和临界频率的通用过滤设计

iirdesign

通带和阻带规范的通用过滤设计

示例

设计了一种模拟带通过滤,其通带范围为3dB,通带范围为20~50rad/s,同时抑制至少-40dB以下和60rad/s以上的噪声,绘制其频率响应图,用灰色表示通带和阻带约束。

>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> N, Wn = signal.buttord([20, 50], [14, 60], 3, 40, True)
>>> b, a = signal.butter(N, Wn, 'band', True)
>>> w, h = signal.freqs(b, a, np.logspace(1, 2, 500))
>>> plt.semilogx(w, 20 * np.log10(abs(h)))
>>> plt.title('Butterworth bandpass filter fit to constraints')
>>> plt.xlabel('Frequency [radians / second]')
>>> plt.ylabel('Amplitude [dB]')
>>> plt.grid(which='both', axis='both')
>>> plt.fill([1,  14,  14,   1], [-40, -40, 99, 99], '0.9', lw=0) # stop
>>> plt.fill([20, 20,  50,  50], [-99, -3, -3, -99], '0.9', lw=0) # pass
>>> plt.fill([60, 60, 1e9, 1e9], [99, -40, -40, 99], '0.9', lw=0) # stop
>>> plt.axis([10, 100, -60, 3])
>>> plt.show()
../../_images/scipy-signal-buttord-1.png