Hilbert-Spectrum in Matlab

  • Follow


Hi everyboby,

I'm a matlab newbie and have problems with building a hilbert-spectrum in
matlab. Perhaps someone can help me.

I have two vectors: time vector t a the signal vector x. First I compute
the analytic signal z(t)=x(t)+i*y(t), where y(t) is the Hilbert Transform
of x(t). The  polar  coordinate form of z with amplitude and phase is: 
z(t)=amplitude(t)*exp(i*phase(t)). I compute the amplitude and the phase.
The instantaneous frequency as time-varying phase is defined as
dphase(t)/dt.

I calculated all that and now don't know how to combine it to build the
hilbert-spectrum. I hope somebody can help me.

PS: Sorry for possible spelling errors but english isnt my mother tongue.


Best regards
Joanna


0
Reply joanna 3/23/2011 11:37:20 AM

On Mar 23, 7:37=C2=A0am, "joanna" <m_bator@n_o_s_p_a_m.gmx.de> wrote:
> Hi everyboby,
>
> I'm a matlab newbie and have problems with building a hilbert-spectrum in
> matlab. Perhaps someone can help me.
>
> I have two vectors: time vector t a the signal vector x. First I compute
> the analytic signal z(t)=3Dx(t)+i*y(t), where y(t) is the Hilbert Transfo=
rm
> of x(t). The =C2=A0polar =C2=A0coordinate form of z with amplitude and ph=
ase is:
> z(t)=3Damplitude(t)*exp(i*phase(t)). I compute the amplitude and the phas=
e.
> The instantaneous frequency as time-varying phase is de=EF=AC=81ned as
> dphase(t)/dt.
>
> I calculated all that and now don't know how to combine it to build the
> hilbert-spectrum. I hope somebody can help me.
>
> PS: Sorry for possible spelling errors but english isnt my mother tongue.
>
> Best regards
> Joanna

Hello Joanna,

If you recall the spectrum of an analytic signal is one sided. So you
can just find the fourier tranform of your original signal and zero
out all of the components with nonpositive frequencies. That would be
your hilbert spectrum. Likewise if you inverse fourier transform your
one sided spectrum, then you get your analytic signal. Hopefully this
helps.

Clay



0
Reply Clay 3/23/2011 1:23:41 PM


On Mar 23, 7:37=C2=A0am, "joanna" <m_bator@n_o_s_p_a_m.gmx.de> wrote:
> Hi everyboby,
>
> I'm a matlab newbie and have problems with building a hilbert-spectrum in
> matlab. Perhaps someone can help me.
>
> I have two vectors: time vector t a the signal vector x. First I compute
> the analytic signal z(t)=3Dx(t)+i*y(t), where y(t) is the Hilbert Transfo=
rm
> of x(t). The =C2=A0polar =C2=A0coordinate form of z with amplitude and ph=
ase is:
> z(t)=3Damplitude(t)*exp(i*phase(t)). I compute the amplitude and the phas=
e.
> The instantaneous frequency as time-varying phase is de=EF=AC=81ned as
> dphase(t)/dt.
>
> I calculated all that and now don't know how to combine it to build the
> hilbert-spectrum. I hope somebody can help me.
>
> PS: Sorry for possible spelling errors but english isnt my mother tongue.
>
> Best regards
> Joanna

It's not that simple

For Hilbert spectrum to make any sense you will need to decompose your
signal into intrinsic modes first

This can be done using so-called Empirical Mode Decomposition

Google "Hilbert-Huang Transform"

Here is the link to the original paper

http://keck.ucsf.edu/~schenk/Huang_etal98.pdf

0
Reply fatalist 3/23/2011 4:33:50 PM

On Mar 23, 11:33=C2=A0am, fatalist <simfid...@gmail.com> wrote:
> On Mar 23, 7:37=C2=A0am, "joanna" <m_bator@n_o_s_p_a_m.gmx.de> wrote:
>
>
>
>
>
> > Hi everyboby,
>
> > I'm a matlab newbie and have problems with building a hilbert-spectrum =
in
> > matlab. Perhaps someone can help me.
>
> > I have two vectors: time vector t a the signal vector x. First I comput=
e
> > the analytic signal z(t)=3Dx(t)+i*y(t), where y(t) is the Hilbert Trans=
form
> > of x(t). The =C2=A0polar =C2=A0coordinate form of z with amplitude and =
phase is:
> > z(t)=3Damplitude(t)*exp(i*phase(t)). I compute the amplitude and the ph=
ase.
> > The instantaneous frequency as time-varying phase is de=EF=AC=81ned as
> > dphase(t)/dt.
>
> > I calculated all that and now don't know how to combine it to build the
> > hilbert-spectrum. I hope somebody can help me.
>
> > PS: Sorry for possible spelling errors but english isnt my mother tongu=
e.
>
> > Best regards
> > Joanna
>
> It's not that simple
>
> For Hilbert spectrum to make any sense you will need to decompose your
> signal into intrinsic modes first
>
> This can be done using so-called Empirical Mode Decomposition
>
> Google "Hilbert-Huang Transform"
>
> Here is the link to the original paper
>
> http://keck.ucsf.edu/~schenk/Huang_etal98.pdf- Hide quoted text -
>
> - Show quoted text -

If we have the analytic signal

z(t) =3D x(t) + jx'(t), where x'(t) is the Hilbert transform of x(t),

x'(t) =3D conv(x(t), 1/(pi*t)), the convolution of x(t) and the
reciprical of the product pi*t


then the power spectral density will be the one-sided positive
spectral density of x(t) with twice the amplitude. If this is what is
being sought, then Clay is correct when he says just take the positive
spectral density of the original signal. This, also is what I
interpret as being sought from the description given by Joanna, and I
agree with Clay.

Since, with

z(t) =3D x(t) + jx'(t),

Szz(omega) =3D 2 Sxx(omega), where Szz(omega) is the power spectral
density of the analytic signal, z(t), and Sxx(omega) is the power
spectral density of the original signal.

If Sx'x'(omega) is looked for (the spectral density of the Hilbert
transform itself), Sx'x'(omega) =3D Sxx(omega). What I suspect is that
Sx'x'(omega) is not what is being sought, but what really is being
sought is Sx'x(omega), i.e.,

Sx'x(omega) =3D jSxx(omega) sgn(omega); sgn =3D sign of

Then, the positive power spectral density is the same as the original,
and the negative spectral density is the inverse of the original.

Maurice Givens
0
Reply maury 3/23/2011 6:38:49 PM

On Mar 23, 2:38=C2=A0pm, maury <maury...@core.com> wrote:
> On Mar 23, 11:33=C2=A0am, fatalist <simfid...@gmail.com> wrote:
>
>
>
>
>
> > On Mar 23, 7:37=C2=A0am, "joanna" <m_bator@n_o_s_p_a_m.gmx.de> wrote:
>
> > > Hi everyboby,
>
> > > I'm a matlab newbie and have problems with building a hilbert-spectru=
m in
> > > matlab. Perhaps someone can help me.
>
> > > I have two vectors: time vector t a the signal vector x. First I comp=
ute
> > > the analytic signal z(t)=3Dx(t)+i*y(t), where y(t) is the Hilbert Tra=
nsform
> > > of x(t). The =C2=A0polar =C2=A0coordinate form of z with amplitude an=
d phase is:
> > > z(t)=3Damplitude(t)*exp(i*phase(t)). I compute the amplitude and the =
phase.
> > > The instantaneous frequency as time-varying phase is de=EF=AC=81ned a=
s
> > > dphase(t)/dt.
>
> > > I calculated all that and now don't know how to combine it to build t=
he
> > > hilbert-spectrum. I hope somebody can help me.
>
> > > PS: Sorry for possible spelling errors but english isnt my mother ton=
gue.
>
> > > Best regards
> > > Joanna
>
> > It's not that simple
>
> > For Hilbert spectrum to make any sense you will need to decompose your
> > signal into intrinsic modes first
>
> > This can be done using so-called Empirical Mode Decomposition
>
> > Google "Hilbert-Huang Transform"
>
> > Here is the link to the original paper
>
> >http://keck.ucsf.edu/~schenk/Huang_etal98.pdf-Hide quoted text -
>
> > - Show quoted text -
>
> If we have the analytic signal
>
> z(t) =3D x(t) + jx'(t), where x'(t) is the Hilbert transform of x(t),
>
> x'(t) =3D conv(x(t), 1/(pi*t)), the convolution of x(t) and the
> reciprical of the product pi*t
>
> then the power spectral density will be the one-sided positive
> spectral density of x(t) with twice the amplitude. If this is what is
> being sought, then Clay is correct when he says just take the positive
> spectral density of the original signal. This, also is what I
> interpret as being sought from the description given by Joanna, and I
> agree with Clay.
>
> Since, with
>
> z(t) =3D x(t) + jx'(t),
>
> Szz(omega) =3D 2 Sxx(omega), where Szz(omega) is the power spectral
> density of the analytic signal, z(t), and Sxx(omega) is the power
> spectral density of the original signal.
>
> If Sx'x'(omega) is looked for (the spectral density of the Hilbert
> transform itself), Sx'x'(omega) =3D Sxx(omega). What I suspect is that
> Sx'x'(omega) is not what is being sought, but what really is being
> sought is Sx'x(omega), i.e.,
>
> Sx'x(omega) =3D jSxx(omega) sgn(omega); sgn =3D sign of
>
> Then, the positive power spectral density is the same as the original,
> and the negative spectral density is the inverse of the original.
>
> Maurice Givens- Hide quoted text -
>
> - Show quoted text -

The OP mentioned "instantaneous frequency" which is NOT the same as
average frequency obtained from FFT

Once "instantaneous frequency" gets mentioned it opens a whole can of
warms as far as its interpretation for arbitrary signals is concerned

I suggest reading Cohen's book "Time-Frequency Analysis" or at least
this little writeup to get you started :-)

http://www.math.ucdavis.edu/~saito/data/phase/loughlin-tacer-97.pdf

0
Reply fatalist 3/24/2011 2:43:26 PM

On Mar 23, 6:37=C2=A0am, "joanna" <m_bator@n_o_s_p_a_m.gmx.de> wrote:
> Hi everyboby,
>
> I'm a matlab newbie and have problems with building a hilbert-spectrum in
> matlab. Perhaps someone can help me.
>
> I have two vectors: time vector t a the signal vector x. First I compute
> the analytic signal z(t)=3Dx(t)+i*y(t), where y(t) is the Hilbert Transfo=
rm
> of x(t). The =C2=A0polar =C2=A0coordinate form of z with amplitude and ph=
ase is:
> z(t)=3Damplitude(t)*exp(i*phase(t)). I compute the amplitude and the phas=
e.
> The instantaneous frequency as time-varying phase is de=EF=AC=81ned as
> dphase(t)/dt.
>
> I calculated all that and now don't know how to combine it to build the
> hilbert-spectrum. I hope somebody can help me.
>
> PS: Sorry for possible spelling errors but english isnt my mother tongue.
>
> Best regards
> Joanna

Joanna,
When you get it completed, come back and let us know what you did, and
the results.

Maurice Givens
0
Reply maury 3/24/2011 3:09:25 PM

On Mar 23, 7:37=C2=A0am, "joanna" <m_bator@n_o_s_p_a_m.gmx.de> wrote:
> Hi everyboby,
>
> I'm a matlab newbie and have problems with building a hilbert-spectrum in
> matlab. Perhaps someone can help me.
>
> I have two vectors: time vector t a the signal vector x. First I compute
> the analytic signal z(t)=3Dx(t)+i*y(t), where y(t) is the Hilbert Transfo=
rm
> of x(t). The =C2=A0polar =C2=A0coordinate form of z with amplitude and ph=
ase is:
> z(t)=3Damplitude(t)*exp(i*phase(t)). I compute the amplitude and the phas=
e.
> The instantaneous frequency as time-varying phase is de=EF=AC=81ned as
> dphase(t)/dt.
>
> I calculated all that and now don't know how to combine it to build the
> hilbert-spectrum. I hope somebody can help me.
>
> PS: Sorry for possible spelling errors but english isnt my mother tongue.
>
> Best regards
> Joanna

The direct answer to the OP's question is this:

In a time-frequency plane an instantaneous frequency plotted as a
function of time and color-coded as a function of instantaneous
amplitude (or squared instantaneous amplitude) with produce so-called
amplitude (or energy) Hilbert Spectrum

Simple ?  Maybe not :-)
0
Reply fatalist 3/24/2011 3:10:17 PM


fatalist wrote:

Hello Dmitry Terez. Are you saving the World again?

> The direct answer to the OP's question is this:

The direct answer to the OP's question is "stupidents and matlabi do 
their homeworks".

> In a time-frequency plane an instantaneous frequency plotted as a
> function of time and color-coded as a function of instantaneous
> amplitude (or squared instantaneous amplitude) with produce so-called
> amplitude (or energy) Hilbert Spectrum
> 
> Simple ?  Maybe not :-)

What is it difficult in making a classic hilbert transformer and 
applying an elementary math to the output? No need for hilbert-huangs 
and other mumbo-jumbo.


Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com
0
Reply Vladimir 3/24/2011 3:30:03 PM

