Get the position, period and the amplitud of the wave.
9 次查看（过去 30 天）
As I wrote in the title I have a wave and I want to get the period of it, the amplitud and the top peack of it. I already got a code that I tried but it does not work to me, do not know why. I upload the matlab data simplify the task. Thank you in advance!
Antoni Garcia-Herreros 2023-4-24
编辑：Antoni Garcia-Herreros 2023-4-24
You can try a couple of different approaches:
Option A: Use findpeaks function to get the values of the peaks and compute the differences to obtain the amplitude and the period.
[Mpy,Mpx]=findpeaks(y); % Find local maximums
[mpy,mpx]=findpeaks(-y);% Find local minimums
T=mean(diff(x(Mpx))); % Period
toppeak=mean(Mpy); %Max peak value
Option B: Fit your data into a sinusoidal and use the parameters to obtain the desired values
fitfun = fittype( @(a,b,x) a*sin(b*x+c)); % Define the sinusoidal
[fitted_curve] = fit(x,y,fitfun,'StartPoint',[5.3,6.97,-7.6])
plot(x,y,'.') %Plot the model to ensure the fit works
A=fitted_curve.a; % Amplitude of your wave
T=2*pi/fitted_curve.b; % Period = 2pi/f