Talk:Adaptive filter

Not just a DSP thing
Adaptive filtering isn't just a DSP thing. There's a big beautiful body of mathematical literature put together by guys like Wiener and Kalman on the art of detection, estimation, and optimal and adaptive filtering. It's probably fairer to call it a "linear algebra" thing than a "DSP" thing.

Current implementations are done in DSP because computers are fast enough and cheap enough that it's the only reasonable way to do it. But Wiener did a lot of work on analog mechanisms that drew upon the same body of mathematics.

Applications
I've added Echo cancellation and linked to Linear prediction. There is no hint as to what Channel equalization and Channel identification should refer to so I've boldly removed those. Feel free to restore them if you can explain to us what they're about. --Kvng (talk) 20:01, 2 September 2008 (UTC)

Someone could add http://www.eee.strath.ac.uk/r.w.stewart/adaptivejava/begin.htm in external links. Good examples with figures. —Preceding unsigned comment added by 210.212.160.101 (talk) 17:28, 10 November 2008 (UTC)

Too technical?
What specifically is too technical about this article? It seems clear and simple to me. Only the block diagram section even has any equations (which seems fine, since it's obviously for more advanced readers), and they're all nicely explained. —Keenan Pepper 18:06, 24 June 2010 (UTC)


 * I have reworked the lead to improve accessibility - Discussion of coefficients in the lead was unnecessary, for instance. I think that's enough for me to remove the Technical tag. It would be nive to increase the word to formula ratio in the Block Diagram section. --Kvng (talk) 16:25, 25 January 2011 (UTC)

What use is the adaptive filter shown in the block diagram?
In the example diagram the right side input to the system is the desired signal. If you already have the desired signal, d(t); why use the filter to predict it??

It would make more sense to me if a signal that correlates with v (in the EKG medical example above it would be the line voltage) is the input on the left side of the system and the corrupted signal, x(t)=d(t)+v(t), is the input on the right. Then the filter would output an estimate of v(t) and the result of the sum would be an estimate of d(t).

I could be way off since this isn't my field of expertise. Please set me straight if I'm off in left field somewhere. I'm not sure if my proposed circuit would work, but it sure seems to me like something is wrong since d(t) is needed to estimate d(t). Hangingman (talk) 03:49, 25 January 2011 (UTC)


 * You are confused because the example and equations do not correlate well with the block diagram. In the medical example, x(n) is line noise + heartbeat, d(n) is line noise only. The useful signal is e(n) which, once the adaptive filter has done it's magic, should be just the heartbeat. --Kvng (talk) 16:25, 25 January 2011 (UTC)

Shouldn't the example be revised to to correct this? I don't feel fully qualified to do it. — Preceding unsigned comment added by Hangingman (talk • contribs) 01:01, 26 January 2011 (UTC)

Block Diagram explanation unlikely
The case described in the block diagram section is unlikely. If x(n) = d(n) + other, then you would not need a filter because you already have d(n). Generally x(n) and d(n) share some correlated signals. One may be a filtered version of the other or they may contained the same signals applied to different filters. What an adaptive filter does in general is to minimize e(n) by filtering the part of x(n) that is correlated to d(n) into an estimate of d(n) that is then subtracted from d(n). I will attempt to fix the explanation without needing to change the figure.Constant314 (talk) 14:45, 21 March 2014 (UTC)

Normalization of symbols
This page uses a mixture of n as a subscript (i.e. Wn) and (n) (i.e. x(n)). I will be fixing that. It will require a new figure. The new figure will be language neutral (no words in the figure). The notation is almost the same as Widrow and Stearns so I am going to change it all over to their notation. This means that I will mostly be changing my own additions. This should not take more than a few hours. I will be saving intermediate results so readers may catch it with a blend of notation. The changes will be: d-hat to y, e to ε, k to j, n to k, j to n and p to L. Constant314 (talk) 23:15, 24 March 2014 (UTC)


 * It is done.Constant314 (talk) 00:21, 25 March 2014 (UTC)

Recent 02/20/2017 changes
I've moved this recent work to the talk page for discussion. It is good work worth preserving, but I had to revert back a few steps because symbols were changed that no longer match the figures. In the figures, upper case Wk refers to the entire parameter vector at the k'th instant.

Let’s define $$\mathbf{w}_{k}=\left[w_{0,k} \ w_{1,k} \  ... \ w_{L,k} \right]^{T}$$ the vector of the  adaptive filter's free parameters,  $$\mathbf{x}_{k}=\left[x_{0,k} \ x_{1,k-1} \  ... \ x_{L,k-L} \right]^{T}$$ the vector that contains a $$(L+1)$$-length window of the input signal and $$k$$ the time index, in more formal terms an adaptive filter can be defined as a computational device, that attempts to model the relationship between two signals in real time in an iterative manner, and characterized by the presence of two blocks: Let's define $$J(\mathbf{w})$$ the cost function that define the criterion and $$\nabla J(\mathbf{w}_k) $$ its estimated gradient around the point $$\mathbf{w}_k $$, the most simple  adaptation rule can be defined as $$\Delta\mathbf{w}_k = -\mu \nabla J(\mathbf{w}_k) $$, where $$\mu $$ is the step-size or learning-rate parameter. In other words, the weights variation tend to minimize the cost function.
 * 1) a block that process the input signal and produce the filter output by the relation  $$y_k=\mathbf{w}_{k}^{T}\mathbf{x}_{k}$$;
 * 2) a block of the type  $$\mathbf{w}_k = \mathbf{w}_{k-1} + \Delta\mathbf{w}_k $$, denoted as adaptation or learning rule, that computes the weights variation according to a predetermined criterion.

