Max fonction sur matlab

mel -  
 mel -
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

etudiant72
 
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
mel
 
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   Statut Contributeur Dernière intervention   1 299
 
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
mel
 
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   Statut Contributeur Dernière intervention   1 299
 
non, grace au break, je m'arrete au premier max
0
mel
 
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   Statut Contributeur Dernière intervention   1 299
 
Non non !
tu m'a mis le doute donc je viens de tester, ça retourne bien 3 !
0
mel
 
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