当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy signal.bilinear用法及代码示例


本文简要介绍 python 语言中 scipy.signal.bilinear 的用法。

用法:

scipy.signal.bilinear(b, a, fs=1.0)#

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

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

参数

b array_like

模拟滤波器传递函数的分子。

a array_like

模拟滤波器传递函数的分母。

fs 浮点数

采样率,作为普通频率(例如,赫兹)。此函数中不进行预变形。

返回

b ndarray

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

a ndarray

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

例子

>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> 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(True)
scipy-signal-bilinear-1.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.bilinear。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。