I understand that it's possible to create a minimum phase FIR filter by transforming a linear phase filter (taking reciprocals of the zeros). Is it possible to create filters in between those two types? IOW, select a balance between phase linearity vs pre-ring.
Transform filter type
Started by ●November 20, 2014
Reply by ●November 20, 20142014-11-20
On Thu, 20 Nov 2014 09:41:42 -0500, Max wrote:> I understand that it's possible to create a minimum phase FIR filter by > transforming a linear phase filter (taking reciprocals of the zeros). > Is it possible to create filters in between those two types? > IOW, select a balance between phase linearity vs pre-ring.You can take reciprocals of the unstable zeros, but that means factoring an enormous polynomial, which means huge difficulties with numerical sensitivity issues. Or you can run the filter amplitude (in the frequency domain) through a Hilbert Transform to get the phase, then do an IFFT to get the filter coefficients. I'm sure it's mathematically possible, but I'm not sure how. Possibly identify the lower-frequency unstable zeros and reflect them into the stable region -- but I'm not sure there's a practical way. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Reply by ●November 20, 20142014-11-20
On Thu, 20 Nov 2014 09:41:42 -0500, Max <Max@sorrynope.com> wrote:>I understand that it's possible to create a minimum phase FIR filter >by transforming a linear phase filter (taking reciprocals of the >zeros). Is it possible to create filters in between those two types? >IOW, select a balance between phase linearity vs pre-ring.It's possible, but design methods may be difficult to find. A brute-force approach that works would be to take the impulse response of the linear-phase filter and just truncate one side of it to get the desired amount of pre-ringing. You can then examine the response of that filter to see if it gives you the desired frequency-domain characteristics and perhaps hand-adjust the coefficients from there. I do stuff like that all the time with good results, especially when developing Canonic Signed-Digit implementations. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
Reply by ●November 20, 20142014-11-20
A standard least-squares FIR solver can optimize for any non-centered group delay. Some work better than others, simply run a sweep and stay in regions where the cost function is low. I'm not saying this is optimal, but then the problem definition is somewhat fuzzy. I have used this method for variable delays: Design many filters in a +/- 0.5 sample range, stack coefficients into vectors and fit a polynomial to each. The result is a Farrow resampler with an amplitude+groupdelay response of my choice, and fractional delay as continuous variable. _____________________________ Posted through www.DSPRelated.com
Reply by ●November 20, 20142014-11-20
another brute-force variant would be to try mirroring many or all combinations of non-minimum-phase poles. But, I have never tried this. _____________________________ Posted through www.DSPRelated.com
Reply by ●November 20, 20142014-11-20
Tim Wescott <seemywebsite@myfooter.really> writes:> On Thu, 20 Nov 2014 09:41:42 -0500, Max wrote: > >> I understand that it's possible to create a minimum phase FIR filter by >> transforming a linear phase filter (taking reciprocals of the zeros). >> Is it possible to create filters in between those two types? >> IOW, select a balance between phase linearity vs pre-ring. > > You can take reciprocals of the unstable zeros, but that means factoring > an enormous polynomial, which means huge difficulties with numerical > sensitivity issues. Or you can run the filter amplitude (in the frequency > domain) through a Hilbert Transform to get the phase, then do an IFFT to > get the filter coefficients. > > I'm sure it's mathematically possible, but I'm not sure how. Possibly > identify the lower-frequency unstable zeros and reflect them into the > stable region -- but I'm not sure there's a practical way.Tim, This is not directly related to your response, but a long time ago someone claimed to be able to tell from looking (eyeballing) the impulse response whether a filter was minimum-phase or not. Anyone here know how this would be done? -- Randy Yates Digital Signal Labs http://www.digitalsignallabs.com
Reply by ●November 20, 20142014-11-20
On Thu, 20 Nov 2014 20:07:05 -0500, Randy Yates wrote:> Tim Wescott <seemywebsite@myfooter.really> writes: > >> On Thu, 20 Nov 2014 09:41:42 -0500, Max wrote: >> >>> I understand that it's possible to create a minimum phase FIR filter by >>> transforming a linear phase filter (taking reciprocals of the zeros). >>> Is it possible to create filters in between those two types? >>> IOW, select a balance between phase linearity vs pre-ring. >> >> You can take reciprocals of the unstable zeros, but that means factoring >> an enormous polynomial, which means huge difficulties with numerical >> sensitivity issues. Or you can run the filter amplitude (in the frequency >> domain) through a Hilbert Transform to get the phase, then do an IFFT to >> get the filter coefficients. >> >> I'm sure it's mathematically possible, but I'm not sure how. Possibly >> identify the lower-frequency unstable zeros and reflect them into the >> stable region -- but I'm not sure there's a practical way. > > Tim, > > This is not directly related to your response, but a long time ago > someone claimed to be able to tell from looking (eyeballing) the impulse > response whether a filter was minimum-phase or not. Anyone here > know how this would be done?I think that if you look at the square-pulse response that a minimum phase filter won't have preshoot (the "undershoot" preceding and in the opposite direction from the main transition), but that a non-minimum phase filter can. It's probably what was earlier mentioned as "pre-ring". Not completely sure if the same kind of preshoot might occur in the impulse response.
Reply by ●November 21, 20142014-11-21
On Thu, 20 Nov 2014 20:07:05 -0500, Randy Yates wrote:> Tim Wescott <seemywebsite@myfooter.really> writes: > >> On Thu, 20 Nov 2014 09:41:42 -0500, Max wrote: >> >>> I understand that it's possible to create a minimum phase FIR filter >>> by transforming a linear phase filter (taking reciprocals of the >>> zeros). Is it possible to create filters in between those two types? >>> IOW, select a balance between phase linearity vs pre-ring. >> >> You can take reciprocals of the unstable zeros, but that means >> factoring an enormous polynomial, which means huge difficulties with >> numerical sensitivity issues. Or you can run the filter amplitude (in >> the frequency domain) through a Hilbert Transform to get the phase, >> then do an IFFT to get the filter coefficients. >> >> I'm sure it's mathematically possible, but I'm not sure how. Possibly >> identify the lower-frequency unstable zeros and reflect them into the >> stable region -- but I'm not sure there's a practical way. > > Tim, > > This is not directly related to your response, but a long time ago > someone claimed to be able to tell from looking (eyeballing) the impulse > response whether a filter was minimum-phase or not. Anyone here know how > this would be done?Certainly if it's symmetrical around some center (hopefully offset enough so that the filter is causal -- if not, then you've got bigger things to worry about) then it's not minimum phase. Beyond that -- I'm not that good. -- www.wescottdesign.com
Reply by ●November 21, 20142014-11-21
On Thu, 20 Nov 2014 18:49:59 GMT, eric.jacobsen@ieee.org (Eric Jacobsen) wrote:>On Thu, 20 Nov 2014 09:41:42 -0500, Max <Max@sorrynope.com> wrote: > >>I understand that it's possible to create a minimum phase FIR filter >>by transforming a linear phase filter (taking reciprocals of the >>zeros). Is it possible to create filters in between those two types? >>IOW, select a balance between phase linearity vs pre-ring. > >It's possible, but design methods may be difficult to find. > >A brute-force approach that works would be to take the impulse >response of the linear-phase filter and just truncate one side of it >to get the desired amount of pre-ringing. You can then examine the >response of that filter to see if it gives you the desired >frequency-domain characteristics and perhaps hand-adjust the >coefficients from there. > >I do stuff like that all the time with good results, especially when >developing Canonic Signed-Digit implementations.So you can simply truncate the 'front' side of the linear phase filter coefficients---no need to taper the values? If that works well, it seems like it would be the simplest approach. It certainly would allow a more visual approach to the problem. I was wondering if there was a way to start with the zero plot, given that the direct transform deals with reflecting zeros between inside/outside of the unit circle. But it seems obvious that there is no 'analog' range in between. Curious....how does the truncation affect the positions of the zeros?
Reply by ●November 21, 20142014-11-21
On Thu, 20 Nov 2014 12:41:18 -0600, Tim Wescott <seemywebsite@myfooter.really> wrote:>On Thu, 20 Nov 2014 09:41:42 -0500, Max wrote: > >> I understand that it's possible to create a minimum phase FIR filter by >> transforming a linear phase filter (taking reciprocals of the zeros). >> Is it possible to create filters in between those two types? >> IOW, select a balance between phase linearity vs pre-ring. > >You can take reciprocals of the unstable zeros, but that means factoring >an enormous polynomial, which means huge difficulties with numerical >sensitivity issues. Or you can run the filter amplitude (in the frequency >domain) through a Hilbert Transform to get the phase, then do an IFFT to >get the filter coefficients. > >I'm sure it's mathematically possible, but I'm not sure how. Possibly >identify the lower-frequency unstable zeros and reflect them into the >stable region -- but I'm not sure there's a practical way.I was hoping that there was a simple way to do this, but I haven't been finding anything about filters midway between min phase and linear phase. Eric's idea about truncation seems startlingly simple, so maybe that's the first path to explore. Meanwhile I'll read up on Hilbert transforms, but you don't sound optimistic about that. Anyway, it sounds like this is not covered by a pre-cooked Matlab library.






