Hello all I have a filter I inherited from someone else (long gone) that is supposed to be minimum phase but I would like to make sure. Could someone please tell me the best way to do this? The filter is rather long (~500). Is the only method to use a generic polynomial root-finding algorithm, see where the zeros lie, and pray for stability/convergence? Thanks for your time Alex
Determing whether or not a filter is minimum phase
Started by ●June 11, 2008
Reply by ●June 11, 20082008-06-11
On 11 Jun, 23:54, "alexryu" <ryu.a...@gmail.com> wrote:> Hello all > I have a filter I inherited from someone else (long gone) that is supposed > to be minimum phase but I would like to make sure. �Could someone please > tell me the best way to do this? �The filter is rather long (~500). �Is the > only method to use a generic polynomial root-finding algorithm, see where > the zeros lie, and pray for stability/convergence? �Yes. Rune
Reply by ●June 11, 20082008-06-11
On Jun 11, 10:54 pm, "alexryu" <ryu.a...@gmail.com> wrote:> Hello all > I have a filter I inherited from someone else (long gone) that is supposed > to be minimum phase but I would like to make sure. Could someone please > tell me the best way to do this? The filter is rather long (~500). Is the > only method to use a generic polynomial root-finding algorithm, see where > the zeros lie, and pray for stability/convergence? Thanks for your time > AlexPerhaps this would be of help: http://en.wikibooks.org/wiki/Control_Systems/Jurys_Test (Obviously, use your filter polynomial, rather than the non-existent denominator polynomial!) -- Oli
Reply by ●June 11, 20082008-06-11
On Jun 11, 5:54 pm, "alexryu" <ryu.a...@gmail.com> wrote:> Hello all > I have a filter I inherited from someone else (long gone) that is supposed > to be minimum phase but I would like to make sure. Could someone please > tell me the best way to do this? The filter is rather long (~500).sounds like an FIR.> Is the > only method to use a generic polynomial root-finding algorithm, see where > the zeros lie, and pray for stability/convergence?and yet, one more answer that is different than either of the previous ones: for a minimum-phase system, the natural logarithm of the magnitude frequency response (the even-symmetry double-sided magnitude response including negative frequencies) is the Hilbert Transform of the phase response (phase measured in radians). that is, if H(z) = SUM{ h[n] * z^(-n) } is minimum-phase, then log|H(e^(jw))| = Re{ log(H(e^(jw)) } = Hilbert{ arg{H(e^(jw))} } where arg{H(e^(jw))} = Im{ log(H(e^(jw)) } = phi(w) where H(e^(jw)) = |H(e^(jw))| * e^(j*phi(w)) also, for a causal h[n] (that is h[n] = 0 for every n<0), the real and imaginary parts of H(e^(jw)) (no logarithm) are a Hilbert transform pair. so, 1. take your FIR coefficients, the impulse response h[n]. 2. put them into the first half of an FFT buffer (zero pad as necessary and zero the second half corresponding to negative time). 3. FFT 4. complex log every bin in the result of the FFT 5. inverse FFT the result should be "causal", the negative-time half (or the second half) should be strictly zero for every bin (within a very small amount because of numericial issues). try that out. r b-j
Reply by ●June 11, 20082008-06-11
alexryu wrote:> Hello all > I have a filter I inherited from someone else (long gone) that is supposed > to be minimum phase but I would like to make sure. Could someone please > tell me the best way to do this? The filter is rather long (~500). Is the > only method to use a generic polynomial root-finding algorithm, see where > the zeros lie, and pray for stability/convergence? Thanks for your time > Alex > >Here's one more answer to add to your pile: If the filter (I assume it's an FIR) is symmetrical around the center then it's not minimum phase. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" gives you just what it says. See details at http://www.wescottdesign.com/actfes/actfes.html
Reply by ●June 11, 20082008-06-11
On 12 Jun, 02:01, robert bristow-johnson <r...@audioimagination.com> wrote:> for a minimum-phase system, the natural logarithm of the magnitude > frequency response (the even-symmetry double-sided magnitude response > including negative frequencies) is the Hilbert Transform of the phase > response (phase measured in radians).That's a very interesting approach, which might be worth a try. I would assume there would be some issues wrt the unwrapping of the phase response? Rune
Reply by ●June 12, 20082008-06-12
alexryu wrote:> Hello all > I have a filter I inherited from someone else (long gone) that is supposed > to be minimum phase but I would like to make sure. Could someone please > tell me the best way to do this? The filter is rather long (~500). Is the > only method to use a generic polynomial root-finding algorithm, see where > the zeros lie, and pray for stability/convergence? > Thanks for your timeThe best way is redesign the filter from scratch. 1. The filter with 500 taps just can't be the right thing. Especially if it is supposed to be a minimum phase. There should be more efficient approach to the problem. 2. With non-trivial polynomial of that high order, you are very likely to run into the numeric problems which would not allow you to prove anything. Especially with the FFT approach suggested by RBJ. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Reply by ●June 12, 20082008-06-12
On Jun 11, 10:43 pm, Rune Allnor <all...@tele.ntnu.no> wrote:> On 12 Jun, 02:01, robert bristow-johnson <r...@audioimagination.com> > wrote: > > > for a minimum-phase system, the natural logarithm of the magnitude > > frequency response (the even-symmetry double-sided magnitude response > > including negative frequencies) is the Hilbert Transform of the phase > > response (phase measured in radians). > > That's a very interesting approach, which might be worth a try. > I would assume there would be some issues wrt the unwrapping of > the phase response?yes, there are (and i forgot about that). phase needs to be odd- symmetry and decently unwrapped. sometimes, like for chirp signals, the phase wraps so much that to unwrap it properly (with uniformly-spaced discrete points from the FFT), i applied the standard unwrapping alg to the *differences* of adjacent phase points and then discretely "integrate" the unwrapped differences to get the properly unwrapped phase. r b-j
Reply by ●June 12, 20082008-06-12
On Jun 11, 11:56 pm, Vladimir Vassilevsky <antispam_bo...@hotmail.com> wrote:> alexryu wrote: > > Hello all > > I have a filter I inherited from someone else (long gone) that is supposed > > to be minimum phase but I would like to make sure. Could someone please > > tell me the best way to do this? The filter is rather long (~500). Is the > > only method to use a generic polynomial root-finding algorithm, see where > > the zeros lie, and pray for stability/convergence? > > Thanks for your time > > The best way is redesign the filter from scratch. > > 1. The filter with 500 taps just can't be the right thing. Especially if > it is supposed to be a minimum phase. There should be more efficient > approach to the problem.you can have minimum-phase, maximum-phase, or linear-phase FIRs. nowadays 500 taps ain't so uncommon. especially for non-realtime FIR filtering. MATLAB's "remez" or "firls" work pretty good for FIRs as long as 512 taps.> 2. With non-trivial polynomial of that high order, you are very likely > to run into the numeric problems which would not allow you to prove > anything. Especially with the FFT approach suggested by RBJ.i thought that the numerical problems that the OP would get have to do with factoring a 499th order polynomial into hundreds of irreducible quadratics and 1st-order terms (and then checking to see where if the real or complex roots are inside the unit circle). i think that's what the Jury criterion (which is a discrete-time counterpart to the Routh-Hurwitz stability criterion) is there to deal with. not much of a numerical problem with a 1024-point FFT, is there Vlad? r b-j
Reply by ●June 12, 20082008-06-12
"robert bristow-johnson" <rbj@audioimagination.com> wrote in message news:d525a000-3e2e-45d4-9166-c4b0ee7569af@d1g2000hsg.googlegroups.com...> On Jun 11, 11:56 pm, Vladimir Vassilevsky <antispam_bo...@hotmail.com> > wrote: >> alexryu wrote: >> > Hello all >> > I have a filter I inherited from someone else (long gone) that is >> > supposed >> > to be minimum phase but I would like to make sure. Could someone >> > please >> > tell me the best way to do this? The filter is rather long (~500). Is >> > the >> > only method to use a generic polynomial root-finding algorithm, see >> > where >> > the zeros lie, and pray for stability/convergence? >> > Thanks for your time >> >> The best way is redesign the filter from scratch. >> >> 1. The filter with 500 taps just can't be the right thing. Especially if >> it is supposed to be a minimum phase. There should be more efficient >> approach to the problem. > > you can have minimum-phase, maximum-phase, or linear-phase FIRs. > nowadays 500 taps ain't so uncommon. especially for non-realtime FIR > filtering. MATLAB's "remez" or "firls" work pretty good for FIRs as > long as 512 taps.Well, it is not a problem to do the design however a FIR with 500 taps is ridiculous. It obviously indicates the attempt to solve something by brute force. There must be more efficient approach.>> 2. With non-trivial polynomial of that high order, you are very likely >> to run into the numeric problems which would not allow you to prove >> anything. Especially with the FFT approach suggested by RBJ. > > i thought that the numerical problems that the OP would get have to do > with factoring a 499th order polynomial into hundreds of irreducible > quadratics and 1st-order terms (and then checking to see where if the > real or complex roots are inside the unit circle). i think that's > what the Jury criterion (which is a discrete-time counterpart to the > Routh-Hurwitz stability criterion) is there to deal with. > > not much of a numerical problem with a 1024-point FFT, is there Vlad?If you are OK with the fuzzy results of FFT, then why can't we just make the 1/H(z) filter in the direct form and run a pulse through it? If it diverges, then the filter is not minimal phase. The numerical problems apply, of course. VLV






