Info

# How to display my answer with out rewriting them?

1 view (last 30 days)
Nicholas Deosaran on 18 Oct 2020
Closed: MATLAB Answer Bot on 20 Aug 2021
Hello all,
I have my code below that finds the min_max of my function.
I would like for it to displapy all the min_max.
When i run the code it only does the last min_max.
How would I stop it from overwiting the previous min_max?
x = 0:0.1:10;
y = x.^(101/100)+4*cos((3*pi*x)/4)-2*sin((2*pi*x)/3)-0.25;
function minmax_ind = min_max(y)
for i = 2:(length(y)-1)
if (y(i-1) > y(i)) && (y(i+1) > y(i)) % if this is true, we have found a local minimum
minmax_ind = i;
elseif (y(i-1) < y(i)) && (y(i+1) < y(i)) % if this is true, we have found a local maximum
minmax_ind = i;
end
end
end
Thank you,
Nick

Robin Kirsch on 18 Oct 2020
Edited: Robin Kirsch on 18 Oct 2020
You are overwriting minmax_ind every time. If you find a local max, you will overwrite it if you find another one. I hope this is what you meant, I did not test the function due to it being correct by finding the min and max of the array.
You can fix this if u add another variable just like this
function minmax_ind = min_max(y)
j = 1;
for i = 2:(length(y)-1)
if (y(i-1) > y(i)) && (y(i+1) > y(i)) % if this is true, we have found a local minimum
minmax_ind(j) = i;
j = j +1;
elseif (y(i-1) < y(i)) && (y(i+1) < y(i)) % if this is true, we have found a local maximum
minmax_ind(j) = i;
j = j +1;
end
end
end