> I'm working on a fairly simple Matlab script but am having troubles > trying to figure out what is really happening behind the scenes. I'm > working with an API for in house software to play with seismic data. I > was given a template from one of the developers to work with to develop > our own filter. > > The main command that has me stumped pretty much is "y = filter(b, a, > x)" where X is a full trace of a variable length (depending on the > value contained in NSamples in C++). > > a = [1 k1*(1+k2) k2] > and > b = [k2 k1*(1 + k2) 1] > > What is happening in the filter command eludes me and I'm having > troubles trying to figure out how to work with it in C++ without having > to try and include a Matlab library in the template. The documetnation > on "filter" is somewhat helpful, but I'm having troubles trying to get > my head around it, so I guess what I'm looking for is mainly an > explanation as to what "filter" is doing with the information given.
x(n) is current input sample, x(n-1) is the first previous input sample, etc.
Notice that the equation relies on previous values of the output y as well (this is what makes this particular filter an IIR filter, infinite impulse response). Just store those two previous value of the output as you iterate down the array. y_prev_1 and y_prev_2 or something.