Bonjour
je cherche une methode pour lisser une courbe.
Vous trouvez si joint l'allure de ma courbe.
Merci
Bonjour
je cherche une methode pour lisser une courbe.
Vous trouvez si joint l'allure de ma courbe.
Merci
salut
tu as oublié la piece jointe
sinon les fonctions spline ou interp1 te seront probablement utile
voir polyfit si tu veux un lissage polynomiale
Fabien
j'ai essayé avec spline mais j'ai obtenu des erreurs
voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 I0=power(10,(-12)); n=1.2; t=1:1:300; i=I0*power(t,(-n)); i=i+I0/10*sin(2*3.14*100*t); M=[t',i']; save data0.txt M -ASCII; PP = spline(i,t); plot(t,i,'r',t,pp,'b');
Attention il y a une erreur dans ton code :
Si c'est juste une étourderie au moment de recopier le code, montre nous le message d'erreur renvoyé par MATLAB, nous n'allons pas le deviner tout seul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part pp = spline(i,t);
Sinon, vu l'allure de ta courbe, je me demande bien à quoi devrait ressembler le résultat lissé ?
voici le message d'erreur
Undefined function or variable 'pp'. Error in spl (line 9) plot(t,i,'r',t,pp,'b');
En effet mon but est d’éliminer les oscillations et que la courbe devienne linéaire
comme la courbe en pièce jointe
j'ai essayé avec spline et interp1 mais j'ai pas obtenu le resultat que je cherche
salut
spline ou interp1 font de l'interpolation (éventuellement "lissée")
et necessitent donc un 3ème paramètres qui est dans ton cas un nouveau vecteur i plus précis
cependant, comme il s'agit d'interpolation, les points existant seront toujours les même (on calcul des points manquants) et donc le bruit sera toujours là
pour enlever le bruit :
- tu peux filtrer ton signal (fonction filter ou à la main)
- tu peux faire un lissage polynomial si ton signal a une tête polynomial ou du curve fitting de manière général si tu connais la tête de ton signal
En première approximation, tu pourrais t'inspirer des informations données dans cette discussion : régression avec une contrainte
ou de cet exemple utilisant filter
la discussion vers laquelle ta renvoyée est vraiment bien adapté à ton cas.
je pense que tu devrais la lire avec attention et essayer de comprendre ce qui est expliqué dedans et de faire des tests avec les nombreux bout de code qu'il y a noté à l'intérieur de cette discussion.
si tu fais l'interpolation par une exponentielle comme expliqué dans la discussion que ta envoyé DUT je pense que tu auras le résultat que tu souhaites
bon courage
Bonjour,
Différentes méthodes de lissage, de la plus simple à la plus technique:
- Moyennes mobiles (filter())
- Lissage par noyaux (dans le même esprit que ksdensity())
- Splines
- Lissage dans l'espace des fréquences: Fourrier (fft()) et ondelettes (wavedec())
Salut,
Si tu as la toolbox qui va bien et que tu ne souhaites pas trop rentrer dans les détails de la méthode de lissage, tu peux utiliser "smooth".
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager