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 :

Détection de paliers


Sujet :

Traitement du signal

  1. #1
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut Détection de paliers
    Bonjour à tous,
    je cherche à effectuer une détection de paliers sur un signal bruité et ayant parfois des accidents.
    j'utilise une logique "terrain" pour détecter mes changements de paliers et créer une séparation.

    edit : suppression

    Pour faire cela, n'ayant aucune connaissance particulière en traitement de signal, je teste la valeur absolue du delta de (n - n+1) supérieure au bruit de mon signal pour supprimer les valeurs incohérentes, et ensuite une autre passe pour détecter le changement de palier. Mes changements de paliers c'est le remplacement d'une valeur par une valeur de détection qui ne doit pas apparaître dans le signal.


    Nom : 1.png
Affichages : 697
Taille : 59,1 Ko
    Auriez vous des conseils, des avis, besoins de plus de précision ?

    Merci

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 253
    Par défaut
    Bonjour,
    En effet, le calcul d'une dérivée est une bonne manière de détecter des variations (montée, descente, palier).

    Pente = (Valeurn+1 - Valeurn) / (n+1 - n)
    Pente > 0 le signal augmente
    Pente = 0 le signal est sur un palier
    Pente < 0 le signal descend

    Le bruit ou les accidents devraient pouvoir être détectés au travers de la valeur de "Pente" en faisant un tri et en mettant à 0 les plus petites valeurs selon un seuil qu'il t'appartient de choisir. Il ne devrait rester que les grandes variations et un palier c'est ce qui se trouve entre 2 variations.

    Je vois que prend la valeur absolue de la pente, ça revient au même, si ce n'est que tu perds le sens de la variation (ça monte ou ça descend) mais cette information ne 't'intéresse peut être pas.

  3. #3
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Bonjour,

    effectivement je n'utilise pas le sens de la variation, car la logique de mon signal est d'avoir des paliers montants et descendants avec une sollicitation plus ou moins symétrique. D'où ma vérif en valeur absolue. Ensuite cela alourdissait le traitement pour la détection des paliers en fonction du sens de la pente.

    Ayant un pas de mesure à la seconde le /(n+1 - n) n'est plus utile, mais effectivement c'est une dérivée, que je traite en delta. je l’applique une première fois pour supprimer mes valeurs fausses. Comme le pic du premier palier (100) qui est causé par le démarrage de la sollicitation. Ensuite je détecte et marque mes paliers pour le traitement ultérieur. Je ne sais pas si c'est approprié de mettre du code ici, mais voici celui que j'e tente d'affiner pour le traitement du signal.

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #Recuperation des valeurs pour detection separation des paliers avec
    paliers_mark = -0.03 #Valeur pour marquer la séparation des paliers
    def sep_values(sv):
        seuil = 0.021 #seuil de détection des changements de paliers
        sensibilite = 0.001 #seuil de nettoyage
        #valuesc = [0]*len(sv)
        nb_values = len(sv)
        values_sep = []#Donne brute avec identification des étages
        nb_remplacement = 1
        for i in range(nb_values-nb_remplacement):
            if abs(sv[i]-sv[i+1])>sensibilite:
                sv[i]=sv[i-nb_remplacement]
            else:
                sv[i]=sv[i]
        for i in range(nb_values-1):
            if  abs(sv[i]-sv[i+1])>seuil:
                values_sep.append(paliers_mark)
            else:
                values_sep.append(sv[i])
        return values_sep

    Le traitement et la détection est plus propre, Nom : 1.png
Affichages : 630
Taille : 21,3 Ko, j'ai corrigé certaines erreurs depuis le premier post.

    Je suis quand même un peu gêné car je fais une espèce de moyenne mobile, un écrêtage du signal qui le dénature un peu. Comme dans un des traitements qui suivent je calcule un eecartype^^, il est un peu biaisé. Je vais tenter de regarder à l'augmenter un peu.

    Je ne sais pas si d'autre méthode ou algo existant pouvait avoir un intérêt pour ce traitement, s'il n'y a pas de méthode plus efficace je vais continuer sur cette base.

    Merci

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 253
    Par défaut
    Bonjour,
    Pour retirer le bruit / accidents / artefacts, je ne vois pas d'autres méthodes que le filtrage tel que tu le fais ici (une moyenne quelle qu'elle soit est un filtre pas bas). Ensuite l'application d'un filtre engendre nécessairement la perte d'information, ça dénaturera la signal forcément.

  5. #5
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Merci,
    je vais donc bosser sur le code et essayé de mieux gérer ma sensibilité avec quelques moyenne de delta de plusieurs signaux.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détection d'un palier sur un signal
    Par MottetCCSF dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 12/06/2007, 11h41
  2. détection de player
    Par mat10000 dans le forum Flash
    Réponses: 8
    Dernier message: 23/10/2003, 16h36
  3. Détection MySql
    Par gjullien dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/08/2003, 18h15
  4. Détections avec WebBrowser
    Par Wazo_Sportive dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/08/2002, 19h32
  5. Détection de 2 touches appuyées
    Par cyrose dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 16h25

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