|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : juin 2008 Messages : 66 ![]() |
Bonjour à tous,
Je dispose d'un certain nombre d'échantillons issus d'un gyroscope, me donnant une courbe f(t) = position angulaire. Ces données sont très peu bruitées (on pourra considérer qu'elles ne le sont pas pour simplifier les calculs) et dessinent des courbes de type sinusoide assez propres. Je cherche à extrapoler (en post-traitement) des données intermédiaires avec par exemple : - à partir de 3 données A(TA, VA), B(TB, VB), C(TC, VC), en sachant que l'écart de temps entre chaque valeur n'est pas constant, - trouver la valeur Vintermediaire pour TB < Tintermediaire < TC. Comme il s'agit de post-traitement, au lieu de 3 données de départ, je peux tenir compte d'autant de valeurs postérieures à ma valeur de Tintermediaire que de valeurs antérieures si nécessaire. Je suppose donc qu'il doit exister une méthode me permettant de trouver cette valeur intermédiaire avec une précision correcte à partir des dérivées première et seconde ? Si c'est le cas, merci d'avance pour votre aide |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Doctorant en informatique Inscription : juin 2009 Messages : 244 ![]() |
Si la sinusoide est propre pourquoi ne pas directement fitter la sinusoide sur toutes tes données ? une fois que tu en as les parametre tu utilises directement la fonction analytique.
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
![]() Absolument.. Et si ce n'est pas une sinusoide mais une courbe de style cubique, tu peux utiliser un cubic cpline
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : juin 2008 Messages : 66 ![]() |
Merci de vos réponses !
Cela m'a permis de trouver la librairie ALGLIB. Pouvez-vous me dire si le fait que mes echantillons soient pris à des intervalles de x variables risque de me causer des soucis ? Quelqu'un a t il deja utilisé cette librairie, et qu'en pensez-vous ? Merci encore |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
absolument pas..
C'est le principe du cubic cpline : en général le calcul des coefficients (cubique par morceaux) est fait une fois, puis on peut interpoler justement sur des pas réguliers.. Le seul point, qui est valable pour pratiquement toutes les interpolations sauf les interpolations linéaires, est que si 2 points sont très rapprochés encadrés par 2 points plus éloignés, mais également éloignés en ordonnées, cela peut amener à des "oscillations".. Mais vu ce que tu dis de ton cas ce ne sera pas le cas pouisque la curbe est assez régulière. Maintenant, si tu sais que c'est réellement une sinusoide, un moindre-carrés serait plus facile.. y = b + c sin(x)
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : juin 2008 Messages : 66 ![]() |
Je vois le probleme de l'oscillation des cubiques spline. ALGLIB propose les Akima spline pour éviter ce problème, je pourrai essayer les 2 pour le coup.
Sinon en fouillant un peu, je me demande si il est judicieux d'imposer le passage par les points de départ. Est ce qu'un fitting ne serait pas plus adapté ? Je m'explique : Mes valeurs de Y ne sont pas bruitées, mais seront limitées en résolution, donc on introduit un biais en forçant à passer par la valeur exacte de Y. Alors existe-t-il un type d'interpolation qui me permet de prendre en considération ce paramètre : par exemple, si ma résolution est de 1 et le bruit de 0, lorsque j'alimente avec par exemple une valeur de N(X=2, Y=3), je souhaite qu'à X=2, ma courbe interpolée ait une valeur de : 3 < Yinterpol < 4 ? Merci de ton aide souviron34 ! |
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
je te signale que c'est ce qu'on te dit depuis le début ...
![]() Je crois que tu confonds interpolation et fitting. Le fitting peut se faire par la méthode des moindres carrées (par exemple) facilement.. Une fois les paramètes de ta sinusoide ainsi obtenus, tu pourras facilement interpoler à la valeur que tu veux.. Note : Bien entendu, les splines passent par les points : c'est leur défintion et leur utilité.. Des interpolations ne passant pas par les points peuvent être par exemple Béziers..
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#8 | |
|
Invité régulier
![]() Inscription : juin 2008 Messages : 66 ![]() |
Citation:
Donc le fitting qu'il me faut ne passe pas par les points c'est ça ? Et donc cette méthode est certainement préférable ? Existe-t-il un mot clé que je devrai connaitre pour lui assigner un intervalle de "décallage aux points de réference" en rapport à ma résolution de mesure ? Merci encore et désolé pour le malentendu |
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
De rien..
Je ne comprend pas trop ton histoire de mot-clé.. Tu as une formule représentative : y = a sin (x -x0) + b tu passes tous tes points de mesure avec cette formule,, et grâce aux moindres carrés tu en tires a et b et x0. Je ne connais pas cette biblothèque,mais tu a sla description générale d'un moindre-carrés ici ou là ou là
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : juin 2008 Messages : 66 ![]() |
Ok, je viens de potasser un peu les liens que tu m'as transmis.
Déjà finalement, je pense qu'il serait plus juste de fitter sur une parabole plutot, mais j'imagine que ça ne change pas grand chose sur le principe du least square ? Ensuite, concernant mon probleme de résolution : - en considérant que je n'ai pas de bruit sur la mesure, - et sachant que la résolution de mon capteur est de 1.00, lorsque je mesure le point N( X=2 Y=3 ), je sais donc que la courbe fittée doit passer entre 3 et 4 pour X=2. Donc j'aimerai savoir si il existe un moyen de forcer l'algo de least squares à passer par cet intervalle, et donc à ajouter une contrainte à l'algo ? Si ce n'est pas le cas, je peux peut être forcer un peu l'algo en rajoutant des points ? Par exemple, pour X=2, au lieu d'alimenter l'algo avec uniquement N(2 3), je pourrai peut être rajouter manuellement un point N'(2 4), ce qui aurait naturellement tendance à éviter que la courbe ne s'éloigne de cet intervalle, non ? Et donc, encore merci ! |
|
|
00
|
|
|
#11 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
Citation:
tu n'as qu'un point de mesure ???? On ne fait pas d'interpolation, quelle qu'elle soit, avec 1 point.. Si tu en as N, si N n'est pas trop faible, ton interpolation marchera.. Si par exemple tu as un point X=2, X=5, X=7, x=10, .. et que tu calcules les moindres carrés de ta sinusoide, le point X=2 devrait être à la bonne valeur puisque tu dis que c'est quasiment pas bruité.. (si c'est bien une sinusoide que tu as)
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Doctorant en informatique Inscription : juin 2009 Messages : 244 ![]() |
Peut-être que si tu nous donnais un échantillon de tes données nous pourrions plus facilement nous rendre compte des éventuelles problèmes...
|
|
|
00
|
|
|
#13 | |
|
Invité régulier
![]() Inscription : juin 2008 Messages : 66 ![]() |
Citation:
J'essai de vous sortir un échantillon, parce que pour l'instant c'est un format prorietaire de l'electronique que j'utilise via rs232 et j'ai juste une sortie graphique. Mais de toute façon je devais le coder bientot, alors je m'y mets. Sinon ce ne sont pas des sinusoides, ça y ressemble. Ce serait donc plus proche de paraboles finalement. Pour vous faire une idée, ça ressemble à des montagnes russes avec des pentes très différentes d'une "montagne" à l'autre, parfois ca monte, parfois ça descends, mais avec des phases de decceleration et d'acceleration progressives. Sans quoi, l'histoire de la contrainte d'intervalle, ça n'existe pas ? Cool c'est de la recherche alors ! |
|
|
|
00
|
|
|
#14 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
Citation:
Bon... Relis tes posts depuis le début: tu nous dis que c'est une sinusoide parfaite.. Dans ton cas, alors, ce n'est pas un moindre-carrés qu'il te faut mais une approximation polynomiale ou de Bziers (si tu ne veux pas passer par les points), ou un spline si tu veux passer par tes points.
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Inscription : juin 2008 Messages : 66 ![]() |
Ok, autant pour moi, et va pour Béziers, alors. Je vous ai effectivement un peu induit en erreur.
[Joke]Et Béziers, est-ce que ça marche avec un seul point ?[/Joke] Merci de votre aide |
|
|
00
|
|
|
#16 |
|
Membre émérite
![]() Chercheur Inscription : mars 2010 Messages : 733 ![]() |
Bonjour,
une solution très simple à mettre en oeuvre et qui fonctionne très bien : les séries de Fourier. L'algorithme s'écrit : 1. calculer les coefficients de la transformée de Fourier discrète à partir de ton échantillon, 2. extrapoler aux points que tu souhaites en utilisant la transformation de Fourier discrète inverse. Idéalement, il est préférable que ton échantillon corresponde à des points de mesure équidistants mais si ce n'est pas le cas tu peux également utiliser des transformées de Fourier non uniformes. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com