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???

# Even order of Hilbert Filter

Started by ●March 31, 2009

Reply by ●March 31, 20092009-03-31

On Mar 31, 9:49�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: > � � � � � � � �|---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???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

Reply by ●March 31, 20092009-03-31

On Mar 31, 10:41�am, c...@claysturner.com wrote:> On Mar 31, 9:49�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: > > � � � � � � � �|---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??? > > 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

Reply by ●March 31, 20092009-03-31

>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 =3D1.536MH=>z, I >> > need to mix this base signal to IF, which is about 384KHz, but whendoi=>ng >> > mix, I do not want the Double-Side-Band (DSB) signal butSingle-Band-Si=>gnal >> > (SSB), so I will considering design a Hilbert transform to mix mybase =>band >> > signal to IF. Since there are two types of Hilbert FIR, even orderwith>> > integer group delay and odd order with non-integer group delay, >> > even order Hilbert have non-flatness at high frequency band, but oddor=>der >> > have. >> > So, what I am trying is using the flatness of Hilbert response ofhigh>> > frequency band, and I am doing the following step: >> > Step(1): mix my base baseband signal to high-frequency, near Fs/2 bya>> > 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 Iget>> > 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 pathshift=> one >> > more sample unit. >> > After doing this, I can get my Hilbert transform for the x(n), but att=>his >> > time, the spectrum shifts, and introduce one more un-desirablespectrum=>, >> > and it is very hard to filter (because of the double side spectrum iss=>o >> > close, equal to zero!!!).. >> >> > What I am asking now is there any way that I do not use a x2interpolat=>ion >> > to get the non integer delay, then I can escape those problems? Or Ist=>here >> > any ways to translate a baseband signal to bandpass signal as wellas>> > 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!!

Reply by ●April 1, 20092009-04-01

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 aIt 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. �����������������������������������������������������������������������

Reply by ●April 1, 20092009-04-01

>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 tobandpass,>> you will get a double side signal instead of single-side-band, which isnot>> what I want. >> Then a better way comes, apply Hilbert transform to the orginalsignal,>> 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 transformwith>> on flatness around 0, 0.5Fs, Fs,...., my base band signal will benearing>> 0!!. >> >> Then I was thinking about the highpass Hilbert transform with flatness >> except 0, Fs, 2Fs,...., when translating my baseband signal to highpass,>> 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 anon-integert>> group delay for Hilbet, but get a integer group delay for the delaypath,>> 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, youcan>> make both path of Hilbert transform with same group delay, but you geta> >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!!

Reply by ●April 1, 20092009-04-01

On Apr 1, 1:51�am, "xie.qiang" <xie.qi...@hotmail.com> wrote:> >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!!- 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

Reply by ●April 1, 20092009-04-01

On Apr 1, 10:22�am, c...@claysturner.com wrote:> On Apr 1, 1:51�am, "xie.qiang" <xie.qi...@hotmail.com> wrote: > > > > > > > >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!!- 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

Reply by ●April 1, 20092009-04-01

>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 morespecific,>> > 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 tor=>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 Hilberttransfor=>m >> > with >> > >> on flatness around 0, 0.5Fs, Fs,...., =A0my base band signal willbe>> > nearing >> > >> 0!!. >> >> > >> Then I was thinking about the highpass Hilbert transform withflatne=>ss >> > >> except 0, Fs, 2Fs,...., when translating my baseband signal tohigh>> > 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 thedelay>> > path, >> > >> It seems that I can using upsampling to overcome this, when you dot=>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 youg=>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, butit>> > >won't work. >> >> > >Jerry >> > >-- >> > >Engineering is the art of making what you want from things you canget=>. >> > >??????????????????????????????????????????????????????????????????????= >? >> >> > No, it is not the performance above 0.5Fs that I care about, what Iam>> > doing first is simply translate the baseband to high around 0.5Fs by0.=>5Fs >> > mixer, sure it works, I have test this code in matlab, as an exampleas>> > 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.5Fs>> > 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!!- Hideq=>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.

Reply by ●April 1, 20092009-04-01

On Mar 31, 10:41�am, c...@claysturner.com wrote:> On Mar 31, 9:49�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: > > � � � � � � � �|---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??? > > 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