find max of vector
44 ビュー (過去 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 で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!