With regard to this new material, it doesn't belong in the lede, but could be the beginning of a theory section, which the article needs. But specifically it is too mathematical and abstract for the lede. It assumes a particular filter implementation where as "adaptive filter" also includes adaptive lattice filters and adaptive IIR filters. Also, it introduces symbols not used in the rest of the article or the diagrams. That would not be a problem in a stand alone section in the body of the article. Finally, it is textbook style instead of encyclopedia style, which is easily remedied. Constant314 (talk) 18:55, 20 February 2017 (UTC)

RMS value
What is RMS value? The are LMS=Least Mean Squares, RLS=Recursive Least Square, but no explanation for RMS Jumpow (talk) 20:33, 27 October 2018 (UTC)


 * RMS = Root-Mean-Square = square root of average squared error. Constant314 (talk) 21:06, 27 October 2018 (UTC)
 * I made a wiki-link the the first occurrence of RMS.Constant314 (talk) 21:12, 27 October 2018 (UTC)

Missing very important definitions
I was trying to understand these adaptive filters and RLS in particular, - I have knowledge of machine learning/deep learning and have trained neural nets especially with supervised learning - but this page and other related to adaptive filter are missing a clear and precise (with examples as well !) description of what this "desired signal" is and how the cost function can be computed. If we consider that there is no "training phase" i.e. no ground truth available - why would there be ? If there was it would just be some kind of neural network that we could train by supervised learning and then deploy. - So in the scenario in which these adaptive filters are used, i.e. "no training" and used "in real time" - which seems to be the common usage of these filters, otherwise, again if training it becomes a standard neural net ! -, then talking about a "desired signal" which we can subtract and compute the error from in a cost function, seems to be absurd ! E.g., in the ECG corrupted by noise example: if we knew the ideal signal then no need to filter anything and the whole approach does not make any sense ... sometimes a so-called "correlated signal" is mentioned but this is not clear at all and never explained in details (what is it? How do we obtain such a "correlated signal" in practice ? why does that work ? etc)

Please update this page with much more details about this cost function and desired or "ideal" signal. I don't see how someone not familiar with those filters can understand the intuition behind them without clear understanding of the cost function, which seems to me like the ESSENTIAL part of the algorithm ! AlanTuring86 (talk) 09:45, 12 June 2024 (UTC)