How would I find the first twelve local maximum (peak) values for y and the corresponding times using a script?
1 view (last 30 days)
Show older comments
How would I find the first twelve local maximum (peak) values for y and the corresponding times (t) using a script?
0 Comments
Accepted Answer
Star Strider
on 18 Nov 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
More Answers (1)
Image Analyst
on 18 Nov 2014
Do you have the Signal Processing Toolbox? If so, use findpeaks(). If not, check the File Exchange.
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!