On 12 Jun, 06:50, "Vladimir Vassilevsky" <antispam_bo...@hotmail.com> wrote:> 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.So simple... of course you are right!> The numerical problems apply, of course.Well, yes, the zeros become poles and since they aren't on biquad form, all hell might break loose. But that applies to all the other approaches as well. If 1/H(z) is stable, the H(z) is zertainly minimum phase. Rune
Determing whether or not a filter is minimum phase
Started by ●June 11, 2008
Reply by ●June 12, 20082008-06-12
Reply by ●June 12, 20082008-06-12
"alexryu" <ryu.alex@gmail.com> writes:> 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 > AlexWhat is wrong with doing it that way? The GNU Octave roots() function found the roots of a randomly generated vector of length 500 in about 5 seconds. -- % Randy Yates % "My Shangri-la has gone away, fading like %% Fuquay-Varina, NC % the Beatles on 'Hey Jude'" %%% 919-577-9882 % %%%% <yates@ieee.org> % 'Shangri-La', *A New World Record*, ELO http://www.digitalsignallabs.com
Reply by ●June 12, 20082008-06-12
On 12 Jun., 16:08, Randy Yates <ya...@ieee.org> wrote:> "alexryu" <ryu.a...@gmail.com> writes: > > 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 > > What is wrong with doing it that way? The GNU Octave roots() function found > the roots of a randomly generated vector of length 500 in about 5 seconds.Polynomial rooting (while fun) is notoriously unstable. There is of course this: http://www.dsp.rice.edu/software/prf.shtml I quite like Vladimir's approach (should work for many practical systems). Another obvious method not yet mentioned is to apply the Schur-Cohn test to check if all the roots have magnitude smaller than 1. This computes the reflection coefficients from the transversal filter form. JOS the III has this to say: http://www.dsprelated.com/dspbooks/filters/Computing_Reflection_Coefficients_Check.html Regards, Andor
Reply by ●June 12, 20082008-06-12
On 12 Jun., 06:14, robert bristow-johnson <r...@audioimagination.com> wrote:> 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.Another one you forgot is the fact that computing the Hilbert transform can be, as you like to say, a female canine. Remember this frequency response: 1/sqrt(j omega) It's minimum phase according to your criterion, but not trivially shown to be so. Regards, Andor
Reply by ●June 12, 20082008-06-12
> http://www.dsprelated.com/dspbooks/filters/Computing_Reflection_Coeff...That's funny. There seem to be two groups at Rice concerned with factoring polynomials. I actually meant this one (which there was an article on in the SPM a while back): http://www.dsp.rice.edu/software/fvhdp.shtml
Reply by ●June 12, 20082008-06-12
Andor wrote:> I quite like Vladimir's approach (should work for many practical > systems).Oh, no... Not so simple. In the direct form IIR, the numeric error growth is proportional to the transition bandwidth raised to the power of the denominator. For OP's filter of the 500th order, this means the calculations with the ~1000 bit numbers to have enough of accuracy :) Otherwise the result will be rubbish. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Reply by ●June 12, 20082008-06-12
>... Remember this >frequency response: > >1/sqrt(j omega) > >It's minimum phase according to your criterion, but not trivially >shown to be so.Hi Andor, Do you have a reference to this? Thanks, Steve
Reply by ●June 12, 20082008-06-12
Vladimir Vassilevsky wrote:> > > Andor wrote: > > >> I quite like Vladimir's approach (should work for many practical >> systems). > > Oh, no... Not so simple. > > In the direct form IIR, the numeric error growth is proportional to the > transition bandwidth raised to the power of the denominator. For OP's > filter of the 500th order, this means the calculations with the ~1000 > bit numbers to have enough of accuracy :) Otherwise the result will be > rubbish.Isn't it reasonable to suppose that the 500th-order filter is FIR? Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
Reply by ●June 12, 20082008-06-12
To the original poster, As Jerry pointed out, even if there are 500 taps, the filter is FIR. Therefore it is definitely stable, given all coefficients are finite. So you need not worry about whether your filter is minimum phase or not. Other posters apparently assumed you need the filter to be invertible. Minimum phase signals have causal and stable inverses, but maybe you do not really need this. Even if there are nulls in your filter's spectrum, you may be able to get away with a Wiener filter. Not that there is anything wrong with trying to find the right answer to the "wrong" question. Emre
Reply by ●June 13, 20082008-06-13
On Jun 12, 4:49�pm, Andor <andor.bari...@gmail.com> wrote:> On 12 Jun., 06:14, robert bristow-johnson <r...@audioimagination.com> > wrote: > > > > > 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. > > Another one you forgot is the fact that computing the Hilbert > transform can be, as you like to say, a female canine.but, if you have a Hilbert Transform pair in the real and imaginary parts of a complex spectrum, the Fourier Transform of that should be a causal function. other than the FFT, i wasn't thinking that in this case one had to explicitly compute the Hilbert Transform.> Remember this frequency response: > > 1/sqrt(j omega)it rings a bell, but i don't remember what the deal is about it (white noise to pink noise filter?).> It's minimum phase according to your criterion, but not trivially > shown to be so.well, you can't really tell where the poles and zeros are. r b-j






