Get the position, period and the amplitud of the wave.
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Vicente
am 24 Apr. 2023
Kommentiert: Antoni Garcia-Herreros
am 24 Apr. 2023
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!
0 Kommentare
Akzeptierte Antwort
Antoni Garcia-Herreros
am 24 Apr. 2023
Bearbeitet: Antoni Garcia-Herreros
am 24 Apr. 2023
Hello Vicente,
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.
x=Tm(4000:5000);
y=P01m(4000:5000);
[Mpy,Mpx]=findpeaks(y); % Find local maximums
[mpy,mpx]=findpeaks(-y);% Find local minimums
T=mean(diff(x(Mpx))); % Period
A=mean(y(Mpx)-y(mpx(1:end-1)))*0.5; %Amplitude
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
hold on
plot(x,fitted_curve(x))
A=fitted_curve.a; % Amplitude of your wave
T=2*pi/fitted_curve.b; % Period = 2pi/f
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Octave finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!