Article View: comp.dsp
Article #336Re: Sine curve fit algorithms
From: Bob Jewett
Date: Fri, 29 Sep 1989 20:47
Date: Fri, 29 Sep 1989 20:47
34 lines
1863 bytes
1863 bytes
> I am looking for C source code for sine wave curve fitting algorithms.
> Such an algorithm can be used to compute THD/Noise in a digitized sine
> wave. The fitting algorithm with adapt to phase frequency, and
> amplitude and create a minimum RMS error replica of the digitzed
> sinewave. The RMS error thus indicates error in the original digitzer.
The requirement can be restated as: Find A, B, C, and F to minimize:
sum [ (signal(i)-fit(i))**2 ]
where fit(i) = A + B*sin(2*pi*F*time(i)) + C*cos(2*pi*F*time(i))
If F is fixed, a standard linear algebra package should let you find A, B and
C easily. Often in A/D testing, you know exactly the ratio of sample rate to
signal frequency, and fiddling with F gives an optimistic result. If you
really want to fit F as well, try getting the approximate frequency with an
FFT, then search for a minimum of distortion versus F.
This method has several advantages over an FFT:
1. All of the data points are weighted equally. Most FFTs need to be
windowed.
2. The data need not be spaced evenly, as long as you know the time of
each sample.
3. You can get reasonable answers with only a fraction of a cycle of
the input frequency.
I have an alpha version of a stand-alone program that takes ASCII values (or
time-value pairs) and gives distortion numbers, which is available on
request.
Bob Jewett jewett@hplabs
Technical Details
Message-ID:
<71330001@hpl-opus.HP.COM>Path:
arc1-ca.pugleaf.net!utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!uwm.edu!gem.mps.ohio-state.edu!tut.cis.ohio-state.edu!ucbvax!hplabs!hpl-opus!jewettReferences:
<2421@radio.oakhill.UUCP>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!uwm.edu!gem.mps.ohio-state.edu!tut.cis.ohio-state.edu!ucbvax!hplabs!hpl-opus!jewett From: jewett@hpl-opus.HP.COM (Bob Jewett) Newsgroups: comp.dsp Subject: Re: Sine curve fit algorithms Message-ID: <71330001@hpl-opus.HP.COM> Date: 29 Sep 89 20:47:18 GMT References: <2421@radio.oakhill.UUCP> Organization: HP Labs, High Speed Electronics Dept., Palo Alto, CA Lines: 34