find max of vector
Afficher commentaires plus anciens
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
Réponses (2)
James Tursa
le 2 Déc 2019
Modifié(e) : James Tursa
le 2 Déc 2019
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 commentaires
diadalina
le 2 Déc 2019
James Tursa
le 3 Déc 2019
Modifié(e) : James Tursa
le 3 Déc 2019
else if v(i)>maxi
pos(j) = i;
No. Here you are just adding another index to the pos(j) spot. You need to overwrite all of those stored pos values and start over your index saving completely:
pos = i;
j = 1;
Also, remember you need to initialize your pos vector prior to the start of the loop:
pos = 1;
Finally, I suggest you use the code I gave you for the condition of v(i) == maxi
diadalina
le 3 Déc 2019
James Tursa
le 5 Déc 2019
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.
Catégories
En savoir plus sur Solver Outputs and Iterative Display dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!