我的目标是在 numpy 中向量化以下操作,
y[n] = c1*x[n] + c2*x[n-1] + c3*y[n-1]
If n
是时间了,我基本上需要依赖于之前的输入以及之前的输出的输出。我被赋予的价值观x[-1]
and y[-1]
。另外,这是我的实际问题的通用版本,其中c1 = 1.001
, c2 = -1
and c3 = 1
.
我可以弄清楚添加前两个操作数的过程,只需添加c1*x
and c2*np.concatenate([x[-1], x[0:-1])
,但我似乎无法找出最好的处理方法y[n-1]
.
可以使用 IIR 滤波器来做到这一点。scipy.signal.lfilter在这种情况下是正确的选择。
对于我的特定常量,以下代码片段即可 -
from scipy import signal
inital = signal.lfiltic([1.001,-1], [1, -1], [y_0], [x_0])
output, _ = signal.lfilter([1.001,-1], [1, -1], input, zi=inital)
Here, signal.lfiltic
用于指定初始条件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)