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)


4
Out[272]:
[<matplotlib.lines.Line2D at 0x1680c860>]

In [ ]:


In [ ]:


In [ ]: