Lisser une courbe

Lisser une courbe - C++ - Programmation

Marsh Posté le 04-03-2005 à 15:30:53    

Bonjour à tous.
 
Je vais vous expliquer mon sujet en résumé:
Je dois réaliser un logiciel pour une entreprise qui réalise des pièces automobiles. Ces pièces sont testées sur un banc d'essai.
Je dois faire afficher une courbe à partir des résultats relevés par l'automate.
L'entreprise me demande de lisser cette courbe.
Après demande d'information, on ma conseillé d'utiliser la méthode des moindres carrées.
 
Mes questions sont:
- Existe-t-il une fonction qui permet de mettre en oeuvre la méthode des moindres carrées ?
- Sinon, quelle est la formule pour que je puisse lisser celle-ci ?
 
Merci d'avance, à bientot.

Reply

Marsh Posté le 04-03-2005 à 15:30:53   

Reply

Marsh Posté le 04-03-2005 à 15:48:39    

La "formule" est très simple et peut-être trouvée par Google.
 
Ce que je me pose plutôt comme question, c'est quelle genre de courbes tu veut choisir pour faire ton lissage (une droite, une exponentielle ...). C'est la première question a se avoir.

Reply

Marsh Posté le 04-03-2005 à 17:55:15    

C'est une courbe quelconque étant donné que l'automate récupère des points d'un test effectué sur une pièce métallique et donc la courbe n'est pas constante, il y a des hauts et des bas.

Reply

Marsh Posté le 04-03-2005 à 18:07:40    

gnuplot smooth bezier par exemple :)
http://theochem.ki.ku.dk/on_line_d [...] tml#IDX264

Reply

Marsh Posté le 04-03-2005 à 18:08:35    

Je répète ma question : une fois que tu as tout tes points, tu cherches à les approcher par une courbe, qui ne passera donc pas par ces points mais à leur proximité (d'après ce que je comprends).
Dans ce cas, quelle forme de courbe souhaites tu prendre pour approcher tes points : une droite (courbe y = a x + b), une parabole (y = a (x-b)^2 + c), ...
 
Je me demande si tu ne cherches pas plutot une courbe qui passerait par tous les points et dont la dérivée serait continue, genre "bézier" ?

Reply

Marsh Posté le 04-03-2005 à 18:09:43    

Zut, Evadream - jbd- a été plus rapide que moi pour parler de Bézier.
 
NB : Dans ce cas, ce problème de Bézier n'a rien à voir avec la méthode des moindres carrés.

Reply

Marsh Posté le 04-03-2005 à 18:35:05    

Non pas une courbe de type bézier.
 
Une courbe dans le genre (J'vais parlé un peu de physique):
Dans le cas du traitement numérique du signal:
On a un signal entrant. Ce signal a des parasites. Et ce que je souhaite, c'est éliminer ces parasites grâce au "filtre anti-repliment".
 
Donc pour en revenir au sujet, je veux une courbe qui se rapproche des points non pas de type droite (ax+y), ni de type parabolique. Et pour éliminer ces "parasites", il faut que j'utilise la méthode des moindres carrées. A moin qu'il existe une autre solution.

Reply

Marsh Posté le 04-03-2005 à 20:56:31    

tu peux les eliminers avec la méthode des tetes aux carrés [:mad666]

Reply

Marsh Posté le 04-03-2005 à 22:59:35    

En gros, ce que tu aimerais c'est trouver dans tes données les "parasites". Je m'y connais pas, donc je vais surement dire des bêtises. Si tu appliques une méthode de type moindre carrés, les parasites auront une influence, tu ne les éviteras pas.
 
Il te faut qqchose de plus "robuste", pourquoi pas une méthode des moindre s carrés médian (LMS/Least Median Squares, avec ca tu devrais trouver de la doc sur google) ? Ca te "détectera" les parasites.  
 
Mais ca ne résoudra pas le problème je pense (connerie inside ?), car pour appliquer un LMS, il faut que tu te donnes un modèle sur lequel tu veux effectuer ta regression (linéaire, non linéaire...).
 
Une fois que tu as déterminé les parasites, il faut que tu "cales" un modèle sur les points restants. A toi de choisir le modèle à plaquer sur ton jeu de données nettoyé.
 
A prendre avec des pincettes hein [:ddr555]


Message édité par Evadream -jbd- le 04-03-2005 à 23:00:47
Reply

Marsh Posté le 05-03-2005 à 00:02:34    

J'vais me documenter sur la méthode des moindres carrées médian. J'vais voir ce que ca peut donner.
 
MErci à tous, je vous tiendrais au courant.

Reply

Marsh Posté le 05-03-2005 à 00:02:34   

Reply

Marsh Posté le 05-03-2005 à 10:54:35    

Filtres de Savitzky-Golay :sol:  
Un chapitre leur est consacres dans le Numerical Recipes:
http://www.library.cornell.edu/nr/bookcpdf/c14-8.pdf

Reply

Marsh Posté le 05-03-2005 à 12:58:23    

Effectivement, c'est chouette :)
Je connaissais pas du tout ! Merci ! @+

Reply

Marsh Posté le 05-03-2005 à 17:06:04    

Dans le genre simple et efficace, le lissage par moyennes locales peut donner de très bons résultats...
Sinon si tu veux éliminer des parasites c'est pas un lissage que tu veux mais un filtrage => traitement du signal.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 07-03-2005 à 20:45:50    

Merci pour la DOC JeSuisPasUnNumero. Je pense que ca va me servire.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed