Prev: THD without using an FFT
Next: Time-Varying Systems
From: lsfinn on 11 Jul 2010 17:30 Hi, I've a filter expressed as a parallel bank of (~50) second order sections. Each second order section represents a high-Q resonant feature. I need to invert the filter: i.e., if F = A1+A2+... and y = Fx, I need F^{-1} s.t. x = F^{-1}y. (F is invertible.) I'm stuck. Round-off precludes conversion to transfer function form; a literature search (such as I'm able to do: I'm not trained in this area) has not turned-up anything that has suggested a way forward. I'd appreciate any advice from the experts on this list. Thanks in advance, Sam Lee Samuel Finn Professor of Physics; Astronomy & Astrophysics 104 Davey Laboratroy The Pennsylvania State University University Park, PA 16802 Ph: +1(814)863-9598 Fx: +1(814)863-9608
From: Rune Allnor on 11 Jul 2010 18:17 On 11 Jul, 23:30, "lsfinn" <lsfinn(a)n_o_s_p_a_m.psu.edu> wrote: > Hi, > > I've a filter expressed as a parallel bank of (~50) second order sections. > Each second order section represents a high-Q resonant feature. I need to > invert the filter: i.e., if F = A1+A2+... and y = Fx, I need F^{-1} s.t. x > = F^{-1}y. (F is invertible.) > > I'm stuck. Round-off precludes conversion to transfer function form; a > literature search (such as I'm able to do: I'm not trained in this area) > has not turned-up anything that has suggested a way forward. I'd appreciate > any advice from the experts on this list. Won't claim any expert status, but apart form that: First of all, what you want might not be possible. The deciding factor is whether the second-order sections (SOS) are minimum phase. Denote the transfer function of one section as H(z) = B(z)/A(z). The expression for the inverted filter will then be H'(z) = A(z)/B(z). The usual condition for this filter to be causal and stable is that all the roots of the polynomial B(z) are inside the unit circle in Z domain. Inverting each SOS this way works for a cascade of SOS'es. I can't tell off the top of my head if it would work for a parallel bank of SOS'es; maybe some of the true experts will chime in on that. Rune
From: Vladimir Vassilevsky on 11 Jul 2010 18:34 lsfinn wrote: > Hi, > > I've a filter expressed as a parallel bank of (~50) second order sections. > Each second order section represents a high-Q resonant feature. I need to > invert the filter: i.e., if F = A1+A2+... and y = Fx, I need F^{-1} s.t. x > = F^{-1}y. (F is invertible.) You might want to ask RBJ; this is his area. My $0.02: The straightforward way would be collapse the filter into transfer function, factorize it and then invert. Using multiple precision math. There could be many ways to approximate the inverse or to solve for the inverse as numeric optimization problem. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
From: Tim Wescott on 11 Jul 2010 19:59 On 07/11/2010 03:17 PM, Rune Allnor wrote: > On 11 Jul, 23:30, "lsfinn"<lsfinn(a)n_o_s_p_a_m.psu.edu> wrote: >> Hi, >> >> I've a filter expressed as a parallel bank of (~50) second order sections. >> Each second order section represents a high-Q resonant feature. I need to >> invert the filter: i.e., if F = A1+A2+... and y = Fx, I need F^{-1} s.t. x >> = F^{-1}y. (F is invertible.) >> >> I'm stuck. Round-off precludes conversion to transfer function form; a >> literature search (such as I'm able to do: I'm not trained in this area) >> has not turned-up anything that has suggested a way forward. I'd appreciate >> any advice from the experts on this list. > > Won't claim any expert status, but apart form that: > > First of all, what you want might not be possible. The deciding > factor is whether the second-order sections (SOS) are minimum > phase. Denote the transfer function of one section as > > H(z) = B(z)/A(z). > > The expression for the inverted filter will then be > > H'(z) = A(z)/B(z). > > The usual condition for this filter to be causal and stable > is that all the roots of the polynomial B(z) are inside the > unit circle in Z domain. > > Inverting each SOS this way works for a cascade of SOS'es. > I can't tell off the top of my head if it would work for > a parallel bank of SOS'es; maybe some of the true experts > will chime in on that. Alas, this is one of those "I can disprove that hypothesis in one step" things. Consider the filter H(z) = (z - a) / (z - b) + c -- it's parallel, and each leg is minimum phase (or close enough), right? H(z) = ((1 + c)*z - a - b*c) / (z - b). Just find a, b, and c such that (a + b*c) / (1 + c) > 1 Now you've found a minimum-phase system from your parallel filter bank. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" was written for you. See details at http://www.wescottdesign.com/actfes/actfes.html
From: Tim Wescott on 11 Jul 2010 20:03
On 07/11/2010 03:34 PM, Vladimir Vassilevsky wrote: > > > lsfinn wrote: > >> Hi, >> I've a filter expressed as a parallel bank of (~50) second order >> sections. >> Each second order section represents a high-Q resonant feature. I need to >> invert the filter: i.e., if F = A1+A2+... and y = Fx, I need F^{-1} >> s.t. x >> = F^{-1}y. (F is invertible.) > > You might want to ask RBJ; this is his area. > > My $0.02: > > The straightforward way would be collapse the filter into transfer > function, factorize it and then invert. Using multiple precision math. I second that. > There could be many ways to approximate the inverse or to solve for the > inverse as numeric optimization problem. For that matter, if what you're _really_ trying to do is to take the filter's output signal and deduce it's input signal, then you may well do better with a Kalman (or Wiener, IOW a "time-invariant Kalman"). This would let you take any noise into account (physical or numeric) that's added in _after_ the filtering. I.e., if you have the signal y = h(x) + n, where x is the input signal to your filter bank and n is a noise signal, and you want the best estimate of y, then an inverse filter bank may _not_ be the best filter at all. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" was written for you. See details at http://www.wescottdesign.com/actfes/actfes.html |