From: Rune Allnor on
On 6 Mai, 03:18, "Peter K." <koots...(a)gmail.com> wrote:
> On 5 May, 05:41, Rune Allnor <all...(a)tele.ntnu.no> wrote:
>
> > One has one of two options to achiev that kind of thing:
>
> > 1) Compute only parts of the peridogram
> > 2) Use a model-based frequency estimator
>
> > Both apporaches rely on prior knowledge / assumptions /
> > prejudice / hearsay about what the spectrum actually looks
> > like, and what one will find.
>
> Exactly.
>
> > The problem with such approaches is that they are not
> > awfully robust with respect to flawed prior assumptions:
> > If the spectrum line is not in the band where one computes
> > the partial periodogram, one will not find it. If the data
> > do not comply to whatever parametric model the estimator
> > is based on, the computed numbers are little more than
> > mumbo-jumbo.
>
> Agreed.  If the signal ain't a sine wave in noise, you'll get
> garbage.  But then anything will give you garbage in that case if you
> estimate the "frequency".

No, not necessarily.

In the case of a non-sinusoidal-but-still-narrow-band signal,
that most likely would throw the parametric estimators off
their balance, results from periodogram-based estimators might
still make some sort of sense:

- The max coefficient in the periodogram (with or without
weighting or filtering) *is* the max coefficient

- The neighbourhood around the max coefficient can be
investigated wrt peak sharpness etc

- The periodogram can be investigated wrt spectrum flatness

So the periodgram is far more robust than the alternatives.
All it takes is a slight rephrasing of the task: Instead of
'estimate the dominant frequency', which might be ill-posed,
depending on the signal characteristics, one says 'find the
max spectral coefficient'. Which is well-posed if a sinusoidal
is present.

( Of course, that convenient argument breaks down if there are
more than one sinusoidal present, but that's a different story. )

Rune
From: brent on
On May 3, 11:13 am, Vladimir Vassilevsky <nos...(a)nowhere.com> wrote:
> Let's say I have an FFT of the given size N, and I want to get an
> estimate of a frequency of a noisy tone (input SNR ~ 1/N).
> Increasing FFT size is not an option.
>
> I can do the following processing:
>
> 1) Average the magnitudes for every bin through several FFTs, then do a
> curve fit through max_bin, max_bin-1, max_bin+1 to find the peak.
>
> 2) Do the FFT, then estimate the frequency by one of the estimators
> described in [1], then do a weighted average of the result of the
> estimator through several FFTs.
>
> 3) Do several FFTs progressively shifting the input by the frequency
> from 0 to 1/2 of bin spacing, do some post-processing.
>
> 4) Anything else?
>
> What do you think?
>
> [1] "Fast, Accurate Frequency Estimators"
> E. Jacobsen, P. Kootsookos
> p.107 "Streamlining digital Signal Processing"
> edited by R. Lyons
> (c)IEEE 2007
>
> //------------------------------
>
> Vladimir Vassilevsky
> DSP and Mixed Signal Design Consultanthttp://www.abvolt.com

If you do two successive FFT's you can compare the results and see how
much phase travel has occured between the two FFT's. frequency =
d(phase)/dt
From: Ron N. on
On May 5, 2:41 am, Rune Allnor <all...(a)tele.ntnu.no> wrote:
> On 5 Mai, 05:35, "Peter K." <koots...(a)gmail.com> wrote:
> > On 3 May, 12:43, Rune Allnor <all...(a)tele.ntnu.no> wrote:
>
> > > I haven't read Eric and Peter's piece, so I don't know what they
> > > say about the subject. With that proviso:
>
> > > 'Fast' and 'accurate' are contradictions in terms. Any estimator
> > > might be *either* fast *or* accurate, but no one estimator will
> > > be both.
>
> > Yes and no.
>
> > Unbiased estimators can generally only be as accurate as the Cramer-
> > Rao Lower bound (CRLB) on the variance of such estimators.
>
> > There exist many frequency estimators that meet this bound.
>
> > The ones that Eric and I wrote about meet the CRLB and are faster to
> > calculate than a periodogram.
>
> One has one of two options to achiev that kind of thing:
>
> 1) Compute only parts of the peridogram
> 2) Use a model-based frequency estimator
>
> Both apporaches rely on prior knowledge / assumptions /
> prejudice / hearsay about what the spectrum actually looks
> like, and what one will find.
>
> The problem with such approaches is that they are not
> awfully robust with respect to flawed prior assumptions:
> If the spectrum line is not in the band where one computes
> the partial periodogram, one will not find it. If the data
> do not comply to whatever parametric model the estimator
> is based on, the computed numbers are little more than
> mumbo-jumbo.

If you have multiple frames of data, and you know the frame
offsets, then just combining these frames into one periodogram
appears to throw away information (the frame offsets, and
relative bin phases between frame pairs).

Reducing the amount of information thrown away would, from an
information theoretic point of view, seem to allow improvement
in any "frequency" estimate.

There appear to be at least 3 recommendation posted here for
variants of this phase vocoder approach, rephrased in
different ways (measuring delta phase versus frame offset).

This method also allows a very low compute cost method for
testing a frequency hypothesis (1-bin complex Goertzel plus
power measurement of the adjacent frame for both relative
phase plus a sanity check).


IMHO. YMMV.
--
rhn A.T nicholson d.0.t C-o-M
http://www.nicholson.com/rhn/dsp.html
From: Vladimir Vassilevsky on


John wrote:

> On May 3, 11:13 am, Vladimir Vassilevsky <nos...(a)nowhere.com> wrote:
>
>>Let's say I have an FFT of the given size N, and I want to get an
>>estimate of a frequency of a noisy tone (input SNR ~ 1/N).
>>Increasing FFT size is not an option.
>>
>>I can do the following processing:
>>
>>1) Average the magnitudes for every bin through several FFTs, then do a
>>curve fit through max_bin, max_bin-1, max_bin+1 to find the peak.

[...]

> A ML solution is to do FFT #1, wait a fixed time interval, and do FFT
> #2 of new data. The phase change of the bin of interest from FFT #1 to
> FFT #2, combined with the know delay, gives the fine frequency. Watch
> out for wraps though.

Neat and simple. Thank you, John.

Actually, the problem is blind estimation of the carrier frequency of
PSK signal at marginally low SNR, and the carrier offset is comparable
to the baud rate. I dot it working, but the acquisition time is
~hundreds of symbols.


Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com