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

1 回表示 (過去 30 日間)
How would I find the first twelve local maximum (peak) values for y and the corresponding times (t) using a script?

採用された回答

Star Strider
Star Strider 2014 年 11 月 18 日
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

その他の回答 (1 件)

Image Analyst
Image Analyst 2014 年 11 月 18 日
Do you have the Signal Processing Toolbox? If so, use findpeaks(). If not, check the File Exchange.

カテゴリ

Help Center および File ExchangeDescriptive Statistics についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by