How to plot min and max values on graph
Afficher commentaires plus anciens
I've created some formulas and a function that is composed of if and elseif statements and plots a graph of it. However I am needing for the graph to show the max and min of the curve and I am unsure of how to do so.
X = 0:0.1:10;
Y = (X.^(1.01))+4*cos((3/4).*X.*pi) - 2*sin((2/3)*pi.*X)-0.25;
figure(); %creates figure window
plot (Y,'-r+') %plots figure
xlabel('Time (mins)') %x axis label
ylabel('Density Altitude (km)') %y axis label
function minmax_i = min_max(Y) %function code
N = ones(1,7);
for i = 2:(length(Y)-1)
if (Y(i-1) > Y(i)) && (Y(i+1) > Y(i)) %if true, local minimum
minmax_i(N) = i;
N = N+1;
elseif (Y(i-1) < Y(i)) && (Y(i+1) < Y(i)) %if true, local maximum
minmax_i(N) = i;
N = N+1;
end
end
end
Réponse acceptée
Plus de réponses (1)
Alan Stevens
le 20 Oct 2020
If you meant you want to highight all the peaks and troughs then the following will do it (assuming you haven't got the findpeaks function available):
X = 0:0.01:10;
Y = (X.^(1.01))+4*cos((3/4).*X.*pi) - 2*sin((2/3)*pi.*X)-0.25;
% Peaks and troughs
% Gradient of curve
dYdX = 1.01*X.^0.01 - 3*pi*sin((3/4).*X.*pi) - (4/3)*pi*cos((2/3)*pi.*X);
signchange = diff(sign(dYdX)); % Where curve turns over
idxpos = signchange<0; % Peak positions
idxneg = signchange>0; % Trough positions
figure(); %creates figure window
plot(X,Y,'r',X(idxpos),Y(idxpos),'bo',X(idxneg),Y(idxneg),'bs'),grid
xlabel('Time (mins)') %x axis label
ylabel('Density Altitude (km)') %y axis label
1 commentaire
Steven Lord
le 20 Oct 2020
You could use the islocalmin and islocalmax functions included in MATLAB.
Catégories
En savoir plus sur Descriptive Statistics dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!