DSPRelated.com
Forums

Transform filter type

Started by Max November 20, 2014
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.
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
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
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
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
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
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.
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
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?
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.