# Approximate a Known System with Adaptive Filter and an Unknown System in a Series

I am using gradient descent on an adaptive IIR filter for the below system 1. At the moment I am just assuming the known system is not there and it works fine. However, occasionally when the known system has slower dynamics it does not perform very well. Are there any papers or methods for adapting a filter in this kind of scenario? Thank you in advance for your help.

The known system is not necessarily invertible, but is always stable.

• Could you explain more what you're after? Do you want the adaptive filter + unknown system to approximate the known system?
– Royi
Sep 29, 2022 at 16:52
• Exactly that yeah. I think the reason it doesn't always work is because of one of the assumptions made in deriving the gradient vector (in the adaptive filter gradient of the error w.r.t the filter parameters). When I just make all the assumptions it only partially works (i.e. when the unknown system has fast dynamics), but, if the unknown system has slow dynamics I think the assumptions no longer hold in the derivation of the gradient vector. I was wondering if there was a way to derive a new way of calculating the gradient vector, or any studies that examine scenarios like that. Sep 30, 2022 at 11:30
• The problem is that the connection between the error and the adaptive filter isn't direct. Can we alter the locations of the systems?
– Royi
Sep 30, 2022 at 12:08
• Sadly not, I think you are right that that is the reason it is difficult - the output of the adaptive filter is altered by the unknown system before being used to calculate the error. Is there any way to solve, or approximately solve, without altering the order that you know of? Thank you Sep 30, 2022 at 13:25

The problem with your diagram is that the calculation of the error isn't done on the output of the adaptive filter.
The adaptive filter minimizes the error based on the idea the error is a function only of the weights of the filter and the input. In your cases it is also a function of the weights of the unknown system.

If you have the ability to change to locations of the blocks it would make sense to do as following (By ASCII Flow at Adaptive Filter):


┌──────────────────┐
│                  │
┌───────────┤   Known System   ├────────────────────────────────────┐
│           │                  │                                    │
│           └──────────────────┘                                    │
│                                                                   │
│                                                                   │
│           ┌──────────────────┐        ┌──────────────────┐        │
│           │                  │        │                  │        │
└───────────┤  Unknown System  ├────────┤ Adaptive Filter  ├────────┘
│                  │        │                  │
└──────────────────┘        └──────────────────┘



Then what the adaptive filter will try to do is to imitate the system which is inverse of the unknown system and equivalent to the known system.

The performance of the convergence, as always with adaptive filters, depends on the properties of the eigen values of the systems.

• Ascii flow is nice. You may like textik.com as well. More options at unix.stackexchange.com/questions/126630/…. Sep 30, 2022 at 12:29
• Is there any way to solve (or approximately solve) this without altering the order of the blocks? I sadly can't alter the order, but I agree that I think the problem is that the output of the adaptive filter is altered before being used to calculate the error. thanks for your help! Sep 30, 2022 at 13:26
• Since the system is unknown by default the answer is not. If you have some prior (Information) on the unknown system something might be done.
– Royi
Sep 30, 2022 at 13:50
• For instance, if the unknown system is a Low Pass Filter with gain 1 over [0, f1] frequencies we might be able to limit the adaptation to that range (Where basically the unknown system has no effect).
– Royi
Sep 30, 2022 at 14:31
• I haven't seen anything specific. What I wrote is based on a broad overview of the problem. Adaptive Filter is just on line optimization of a least squares problem (Or adaptive in case things are not stationary). What you need is to reformulate the problem as an optimization problem regardless of the adaptive filter framework. In the optimization problem you may write the prior information as part of it.
– Royi
Sep 30, 2022 at 16:54