How would I find the first twelve local maximum (peak) values for y and the corresponding times using a script?

Illustration
Katherine - 2021-02-22T09:29:13+00:00
Question: How would I find the first twelve local maximum (peak) values for y and the corresponding times using a script?

How would I find the first twelve local maximum (peak) values for y and the corresponding times (t) using a script?  

Expert Answer

Profile picture of Prashant Kumar Prashant Kumar answered . 2025-11-20

If you don’t have the Signal Processing Toolbox, and since you have a clean, noise-free signal, this works:
 
 
 
x = linspace(0,20,250);             % Create Data
y = exp(-0.25*x) .* sin(2.5*pi*x);  % Create Data

dy = gradient(x,y);                 % Derivative: dy/dx
zx = dy.*circshift(dy, [0 -1]);     % Zero-Crossings Of Derivative
pkix = find(zx<0);                  % Zero-Crossing Indices
pkix = pkix(y(pkix)>0);             % Indices Of Peaks
xpks = x(pkix(1:12));               % X-Coordinates Of First 12 Peaks
ypks = y(pkix(1:12));               % Y-Coordinates Of First 12 Peaks

figure(1)
plot(x,y)
hold on
plot(xpks,ypks,'^r')
hold off

 

first twelve local maximum


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!