Say that I have array x
and y
:
x = numpy.array([1,2,3,4,5,6,7,8,9,10]) # actual content is the a result of another calculation step
>
Perhaps the fastest and most concise way is to use scipy.signal.lfilter, which implements exactly the kind of recursive relationship you described:
from scipy.signal import lfilter
import numpy as np
x = np.array([1,2,3,4,5,6,7,8,9,10])
b = [1., 0.]
a = [1., -2.]
zi = np.array([2*50]) # initial condition
y, _ = lfilter(b, a, x, zi=zi)
Result will be np.float64
, but you can cast to e.g. np.int32
if that's what you need:
>>> y.astype(np.int32)
array([ 101, 204, 411, 826, 1657, 3320, 6647, 13302, 26613, 53236])