Dear community, for further work in active noise control with LMS algorithm in first step I need to identify the secondary path of the system which contains maintainly an analog low pass and two analog band stop filters. My problem is that the identification doesn't work exactly. The frequency response of my adaptive filter doesn't meet the response of the analog filters, most notably in phase (q.v. figure frequency_responses). When I use this approximated path for the active noise control, the whole system doesn't work very well. However the adaption of the secondary path reaches a converged state with an error power of about 10^(-20) (q.v. figure adaption_error) which, I think, is a good result. For the adaption I use a 100-tap FIR filter with an LMS-adaption step size of mu=0.00025 and a noise source (q.v. system_view.html). Can anyone help me by tuning the algorithm for better results? Maybe it's even impossible to approximate an analog path with an FIR filter exactly? Thank you very much. Rainer
You will never be able to exactly identify an analog (IIR) path with an FIR filter. Your filter is quite short, did you try a longer filter? Can you show the impulse response?
Thank you for reply. In this figure you can see the impulse response of the approximating FIR filter. After the 40th tap, which is at 20us, the coefficient values of the FIR filter are pretty small. So I think increasing the filter order would not improve performance. Maybe I should also decrease the step size mu of the algorithm for a smaller remaining error. I will try to work this out.
Your impulse response seems to be long enough to the right, but not to the left. You need a few anticausal taps. Delay the output signal by a few samples, until you get a few real zero taps at the beginning of the impulse response, then you will be able to identify the system much better. Of course, you can't use anticausal filters in real life (which is why ANC doesn't really work that well).
I don't know what to do... When I delay the output of the FIR filter by only one tap the LMS-algorithm doesn't work anymore (q.v. figures). So did I get your advise wrong?
I tried some positions for the delay taps. When I delay the input of the analog filters the phase of the FIR filter rises. Now I tried some numbers of delays, at one number of taps the phase of the analog filters is met, but the magnitude got worse. Also in the implulse response there didn't come up zero taps at the beginning yet. Is that right or is there another way?
You need to add an artificial delay in (before/after) the system that you want to identify.
--------> system ----> delay ----->+----> | -^ | | |----- > adaptive filter--------|
Thanks for your help. Those anticausal steps do work. In real I also will have delay taps caused by an DA and an AD converter. Meanwhile I figured out another way: I send one single pulse to the secondary path. At the sink the impulse response sampled with the frequecy of the FIR filter is measured. That works very good, too. And it's much faster. Now my FxLMS algorithm does work. Thank you for your help.