Hi all, I want to understand what the number of taps in time domain Hilbert transform is translated to. For example, let's say I create analytic signal from real signal using 32th order and 64th order FIR filter which are designed to perform Hilbert transform. What am I gaining by performing more computation? Thanks! Thomas

# Hilbert Transform

Started by ●December 31, 2012

Reply by ●December 31, 20122012-12-31

Since the fir hilbert transform filter is anti symmetric, the phase is always 90 degrees regardless of filter length. So the trade-offs involve the frequency range over which the filter will try to hold the amplitude response at 1.0, and the amplitude ripple over this range. It's impossible to have 90 degrees phase shift at DC or fs/2, so if you try to specify a filter with flat amplitude that gets very close to these limits you will find that the required number of taps grows very large. You probably know that these filters are not causal, and therefore you need to right-shift the impulse response by N/2 taps, which means the 90 degree criteria will be valid between the filter output and an N/2-sample delayed version of the input. If you need to hold the 90 degree criteria down to a very low frequency, you are often better off with two parallel paths of cascaded iir allpass filters, where the allpass frequencies are interleaved in such a way as to hold the 90 degree phase-shift condition to a given accuracy. Note that unlike the fir approach, the amplitude response is exactly unity, but the differential phase response will have some ripple around the ideal value. Such filters have been discussed several times previously on comp.dsp, and generally require a good optimizer.

Reply by ●December 31, 20122012-12-31

>Since the fir hilbert transform filter is anti symmetric, the phase isalwa=>ys 90 degrees regardless of filter length. =20 > >So the trade-offs involve the frequency range over which the filter willtr=>y to hold the amplitude response at 1.0, and the amplitude ripple overthi=>s range. It's impossible to have 90 degrees phase shift at DC or fs/2, so=>if you try to specify a filter with flat amplitude that gets very close to=>these limits you will find that the required number of taps grows verylarg=>e. > >You probably know that these filters are not causal, and therefore youneed=> to right-shift the impulse response by N/2 taps, which means the 90degree=> criteria will be valid between the filter output and an N/2-sampledelayed=> version of the input. > >If you need to hold the 90 degree criteria down to a very low frequency,yo=>u are often better off with two parallel paths of cascaded iir allpassfilt=>ers, where the allpass frequencies are interleaved in such a way as tohold=> the 90 degree phase-shift condition to a given accuracy. Note that unlike=>the fir approach, the amplitude response is exactly unity, but thedifferen=>tial phase response will have some ripple around the ideal value. Suchfilt=>ers have been discussed several times previously on comp.dsp, andgenerally=> require a good optimizer. >Thank you so much for your reply! I wonder if it is related to ripple in magnitude response or phase response? My question started a couple of weeks ago when I implemented Hibert FIR based on the textbook I have (understanding DSP by Dr. Lyons) in Matlab. When I created an analytic signal from a real sine wave and compute the angle of each complex sample and calculated difference in angle in two consecutive samples, I thought it would be a constant.... However, it was not. I went through the script, but it seemed right. Could you point me to any reference please? Thanks, Thomas

Reply by ●December 31, 20122012-12-31

gongdori wrote:> Hi all, > > I want to understand what the number of taps in time domain Hilbert > transform is translated to. > > For example, let's say I create analytic signal from real signal using 32th > order and 64th order FIR filter which are designed to perform Hilbert > transform. What am I gaining by performing more computation? > Thanks! > > Thomas >This is more a general FIR filter question. All FIR filters are approximations. More taps mean a better approximation. http://www-users.cs.york.ac.uk/~fisher/mkfilter/ there's a "Hilbert transform designer" at the link; you could gen a wav file, cadge the result from the website into a 'C' program, then measure the error from four iterations through a 32 and then a 64 tap Hilbert. This is a classic implementation trade, and I'd do a bit of analysis or experiment to quantify the costs. I put together a Hilbert transformer ( for fake stereo ) out of FFTW parts and the four-cycle test returned the original file ( for 16 bit 44100 audio files ) . It is, for the bit depth and sample rate, a "perfect" Hilbert transformer. -- Les Cargill

Reply by ●December 31, 20122012-12-31

On 12/31/12 2:26 PM, gongdori wrote:>> Since the fir hilbert transform filter is anti symmetric, the phase is >> always 90 degrees regardless of filter length. >>...> Thank you so much for your reply! > I wonder if it is related to ripple in magnitude response or phase > response?Bob is saying no ripple in the phase. and he's correct. just like you can make a phase-linear or constant-delay filter with a relative phase (relative to the fixed delay) of 0 degrees, you can do the same with a relative phase of -90 degrees. but when you're using these two orthogonal phase filters to mix and create a different constant relative phase (say 45 degrees by mixing equal proportions of the constant-delay filter and a Hilbert Transformer with the same delay), the ripple in the magnitude response will translate to a ripple in the phase.> My question started a couple of weeks ago when I implemented > Hibert FIR based on the textbook I have (understanding DSP by Dr. Lyons) in > Matlab. When I created an analytic signal from a real sine wave and compute > the angle of each complex sample and calculated difference in angle in two > consecutive samples, I thought it would be a constant.... However, it was > not.okay, so you are measuring the phase between a constant-delay flat filter and a Hilbert transformer with the same delay. how are you measuring that? with zero-crossings, because if you're measuring the phase difference with a dot-product, you have to normalize (as a function of frequency) the amplitude of the two quadrature sine waves.> I went through the script, but it seemed right.what does the MATLAB script say? or a subset of it. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."

Reply by ●December 31, 20122012-12-31

If you are generating time-domain quadrature signals by applying signals to a Hilbert filter, you want to make sure that you are only analyzing the filter outputs after the filter has reached its steady-state output. For an N-tap filter you should wait at least N samples before capturing the output. If you are not doing this, it could cause the error you are seeing. Bob

Reply by ●January 1, 20132013-01-01

"Robert Adams" <robert.adams@analog.com> wrote in message news:2920b9f2-06cc-4f95-bedb-09ad9aeb6bd0@googlegroups.com... Since the fir hilbert transform filter is anti symmetric, the phase is always 90 degrees regardless of filter length. So the trade-offs involve the frequency range over which the filter will try to hold the amplitude response at 1.0, and the amplitude ripple over this range. It's impossible to have 90 degrees phase shift at DC or fs/2, so if you try to specify a filter with flat amplitude that gets very close to these limits you will find that the required number of taps grows very large. You probably know that these filters are not causal, and therefore you need to right-shift the impulse response by N/2 taps, which means the 90 degree criteria will be valid between the filter output and an N/2-sample delayed version of the input. If you need to hold the 90 degree criteria down to a very low frequency, you are often better off with two parallel paths of cascaded iir allpass filters, where the allpass frequencies are interleaved in such a way as to hold the 90 degree phase-shift condition to a given accuracy. Note that unlike the fir approach, the amplitude response is exactly unity, but the differential phase response will have some ripple around the ideal value. Such filters have been discussed several times previously on comp.dsp, and generally require a good optimizer. "Filter Design for Signal Processing" by Lutovac, Vosic & Evans describes a method of designing IIR Hilbert transforms. See Theodor A. Prosch, "A Minimalist Approximation of the Hilbert Transform", Sept/Oct 2012 QEX, pp 25-31 for an example.