Hello all, I'm a practicing engineer reviewing DSP. I ran across the following problem: Given a discrete time, stable, LTI, non-minimum-phase system, w/ system fcn: H(z) = ((1-az^-1)(1-a*z^-1))/((1-bz^-1)(1-b*^-1)). (Where * denotes complex conjugation and ^ denotes exponentiation). i.e. zeros at z = a,a*, poles at z = b,b*. We also are given that |b|>1, |a|>1. i.e. H(z) is non-causal and non-minimum-phase. We wish to find a fcn Hc(z) which is stable and gives a unity magnitude response when cascaded with H(z). i.e. G(z) = H(z)Hc(z) gives unity gain for all input frequency components. It seems to me the solution is very simple: we just take Hc(z) = 1/H(z). ROC of H(z) = |z| < b. ROC of Hc(z) = |z| < a. Hc(z) is stable and gives a unity magnitude response when cascaded with H(z). However the textbook solution decomposes H(z) into a minimum phase system cascaded with an all pass system: H(z) = Hmp(z)APF(z) and takes Hc(z) = 1/Hmp(z). My question: For this specific problem, is there any need to decompose H(z) into a min phase system and all pass system? I dont see any need to do this. For this problem it seems adequate to just take Hc(z) = 1/H(z). Am I missing something? Thanks much in advance
Inverting a non-minimum phase system function
Started by ●June 25, 2013
Reply by ●June 25, 20132013-06-25
On 6/24/13 9:40 PM, RIH7777 wrote:> Hello all, > I'm a practicing engineer reviewing DSP. I ran across the following problem: > > Given a discrete time, stable, LTI, non-minimum-phase system, w/ system fcn: > H(z) = ((1-az^-1)(1-a*z^-1))/((1-bz^-1)(1-b*^-1)). (Where * denotes complex conjugation and ^ denotes exponentiation). i.e. zeros at z = a,a*, poles at z = b,b*. We also are given that |b|>1, |a|>1. i.e. H(z) is non-causal and non-minimum-phase. > > We wish to find a fcn Hc(z) which is stable and gives a unity magnitude response when cascaded with H(z). i.e. G(z) = H(z)Hc(z) gives unity gain for all input frequency components. > > It seems to me the solution is very simple: we just take Hc(z) = 1/H(z). ROC of > H(z) = |z|< b. ROC of Hc(z) = |z|< a. Hc(z) is stable and gives a unity magnitude response when cascaded with H(z). However the textbook solution decomposes H(z) into a minimum phase system cascaded with an all pass system: > H(z) = Hmp(z)APF(z) and takes Hc(z) = 1/Hmp(z). > > My question: For this specific problem, is there any need to decompose H(z) into a min phase system and all pass system? I dont see any need to do this. For this problem it seems adequate to just take Hc(z) = 1/H(z). Am I missing something? > > Thanks much in advanceinverting an LTI system means replacing the poles with zeros and replacing the original zeros with poles. a non-minimum phase system has zeros outside the unit circle. when you replace those for poles, then the poles are outside the unit circle and the inverted LTI system is not stable. that is why *only* minimum-phase LTI systems can be stably inverted. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by ●June 25, 20132013-06-25
On Tuesday, June 25, 2013 4:40:46 PM UTC+12, RIH7777 wrote:> Hello all, > > I'm a practicing engineer reviewing DSP. I ran across the following problem: > > > > Given a discrete time, stable, LTI, non-minimum-phase system, w/ system fcn: > > H(z) = ((1-az^-1)(1-a*z^-1))/((1-bz^-1)(1-b*^-1)). (Where * denotes complex conjugation and ^ denotes exponentiation). i.e. zeros at z = a,a*, poles at z = b,b*. We also are given that |b|>1, |a|>1. i.e. H(z) is non-causal and non-minimum-phase. > > > > We wish to find a fcn Hc(z) which is stable and gives a unity magnitude response when cascaded with H(z). i.e. G(z) = H(z)Hc(z) gives unity gain for all input frequency components. > > > > It seems to me the solution is very simple: we just take Hc(z) = 1/H(z). ROC of > > H(z) = |z| < b. ROC of Hc(z) = |z| < a. Hc(z) is stable and gives a unity magnitude response when cascaded with H(z). However the textbook solution decomposes H(z) into a minimum phase system cascaded with an all pass system: > > H(z) = Hmp(z)APF(z) and takes Hc(z) = 1/Hmp(z). > > > > My question: For this specific problem, is there any need to decompose H(z) into a min phase system and all pass system? I dont see any need to do this. For this problem it seems adequate to just take Hc(z) = 1/H(z). Am I missing something? > > > > Thanks much in advanceIf you invert the nonmin phase system it becomes unstable but I guess you know that. the point is to invert the min phase part and leave the all-pass which will at least give the inverse of the magnitude - but not the phase. If you try and equalise the phase you may well effect the magnitude again. A better way in optimal filtering is to introduce a time-delay in one channel (of say an adaptive LMS algorithm). This pulls over the uncausal part from negative time into positive time where we can use it. To do the same in ordinary filtering we would expand the transfer function as a Laurent series with positive and negative powers of z. Then truncate it at both ends and delay it - then you have an FIR transfer function with time-delay. Then invert that since its inverse should be stable. I am unsure of the finer details at present.
Reply by ●June 25, 20132013-06-25
Am 25.06.2013 06:40, schrieb RIH7777:> Hello all,> Given a discrete time, stable, LTI, non-minimum-phase system, w/ > system fcn: > H(z) = ((1-az^-1)(1-a*z^-1))/((1-bz^-1)(1-b*^-1)). > (Where * denotes complex conjugation and ^ denotes exponentiation). > i.e. zeros at z = a,a*, poles at z = b,b*. We also are given that > |b|>1, |a|>1. i.e. H(z) is non-causal and non-minimum-phase. > > We wish to find a fcn Hc(z) which is stable and gives a unity > magnitude response when cascaded with H(z). i.e. G(z) = H(z)Hc(z) > gives unity gain for all input frequency components. > > It seems to me the solution is very simple: > we just take Hc(z) = 1/H(z). > ROC of H(z) = |z| < b. ROC of Hc(z) = |z| < a. Hc(z) is stable and > gives a unity magnitude response when cascaded with H(z).Maybe I missed something: But why do you think that this Hc is stable? Since |a|>1 Hc will have poles outside of the unit circle which makes it unstable. Since you are just interested in a flat magnitude response, you can however replace the poles a and a* in Hc by 1/a and 1/a*. You can do the same for the zeros but it's not necessary for stability. But if you want Hc to be minimum phase you should also use 1/b and 1/b* as zeros. HTH, SG
Reply by ●June 25, 20132013-06-25
On Tuesday, June 25, 2013 12:08:43 AM UTC-5, robert bristow-johnson wrote:> On 6/24/13 9:40 PM, RIH7777 wrote: > Hello all, > I'm a practicing engineer reviewing DSP. I ran across the following problem: > > Given a discrete time, stable, LTI, non-minimum-phase system, w/ system fcn: > H(z) = ((1-az^-1)(1-a*z^-1))/((1-bz^-1)(1-b*^-1)). (Where * denotes complex conjugation and ^ denotes exponentiation). i.e. zeros at z = a,a*, poles at z = b,b*. We also are given that |b|>1, |a|>1. i.e. H(z) is non-causal and non-minimum-phase. > > We wish to find a fcn Hc(z) which is stable and gives a unity magnitude response when cascaded with H(z). i.e. G(z) = H(z)Hc(z) gives unity gain for all input frequency components. > > It seems to me the solution is very simple: we just take Hc(z) = 1/H(z). ROC of > H(z) = |z|< b. ROC of Hc(z) = |z|< a. Hc(z) is stable and gives a unity magnitude response when cascaded with H(z). However the textbook solution decomposes H(z) into a minimum phase system cascaded with an all pass system: > H(z) = Hmp(z)APF(z) and takes Hc(z) = 1/Hmp(z). > > My question: For this specific problem, is there any need to decompose H(z) into a min phase system and all pass system? I dont see any need to do this. For this problem it seems adequate to just take Hc(z) = 1/H(z). Am I missing something? > > Thanks much in advance inverting an LTI system means replacing the poles with zeros and replacing the original zeros with poles. a non-minimum phase system has zeros outside the unit circle. when you replace those for poles, then the poles are outside the unit circle and the inverted LTI system is not stable. that is why *only* minimum-phase LTI systems can be stably inverted. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."Hi, thx for responding. Problem statement does not require Hc(z) to be causal; only stable. Criterion for stability is that ROC includes unit circle. ROC for my Hc(z) is |z| < a, w/ |a| > 1 so ROC includes unit circle and so is stable. Criterion for stable and causal systems is poles inside unit circle. To cascade 2 systems we need ROC of each system to overlap. H(z) has ROC of |z|<b, my Hc(z) has ROC of |z| < a, so overlap is guaranteed regardless of relative mags of a,b. I think my Hc(z) = 1/H(z) meets problem's stated requirements unless I'm missing something else.
Reply by ●June 25, 20132013-06-25
Hi, thx for responding. Problem statement does not require Hc(z) to be causal; only stable. Criterion for stability is that ROC includes unit circle. ROC for my Hc(z) is |z| < a, w/ |a| > 1 so ROC includes unit circle and so is stable. Criterion for stable and causal systems is poles inside unit circle. To cascade 2 systems we need ROC of each system to overlap. H(z) has ROC of |z|<b, my Hc(z) has ROC of |z| < a, so overlap is guaranteed regardless of relative mags of a,b. I think my Hc(z) = 1/H(z) meets problem's stated requirements unless I'm missing something else.
Reply by ●June 25, 20132013-06-25
Hi, thx for responding. Problem statement does not require Hc(z) to be causal; only stable. Criterion for stability is that ROC includes unit circle. ROC for my Hc(z) is |z| < a, w/ |a| > 1 so ROC includes unit circle and so is stable. Criterion for stable and causal systems is poles inside unit circle. To cascade 2 systems we need ROC of each system to overlap. H(z) has ROC of |z|<b, my Hc(z) has ROC of |z| < a, so overlap is guaranteed regardless of relative mags of a,b. I think my Hc(z) = 1/H(z) meets problem's stated requirements unless I'm missing something else.
Reply by ●June 25, 20132013-06-25
On Tue, 25 Jun 2013 05:20:00 -0700, RIH7777 wrote:> On Tuesday, June 25, 2013 12:08:43 AM UTC-5, robert bristow-johnson > wrote: >> On 6/24/13 9:40 PM, RIH7777 wrote: > Hello all, > I'm a practicing >> engineer reviewing DSP. I ran across the following problem: > > Given a >> discrete time, stable, LTI, non-minimum-phase system, w/ system fcn: > >> H(z) = ((1-az^-1)(1-a*z^-1))/((1-bz^-1)(1-b*^-1)). (Where * denotes >> complex conjugation and ^ denotes exponentiation). i.e. zeros at z = >> a,a*, poles at z = b,b*. We also are given that |b|>1, |a|>1. i.e. H(z) >> is non-causal and non-minimum-phase. > > We wish to find a fcn Hc(z) >> which is stable and gives a unity magnitude response when cascaded with >> H(z). i.e. G(z) = H(z)Hc(z) gives unity gain for all input frequency >> components. > > It seems to me the solution is very simple: we just >> take Hc(z) = 1/H(z). ROC of > H(z) = |z|< b. ROC of Hc(z) = |z|< a. >> Hc(z) is stable and gives a unity magnitude response when cascaded with >> H(z). However the textbook solution decomposes H(z) into a minimum >> phase system cascaded with an all pass system: > H(z) = Hmp(z)APF(z) >> and takes Hc(z) = 1/Hmp(z). > > My question: For this specific problem, >> is there any need to decompose H(z) into a min phase system and all >> pass system? I dont see any need to do this. For this problem it seems >> adequate to just take Hc(z) = 1/H(z). Am I missing something? > > >> Thanks much in advance inverting an LTI system means replacing the >> poles with zeros and replacing the original zeros with poles. a >> non-minimum phase system has zeros outside the unit circle. when you >> replace those for poles, then the poles are outside the unit circle and >> the inverted LTI system is not stable. that is why *only* minimum-phase >> LTI systems can be stably inverted. -- r b-j rbj@audioimagination.com >> "Imagination is more important than knowledge." > > Hi, thx for responding. Problem statement does not require Hc(z) to be > causal; only stable. Criterion for stability is that ROC includes unit > circle. ROC for my Hc(z) is |z| < a, w/ |a| > 1 so ROC includes unit > circle and so is stable. Criterion for stable and causal systems is > poles inside unit circle. To cascade 2 systems we need ROC of each > system to overlap. H(z) has ROC of |z|<b, my Hc(z) has ROC of |z| < a, > so overlap is guaranteed regardless of relative mags of a,b. I think my > Hc(z) = 1/H(z) meets problem's stated requirements unless I'm missing > something else.If you're up on all this ROC crap, then why can't you know that Hc(z) = 1/ H(z)? What do you plan to do about the fact that Hc(z) isn't physically realizable if it has poles with |z| > 1? -- Tim Wescott Control system and signal processing consulting www.wescottdesign.com
Reply by ●June 25, 20132013-06-25
As I said, I'm reviewing theory. I saw a discrepancy between the textbook answer and my understanding of the answer. Which I'm still trying to clarify. Moreover 2nd part of problem begins: 'Now if we further require that Hc(z) is causal then....'. The point is that this problem is making distinctions between causal and non-causal systems, and in the first part which I quoted above they are not requiring causality. Given that Hc(z) is not required to be causal, is there any need to decompose H(z) into minimum phase and all pass components? Maybe I'm looking at this in more detail than the author of the problem intended? I'm now thinking that problem author just took a valid solution, which is not the only solution given the problem constraints. Also, is it not true that non-causal systems are realizable and are often used in practice in certain non-real-time cases where data is processed offline? Thx much
Reply by ●June 25, 20132013-06-25
On Tue, 25 Jun 2013 10:39:15 -0700, RIH7777 wrote:> As I said, I'm reviewing theory. I saw a discrepancy between the > textbook answer and my understanding of the answer. Which I'm still > trying to clarify. Moreover 2nd part of problem begins: 'Now if we > further require that Hc(z) is causal then....'. The point is that this > problem is making distinctions between causal and non-causal systems, > and in the first part which I quoted above they are not requiring > causality.Ah. I missed the part about this being an entirely theoretical exercise.> Given that Hc(z) is not required to be causal, is there any need to > decompose H(z) into minimum phase and all pass components?No.> Maybe I'm looking at this in more detail than the author of the problem > intended? I'm now thinking that problem author just took a valid > solution, which is not the only solution given the problem constraints.Hc(z) = 1 / H(z) is certainly the simplest solution, if you don't mind throwing causality out the window. If I recall the problem statement (please don't trim context in the future) the requirement was for a transfer function Hc(z) such that Hc(z) * H(z) had a magnitude response of unity, without specifying phase. The easiest way to do this and retain a causal system is to separate the zeros of H into stable and non-stable parts, i.e. H(z) = (Ns(z) * Nu(z)) / D(z), where Ns(z) has all stable zeros, and Nu(z) has all unstable zeros. Then define Hc(z) = D(z) / (Ns(z) * Nu(1/z)) The resulting response H(z) * Hc(z) will have an all-pass character, but the _magnitude_ response in the frequency domain will be unity.> Also, is it not true that non-causal systems are realizable and are > often used in practice in certain non-real-time cases where data is > processed offline?Well, yes and no. Yes, in that given a time-series representation you can filter the causal part going forward in time, and you can filter the non-causal part going backward in time. Now, to really pick nits: No, in that you're getting an answer that is both partial and entirely after the fact -- in essence, doing the work in batch is adding an arbitrarily long (but always longer than the data set) time delay, and using a short-hand method to convolve the data series by a truncated and delayed impulse response of the original system response. So strictly speaking you can't truly realize a non-causal system. You can simulate a non-causal system, but it isn't responding to actual future values of the signal -- it's just responding to past values in an environment where you've arbitrarily designated "now" as being some point in the (perhaps dim) past. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com






