DSPRelated.com
Forums

Even order of Hilbert Filter

Started by xie.qiang March 31, 2009
Hi All, 

I have a baseband signal 0Hz~48KHz, and sampling rate is Fs = 1.536MHz, I
need to mix this base signal to IF, which is about 384KHz, but when doing
mix, I do not want the Double-Side-Band (DSB) signal but Single-Band-Signal
(SSB), so I will considering design a Hilbert transform to mix my base band
signal to IF. Since there are two types of Hilbert FIR, even order with
integer group delay and odd order with non-integer group delay,
even order Hilbert have non-flatness at high frequency band, but odd order
have.
So, what I am trying is using the flatness of Hilbert response of high
frequency band, and I am doing the following step:
Step(1): mix my base baseband signal to high-frequency, near Fs/2 by a
carry frequency of Fs/2, then all my baseband signal become to
high-frequency signal.
Step(2): Applying the odder order Hilbert FIR to my signal, then I get
delay path xd and Hilbert path output xh with a difference of 0.5
non-integer delay, which is:
               |---Delay---xd(n)---->
        x(n)---|
               |---HT-FIR--xh(n)---->

Step(3): (also become my big problem!!!!!!!!).
Interpolate the xd(n) and xh(n) to xd2(n)  and xh2(n), one path shift one
more sample unit.
After doing this, I can get my Hilbert transform for the x(n), but at this
time, the spectrum shifts, and introduce one more un-desirable spectrum,
and it is very hard to filter (because of the double side spectrum is so
close, equal to zero!!!)..

What I am asking now is there any way that I do not use a x2 interpolation
to get the non integer delay, then I can escape those problems? Or Is there
any ways to translate a baseband signal to bandpass signal as well as
convert the bandpass signal to SSB rather than DSB???



