Find min and max value of vector without using built-in function

5 次查看(过去 30 天)
Hello, I know that this question has been already asked many times, however, I kind of struggle to execute it. Max shows correct result, but the not the minimum value. What could be the solution?
A = [9 6 8 3 6 8 2 1 3 9 1 0 2]
maxval = A(1);
minval = 1;
for i = 1:length(A)
if A(i) > maxval
maxval = A(i);
else A(i) < minval
minval = A(i)
end
end

采纳的回答

dpb
dpb 2022-9-19
编辑:dpb 2022-9-19
...
minval=maxval;
...
if ...
...
elseif A(i) < minval %%% HERE'S YOUR PROBLEM...SEE IT???
...
You missed the "if" part on the "else" clause -- so every thing that wasn't greater than went there and the {A(i) < minval) clause did nothing except display the result of the test to the command line; had no bearing on the logic.
  4 个评论
Voss
Voss 2022-9-19
The if/elseif should really be two independent ifs if initializing with Infs:
A = 1:10; % strictly increasing -> elseif condition never checked
maxval = -Inf;
minval = Inf;
for i = 1:length(A)
if A(i) > maxval
maxval = A(i);
elseif A(i) < minval
minval = A(i);
end
end
minval,maxval % minval remains Inf
minval = Inf
maxval = 10
A = 1:10;
maxval = -Inf;
minval = Inf;
for i = 1:length(A)
if A(i) > maxval
maxval = A(i);
end
if A(i) < minval
minval = A(i);
end
end
minval,maxval
minval = 1
maxval = 10

请先登录,再进行评论。

更多回答(1 个)

Matt J
Matt J 2022-9-19
%maxval = A(1);
%minval = 1;
maxval = -inf;
minval = +inf;

类别

Help CenterFile Exchange 中查找有关 Performance and Memory 的更多信息

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by