finding the minimums of function
Show older comments
Hello. On this plot you can notice 1 max and 2 min. How should I identify second min of my function? As you can see I found the real min, but there is a second min of function. I've tried but I'm getting only 1 value.

t = -10:0.1:-0.1;
t = t';
eta = zeros(size(t));
for i = 1:length(t)
eta(i,1) = 2 .* t(i,1) + 3 ./ t(i,1);
end
% % % max of function and time when it gets it's max
ind = find (eta == max(eta));
t_eta_max = t(ind ,1);
eta_max = eta (ind ,1);
% % % plot
plot(t,eta,'g-','linewidth',1.5);
hold on
plot ( t_eta_max , eta_max, 'marker','o','linewidth',1,'markeredgecolor','k','markerfacecolor','k','markersize',5);
grid on
xlim ([ -10 0]);
ylim ([ -30 0]);
% % % min of function and time when it gets it's min
ind = find (eta == min(eta));
t_eta_min = t(ind,1);
eta_min = eta (ind,1);
Answers (2)
madhan ravi
on 12 Dec 2018
Edited: madhan ravi
on 12 Dec 2018
There’s only one local maxima which you have plotted , local minima doesn’t exist in the given domain
doc findpeaks
doc fminbnd
Read about sort. Sort the required values into ascending order and pick the first two.
n = 20 ;
x = 1:n ;
y = rand(1,n) ;
[val,idx] = sort(y) ;
plot(x,y) ;
hold on
plot(x(idx(1:2)),y(idx(1:2)),'*r')
Categories
Find more on Correlation and Convolution in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!