
How would I find the first twelve local maximum (peak) values for y and the corresponding times using a script?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Erik
el 18 de Nov. de 2014
Comentada: Star Strider
el 19 de Nov. de 2014
How would I find the first twelve local maximum (peak) values for y and the corresponding times (t) using a script?

0 comentarios
Respuesta aceptada
Star Strider
el 18 de Nov. de 2014
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

2 comentarios
Más respuestas (1)
Image Analyst
el 18 de Nov. de 2014
Do you have the Signal Processing Toolbox? If so, use findpeaks(). If not, check the File Exchange.
0 comentarios
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!