On Mar 24, 11:30=A0am, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
> fatalist wrote:
>
> Hello Dmitry Terez. Are you saving the World again?
>
> > The direct answer to the OP's question is this:
>
> The direct answer to the OP's question is "stupidents and matlabi do
> their homeworks".
>
> > In a time-frequency plane an instantaneous frequency plotted as a
> > function of time and color-coded as a function of instantaneous
> > amplitude (or squared instantaneous amplitude) with produce so-called
> > amplitude (or energy) Hilbert Spectrum
>
> > Simple ? =A0Maybe not :-)
>
> What is it difficult in making a classic hilbert transformer and
> applying an elementary math to the output? No need for hilbert-huangs
> and other mumbo-jumbo.
>
> Vladimir Vassilevsky
> DSP and Mixed Signal Design Consultanthttp://www.abvolt.com

Thank you for not renaming the thread to "STUPIDENT matlabi"

Your infinite DSP wisdom coming from Kansas (formely Oklahoma) is
always appreciated
0
Reply fatalist 3/24/2011 4:06:36 PM

>On Mar 23, 7:37=C2=A0am, "joanna" <m_bator@n_o_s_p_a_m.gmx.de> wrote:
>> Hi everyboby,
>>
>> I'm a matlab newbie and have problems with building a hilbert-spectrum
in
>> matlab. Perhaps someone can help me.
>>
>> I have two vectors: time vector t a the signal vector x. First I
compute
>> the analytic signal z(t)=3Dx(t)+i*y(t), where y(t) is the Hilbert
Transfo=
>rm
>> of x(t). The =C2=A0polar =C2=A0coordinate form of z with amplitude and
ph=
>ase is:
>> z(t)=3Damplitude(t)*exp(i*phase(t)). I compute the amplitude and the
phas=
>e.
>> The instantaneous frequency as time-varying phase is de=EF=AC=81ned as
>> dphase(t)/dt.
>>
>> I calculated all that and now don't know how to combine it to build the
>> hilbert-spectrum. I hope somebody can help me.
>>
>> PS: Sorry for possible spelling errors but english isnt my mother
tongue.
>>
>> Best regards
>> Joanna
>
>It's not that simple
>
>For Hilbert spectrum to make any sense you will need to decompose your
>signal into intrinsic modes first
>
>This can be done using so-called Empirical Mode Decomposition
>
>Google "Hilbert-Huang Transform"
>
>Here is the link to the original paper
>
>http://keck.ucsf.edu/~schenk/Huang_etal98.pdf

________________________________________________________________________
Thank all of you for your responses. Many days have passed since I posted
my last thread. In this time a have decompose my signal into intrinsic
modes with the Empirical Mode Decomposition. But now I have another
problem. When I use the Hilbert Transform to get the instantaneous
frequency I also get negative frequency. I dont understand that. I thought
that an analytic signal only yield positive frequency.

Best regards
joanna
_________________________________________________________________________

I hope someone can explain that for me.
0
Reply diadem_sierra (6) 4/28/2011 8:31:08 AM

I have yet another question. With the EMD I get a few intrinsic Modes. The
intrinsic Mode I get first have the highest frequencies and so on. Does
that also mean that the instanteanous frequencies at a specific time for
exampe t(1) are descending?

I try to illustrate it better:

I recieve 4 intrinsic modes from a signal s(t) and I define the
instanteanous frequency f for all the modes. 
When I pick now a special time for example t(1) should the frequencies from
IMF1 to IMF4 at this point descend? And when they dont do it what have I
done wrong?

I hope somebody understands me.

Best regards
Joanna
0
Reply diadem_sierra (6) 4/28/2011 11:30:00 AM

On Apr 28, 7:30=A0am, "joanna" <diadem_sierra@n_o_s_p_a_m.yahoo.de>
wrote:
> I have yet another question. With the EMD I get a few intrinsic Modes. Th=
e
> intrinsic Mode I get first have the highest frequencies and so on. Does
> that also mean that the instanteanous frequencies at a specific time for
> exampe t(1) are descending?
>
> I try to illustrate it better:
>
> I recieve 4 intrinsic modes from a signal s(t) and I define the
> instanteanous frequency f for all the modes.
> When I pick now a special time for example t(1) should the frequencies fr=
om
> IMF1 to IMF4 at this point descend? And when they dont do it what have I
> done wrong?
>
> I hope somebody understands me.
>
> Best regards
> Joanna

The purpose of intrinsic modes in EMD is to separate different time
scales in original signal in order to get well-behaved instantaneous
frequency for each mode.
You might not be doing it right
Test your program on some synthetic example, e.g. Rossler equation

BTW, why ask here on comp.dsp ?
You already know more about the subject than most regulars in this
group, especially VLV :-)

Kind regards
0
Reply simfidude (82) 5/17/2011 3:07:39 PM

11 Replies
531 Views

(page loaded in 0.188 seconds)

Similiar Articles:

















7/21/2012 4:02:40 AM


Reply: