Get the position, period and the amplitud of the wave.
5 次查看(过去 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!
0 个评论
采纳的回答
Antoni Garcia-Herreros
2023-4-24
编辑:Antoni Garcia-Herreros
2023-4-24
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Octave 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!