Find min and max value of vector without using built-in function
23 次查看(过去 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
0 个评论
采纳的回答
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
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
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
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!