Fonction max() sous matlab svp

Résolu/Fermé
mat - 20 nov. 2004 à 13:39
 pttbrune - 6 août 2012 à 22:47
bonjour a tous
j'ai une question pour l'utilisation de max() sous matlab
qd on a une matrire genre :

A= 1
0
1
1
1
0
0
1
0

si je tapes [I J]=max(A) il va me retourner I=1 et J=1 c'est a dire la premiere ligne J du maximum rencontrée (car plusieurs valeurs maximales) et moi je voudrai au contraire qu'il me renvoit la derniere valeur de la ligne ou il y a 1 a savoir I=1 et J=8

emerci bcp
a bientot
A voir également:

3 réponses

A=[1;0;1;1;1;0;0;1]; % Définition de ta matrice
M = max(A); % Valeur maximale de A (en l'occurence 1)
Position = []; % Matrice vide
j = 1;

disp(' ')
for i = 1:length(A) % Boucle parcourant chaque élément de A
if A(i,1) == M % Si un élément de A = max(A), alors il le place dans une autre matrice
Position(j) = i; % Cette matrice-là
j=j+1;
fprintf('Un maximum de A se trouve à la %d ième position.\n',i)
end
end

fprintf('La derniere position du maximum est: %d\n', Position(end)) % VOiula.
2
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 832
26 nov. 2008 à 19:47
Salut

Ah ben on pourra dire qu'il l'aura attendue longtemps sa réponse nandediou ! 4 ans... :-D
J'espère qu'il a résolu son problème depuis le temps...
Menfin... la réponse pourra resservir à d'autres...

En utilisant l'indexation logique, c'est un peu plus compact :
max_loc = (1:size(A,1));
max_loc = max_loc(A==max(A));
display(['Indices des valeurs maximales de A : ', num2str(max_loc)]);
display(['Indice de la dernière valeur maximale de A : ', num2str(max_loc(end))]);
Bonne soirée
1
Bonjour,
J'ai une autre solution qui peut servir. Il suffit simplement d'inverser la matrice, comme ça le parcours de la matrice commence par la fin. Et comme tu connais la taille de ta matrice, tu connais l'indice final :

>> mat = [2 1 5 2 3 1 4 5 1 3 4 5 3];
>> matinv = mat(size(mat,2):-1:1);
>> [val ind] = max(matinv);
>> pos_final = size(matinv,2)-ind+1;
1