-
"Pente" sur Matlab
Bonjour tout le monde !
Dans le cadre de mon stage je suis amené à utiliser Matlab, malheureusement vu mon niveau.. c'est pourquoi je me tourne vers vous en espérant que quelqu'un puisse m'apporter des solutions à mon problème. Sans plus attendre passons maintenant au vif du sujet.
Suite à une expérience j'ai obtenu des valeurs dans un fichier texte, valeurs que j'ai pu importer sur Matlab et en tracer la courbe. Une fois la courbe tracée je cherche ensuite à déterminer la pente sur différents points. Pièce jointe 472539
Comme vous pouvez le voir sur l'image, je voudrais avoir la pente de cette courbe pour les valeurs en pression allant de 5 à 30mN/m avec un pas de 5mN/m (les valeurs avant 5mN/m ne m'intéresse plus). J'ai utilisé plusieurs méthodes mais sans succès. Help !
Merci à vous !
-
Bonjour,
Tu peux utiliser :
Ou les moindres carrés d’ordre deux.
-
J'ai déjà essayé mais il m'affiche systématiquement une erreur, "Difference order N must be a positive integer scalar".
-
Bonjour,
Fais-nous voir ce que tu as programmé.
-
Alors j'ai fini par trouver un moyen qui me donne des résultats, cependant je pense que y a un souci car l'acquisition se fait avec du bruit c'est pourquoi je pense que la pente "locale" que je calcul est fausse, une solution serait de lisser la courbe je pense en faisant un produit de convolution de la courbe avec une gaussienne mais le souci c'est que je ne sais pas comment on fait ça sous Matlab. Je vous montre mon code pour l'instant :
derr=diff(P);derive=der./0.5
derive(A==126) ----> valeur en x
ans
= 0.0146 ----> mon résultat pour la pente
Mais comme dit plus haut il suffit que je varie de 0.01 que le résultat est complètement différent.
Merci pour votre aide !
-
Bonjour,
On ne peut pas utiliser diff sur la fonction brute. Il faut effectuer un lissage au préalable (polyfit et polyval)
Puis tu peux utiliser :
Où tu programmes les moindres carrés.
-
Bonjour, merci beaucoup pour ton aide !