Re: Real-time sinusoidal parameter estimation?
- From: Tim Wescott <tim@xxxxxxxxxxxxxxxx>
- Date: Tue, 21 Oct 2008 10:53:23 -0700
HardySpicer wrote:
On Oct 21, 2:41 pm, Tim Wescott <t...@xxxxxxxxxxxxxxxx> wrote:alecwei wrote:Hi folks,How wide is the frequency range, how many cycles are in your 300
I need to estimate the frequency and phase of a sinusoid in the presence
of noise with a fairly high accuracy. The algorithm will most likely be
implemented on an FPGA for a real-time control system. I have done some
research on the net and experimented with MATLAB a bit, and the only robust
solution (least-squares based) I came up with uses singular value
decomposition (SVD) of large matrices (hundreds x hundreds), which is
really impractical for an FPGA. My feeling is that anything that uses
matrix decomposition or inversion will probably be too complex in terms of
computation and resource usage. Could someone recommend an estimation
algorithm that is robust and practical at the same time? Let's assume the
number of samples to estimate from will be around 300. Thanks all!
samples, how much noise, how predictable is the amplitude?
There are a lot of different ways you could do this, each one with it's
advantages and disadvantages, and better or worse fit to your problem.
For a moderately narrow frequency range and lots of cycles per sample
interval you could break your 300 samples into bunch of little one-cycle
sets at the nominal frequency, and estimate the phase of each set. Then
you can unwrap the phase and find the offset and slope of the
collection. This will _probably_ work OK for a +/- 10% variation in
frequency from nominal (I'd have to do some math to be sure).
Alternately, is there a reason you can't lock onto the signal with a
PLL? Once locked this would track frequency and phase in a predictable
manner, and would have the advantage of having IIR dynamics which are
both minimum phase and easier to model as part of a control system.
--
Tim Wescott
Wescott Design Serviceshttp://www.wescottdesign.com
Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" gives you just what it says.
See details athttp://www.wescottdesign.com/actfes/actfes.html
A PLL has a lock range. Normally the free-running frequency of the VCO
defines the centre frequency and the frequency
varies up and down with respect to this (as in FM). He would need to
have a range of frequencies and set-up the PLL carefully at the
centre.
If you change the free-running frequency you need to change the loop
dynamics too.
Hardy
I think you're thinking analog PLLs. You have a lot more freedom to deal with the weirdness if you implement the PLL digitally.
But the OP needs to give us more detail.
--
Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" gives you just what it says.
See details at http://www.wescottdesign.com/actfes/actfes.html
.
- Follow-Ups:
- Re: Real-time sinusoidal parameter estimation?
- From: HardySpicer
- Re: Real-time sinusoidal parameter estimation?
- References:
- Real-time sinusoidal parameter estimation?
- From: alecwei
- Re: Real-time sinusoidal parameter estimation?
- From: Tim Wescott
- Re: Real-time sinusoidal parameter estimation?
- From: HardySpicer
- Real-time sinusoidal parameter estimation?
- Prev by Date: Re: Real-time sinusoidal parameter estimation?
- Next by Date: Re: Anyone actually using FPGA?
- Previous by thread: Re: Real-time sinusoidal parameter estimation?
- Next by thread: Re: Real-time sinusoidal parameter estimation?
- Index(es):
Loading