Search code examples
pythonalgorithmfilteringsignal-processingperceptron

Adaptive Filter input vectors and iteration


I am trying to implement an adaptive filter for noise cancellation, in particular a RLS filter to remove motion artifacts from a signal. To do this I am reading some literature, there is one thing I don't understand and every book or article I found just asumes I already now this.

I have a reference signal represented as a list in Python of about 8000 elements, or samples. I need to input this to the RLS filter, but every algorithm I find always talks about the input vector as

X[n] = [x1[n], x2[n], x3[n], ........, xM[n]]T

Where X is the input vector, and n is a time instant. And here is where I get lost. If n is a time instant, it would mean x[n] is an element in the list, a salmple. But if that is the case, what are x1, x2, ...., xM???.

I realise this is not strictly a coding problem, but I hope someone can help!

Thanks...


Solution

  • Your explanation is correct. The X input vector is multiplied recursively by the filter coefficients. It's been some time since I wrote an adaptive filter, but if I remember correctly you're multiplying M filter coefficients by the latest M input values to get an update.

    So M is the order of your filter, or the number of filter coefficients, and n is the length of the signal you are filtering. And as you note your recursive filter will look at a 'window' of those input values for each filtered output calculation.