# matlab实现正弦波的频率、振幅、相位和平均值评估

matlab实现正弦波的频率、振幅、相位和平均值评估

## Frequency, amplitude, phase and mean value of sine wave

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.

Calls:

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

Examples:

[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...

sinfapm.zip (2.37KB)

sinfapm.m