find max of vector
24 次查看(过去 30 天)
显示 更早的评论
i want to find the maximum of a vector and its position, if i have for example v=[-1,3,4,5,-2,5] , the max is 5 but i have two positions , how can i find these two positions using for loops , here is my program but it doesn't work :
v=[-1,3,4,5,-2,5]
maxi=v(1);
j=1;
for i=2:length(v)
if v(i)>maxi
maxi=v(i);
pos(j)=i;
j=j+1;
end
end
0 个评论
回答(2 个)
James Tursa
2019-12-2
编辑:James Tursa
2019-12-2
Two things. FIrst, you need to initialize pos = 1 before the loop starts. And second, you need to modify your if-test to do two things: If v(i) == maxi, then add another pos(j) similar to what you are currently doing, but if v(i) > maxi then you need to start over and save a new max. Currently you keep adding in new pos(j) values when a new max is found but not getting rid of the old ones. E.g.,
if v(i) == maxi
j=j+1;
pos(j)=i;
elseif v(i) > maxi
% code to save new max value in maxi, and start over with pos = i etc.
end
I will leave it to you to fill in the missing code.
4 个评论
James Tursa
2019-12-5
We seem to be diverging here, and you are not implementing my advice. For example, now you have two for-loops:
for i=2:length(v)
for j= 1:length(v)
Why are you suddenly introducing an additional for-loop?
And you still haven't implemented the code I gave you for the v(i) == maxi case.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!