本文简要介绍 python 语言中 scipy.signal.iirdesign
的用法。
用法:
scipy.signal.iirdesign(wp, ws, gpass, gstop, analog=False, ftype='ellip', output='ba', fs=None)#
完整的 IIR 数字和模拟滤波器设计。
给定通带和阻带频率和增益,为给定的基本类型构建最小阶的模拟或数字 IIR 滤波器。以分子、分母 (‘ba’)、pole-zero (‘zpk’) 或二阶部分 (‘sos’) 形式返回输出。
- wp, ws: 浮点数或数组,形状 (2,)
通带和阻带边频率。可能的值是标量(用于低通和高通滤波器)或范围(用于带通和带阻滤波器)。对于数字滤波器,它们的单位与 fs 相同。默认情况下,fs 为 2 half-cycles/sample,因此这些从 0 归一化为 1,其中 1 是奈奎斯特频率。例如:
Lowpass: wp = 0.2, ws = 0.3
Highpass: wp = 0.3, ws = 0.2
Bandpass: wp = [0.2, 0.5], ws = [0.1, 0.6]
Bandstop: wp = [0.1, 0.6], ws = [0.2, 0.5]
对于模拟滤波器,wp 和 ws 是角频率(例如,rad/s)。请注意,对于带通和带阻滤波器,通带必须严格位于阻带内,反之亦然。
- gpass: 浮点数
通带中的最大损耗 (dB)。
- gstop: 浮点数
阻带中的最小衰减 (dB)。
- analog: 布尔型,可选
如果为 True,则返回模拟滤波器,否则返回数字滤波器。
- ftype: str,可选
要设计的 IIR 滤波器类型:
Butterworth : ‘butter’
Chebyshev I : ‘cheby1’
Chebyshev II : ‘cheby2’
Cauer/elliptic: ‘ellip’
- output: {‘ba’, ‘zpk’, ‘sos’},可选
输出的过滤形式:
second-order sections (recommended): ‘sos’
numerator/denominator (default) : ‘ba’
pole-zero : ‘zpk’
一般来说,建议使用二阶部分 (‘sos’) 形式,因为推断分子/分母形式 (‘ba’) 的系数会遇到数值不稳定的问题。出于向后兼容性的原因,默认形式是分子/分母形式 (‘ba’),其中 ‘ba’ 中的 ‘b’ 和 ‘a’ 指的是所用系数的常用名称。
注意:使用二阶截面形式 (‘sos’) 有时会产生额外的计算成本:对于 data-intense 用例,因此建议还研究分子/分母形式 (‘ba’)。
- fs: 浮点数,可选
数字系统的采样频率。
- b, a: 数组,数组
分子 (b) 和分母 (a) IIR 滤波器的多项式。仅在以下情况下返回
output='ba'
.- z, p, k: ndarray,ndarray,浮点数
IIR 滤波器传递函数的零点、极点和系统增益。仅在
output='zpk'
时返回。- sos: ndarray
IIR 滤波器的二阶截面表示。仅在
output='sos'
时返回。
参数 ::
返回 ::
注意:
'sos'
输出参数是在 0.16.0 中添加的。例子:
>>> import numpy as np >>> from scipy import signal >>> import matplotlib.pyplot as plt >>> import matplotlib.ticker
>>> wp = 0.2 >>> ws = 0.3 >>> gpass = 1 >>> gstop = 40
>>> system = signal.iirdesign(wp, ws, gpass, gstop) >>> w, h = signal.freqz(*system)
>>> fig, ax1 = plt.subplots() >>> ax1.set_title('Digital filter frequency response') >>> ax1.plot(w, 20 * np.log10(abs(h)), 'b') >>> ax1.set_ylabel('Amplitude [dB]', color='b') >>> ax1.set_xlabel('Frequency [rad/sample]') >>> ax1.grid(True) >>> ax1.set_ylim([-120, 20]) >>> ax2 = ax1.twinx() >>> angles = np.unwrap(np.angle(h)) >>> ax2.plot(w, angles, 'g') >>> ax2.set_ylabel('Angle (radians)', color='g') >>> ax2.grid(True) >>> ax2.axis('tight') >>> ax2.set_ylim([-6, 1]) >>> nticks = 8 >>> ax1.yaxis.set_major_locator(matplotlib.ticker.LinearLocator(nticks)) >>> ax2.yaxis.set_major_locator(matplotlib.ticker.LinearLocator(nticks))
相关用法
- Python SciPy signal.iirfilter用法及代码示例
- Python SciPy signal.iirnotch用法及代码示例
- Python SciPy signal.iircomb用法及代码示例
- Python SciPy signal.iirpeak用法及代码示例
- Python SciPy signal.impulse用法及代码示例
- Python SciPy signal.impulse2用法及代码示例
- Python SciPy signal.invresz用法及代码示例
- Python SciPy signal.istft用法及代码示例
- Python SciPy signal.invres用法及代码示例
- Python SciPy signal.czt_points用法及代码示例
- Python SciPy signal.chirp用法及代码示例
- Python SciPy signal.residue用法及代码示例
- Python SciPy signal.max_len_seq用法及代码示例
- Python SciPy signal.kaiser_atten用法及代码示例
- Python SciPy signal.oaconvolve用法及代码示例
- Python SciPy signal.hilbert用法及代码示例
- Python SciPy signal.ricker用法及代码示例
- Python SciPy signal.group_delay用法及代码示例
- Python SciPy signal.cheb2ord用法及代码示例
- Python SciPy signal.get_window用法及代码示例
- Python SciPy signal.lfilter用法及代码示例
- Python SciPy signal.morlet用法及代码示例
- Python SciPy signal.coherence用法及代码示例
- Python SciPy signal.dfreqresp用法及代码示例
- Python SciPy signal.TransferFunction用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.iirdesign。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。