Yes, I'm using the Hilbert transform to generate an analytic signal for use in a Bode-style frequency shifter and also in single-sideband modulator and demodulators. The image rejection metric is a critical aspect of the performance of these systems and is related to the error from true 90deg phase shift.
For my optimization I started with the original 8th order set that was given and then used a polynomial curve fit to interpolate those values from 8th order to 12th order. Then using those values as a starting point, I went into an iterated optimization which dithered the coefficients and evaluated the phase shift error, saving any set that reduced the error. The end result provided a noticeable improvement in the image rejection and I've been using those coefficients in some of my radio designs. One of them is in github here: https://github.com/emeb/iceRadio/blob/master/MCU/f303_ice5_rxadc/audio.c As I said earlier, this approach to extending the performance of the filter is rather "brute force and ignorance", but it got the job done and the shift from 8 to 12 poles didn't present a significant increase in the computational cost - I've been using ARM Cortex M4F processors with single-precision floating point hardware to implement these filters and they work well. Eric On Feb 4, 2017, at 11:25 PM, robert bristow-johnson wrote: > > by "image rejection", do you mean, for an analytic filter: > > a[n] = x[n] + j*y[n] > > where y[n] = Hilbert{ x[n] } > > the gain difference between the positive and negative frequencies? > > i guess you're right. looks like -44 dB on Olli's graph. that's not so > great, i guess. > > is your optimized filter 8th order? 8 real poles or are there some > complex-conjugate poles in there? i haven't groked why Olli seems to think > that real poles, symmetrical about the origin, is the best way. it seems like > a restriction that might cause one to miss the optimum. > > can you tell us how you designed or optimize the pole loci, Eric? other than > some kinda brute force method (perhaps Greg's FDLS) i am still thinking about > how to approach that. APFs so the gains stay 1 and we don't care about the > phase as long as the difference is 90°. still don't know how i might set up > an optimization problem. probably the best measure is the negative frequency > rejection with regard to the positive frequency gain. > > r b-j > > > > ---------------------------- Original Message ---------------------------- > Subject: Re: [music-dsp] ± 45° Hilbert transformer using pair of IIR APFs > From: "Eric Brombaugh" <ebrombau...@cox.net> > Date: Sat, February 4, 2017 10:28 pm > To: r...@audioimagination.com > music-dsp@music.columbia.edu > -------------------------------------------------------------------------- > > > IIRC, when I implemented Olli's coefficients I was seeing about 40dB image > > rejection. My optimized filter gave more like 58dB. > > > > Eric > > > > On Feb 4, 2017, at 7:25 PM, robert bristow-johnson wrote: > > > >> > >> sunuvubych Olli. i shoulda known about this. > >> > >> i dunno Eric, 2/100 radian is about ±0.5°. that's what Olli is indicating > >> on Figure 3. appears to be an 8th-order using 4 pole pairs about the > >> origin on the real line. (i'm just now groking his design methodology.) > >> and he seems to have exceedingly low amplitude variation in the Analytic > >> Filter magnitude response. dunno what is lackluster about that. (but i > >> haven't checked this out, yet.) > >> > >> i know that because you can sorta treat group delay (which is a function > >> solely of phase) like gain in an all-pass filter, for the purposes of > >> optimal filter design technique (like Parks-McClellan or Prony). maybe > >> that's what Olli is doing. > >> > >> > >> -- > >> > >> r b-j r...@audioimagination.com > >> > >> "Imagination is more important than knowledge." > >> > >> > >> > >> ---------------------------- Original Message ---------------------------- > >> Subject: Re: [music-dsp] ± 45° Hilbert transformer using pair of IIR APFs > >> > From: "Eric Brombaugh" <ebrombau...@cox.net> > >> Date: Sat, February 4, 2017 8:55 pm > >> To: music-dsp@music.columbia.edu > >> -------------------------------------------------------------------------- > >> > >> > The original Csound source has a set of coefficients for this type of > >> > hilbert transform but they don't say how the coefficients were derived > >> > and the performance is fairly lackluster. The only reference I've come > >> > across for this was Olli Niemitalo's: > >> > > >> > http://yehar.com/blog/?p=368 > >> > > >> > He gives a bit of theory, but the filter pair he provides doesn't give > >> > great performance. > >> > > >> > I was able to use Olli's filter as a starting point for optimization of > >> > a higher order AP set that gave almost 20dB better image rejection. I > >> > interpolated the originals to a higher order and then used simulated > >> > annealing with a cost function that included the bandwidth and image > >> > rejection. Rather brute-force, but it worked. > >> > > >> > Eric > >> > > >> > > >> > On 02/04/2017 04:32 PM, robert bristow-johnson wrote: > >> >> hey guys, > >> >> > >> >> what's the best online reference you can tell me for theory and practice > >> >> of designing APF pairs with ± 45° phase (+ a linear phase that > >> >> represents causality delay) to result in a Hilbert pair for audio > >> >> processing. i know how to do this for FIR and to use half-band > >> >> symmetry, but i wanna make a MATLAB program where i can specify order > >> >> and come up with an optimal pair of IIR APFs that have virtually 90° > >> >> phase difference over the widest possible frequency range. also some > >> >> discussion of error metric would be good (how do we decide what is > >> >> "optimal"?). eventually, i wanna compare computational effort with the > >> >> half-band FIR Hilbert transformer. > >> >> > >> >> anyone have a good, definitive reference? > >> >> > >> >> thanks. > >> >> > >> >> -- > >> >> > >> >> r b-j r...@audioimagination.com > >> >> > >> >> "Imagination is more important than knowledge." > >> >> > >> >> > >> >> > >> >> _______________________________________________ > >> >> dupswapdrop: music-dsp mailing list > >> >> music-dsp@music.columbia.edu > >> >> https://lists.columbia.edu/mailman/listinfo/music-dsp > >> >> > >> > > >> > _______________________________________________ > >> > dupswapdrop: music-dsp mailing list > >> > music-dsp@music.columbia.edu > >> > https://lists.columbia.edu/mailman/listinfo/music-dsp > >> > > >> > > >> > >> _______________________________________________ > >> dupswapdrop: music-dsp mailing list > >> music-dsp@music.columbia.edu > >> https://lists.columbia.edu/mailman/listinfo/music-dsp > > > > > _______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp