View License

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

» Watch video

Highlights from
Frequency, amplitude, phase and mean value of sine wave

4.5 | 2 ratings Rate this file 14 Downloads (last 30 days) File Size: 2.46 KB File ID: #19902 Version: 1.0

Frequency, amplitude, phase and mean value of sine wave


Miroslav Balda (view profile)


13 May 2008 (Updated )

The function sinfapm evaluates parameters of sampled sine wave

| Watch this File

File Information

The function sinfap.m evaluates frequency, amplitude, phase and mean value of a uniformly sampled harmonic signal
   x(t) = a.sin(2.pi.f.t + phi) + x_m
It uses a vector version of 3-point formulae derived by application of
Z-transform (see [1]) for finding amplitude and frequency of a signal.
If more than two output parameters are to be determined, all of them are optimized in the least squares sense by the function LMFnlsq.

frq = sinfapm(x,fs); % Get only frequaency of sine-wave
[frq,amp] = sinfapm(x,fs); % Get frequency and amplitude
[frq,amp,phi] = sinfapm(x,fs); % Get frequency, amplitude and phase
[frq,amp,phi,ave] = sinfapm(x,fs); % ditto plus mean value
The set of more than two output parameters can be found by calling
[frq,amp,phi] = sinfapm(x,fs,Name_1,Val_1,Name_2,Val_2, ...);
[frq,amp,phi,ave] = sinfapm(x,fs,Name_1,Val_1,Name_2,Val_2, ...);

Input arguments:
x % vector of samples
fs % sampling frequency [Hz]
Name_i % name of the i-th optional parameter for optimization
Val_i % value of the i-th optional parameter (see function LMFnlsq)
Output arguments:
frq % frequency of x [Hz]
amp % amplitude of x
phi % phase in radians
[f,a,phi,ave] = sinfapm([1.3633;-.2428;-0.9705;1.8130;-1.9631],10);
% f = 4.0000
% a = 2.0000
% phi = 0.7500
% ave = -2.2806e-005
[f,a,phi] = sinfapm([.707,1,.707,0],20,'Xtol',1e-4);
% f = 2.5001
% a = 0.9999
% phi = 0.7853 % pi/4 = 0.785398...


This file inspired Sinide Parameter Identification Of A Sine Wave From A Measured Signal.

MATLAB release MATLAB 7.6 (R2008a)
Other requirements Function LMFnlsq from FEX, Id. 17534
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (9)
28 Nov 2016 arul s

arul s (view profile)

hi all
i am only get my amplitude in precent signal
this function what code or keyword can i use?
please send your suggestion fast

Comment only
18 Aug 2014 Miroslav Balda

Miroslav Balda (view profile)

The function sinfapm is not maintained any more. Use the function sinide instead, which is much more stable. See


Comment only
13 Mar 2014 will wehner

Thank you.
Unfortunately, I believe there are still problems with the function.

I emailed you an example ( with estimation of real data. It uses your function and compares to estimation with nlinfit.m


Comment only
14 Feb 2014 Miroslav Balda

Miroslav Balda (view profile)

I am sorry that the function behaved wrong. A reason for it was a hight sensitivity of the function to inaccurate initial guess of the sought parameters. Since it was impossible to improve it by little modification, I decided to build a new function. It will appear in a short time under the name sinide.m.

Comment only
30 Jan 2014 will wehner


[f,a,phi,ave] = sinfapm(y,100)


Comment only
11 Oct 2009 John

John (view profile)

When I implement this function for noisy sine vawes, the amplitudes seem to be very far from reality. Often, amplitudes have even minus signs(?). Any ideas why ?

Comment only
18 Apr 2009 Pablo

Pablo (view profile)

txs a lot =)).
i need it that mean

24 Jul 2008 david sweeney

How do I get this file to run????

Comment only
31 May 2008 Ramesh Pachar

Contact us