本文简要介绍 python 语言中 scipy.signal.lfilter_zi
的用法。
用法:
scipy.signal.lfilter_zi(b, a)#
为阶跃响应 steady-state 构建 lfilter 的初始条件。
计算初始状态子为了scipy.signal.lfilter对应于阶跃响应的稳态的函数。
此函数的典型用途是设置初始状态,以便滤波器的输出从与要滤波的信号的第一个元素相同的值开始。
- b, a: 数组 (1-D)
IIR 滤波器系数。有关详细信息,请参阅
lfilter
。
- zi: 一维ndarray
过滤器的初始状态。
参数 ::
返回 ::
注意:
m阶线性滤波器有一个状态空间表示(A, B, C, D),对于它,滤波器的输出y可以表示为:
z(n+1) = A*z(n) + B*x(n) y(n) = C*z(n) + D*x(n)
其中 z(n) 是长度为 m 的向量,A 的形状为 (m, m),B 的形状为 (m, 1),C 的形状为 (1, m),D 的形状为 (1, 1)(假设 x (n) 是一个标量)。 lfilter_zi 解决:
zi = A*zi + B
换句话说,它找到了对所有输入的响应为常数的初始条件。
给定滤波器系数 a 和 b,线性滤波器的转置直接形式 II 实现的状态空间矩阵,它是 scipy.signal.lfilter 使用的实现,是:
A = scipy.linalg.companion(a).T B = b[1:] - a[1:]*b[0]
假设 a[0] 为 1.0;如果 a[0] 不为 1,则 a 和 b 先除以 a[0]。
例子:
以下代码创建一个低通巴特沃斯滤波器。然后它将该过滤器应用于值全为 1.0 的数组;正如低通滤波器所预期的那样,输出也全部为 1.0。如果子的论点scipy.signal.lfilter没有给出,输出将显示瞬态信号。
>>> from numpy import array, ones >>> from scipy.signal import lfilter, lfilter_zi, butter >>> b, a = butter(5, 0.25) >>> zi = lfilter_zi(b, a) >>> y, zo = lfilter(b, a, ones(10), zi=zi) >>> y array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
另一个例子:
>>> x = array([0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0]) >>> y, zf = lfilter(b, a, x, zi=zi*x[0]) >>> y array([ 0.5 , 0.5 , 0.5 , 0.49836039, 0.48610528, 0.44399389, 0.35505241])
请注意,子参数scipy.signal.lfilter计算使用
lfilter_zi
并按比例缩放x[0].然后输出y在输入从 0.5 下降到 0.0 之前没有瞬态。
相关用法
- Python SciPy signal.lfilter用法及代码示例
- Python SciPy signal.lp2hp用法及代码示例
- Python SciPy signal.lti用法及代码示例
- Python SciPy signal.lp2bs_zpk用法及代码示例
- Python SciPy signal.lp2bp_zpk用法及代码示例
- Python SciPy signal.lsim用法及代码示例
- Python SciPy signal.lp2bs用法及代码示例
- Python SciPy signal.lp2bp用法及代码示例
- Python SciPy signal.lp2hp_zpk用法及代码示例
- Python SciPy signal.lsim2用法及代码示例
- Python SciPy signal.lp2lp_zpk用法及代码示例
- Python SciPy signal.lp2lp用法及代码示例
- Python SciPy signal.lombscargle用法及代码示例
- Python SciPy signal.czt_points用法及代码示例
- Python SciPy signal.chirp用法及代码示例
- Python SciPy signal.residue用法及代码示例
- Python SciPy signal.iirdesign用法及代码示例
- 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用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.lfilter_zi。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。