On Mar 31, 9:49&#4294967295;am, "xie.qiang" <xie.qi...@hotmail.com> wrote:
> Hi All, > > I have a baseband signal 0Hz~48KHz, and sampling rate is Fs = 1.536MHz, I > need to mix this base signal to IF, which is about 384KHz, but when doing > mix, I do not want the Double-Side-Band (DSB) signal but Single-Band-Signal > (SSB), so I will considering design a Hilbert transform to mix my base band > signal to IF. Since there are two types of Hilbert FIR, even order with > integer group delay and odd order with non-integer group delay, > even order Hilbert have non-flatness at high frequency band, but odd order > have. > So, what I am trying is using the flatness of Hilbert response of high > frequency band, and I am doing the following step: > Step(1): mix my base baseband signal to high-frequency, near Fs/2 by a > carry frequency of Fs/2, then all my baseband signal become to > high-frequency signal. > Step(2): Applying the odder order Hilbert FIR to my signal, then I get > delay path xd and Hilbert path output xh with a difference of 0.5 > non-integer delay, which is: > &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|---Delay---xd(n)----> > &#4294967295; &#4294967295; &#4294967295; &#4294967295; x(n)---| > &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|---HT-FIR--xh(n)----> > > Step(3): (also become my big problem!!!!!!!!). > Interpolate the xd(n) and xh(n) to xd2(n) &#4294967295;and xh2(n), one path shift one > more sample unit. > After doing this, I can get my Hilbert transform for the x(n), but at this > time, the spectrum shifts, and introduce one more un-desirable spectrum, > and it is very hard to filter (because of the double side spectrum is so > close, equal to zero!!!).. > > What I am asking now is there any way that I do not use a x2 interpolation > to get the non integer delay, then I can escape those problems? Or Is there > any ways to translate a baseband signal to bandpass signal as well as > convert the bandpass signal to SSB rather than DSB???
Actually the odd order Hilbert has an integral delay. In fact for all FIR filters that have definite symmetry (either even or odd), the delay is simply (N-1)/2 samples. So you may use an odd length for your Hilbert. The disadvantage with odd length Hilbert tranforms is their response at 1/2 of the sampling rate must be zero. But if sounds like in your case that won't be an issue. IHTH, Clay
On Mar 31, 10:41&#4294967295;am, c...@claysturner.com wrote:
> On Mar 31, 9:49&#4294967295;am, "xie.qiang" <xie.qi...@hotmail.com> wrote: > > > > > > > Hi All, > > > I have a baseband signal 0Hz~48KHz, and sampling rate is Fs = 1.536MHz, I > > need to mix this base signal to IF, which is about 384KHz, but when doing > > mix, I do not want the Double-Side-Band (DSB) signal but Single-Band-Signal > > (SSB), so I will considering design a Hilbert transform to mix my base band > > signal to IF. Since there are two types of Hilbert FIR, even order with > > integer group delay and odd order with non-integer group delay, > > even order Hilbert have non-flatness at high frequency band, but odd order > > have. > > So, what I am trying is using the flatness of Hilbert response of high > > frequency band, and I am doing the following step: > > Step(1): mix my base baseband signal to high-frequency, near Fs/2 by a > > carry frequency of Fs/2, then all my baseband signal become to > > high-frequency signal. > > Step(2): Applying the odder order Hilbert FIR to my signal, then I get > > delay path xd and Hilbert path output xh with a difference of 0.5 > > non-integer delay, which is: > > &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|---Delay---xd(n)----> > > &#4294967295; &#4294967295; &#4294967295; &#4294967295; x(n)---| > > &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|---HT-FIR--xh(n)----> > > > Step(3): (also become my big problem!!!!!!!!). > > Interpolate the xd(n) and xh(n) to xd2(n) &#4294967295;and xh2(n), one path shift one > > more sample unit. > > After doing this, I can get my Hilbert transform for the x(n), but at this > > time, the spectrum shifts, and introduce one more un-desirable spectrum, > > and it is very hard to filter (because of the double side spectrum is so > > close, equal to zero!!!).. > > > What I am asking now is there any way that I do not use a x2 interpolation > > to get the non integer delay, then I can escape those problems? Or Is there > > any ways to translate a baseband signal to bandpass signal as well as > > convert the bandpass signal to SSB rather than DSB??? > > Actually the odd order Hilbert has an integral delay. In fact for all > FIR filters that have definite symmetry (either even or odd), the > delay is simply (N-1)/2 samples. So you may use an odd length for your > Hilbert. The disadvantage with odd length Hilbert tranforms is their > response at 1/2 of the sampling rate must be zero. But if sounds like > in your case that won't be an issue. > > IHTH, > > Clay- Hide quoted text - > > - Show quoted text -
Another way to address your problem is to design an optimal (Remez - Parks McClellan) lowpass filter and then complex modulate it to form a pair of filters whose phase response differes by 90 degrees. The following paper has the details: Analytic signal generation-tips and traps Reilly, A. Frazer, G. Boashash, B. Signal Process. Res. Centre, Queensland Univ. of Technol., Brisbane, Qld.; This paper appears in: Signal Processing, IEEE Transactions on Publication Date: Nov 1994 Volume: 42, Issue: 11 On page(s): 3241-3245 I have a freeware Parks McClellan program on my website. IHTH, Clay
>On Mar 31, 10:41=A0am, c...@claysturner.com wrote: >> On Mar 31, 9:49=A0am, "xie.qiang" <xie.qi...@hotmail.com> wrote: >> >> >> >> >> >> > Hi All, >> >> > I have a baseband signal 0Hz~48KHz, and sampling rate is Fs =3D
1.536MH=
>z, I >> > need to mix this base signal to IF, which is about 384KHz, but when
doi=
>ng >> > mix, I do not want the Double-Side-Band (DSB) signal but
Single-Band-Si=
>gnal >> > (SSB), so I will considering design a Hilbert transform to mix my
base =
>band >> > signal to IF. Since there are two types of Hilbert FIR, even order
with
>> > integer group delay and odd order with non-integer group delay, >> > even order Hilbert have non-flatness at high frequency band, but odd
or=
>der >> > have. >> > So, what I am trying is using the flatness of Hilbert response of
high
>> > frequency band, and I am doing the following step: >> > Step(1): mix my base baseband signal to high-frequency, near Fs/2 by
a
>> > carry frequency of Fs/2, then all my baseband signal become to >> > high-frequency signal. >> > Step(2): Applying the odder order Hilbert FIR to my signal, then I
get
>> > delay path xd and Hilbert path output xh with a difference of 0.5 >> > non-integer delay, which is: >> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0|---Delay---xd(n)----> >> > =A0 =A0 =A0 =A0 x(n)---| >> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0|---HT-FIR--xh(n)----> >> >> > Step(3): (also become my big problem!!!!!!!!). >> > Interpolate the xd(n) and xh(n) to xd2(n) =A0and xh2(n), one path
shift=
> one >> > more sample unit. >> > After doing this, I can get my Hilbert transform for the x(n), but at
t=
>his >> > time, the spectrum shifts, and introduce one more un-desirable
spectrum=
>, >> > and it is very hard to filter (because of the double side spectrum is
s=
>o >> > close, equal to zero!!!).. >> >> > What I am asking now is there any way that I do not use a x2
interpolat=
>ion >> > to get the non integer delay, then I can escape those problems? Or Is
t=
>here >> > any ways to translate a baseband signal to bandpass signal as well
as
>> > convert the bandpass signal to SSB rather than DSB??? >> >> Actually the odd order Hilbert has an integral delay. In fact for all >> FIR filters that have definite symmetry (either even or odd), the >> delay is simply (N-1)/2 samples. So you may use an odd length for your >> Hilbert. The disadvantage with odd length Hilbert tranforms is their >> response at 1/2 of the sampling rate must be zero. But if sounds like >> in your case that won't be an issue. >> >> IHTH, >> >> Clay- Hide quoted text - >> >> - Show quoted text - > >Another way to address your problem is to design an optimal (Remez - >Parks McClellan) lowpass filter and then complex modulate it to form a >pair of filters whose phase response differes by 90 degrees. The >following paper has the details: > > >Analytic signal generation-tips and traps >Reilly, A. Frazer, G. Boashash, B. >Signal Process. Res. Centre, Queensland Univ. of Technol., Brisbane, >Qld.; > > >This paper appears in: Signal Processing, IEEE Transactions on >Publication Date: Nov 1994 >Volume: 42, Issue: 11 >On page(s): 3241-3245 > > >I have a freeware Parks McClellan program on my website. > >IHTH, > >Clay > > > >
Hi Clay, I am sorry for title mis-understanding, it should be Odd order :-(. Maybe I am not make this clear, to be simplify and be more specific, let me get a little straight, and show what I am tring to do: I was intend to translate my real baseband signal, BW = 48KHz to real bandpass signal. But when you tring to translating your signal to bandpass, you will get a double side signal instead of single-side-band, which is not what I want. Then a better way comes, apply Hilbert transform to the orginal signal, then mixer with sin and cos on each pair, sketch as: |----Delay-----Cos-----\ x(n)-----| + ----x_bandpass(n) |----Hilbert---Sin-----/ but the problem comes when you apply the even order Hilbert transform with on flatness around 0, 0.5Fs, Fs,...., my base band signal will be nearing 0!!. Then I was thinking about the highpass Hilbert transform with flatness except 0, Fs, 2Fs,...., when translating my baseband signal to high pass, and apply high-pass Hilbert transform with flatness around 0.5Fs, 1.5Fs, except that around 0, Fs, 2Fs,...., sketch as: |----Delay-----Cos-----\ x(n)---mix cos(0.5Fs)----| + ----x_bandpass(n) |----Hilbert---Sin-----/ This time the Hilbert FIR will not be with integer group delay, again, which problem becomes as I posed this issue before, I get a non-integert group delay for Hilbet, but get a integer group delay for the delay path, It seems that I can using upsampling to overcome this, when you do the math, you will again found after doing x2 upsampling, of cousre, you can make both path of Hilbert transform with same group delay, but you get a double side signal again.!!!!!!! That's my big headache!!
xie.qiang wrote:

   ...

> Maybe I am not make this clear, to be simplify and be more specific, let > me get a little straight, and show what I am tring to do: > I was intend to translate my real baseband signal, BW = 48KHz to real > bandpass signal. But when you tring to translating your signal to bandpass, > you will get a double side signal instead of single-side-band, which is not > what I want. > Then a better way comes, apply Hilbert transform to the orginal signal, > then mixer with sin and cos on each pair, sketch as: > |----Delay-----Cos-----\ > x(n)-----| + ----x_bandpass(n) > |----Hilbert---Sin-----/ > but the problem comes when you apply the even order Hilbert transform with > on flatness around 0, 0.5Fs, Fs,...., my base band signal will be nearing > 0!!. > > Then I was thinking about the highpass Hilbert transform with flatness > except 0, Fs, 2Fs,...., when translating my baseband signal to high pass, > and apply high-pass Hilbert transform with flatness around 0.5Fs, 1.5Fs, > except that around 0, Fs, 2Fs,...., > sketch as: > |----Delay-----Cos-----\ > x(n)---mix cos(0.5Fs)----| + ----x_bandpass(n) > |----Hilbert---Sin-----/ > This time the Hilbert FIR will not be with integer group delay, again, > which problem becomes as I posed this issue before, I get a non-integert > group delay for Hilbet, but get a integer group delay for the delay path, > It seems that I can using upsampling to overcome this, when you do the > math, you will again found after doing x2 upsampling, of cousre, you can > make both path of Hilbert transform with same group delay, but you get a
It seems that you care about the performance above .5Fs. Why? it consists of aliases and is useless. The graphs may look nice, but it won't work. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
>xie.qiang wrote: > > ... > >> Maybe I am not make this clear, to be simplify and be more specific,
let
>> me get a little straight, and show what I am tring to do: >> I was intend to translate my real baseband signal, BW = 48KHz to real >> bandpass signal. But when you tring to translating your signal to
bandpass,
>> you will get a double side signal instead of single-side-band, which is
not
>> what I want. >> Then a better way comes, apply Hilbert transform to the orginal
signal,
>> then mixer with sin and cos on each pair, sketch as: >> |----Delay-----Cos-----\ >> x(n)-----| + ----x_bandpass(n) >> |----Hilbert---Sin-----/ >> but the problem comes when you apply the even order Hilbert transform
with
>> on flatness around 0, 0.5Fs, Fs,...., my base band signal will be
nearing
>> 0!!. >> >> Then I was thinking about the highpass Hilbert transform with flatness >> except 0, Fs, 2Fs,...., when translating my baseband signal to high
pass,
>> and apply high-pass Hilbert transform with flatness around 0.5Fs,
1.5Fs,
>> except that around 0, Fs, 2Fs,...., >> sketch as: >> |----Delay-----Cos-----\ >> x(n)---mix cos(0.5Fs)----| + ----x_bandpass(n) >> |----Hilbert---Sin-----/ >> This time the Hilbert FIR will not be with integer group delay, again, >> which problem becomes as I posed this issue before, I get a
non-integert
>> group delay for Hilbet, but get a integer group delay for the delay
path,
>> It seems that I can using upsampling to overcome this, when you do the >> math, you will again found after doing x2 upsampling, of cousre, you
can
>> make both path of Hilbert transform with same group delay, but you get
a
> >It seems that you care about the performance above .5Fs. Why? it >consists of aliases and is useless. The graphs may look nice, but it >won't work. > >Jerry >-- >Engineering is the art of making what you want from things you can get. >??????????????????????????????????????????????????????????????????????? >
No, it is not the performance above 0.5Fs that I care about, what I am doing first is simply translate the baseband to high around 0.5Fs by 0.5Fs mixer, sure it works, I have test this code in matlab, as an example as follow: Fs = 192000*8; Fout = 48000; N = 1024; x = sin(2 * pi * Fout * (1 : N) / Fs); xm = x .* cos(2 * pi * 0.5 * (0 : N-1)); % Mixed up by 0.5 Fs plot(1 : N, 20 * log10(abs(fft(x))) , 'b.-', ... 1 : N, 20 * log10(abs(fft(xm))), 'm.-'); grid on; legend('Org-x', 'Mixed-xm'); After doing this, apply the odd order Hilbert transform, which has flatness at high frequency around 0.5Fs, then gets my trouble!!
On Apr 1, 1:51&#4294967295;am, "xie.qiang" <xie.qi...@hotmail.com> wrote:
> >xie.qiang wrote: > > > &#4294967295; ... > > >> Maybe I am not make this clear, to be simplify and be more specific, > let > >> me get a little straight, and show what I am tring to do: > >> I was intend to translate my real baseband signal, BW = 48KHz to real > >> bandpass signal. But when you tring to translating your signal to > bandpass, > >> you will get a double side signal instead of single-side-band, which is > not > >> what I want. > >> Then a better way comes, apply Hilbert transform to the orginal > signal, > >> then mixer with sin and cos on each pair, sketch as: > >> &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|----Delay-----Cos-----\ > >> x(n)-----| &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;+ ----x_bandpass(n) > >> &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|----Hilbert---Sin-----/ > >> but the problem comes when you apply the even order Hilbert transform > with > >> on flatness around 0, 0.5Fs, Fs,...., &#4294967295;my base band signal will be > nearing > >> 0!!. > > >> Then I was thinking about the highpass Hilbert transform with flatness > >> except 0, Fs, 2Fs,...., when translating my baseband signal to high > pass, > >> and apply high-pass Hilbert transform with flatness around 0.5Fs, > 1.5Fs, > >> except that around 0, Fs, 2Fs,...., > >> sketch as: > >> &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|----Delay-----Cos-----\ > >> x(n)---mix cos(0.5Fs)----| &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;+ ----x_bandpass(n) > >> &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|----Hilbert---Sin-----/ > >> This time the Hilbert FIR will not be with integer group delay, again, > >> which problem becomes as I posed this issue before, I get a > non-integert > >> group delay for Hilbet, but get a integer group delay for the delay > path, > >> It seems that I can using upsampling to overcome this, when you do the > >> math, you will again found after doing x2 upsampling, of cousre, you > can > >> make both path of Hilbert transform with same group delay, but you get > a > > >It seems that you care about the performance above .5Fs. Why? it > >consists of aliases and is useless. The graphs may look nice, but it > >won't work. > > >Jerry > >-- > >Engineering is the art of making what you want from things you can get. > >??????????????????????????????????????????????????????????????????????? > > No, it is not the performance above 0.5Fs that I care about, what I am > doing first is simply translate the baseband to high around 0.5Fs by 0.5Fs > mixer, sure it works, I have test this code in matlab, as an example as > follow: > Fs &#4294967295; = 192000*8; > Fout = 48000; > N &#4294967295; &#4294967295;= 1024; > x &#4294967295; &#4294967295;= sin(2 * pi * Fout * (1 : N) / Fs); > xm &#4294967295; = x .* cos(2 * pi * 0.5 * (0 : N-1)); &#4294967295; % Mixed up by 0.5 Fs > plot(1 : N, 20 * log10(abs(fft(x))) , 'b.-', ... > &#4294967295; &#4294967295; &#4294967295;1 : N, 20 * log10(abs(fft(xm))), 'm.-'); > grid on; > legend('Org-x', 'Mixed-xm'); > > After doing this, apply the odd order Hilbert transform, which has > flatness at high frequency around 0.5Fs, then gets my trouble!!- Hide quoted text - > > - Show quoted text -
You know that when you design a Hilbert transformer with a Parks- McClellan program, you get to pick the band edge frequencies. Thus an odd order Hilbert transform (which has an integral delay) may be designed to cutoff (block) frequencies near 0.5Fs. You don't have to let it pass them through. Try downloading my program here http://www.claysturner.com/dsp/ You pick your passband to not include DC or 0.5Fs. IHTH, Clay
On Apr 1, 10:22&#4294967295;am, c...@claysturner.com wrote:
> On Apr 1, 1:51&#4294967295;am, "xie.qiang" <xie.qi...@hotmail.com> wrote: > > > > > > > >xie.qiang wrote: > > > > &#4294967295; ... > > > >> Maybe I am not make this clear, to be simplify and be more specific, > > let > > >> me get a little straight, and show what I am tring to do: > > >> I was intend to translate my real baseband signal, BW = 48KHz to real > > >> bandpass signal. But when you tring to translating your signal to > > bandpass, > > >> you will get a double side signal instead of single-side-band, which is > > not > > >> what I want. > > >> Then a better way comes, apply Hilbert transform to the orginal > > signal, > > >> then mixer with sin and cos on each pair, sketch as: > > >> &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|----Delay-----Cos-----\ > > >> x(n)-----| &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;+ ----x_bandpass(n) > > >> &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|----Hilbert---Sin-----/ > > >> but the problem comes when you apply the even order Hilbert transform > > with > > >> on flatness around 0, 0.5Fs, Fs,...., &#4294967295;my base band signal will be > > nearing > > >> 0!!. > > > >> Then I was thinking about the highpass Hilbert transform with flatness > > >> except 0, Fs, 2Fs,...., when translating my baseband signal to high > > pass, > > >> and apply high-pass Hilbert transform with flatness around 0.5Fs, > > 1.5Fs, > > >> except that around 0, Fs, 2Fs,...., > > >> sketch as: > > >> &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|----Delay-----Cos-----\ > > >> x(n)---mix cos(0.5Fs)----| &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;+ ----x_bandpass(n) > > >> &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|----Hilbert---Sin-----/ > > >> This time the Hilbert FIR will not be with integer group delay, again, > > >> which problem becomes as I posed this issue before, I get a > > non-integert > > >> group delay for Hilbet, but get a integer group delay for the delay > > path, > > >> It seems that I can using upsampling to overcome this, when you do the > > >> math, you will again found after doing x2 upsampling, of cousre, you > > can > > >> make both path of Hilbert transform with same group delay, but you get > > a > > > >It seems that you care about the performance above .5Fs. Why? it > > >consists of aliases and is useless. The graphs may look nice, but it > > >won't work. > > > >Jerry > > >-- > > >Engineering is the art of making what you want from things you can get. > > >??????????????????????????????????????????????????????????????????????? > > > No, it is not the performance above 0.5Fs that I care about, what I am > > doing first is simply translate the baseband to high around 0.5Fs by 0.5Fs > > mixer, sure it works, I have test this code in matlab, as an example as > > follow: > > Fs &#4294967295; = 192000*8; > > Fout = 48000; > > N &#4294967295; &#4294967295;= 1024; > > x &#4294967295; &#4294967295;= sin(2 * pi * Fout * (1 : N) / Fs); > > xm &#4294967295; = x .* cos(2 * pi * 0.5 * (0 : N-1)); &#4294967295; % Mixed up by 0.5 Fs > > plot(1 : N, 20 * log10(abs(fft(x))) , 'b.-', ... > > &#4294967295; &#4294967295; &#4294967295;1 : N, 20 * log10(abs(fft(xm))), 'm.-'); > > grid on; > > legend('Org-x', 'Mixed-xm'); > > > After doing this, apply the odd order Hilbert transform, which has > > flatness at high frequency around 0.5Fs, then gets my trouble!!- Hide quoted text - > > > - Show quoted text - > > You know that when you design a Hilbert transformer with a Parks- > McClellan program, you get to pick the band edge frequencies. Thus an > odd order Hilbert transform (which has an integral delay) may be > designed to cutoff (block) frequencies near 0.5Fs. You don't have to > let it pass them through. Try downloading my program here > > http://www.claysturner.com/dsp/ > > You pick your passband to not include DC or 0.5Fs. > > IHTH, > > Clay- Hide quoted text - > > - Show quoted text -
Okay I see what you want to do. It is problematic. Essentially you want your pair of filters to each have a passband gain of 1 both near and at 0.5Fs. This will be a problem. As odd length Hilberts and even length symmetric filters must have zero response at 0.5Fs. So you will have a mismatch of delays if you pick the orders of your two filters where one is odd and the other even. A half sample delay at 0.5Fs will also be very problematic. You should move your signal of interest down to something of the order of 0.25Fs. Then life gets real simple for you. Clay
>On Apr 1, 10:22=A0am, c...@claysturner.com wrote: >> On Apr 1, 1:51=A0am, "xie.qiang" <xie.qi...@hotmail.com> wrote: >> >> >> >> >> >> > >xie.qiang wrote: >> >> > > =A0 ... >> >> > >> Maybe I am not make this clear, to be simplify and be more
specific,
>> > let >> > >> me get a little straight, and show what I am tring to do: >> > >> I was intend to translate my real baseband signal, BW =3D 48KHz to
r=
>eal >> > >> bandpass signal. But when you tring to translating your signal to >> > bandpass, >> > >> you will get a double side signal instead of single-side-band,
which=
> is >> > not >> > >> what I want. >> > >> Then a better way comes, apply Hilbert transform to the orginal >> > signal, >> > >> then mixer with sin and cos on each pair, sketch as: >> > >> =A0 =A0 =A0 =A0 =A0|----Delay-----Cos-----\ >> > >> x(n)-----| =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0+
----x_bandpa=
>ss(n) >> > >> =A0 =A0 =A0 =A0 =A0|----Hilbert---Sin-----/ >> > >> but the problem comes when you apply the even order Hilbert
transfor=
>m >> > with >> > >> on flatness around 0, 0.5Fs, Fs,...., =A0my base band signal will
be
>> > nearing >> > >> 0!!. >> >> > >> Then I was thinking about the highpass Hilbert transform with
flatne=
>ss >> > >> except 0, Fs, 2Fs,...., when translating my baseband signal to
high
>> > pass, >> > >> and apply high-pass Hilbert transform with flatness around 0.5Fs, >> > 1.5Fs, >> > >> except that around 0, Fs, 2Fs,...., >> > >> sketch as: >> > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0
=A0|----Delay-----Co=
>s-----\ >> > >> x(n)---mix cos(0.5Fs)----| =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0
=
>=A0+ ----x_bandpass(n) >> > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0
=A0|----Hilbert---Si=
>n-----/ >> > >> This time the Hilbert FIR will not be with integer group delay,
agai=
>n, >> > >> which problem becomes as I posed this issue before, I get a >> > non-integert >> > >> group delay for Hilbet, but get a integer group delay for the
delay
>> > path, >> > >> It seems that I can using upsampling to overcome this, when you do
t=
>he >> > >> math, you will again found after doing x2 upsampling, of cousre,
you
>> > can >> > >> make both path of Hilbert transform with same group delay, but you
g=
>et >> > a >> >> > >It seems that you care about the performance above .5Fs. Why? it >> > >consists of aliases and is useless. The graphs may look nice, but
it
>> > >won't work. >> >> > >Jerry >> > >-- >> > >Engineering is the art of making what you want from things you can
get=
>. >> > >??????????????????????????????????????????????????????????????????????= >? >> >> > No, it is not the performance above 0.5Fs that I care about, what I
am
>> > doing first is simply translate the baseband to high around 0.5Fs by
0.=
>5Fs >> > mixer, sure it works, I have test this code in matlab, as an example
as
>> > follow: >> > Fs =A0 =3D 192000*8; >> > Fout =3D 48000; >> > N =A0 =A0=3D 1024; >> > x =A0 =A0=3D sin(2 * pi * Fout * (1 : N) / Fs); >> > xm =A0 =3D x .* cos(2 * pi * 0.5 * (0 : N-1)); =A0 % Mixed up by 0.5
Fs
>> > plot(1 : N, 20 * log10(abs(fft(x))) , 'b.-', ... >> > =A0 =A0 =A01 : N, 20 * log10(abs(fft(xm))), 'm.-'); >> > grid on; >> > legend('Org-x', 'Mixed-xm'); >> >> > After doing this, apply the odd order Hilbert transform, which has >> > flatness at high frequency around 0.5Fs, then gets my trouble!!- Hide
q=
>uoted text - >> >> > - Show quoted text - >> >> You know that when you design a Hilbert transformer with a Parks- >> McClellan program, you get to pick the band edge frequencies. Thus an >> odd order Hilbert transform (which has an integral delay) may be >> designed to cutoff (block) frequencies near 0.5Fs. You don't have to >> let it pass them through. Try downloading my program here >> >> http://www.claysturner.com/dsp/ >> >> You pick your passband to not include DC or 0.5Fs. >> >> IHTH, >> >> Clay- Hide quoted text - >> >> - Show quoted text - > >Okay I see what you want to do. It is problematic. Essentially you >want your pair of filters to each have a passband gain of 1 both near >and at 0.5Fs. This will be a problem. As odd length Hilberts and even >length symmetric filters must have zero response at 0.5Fs. So you will >have a mismatch of delays if you pick the orders of your two filters >where one is odd and the other even. A half sample delay at 0.5Fs will >also be very problematic. You should move your signal of interest down >to something of the order of 0.25Fs. Then life gets real simple for >you. > > >Clay > > >
Hi Clay, Thank you very much, and thanks for your link. First, I am surely confirm that I need to have full pass (gain = 1) near 0.5Fs, and only odd order Hilbert with high pass response can do this. As you told me that the odd order have non-integer group delay this time. That's really a problem. Because do I need to translate my baseband signal(0Hz~BW) to bandpass, and the bandpass must be with SSB (Single-Side Band), and that why I am considering the Hilbert Transform. So, I am tring to search next is: 1, Is there any other way to let me to do this, not using a Hilbert way to translate the baseband or high-pass signal to bandpass with SSB? And Clay, I do not fullly get the way the paper "Analytic Signal Generation-Tips and Traps.pdf" suggested, and If this is a good way, then I can get release of my headache. 2, If I still use Hilbert transform, only High pass Hilbert with 1 gain around 0.5Fs can make me to this, and then I need to design a fullpass filter with group delay the same as Hilbert FIR path? I have already tried this.
On Mar 31, 10:41&#4294967295;am, c...@claysturner.com wrote:
> On Mar 31, 9:49&#4294967295;am, "xie.qiang" <xie.qi...@hotmail.com> wrote: > > > > > Hi All, > > > I have a baseband signal 0Hz~48KHz, and sampling rate is Fs = 1.536MHz, I > > need to mix this base signal to IF, which is about 384KHz, but when doing > > mix, I do not want the Double-Side-Band (DSB) signal but Single-Band-Signal > > (SSB), so I will considering design a Hilbert transform to mix my base band > > signal to IF. Since there are two types of Hilbert FIR, even order with > > integer group delay and odd order with non-integer group delay, > > even order Hilbert have non-flatness at high frequency band, but odd order > > have. > > So, what I am trying is using the flatness of Hilbert response of high > > frequency band, and I am doing the following step: > > Step(1): mix my base baseband signal to high-frequency, near Fs/2 by a > > carry frequency of Fs/2, then all my baseband signal become to > > high-frequency signal. > > Step(2): Applying the odder order Hilbert FIR to my signal, then I get > > delay path xd and Hilbert path output xh with a difference of 0.5 > > non-integer delay, which is: > > &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|---Delay---xd(n)----> > > &#4294967295; &#4294967295; &#4294967295; &#4294967295; x(n)---| > > &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295; &#4294967295;|---HT-FIR--xh(n)----> > > > Step(3): (also become my big problem!!!!!!!!). > > Interpolate the xd(n) and xh(n) to xd2(n) &#4294967295;and xh2(n), one path shift one > > more sample unit. > > After doing this, I can get my Hilbert transform for the x(n), but at this > > time, the spectrum shifts, and introduce one more un-desirable spectrum, > > and it is very hard to filter (because of the double side spectrum is so > > close, equal to zero!!!).. > > > What I am asking now is there any way that I do not use a x2 interpolation > > to get the non integer delay, then I can escape those problems? Or Is there > > any ways to translate a baseband signal to bandpass signal as well as > > convert the bandpass signal to SSB rather than DSB??? > > Actually the odd order Hilbert has an integral delay. In fact for all > FIR filters that have definite symmetry (either even or odd), the > delay is simply (N-1)/2 samples. So you may use an odd length for your > Hilbert. The disadvantage with odd length Hilbert tranforms is their > response at 1/2 of the sampling rate must be zero. But if sounds like > in your case that won't be an issue.
Clay, isn't it the case with an FIR that the length of the filter (the number of taps, including possible zero-coef taps inside of non-zero taps) is the order of the filter plus 1? if you have N uniformly- spaced taps, the order is N-1 and, if it's symmetrical, the delay is (N-1)/2. so isn't it that the even order filter has an integral delay? i think that any length symmetrical Hilbert filter should have odd symmetry about both DC and Nyquist, no? sorry, i'm confused. r b-j