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

Python Discussion :

Comparaison de listes avec marge d'erreurs


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2010
    Messages : 178
    Par défaut Comparaison de listes avec marge d'erreurs
    Bonjour,
    J'ai une carte d’acquisition de tensions comprenant plusieurs entrées analogique.
    Chaque entrées ressort une valeur comprise entre 0 et 255.

    Je place ces valeurs dans une liste, elles sont mises à jours régulièrement et comparés aux valeurs précédentes afin de détecter un changement.

    Exemple type simplifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Value_analogique_in_prece = [] 
    Value_analogique_in = []
    While True:
          ...Fonction d’acquisition...
          Value_analogique_in = [a,b,...] #Résultat type
          if (Value_analogique_in != Value_analogique_in_prece)
                 print "Changement détecté!"
          Value_analogique_in_pre = Value_analogique_in
    Sa fonctionne très bien à un détail près ! Les valeurs retournés sont instables.
    Pour une valeur de base de b, il peut ressortir b(+-)x. Cela me génère donc des alertes non stop .

    Comment autoriser une marge d'erreur qui engloberait x?

    Merci !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    On ne peut plus se contenter de comparer les listes directement, il faut faire la comparaison élément par élément (sauf à utiliser numpy).
    Mais ce n'est pas bien compliqué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def presque_egal(l1, l2, eps):
        for i in range(len(l1)):
            if abs(l1[i] - l2[i]) > eps: return False
        return True
    Utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if not presque_egal(Value_analogique_in, Value_analogique_in_prece, 3):
        print "Changement détecté!"
    ou en plus court:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def presque_egal(l1, l2, eps):
        return all(abs(a-b) <= eps for a,b in zip(l1,l2))
    Et si l1 et l2 sont des tableaux numpy:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def presque_egal(l1, l2, eps):
        return all(abs(l1-l2) <= eps)

  3. #3
    Membre chevronné

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2010
    Messages : 178
    Par défaut
    Je viens d'essayer et sa fonctionne niquel !
    Merci !

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

Discussions similaires

  1. [XL-2007] Erreur comparaison de temps avec timevalue
    Par isfet dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/08/2010, 12h59
  2. [Toutes versions] code alerte avec marge d'erreur d'un nombre
    Par croky23 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2009, 09h36
  3. comparer 2 tableau de int avec marge d erreur
    Par jerome86600 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 17/07/2006, 14h31
  4. comparer 2 tableau de int avec marge d erreur
    Par jerome86600 dans le forum Visual C++
    Réponses: 0
    Dernier message: 14/07/2006, 13h02

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