很容易让你自动找到、绘图并标记局部极大值(峰值)和局部极小值的MATLAB代码。
Easily allows you to automatically find, plot, and label local maxima (peaks) and local minima on MATLAB
This code requires the MATLAB Signal Processing Toolbox, which can be downloaded here: https://www.mathworks.com/products/signal.html
How to use these functions:
You just need your “x” and “y” arrays, as you would do for a simple plot(x,y), and just 2 numbers: “hs” controls the horizontal space between peaks/dips and their respective labels ((+): right, (-): left), and “vs” controls the vertical spacing. If in doubt, set hs=0 and vs=0.
[pks,locs] = PeakDipLabels(x,y,hs,vs)
-
PeakDipLabels: find, plot, and label both peaks (red) and dips (green).
-
PeakLabels: find, plot, and label just peaks (red).
-
DipLabels: find, plot, and label just dips (green).
How to install these files:
-
This code was written using MATLAB (version 2020a). Download MATLAB on your computer or try MATLAB online
-
As mentioned above, you’ll need to have the MATLAB Signal Processing Toolbox installed
-
Download the 3 files on this repository: “PeakDipLabels.m”, “PeakLabels.m”, and “DipLabels.m”
-
Once downloaded, copy these function files to the MATLAB parent directory. On Windows, this is typically: C:\Users\YourUserName\Documents\MATLAB
-
That’s it! You should be able to use these 3 functions
Example:
hs = 0; vs = 0;
x = linspace(-20,20,1000);
y = exp(-x/10).* cos(x)
PeakDipLabels(x,y,hs,vs)
% alternatively, you can run [pks,locs] = PeakDipLabels(x,y,hs,vs) instead of PeakDipLabels(x,y,0,0) if you want to save arrays of peaks/dips and their locations to workspace
更多精彩文章请关注公众号: