🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.dsp
Article #336

Re: Sine curve fit algorithms

#336
From: Bob Jewett
Date: Fri, 29 Sep 1989 20:47
34 lines
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!jewett
References: <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