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 :

changement brusque dans un courbe


Sujet :

Traitement du signal

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 168
    Points : 82
    Points
    82
    Par défaut changement brusque dans un courbe
    Bonjour,

    mon problème est détecter une région dans une courbe obtenu on traçant des valeurs d'un tableau. cette région est considérée comme erreur ou trou.

    j'ai attaché le graphique de la fonction et je voulais savoir quelles sont vos suggestion pour détecter cette erreur automatiquement.

    la région "trou" est en rouge.

    j'ai pensé à l’interpolation, la régression.. mais je suis pas doué en math

    Merci de me donner vos avis pour la meilleure méthode que je peux coder.
    Images attachées Images attachées  

  2. #2
    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,

    ça dépend ce que tu entends par "détecter". Tu veux éliminer le trou ou trouver la plage des abscisses à laquelle il correspond?

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 168
    Points : 82
    Points
    82
    Par défaut
    Beh, éliminer le trou c'est ce que je cherche vraiment.

    Mais même s'il y une méthode qui me donne seulement la plage des abscisses, c'est bien aussi, elle peut me servir.

  4. #4
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Faire passer la dérivée seconde dans un filtre passe-bas devrait donner des premiers résultats.
    -- Yankel Scialom

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 168
    Points : 82
    Points
    82
    Par défaut
    mais j'ai pas la fonction de cette courbe. ce sont les valeurs d'un tableau. comment faire la dérivée seconde dans ce cas?

  6. #6
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Tu la calcules numériquement.

    Partant de la définition de dérivée


    On arrive à une approximation numérique


    Une fois l'estimateur de f seconde obtenu, tu peux obtenir une version filtrée de f en intégrant numériquement à deux reprises f seconde filtrée.

    Cdlt,
    -- Yankel Scialom

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 168
    Points : 82
    Points
    82
    Par défaut
    je suis un peu débutante donc j'ai pas tout à fais compris.

    bon ce que j'ai compris c'est que :

    J'ai mon tableau T, la dérivé de ce tableau est T1 tel que :

    T1[i]=T[i+1]-T[i]

    est ce que c'est bien ça ?

    si oui , quoi faire pour une deuxième dérivée?

    sinon merci de me bien explique ce que tu veux dire

  8. #8
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    La dérivée seconde est la dérivée de la dérivée.
    -- Yankel Scialom

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 168
    Points : 82
    Points
    82
    Par défaut
    merci pour ton aide.

    J'ai fais ce que tu m'as dis et voila maintenant les deux courbes, celle du tableau et celle de la dérivée seconde.

    comment pourrai-je traiter le trou maintenant.

    un filtre passe bas vas supprimer les hautes fréquences dans le tableau dérivé. donc comment cela va éliminer mon trou qui est toute la ligne rouge dans l'image attachée précédemment?
    Images attachées Images attachées  

  10. #10
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    J'ai commis une erreur de réisonnement, ce n'est pas la dérivée seconde qu'il faut filtrer, mais la dérivée première. Heureusement, il est possible de faire cela en seuillant la dérivée seconde

    Donc maintenant,
    1/ tu remplaces les valeurs de ta dérivée seconde qui dépasse disons ... 10, par 10
    2/ tu intègres deux fois cette fonction seuillée
    3/ enjoy ?
    -- Yankel Scialom

  11. #11
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 168
    Points : 82
    Points
    82
    Par défaut
    désolée mais j'ai pas bien compris !

    s'il faut travailler avec la première dérivée, eh ben dans le graphe que j'ai attaché, j'ai mis les deux : la première et la deuxième.

    Je dois utiliser quoi exactement? la première ou la deuxième?

    sinon les 3 étape c'est pour faire quoi exactement?

    et ce que j'ai pas compris aussi et qu'on traite le tableau de la dérivée donc comment faire avec le tableau originale après?!

  12. #12
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Points : 827
    Points
    827
    Par défaut
    Salut,

    Il y a une méthode simple ( voire simpliste, mais peux gourmande en calculs et en temps de mise au point ) pour lisser ta courbe :

    Tu donnes à un point l'ordonnée moyenne des 2*k points voisins :

    Si tu as n échantillons E alors on aura pour i = k à n-k : Efiltré[i] = (Somme(E[t])) / (2*k+1) avec Somme(E[t]) = E[i-k]+...+E[i]+...+E[i+k]

    Tu perds les k premiers échantillons et les k derniers, mais tu obtiens une courbe "lissée".
    Tu adaptes la valeur de k en fonction du lissage souhaité

    Je répète que cette méthode est simpliste, mais comme je ne connais pas le cahier des charges précis de ce que tu souhaite ( à part boucher ce trou dans la courbe )...

    Si tu veux quelque chose de plus "costaud", il faut regarder de coté des transformées de Fourrier et transformées de Fourrier inverses... mais c'est plus compliqué...
    Voici un début : Transformée de Fourier discrète

  13. #13
    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
    Bonsoir,

    la méthode de bertry est très efficace.
    C'est ce que font les boursicoteurs : ils utilisent la méthode des centres mobiles pour cela.

  14. #14
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par bertry Voir le message
    Salut,

    Il y a une méthode simple ( voire simpliste, mais peux gourmande en calculs et en temps de mise au point ) pour lisser ta courbe :

    Tu donnes à un point l'ordonnée moyenne des 2*k points voisins :

    Si tu as n échantillons E alors on aura pour i = k à n-k : Efiltré[i] = (Somme(E[t])) / (2*k+1) avec Somme(E[t]) = E[i-k]+...+E[i]+...+E[i+k]

    Tu perds les k premiers échantillons et les k derniers, mais tu obtiens une courbe "lissée".
    Tu adaptes la valeur de k en fonction du lissage souhaité
    S'il faut juste lisser la courbe (sans ignorer complètement le "trou"), pourquoi ne pas plutôt utiliser une fenêtre glissante ?
    Si T est le tableau de données à traiter, on défini S comme suit :
    S[n+1]=alpha*E[n+1] + (1-alpha)*S[n] avec alpha entre 0 et 1 (0.1 à 0.2 pour être viable). On peut définir S[0] = T[0].

    Cdlt,
    -- Yankel Scialom

  15. #15
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    La toute première question à te poser est : d'où vient ce trou ?
    Est-ce vraiment un artefact, peux tu en éliminer les causes ?
    Rafistoler de mauvaises données par des traitements informatiques est casse-gueule et ne doit être utilisé qu'en dernière extrémité.
    Si c'est le cas, la deuxième question est : qu'est-ce qu'un trou ? Comment le définir mathématiquement pour qu'un ordi puisse comprendre ? Et comment définir la "bonne" fonction ?
    Un indicateur est une variation brutale : abs(Y(n+1)-Y(n))> un seuil, mais celà ne te dis pas si c'est une transition bon-trou ou trou-trou ou trou-bon. Il y a les 3 cas dans ton exemple.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  16. #16
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 168
    Points : 82
    Points
    82
    Par défaut
    Envoyé par bertry
    Salut,

    Il y a une méthode simple ( voire simpliste, mais peux gourmande en calculs et en temps de mise au point ) pour lisser ta courbe :

    Tu donnes à un point l'ordonnée moyenne des 2*k points voisins :

    Si tu as n échantillons E alors on aura pour i = k à n-k : Efiltré[i] = (Somme(E[t])) / (2*k+1) avec Somme(E[t]) = E[i-k]+...+E[i]+...+E[i+k]

    Tu perds les k premiers échantillons et les k derniers, mais tu obtiens une courbe "lissée".
    Tu adaptes la valeur de k en fonction du lissage souhaité
    bonjour,
    Lisser la courbe globalement donne de résultats mais peux causer la perte des données bien calculer dans le tableau.

    en plus la méthode prends beaucoup de temps alors que je dois l'appliquer sur des centaines de tableau.

    Envoyé Nebulix
    La toute première question à te poser est : d'où vient ce trou ?
    Est-ce vraiment un artefact, peux tu en éliminer les causes ?
    Rafistoler de mauvaises données par des traitements informatiques est casse-gueule et ne doit être utilisé qu'en dernière extrémité.
    Malheureusement on peut pas éliminer les causes. ce sont des valeur estimées dans un environnement non controlé.
    Envoyé Nebulix
    Si c'est le cas, la deuxième question est : qu'est-ce qu'un trou ? Comment le définir mathématiquement pour qu'un ordi puisse comprendre ? Et comment définir la "bonne" fonction ?
    Un indicateur est une variation brutale : abs(Y(n+1)-Y(n))> un seuil, mais celà ne te dis pas si c'est une transition bon-trou ou trou-trou ou trou-bon. Il y a les 3 cas dans ton exemple.
    Un trou est tout cours un changement brutale dans la fonction.

    l'utilisation du gradient comme prgasp77 a dit. mais le problème c'est que on utilisant le gradient on peut détecter des changement brusques seulement mais on peux pas définir toute la plage de ce trou parce qu'elle est considéré comme bonne estimation (pas de changement brusque dans le trou lui même.

    Donc ce qui me reste à faire c'est à partir du gradient définir toute la plage pas seulement les changements brusque ponctuels.

    j'espère que cela va éclaircir la problématique.

    merci tous de votre aide

  17. #17
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    La toute première question à te poser est : d'où vient ce trou ?
    Sur le fond, je pense que Nebulix a raison, à un détail près: ça n'est pas la toute première question, mais la deuxième. La première que nous devrions te poser pour pouvoir t'aider pourrait être "d'où viennent tes données?" ou "que représentent-elles?"
    En effet, sur ce forum, il arrive souvent qu'un intervenant nous appelle à l'aide au moment où ça plante, alors que ça plante parce qu'il a commis une erreur bien avant.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

Discussions similaires

  1. un journal de changement effectués dans la base
    Par mahboub dans le forum Access
    Réponses: 2
    Dernier message: 20/12/2006, 16h33
  2. Réponses: 3
    Dernier message: 29/05/2006, 17h05
  3. algorithme detection de pics dans une courbe
    Par bfb dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 31/03/2006, 11h08
  4. détection de changement brusque des couleurs
    Par zidenne dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/02/2006, 21h26
  5. pb changement logo dans état?
    Par cesar33 dans le forum Access
    Réponses: 2
    Dernier message: 29/09/2005, 13h27

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