Reply by Philippe Strauss July 10, 20112011-07-10
On 8 juil, 14:09, "ec...@vt.edu" <ecker@n_o_s_p_a_m.vt.edu> wrote:
> Hi everybody, > > this is my first post on DSP related. > > I have a chirped nonlinear sinoidal signal (between 40 and 140 Mhz) &#4294967295;and I > am trying to obtain frequency information as a function of time from it. > > I tried model signal based signal processing on it but without much success > as finding the global minimum proved difficult. Anyways one way literature > described solving my problem is using an analytical signal, obtaining phase > information and integrating the phase for the frequency. > > I used matlab's hilbert function to obtain the analytical signal and did a > short study on how well it retrieves correct frequency information. All but > constant frequency resulted in pretty bad estimations with up to 50% > error. > > Doing some extensive reading on the topic I found the Hilbert-Huang > transformation, but splitting up the signal in IMF's does not seem to be > the way to go if I am interested in the phase of the "composite" signal? > Also Huang seems to be the only author to report on Nutalls theorem which > states that the Hilbert transform not always gives the correct quadrature > component to obtain unity. > > My question now is: Is there a more accurate way to calculate the Hilbert > transfom/ quadrature component? (compa&#4294967295;red to the matlab function) &#4294967295;Or a > more accurate way to obtain the inst. frequency from such a signal. My last > way would be to do a sliding fft but that comes with an averaging effect. > > Thanks for reading and I look forward to read some of your suggestions. > > Tobias
not sure my previous post went thru. it seemed to me that the hilbert function in matlab is only some crude estimate, not taking into account time aliasing issues. for a reliable hilbert xformer use, first design an hilbert FIR filter, and then use plain FIR filtering. hilbert.m is implemented using a too na&#4294967295;ve frequency approach. regards.
Reply by Philippe Strauss July 10, 20112011-07-10
On 8 juil, 14:09, "ec...@vt.edu" <ecker@n_o_s_p_a_m.vt.edu> wrote:
> Hi everybody, > > this is my first post on DSP related. > > I have a chirped nonlinear sinoidal signal (between 40 and 140 Mhz) &#4294967295;and I > am trying to obtain frequency information as a function of time from it. > > I tried model signal based signal processing on it but without much success > as finding the global minimum proved difficult. Anyways one way literature > described solving my problem is using an analytical signal, obtaining phase > information and integrating the phase for the frequency. > > I used matlab's hilbert function to obtain the analytical signal and did a > short study on how well it retrieves correct frequency information. All but > constant frequency resulted in pretty bad estimations with up to 50% > error. > > Doing some extensive reading on the topic I found the Hilbert-Huang > transformation, but splitting up the signal in IMF's does not seem to be > the way to go if I am interested in the phase of the "composite" signal? > Also Huang seems to be the only author to report on Nutalls theorem which > states that the Hilbert transform not always gives the correct quadrature > component to obtain unity. > > My question now is: Is there a more accurate way to calculate the Hilbert > transfom/ quadrature component? (compa&#4294967295;red to the matlab function) &#4294967295;Or a > more accurate way to obtain the inst. frequency from such a signal. My last > way would be to do a sliding fft but that comes with an averaging effect. > > Thanks for reading and I look forward to read some of your suggestions. > > Tobias
I checked either matlab or octave hilbert xformer implementation 5 years ago, and what was in the hilbert.m file seems to totally ignore aliasing. ideal hilbert xformer has an infinite length IR, you better design an hilbert FIR filter with your own tradeoffs, and use FIR filtering, rather than the hack that hilbert matlab function is. my 2ct
Reply by Rick Lyons July 8, 20112011-07-08
On Fri, 08 Jul 2011 07:09:56 -0500, "ecker@vt.edu"
<ecker@n_o_s_p_a_m.vt.edu> wrote:

>Hi everybody, > >this is my first post on DSP related. > >I have a chirped nonlinear sinoidal signal (between 40 and 140 Mhz) and I >am trying to obtain frequency information as a function of time from it. > >I tried model signal based signal processing on it but without much success >as finding the global minimum proved difficult. Anyways one way literature >described solving my problem is using an analytical signal, obtaining phase >information and integrating the phase for the frequency.
[Snipped by Lyons] Hello Tobias, Jason's correct, you must differentiate the instantaneous phase to compute instantaneous frequency. I wonder what is the Fs sample rate of your discrete signal. Hilbert transformers don't work well when the input signal is close to zero Hz or close to Fs/2 Hz. Also the method of 'differentiation' might be influencing the quality of your result. Matlab's 'diff()' command only gives 'reasonable' results if the spectral content of the signal be differentiated (instantaneous phase) is no greater than 10-20% of the Fs sample rate. If the spectral content of the instantaneous phase signal extends to 30-45% of Fs, then a higher quality differentiator will be needed. But that's no super-big deal---it just means you'll have to implement something that's equivalent to, say, a 25-tap (symmetrical) FIR filter. Good Luck, [-Rick-]
Reply by Jason July 8, 20112011-07-08
On Jul 8, 8:09 am, "ec...@vt.edu" <ecker@n_o_s_p_a_m.vt.edu> wrote:
> Hi everybody, > > this is my first post on DSP related. > > I have a chirped nonlinear sinoidal signal (between 40 and 140 Mhz) and I > am trying to obtain frequency information as a function of time from it. > > I tried model signal based signal processing on it but without much success > as finding the global minimum proved difficult. Anyways one way literature > described solving my problem is using an analytical signal, obtaining phase > information and integrating the phase for the frequency.
I hope you mean "differentiating" the phase to get frequency, or you're going the wrong way. How oversampled is your signal? What is the SNR? In a good-SNR environment with a decent oversampling rate, I think the analytic signal approach should work just fine. Failing that, you can look at other time-frequency analysis techniques; here's one that I've seen used to analyze chirped signals: http://case.caltech.edu/tfr/ Jason
Reply by ecke...@vt.edu July 8, 20112011-07-08
Hi everybody,

this is my first post on DSP related.

I have a chirped nonlinear sinoidal signal (between 40 and 140 Mhz)  and I
am trying to obtain frequency information as a function of time from it.

I tried model signal based signal processing on it but without much success
as finding the global minimum proved difficult. Anyways one way literature
described solving my problem is using an analytical signal, obtaining phase
information and integrating the phase for the frequency.

I used matlab's hilbert function to obtain the analytical signal and did a
short study on how well it retrieves correct frequency information. All but
constant frequency resulted in pretty bad estimations with up to 50%
error.

Doing some extensive reading on the topic I found the Hilbert-Huang
transformation, but splitting up the signal in IMF's does not seem to be
the way to go if I am interested in the phase of the "composite" signal?
Also Huang seems to be the only author to report on Nutalls theorem which
states that the Hilbert transform not always gives the correct quadrature
component to obtain unity.

My question now is: Is there a more accurate way to calculate the Hilbert
transfom/ quadrature component? (compa&aring;red to the matlab function)  Or a
more accurate way to obtain the inst. frequency from such a signal. My last
way would be to do a sliding fft but that comes with an averaging effect.

Thanks for reading and I look forward to read some of your suggestions.

Tobias