On 26 Nov 2003 15:57:32 -0800, adibene@yahoo.com (Alberto) wrote:
>But I have also read hints here and there that this is just a textbook
>approach, and that the optimal solution would be to use a complex
>filter on the complex signal I+jQ.
Maybe I'm wrong at understanding you. In text book, the Hilbert
transform filter is
h[t] = 1/Pi*t,
so I don't take into account where it is related to Complex notation
unless you are considering of H[f] = j*Sgn[f]?
--
Best regards,
James K. (txdiversity@hotmail.com)
- Any remarks, proposal and/or indicator to text would be greatly
respected.
- Private opinions: These are not the opinions from my affiliation.
[HOME] http://home.naver.com/txdiversity
Reply by Alberto●November 29, 20032003-11-29
Olli Niemitalo <o@iki.fi> wrote in message news:<Pine.GSO.4.58.0311281337420.18449@paju.oulu.fi>...
>
> Here is explained an efficient IIR Hilbert pair structure:
>
> http://www.iki.fi/~o/dsp/hilbert
>
> However, it remains unclear (to me) how to calculate the coefficients for
> any specification. That might be a turn-off for you - the cofficients used
> in the example only give an attenuation of -44 dB.
>
Olli and Matt,
thanks again for your inputs, I think I have now enough food for
thought to go on. BTW, when referring to the Frerking's book, I meant
page 170, under the heading "Complex FIR Filters" (it is on page 170
at least in my UK edition, don't know for the US one).
Alberto
Reply by Tom●November 28, 20032003-11-28
Alberto wrote:
> If this has been already asked or discussed before, please bear with
> me.
>
> I understand that, when you have the I and Q components of a signal at
> baseband, you can select the positive and negative frequencies by
> using a Hilbert transformer on one leg and a delay on the other. So
> far so good.
>
> But I have also read hints here and there that this is just a textbook
> approach, and that the optimal solution would be to use a complex
> filter on the complex signal I+jQ.
>
> My questions :
>
> 1) Is this complex filter just a shifter of PI/4 for I and -PI/4 for Q
> (or viceversa), or is it something different ?
>
> 2) Any tools (Matlab?) or references to compute the coefficients of
> such a filter ?
>
> TIA
>
> Alberto (writing a pgm for a Software Defined Radio)
I always wind my own...
Tom
Reply by Matt Timmermans●November 28, 20032003-11-28
"Matt Timmermans" <mt0000@sympatico.nospam-remove.ca> wrote in message
news:fmyxb.16272$Eq1.1691627@news20.bellglobal.com...
> There is nothing too spooky to watch out for, as long as you remember that
> your final passbands will be centered at pi/4 and -pi/4, not 0. So be
sure
> to take that into account when you mix your signal down to "baseband".
That's +/- pi/2, of course
Reply by Olli Niemitalo●November 28, 20032003-11-28
On Thu, 26 Nov 2003, Alberto wrote:
> I understand that, when you have the I and Q components of a signal at
> baseband, you can select the positive and negative frequencies by
> using a Hilbert transformer on one leg and a delay on the other. So
> far so good.
>
> But I have also read hints here and there that this is just a textbook
> approach, and that the optimal solution would be to use a complex
> filter on the complex signal I+jQ.
Here is explained an efficient IIR Hilbert pair structure:
http://www.iki.fi/~o/dsp/hilbert
However, it remains unclear (to me) how to calculate the coefficients for
any specification. That might be a turn-off for you - the cofficients used
in the example only give an attenuation of -44 dB.
-olli
Reply by Matt Timmermans●November 27, 20032003-11-27
Hi Alberto,
I don't have the Frerking book at hand, so I can't speak to it. (And if I
did have it at hand, I wouldn't look very hard, because you neglected to
provide a page or section reference ;-).
You can use matlab's remezord function to guess the appropriate order for
your filter based on your constraints, which will include more than just the
stopband attenuation. In particular, don't forget that you can reduce the
required order if you can accept a wider transition region.
There is nothing too spooky to watch out for, as long as you remember that
your final passbands will be centered at pi/4 and -pi/4, not 0. So be sure
to take that into account when you mix your signal down to "baseband".
"Alberto" <adibene@yahoo.com> wrote in message
news:e9aa0d73.0311270748.6c2f6a70@posting.google.com...
> "Matt Timmermans" <mt0000@sympatico.nospam-remove.ca> wrote in message
> > The common approach works like this:
> >
> > 1) Design a real half-band low-pass using remez() or some other method.
> >
> > 2) Phasor-modulate it up and down by pi/4 to produce two new complex
filters
> > that select the positive and negative frequencies respectively. These
> > filters will have complex conjugate coefficients.
> >
> > 3) Turn the two complex filters into two real filters. One is the real
part
> > of the sum of the complex filters and the other is the imaginary part of
the
> > difference.
> >
> Matt,
> thanks. In the meantime I came across a couple of pages in the
> Frerking book where he describes something that resembles your
> proposal. Am I correct in saying this, or the two approaches are
> different ? Any caveats to watch for ? I will be using doubles and C
> language. Do you have any rule of thumb for the length of the filter ?
> My goal is to suppress the negative portion by at least 60dB, at 48kHz
> sampling rate.
>
> TIA
> Alberto
Reply by Alberto●November 27, 20032003-11-27
"Matt Timmermans" <mt0000@sympatico.nospam-remove.ca> wrote in message news:<y7dxb.14240$Eq1.1344947@news20.bellglobal.com>...
> The common approach works like this:
>
> 1) Design a real half-band low-pass using remez() or some other method.
>
> 2) Phasor-modulate it up and down by pi/4 to produce two new complex filters
> that select the positive and negative frequencies respectively. These
> filters will have complex conjugate coefficients.
>
> 3) Turn the two complex filters into two real filters. One is the real part
> of the sum of the complex filters and the other is the imaginary part of the
> difference.
>
Matt,
thanks. In the meantime I came across a couple of pages in the
Frerking book where he describes something that resembles your
proposal. Am I correct in saying this, or the two approaches are
different ? Any caveats to watch for ? I will be using doubles and C
language. Do you have any rule of thumb for the length of the filter ?
My goal is to suppress the negative portion by at least 60dB, at 48kHz
sampling rate.
TIA
Alberto
Reply by Matt Timmermans●November 26, 20032003-11-26
Hi Alberto,
"Alberto" <adibene@yahoo.com> wrote in message
news:e9aa0d73.0311261557.1944ab6f@posting.google.com...
> I understand that, when you have the I and Q components of a signal at
> baseband, you can select the positive and negative frequencies by
> using a Hilbert transformer on one leg and a delay on the other. So
> far so good.
The problem with this approach is that a real Hilbert transformer is
infinitely long, so you need to use a short approximation. Those
approximations have various shortcomings and generally don't give you the
best possible performance for a given CPU load.
> But I have also read hints here and there that this is just a textbook
> approach, and that the optimal solution would be to use a complex
> filter on the complex signal I+jQ.
The common approach works like this:
1) Design a real half-band low-pass using remez() or some other method.
2) Phasor-modulate it up and down by pi/4 to produce two new complex filters
that select the positive and negative frequencies respectively. These
filters will have complex conjugate coefficients.
3) Turn the two complex filters into two real filters. One is the real part
of the sum of the complex filters and the other is the imaginary part of the
difference.
These resulting real filters are a Hilbert transform pair and have lots of
zeros that save you CPU and memory. You use them in place of the delay and
Hilbert transformer in your original approach.
Reply by Alberto●November 26, 20032003-11-26
If this has been already asked or discussed before, please bear with
me.
I understand that, when you have the I and Q components of a signal at
baseband, you can select the positive and negative frequencies by
using a Hilbert transformer on one leg and a delay on the other. So
far so good.
But I have also read hints here and there that this is just a textbook
approach, and that the optimal solution would be to use a complex
filter on the complex signal I+jQ.
My questions :
1) Is this complex filter just a shifter of PI/4 for I and -PI/4 for Q
(or viceversa), or is it something different ?
2) Any tools (Matlab?) or references to compute the coefficients of
such a filter ?
TIA
Alberto (writing a pgm for a Software Defined Radio)