scipy.signal.bilinear

scipy.signal.bilinear(b, a, fs=1.0)[源代码]

使用双线性变换从模拟过滤返回数字IIR过滤。

使用Tustin的方法将一组极点和零点从模拟s平面转换到数字z平面,该方法替换 (z-1) / (z+1)s 保持频率响应的形状。

参数
barray_like

模拟过滤传递函数的分子。

aarray_like

模拟过滤传递函数的分母。

fs浮动

采样率,与普通频率相同(例如,赫兹)。在此函数中不执行任何预翘曲。

退货
zndarray

变换后的数字过滤传递函数的分子。

pndarray

变换后的数字过滤传递函数的分母。

示例

>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> fs = 100
>>> bf = 2 * np.pi * np.array([7, 13])
>>> filts = signal.lti(*signal.butter(4, bf, btype='bandpass',
...                                   analog=True))
>>> filtz = signal.lti(*signal.bilinear(filts.num, filts.den, fs))
>>> wz, hz = signal.freqz(filtz.num, filtz.den)
>>> ws, hs = signal.freqs(filts.num, filts.den, worN=fs*wz)
>>> plt.semilogx(wz*fs/(2*np.pi), 20*np.log10(np.abs(hz).clip(1e-15)),
...              label=r'$|H_z(e^{j \omega})|$')
>>> plt.semilogx(wz*fs/(2*np.pi), 20*np.log10(np.abs(hs).clip(1e-15)),
...              label=r'$|H(j \omega)|$')
>>> plt.legend()
>>> plt.xlabel('Frequency [Hz]')
>>> plt.ylabel('Magnitude [dB]')
>>> plt.grid()
../../_images/scipy-signal-bilinear-1.png