File Exchange

image thumbnail

Four-Parameter Sinefit

version 1.5 (5.44 KB) by

Least squares sinusoid fit. Optimization toolbox not needed. Data can be non-uniformly sampled.

6 Ratings



View License

Least squares sinusoid fit algorithm described in IEEE Standard for Digitizing Waveform Recorders (IEEE Std 1057): Algorithm for three-parameter and four-parameter least squares fit to sinewave data using matrix operations.

The algorithm is (in most cases) really quick. If the signal frequency is a guess, it has to be close to true frequency value.

For further information, consult IEEE Std 1057 and/or IEEE Std 1241 documentation.

Now also fits complex sinusoids i.e. phasors with noise and offset.

Comments and Ratings (8)

Chih-Hung Lee


Eric (view profile)

Marko Neitola

Marko Neitola (view profile)

For clarification:

Using the three-parameter fit disables the iterative frequency search. To enable this, use searchflag = 0.

For instance, if you want function messages (verbose), graphics (plotflag) and no iterative search, use

verbose = 1;
plotflag = 1;
searchflag = 0;



Jeroen (view profile)


Daniel Wei

This is actually a cosine fit, I think.


K E (view profile)

Here is an example with a regular sinusoid, which may be helpful:
t = 0:0.1:1000 ; % Time must be in seconds, not Matlab time
T = 10 ; % Period (s)
f = 1/T ; % Signal frequency (not sampling frequency!)
y = 2*sin(2*pi*t./T) ; % Sinusoid
[params, yest, yres, rmserr] = sinefit(y, t, f, 1, 1, 1) ;


Edwin (view profile)

The program worked fine for me it was exactly what I was looking for. I use it for the estimation of the SINAD and subsequent ENOB value. The method tends to shift more signal to the residual when the signal that is used gets longer.



A feature update: fitting extended to complex sinusoids.


Fixed a bug in input parameter handling (varargin behavior).


Improved iteration convergence: the accuracy for the initial frequency guess is more relaxed.


A feature update: added a possibility to fit non-iteratively.


A minor bugfix in the plotting operation: now ALL samples are included in modulo-time plots.

MATLAB Release
MATLAB 7.13 (R2011b)

Inspired by: Modulo Time Plot

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video