IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement du signal Discussion :

Extrapolation sur un échantillon sinusoidal


Sujet :

Traitement du signal

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut Extrapolation sur un échantillon sinusoidal
    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

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Points : 752
    Points
    752
    Par défaut
    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.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut


    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

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    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

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    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

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    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 !

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    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

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    je te signale que c'est ce qu'on te dit depuis le début ...
    Oui oui, j'avai bien noté ! Ma réponse ne suggérait pas que j'avai réinventé la roue, c'est juste que vos réponses me font graduellement changer d'avis (et apparemment, c'est souhaitable... Parce que j'allais dans le mur).

    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

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    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 ou
    "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

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    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 !

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par neoirto Voir le message
    - 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 ?


    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

  12. #12
    Membre éclairé
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Points : 752
    Points
    752
    Par défaut
    Peut-être que si tu nous donnais un échantillon de tes données nous pourrions plus facilement nous rendre compte des éventuelles problèmes...

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    tu n'as qu'un point de mesure ????
    Hummmm, well... Et bah non, j'ai une série de données !
    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 !

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par neoirto Voir le message
    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.


    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 problème bien posé est à moitié résolu..
    • Ce qui se conçoit bien s'énonce clairement..
    • Et les aides viennent donc naturellement..
    "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

  15. #15
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    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

  16. #16
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    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.

Discussions similaires

  1. Test de normalité sur gros échantillons
    Par enicnath dans le forum SAS STAT
    Réponses: 2
    Dernier message: 02/12/2013, 10h04
  2. compter les fronts montant sur un sinial sinusoidal
    Par tamtit dans le forum LabVIEW
    Réponses: 9
    Dernier message: 03/09/2012, 09h35
  3. [Débutante] Extrapolation de point sur une carte
    Par chlorure007 dans le forum MATLAB
    Réponses: 5
    Dernier message: 16/12/2008, 15h48
  4. [Macro] Calcul sur échantillon mobile
    Par jacksparow dans le forum Macro
    Réponses: 2
    Dernier message: 20/09/2008, 14h15
  5. Besoin d'aide sur une sinusoide
    Par BruceBoc dans le forum Physique
    Réponses: 5
    Dernier message: 11/04/2007, 22h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo