Max fonction sur matlab

Fermé
mel - 24 déc. 2010 à 18:49
 mel - 8 janv. 2011 à 16:40
Bonjour,

j'ai besoin d'aide s'il vous plait, j'ai une courbe sur matlab et j'ai besoin de retrouver le premier max qu'elle atteint.
par exeple si elle a les valeurs suivantes: [1 1 2 3 2 1 5 6] moi j'aurais besoin de récuperer le 3.
je n'ai aucune idée de comment m'y prendre, je suis novice sur matlab, est ce que j'aurais besoin de deriver la fct pr retrouver les max???

A voir également:

8 réponses

J'ai exactement le même probléme ^^. Sauf que pour moi c'est une courbe d'impédance en fonction des fréquences. Le but étant de récupérer le premier pic de résonnance avec sa fréquence associé.
(en C++ ça m'aurais pris deux minutes...)
0
ben voilà la solution que j'ai fini par trouver
s etant ma matrice de depart
sa=sign(diff([-inf s]));% recherche de ts les maximums
sb=sign(diff([-inf s(end:-1:1)]));
sb=sb(end:-1:1);
idx=(sa==1 & sb==1 & s>1);% idx=1 pr les max

sauf qu'il faut definir un seuil au dessous du quel un pic n'est pas considéré comme tel; ici mon seuil est 1 d'ou le s>1 à la fin, apparemment on n'a pas le choix, quelque soit la methode il faut un seuil sinon il y aurait de tous petits pics à peine visibles sur la figure qu'on detecterait
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
6 janv. 2011 à 10:02
super compliqué ! pourquoi ne pas simplement faire un for et retenir la valeur max ?
M=s(1);
for i=2:length(s);
   if M>s(i)
       idx=i-1;
       break;
   else
       M=s(i);
   end
end
0
c'est parce qu'avec la methode que tu proposes on retrouve le max global et non pas le 1 er pic rencontré qui est un max local,
c'est à dire dans l'exemple de la matrice que j'ai donné ta methode me retourne le 6 alors que la mienne retourne le 3
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
7 janv. 2011 à 09:17
non, grace au break, je m'arrete au premier max
0
ben non tu t'arrete à la première valeur superieure à s(1)
ce qui correspond à la valeur 2 ds l'exemple et non pas le 3
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
7 janv. 2011 à 16:50
Non non !
tu m'a mis le doute donc je viens de tester, ça retourne bien 3 !
0
oui desolée tu as raison , dans son cas ca pourrait tres bien marcher, moi j'ai utilisé pske en fait j'ai besoin de recupéré le 1 er et le 2eme pic et là c plus simple ac ma methode :)
0