Bonjour à tous,
Avant tout je vous remercie de toute aide que vous porterez sur ce post.
Voila l'histoire: j'ai une courbe de mesure ( cf Courbe).
Cette courbe possède différents points d'inflexion. Je précise que je n'ai pas la fonction de cette courbe et que aucune courbe de tendance ne peut s'y appliquer.
Je souhaiterai donc mettre en place un programme me permettant de trouver ces points d'inflexion.
Pour cela je suis parti pour calculer tous les coefficients directeurs entre chaque points.Une fois que j'ai récupéré les coefficients, je souhaite donc comparer les signes de chacun pour connaitre la tendance. Le but est que si la tendance est la même pendant (par exemple) 20 itérations, et que l'itération d'après la tendance change alors le point de la 20ème itération est un point d'inflexion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Point_A=load('V10_2_A.txt'); Freq=Point_A(:,1); Ampl=Point_A(:,2); i=1; for i=1:length(Ampl)-1 Coef(i)=(Ampl(i+1)-Ampl(i))/(Freq(i+1)-Freq(i)); i+1; end
Exemple de code (pas fonctionnel)Mon problème est le suivant: En se basant sur la méthode appliqué pour trouver les points d'inflexion, il se peut que le calcul me trouve une variation de tendance au bout de 20 itérations mais qui ne correspond pas forcément à un point d'inflexion, reprendre la boucle avec le compteur à 0 et ne pas trouver le points d'inflexion se trouvant a 15 itérations après (par exemple).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 t=0; u=linspace(1,3200,3200); for j=1:length(Coef) q=20; % compteur limite de définition de points d'inflexion if sign(Coef(j))==sign(Coef(j+1)) t=t+1; % compteur else t=0; if t-1>q || t=0 Point_inflexion(u)=Coef(j-1); X(i)=Freq(j-1); Y(i)=Ampl(j-1); u=u+1; else end end end
En clair l'idée de mon deuxième code n'est pas la bonne ou alors pas complète.
Je me tourne donc vers vous, comment feriez vous pour trouver les points d'inflexion d'une courbe ( sachant que ce ne sont pas forcément les min/max de la courbe)? Avez vous un exemple de programme?
Je vous remercie encore, car toute aide est la bienvenue.
Partager