In [268]:
class myAllPoleFilter:
def __init__(self, size):
self.size = size
self.input_accumulator = 0
self.buffer = np.zeros(size)
print(self.size)
def filter(self, data, acoeff):
for k in range(data.size):
self.input_accumulator = data[k]
for i in range(1,self.size):
self.input_accumulator = (self.input_accumulator + (acoeff[i]*self.buffer[self.size-i]))
self.buffer = np.roll(self.buffer, -1)
self.buffer[self.size-1] = self.input_accumulator
data[k] = -self.input_accumulator
return data
In [269]:
from __future__ import print_function, division
import numpy as np
from __future__ import print_function, division
import numpy as np
import scipy as sp
from __future__ import print_function, division
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
In [270]:
x = np.zeros(20,)
x[0] = 1
In [271]:
a = np.random.uniform(-1,1,4)
a[0] = -1
In [272]:
x = np.zeros(20,)
x[0] = 1
import scipy.signal as sig
plt.plot(x)
filtered = sig.lfilter([1], a, x)
plt.plot(filtered)
plt.xlim(0, 20)
mallpole = myAllPoleFilter(len(a))
y = mallpole.filter(x, a)
plt.plot(y)
Out[272]:
In [ ]:
In [ ]:
In [ ]: