Comparaison de signaux numériques
Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

Comparaison de signaux numériques



  1. #1
    invite0ac39844

    Comparaison de signaux numériques


    ------

    Bonjour à tous,

    Je cherche à comparer des signaux numériques fraichement acquis avec des signaux d'une base de donnée sur mon ordinateur.

    J'ai cependant un peu de mal à établir les critères qui me permettraient de les comparer.

    Je travaille en langage Python avec des signaux non périodiques (issus de capteurs accélérométriques).

    J'ai déjà une petite fonction qui compare les signaux par étude de leurs extréma (s1 à un maximum de tant et un minimum de tant, ce qui est proche du signal A de la base de [Suis-je clair? ]

    Je voulais comparer les FFT des différents signaux mais cela se révèle infructueux...

    Auriez-vous des idées de critères de comparaison,

    Chaleureusement,
    M.E.

    -----

  2. #2
    jiherve

    Re : Comparaison de signaux numériques

    bonsoir
    voir peut être ce qui se fait du coté reconnaissance vocale.
    Il y a bien longtemps si ma mémoire est bonne les comparaison étaient faites par évaluation de la moyenne des distances entre l’échantillon et les références, il faut bien sur que les deux éléments soient dans un référentiel commun ou qu'il soit possible d'en créer un.
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    inviteb9f49292

    Re : Comparaison de signaux numériques

    Je ne vois pas où tu veux en venir...
    Tu veux comparer les valeurs crachées par ton accelero ?
    Tu veux comparer les protocoles utilisés par tes accélero ?

    J'ai déjà une petite fonction qui compare les signaux par étude de leurs extréma (s1 à un maximum de tant et un minimum de tant, ce qui est proche du signal A de la base de [Suis-je clair? ]
    Ce serait la 2ème solution, il te suffit donc de lire la datasheet du composant pour savoir comment il cause... Ou il y a un truc qui m'échappe...
    Surtout que le train de bits dépendra de la mesure, et donc il y aura toujours de légère variation...

  4. #4
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Salut,

    Je partirais sur une cross-correlation avec un lag.
    http://stackoverflow.com/questions/3...width-in-numpy

  5. A voir en vidéo sur Futura
  6. #5
    invite0ac39844

    Re : Comparaison de signaux numériques

    Bonjour et merci pour vos réponses rapides,

    L'idée serait de voir à quel point un signal est proche de chaque signal d'un panel choisi.

    Je vous donne un exemple car j'ai conscience de ne pas être clair

    Partons du principe que je veuille commander l'allumages des lumières de ma maison en effectuant des gestes avec mon téléphone dans la main (celui-ci étant équipé d'accéléromètres).

    Phase d'apprentissage:
    Je fais correspondre la commande d'allumage de la lumière de chaque pièce à un geste particulier:
    -Cuisine: dessiner un cercle avec l'accéléromètre dans la main
    -Salon: dessiner un carré
    Et caetera...

    J'ai donc dans mon ordinateur un genre de base de donnée, qui associe à chaque signal la commande d'une lumière de ma maison.
    Cette phase ne me pose pas de problème...

    Phase d'utilisation:
    À présent je fais un geste avec mon téléphone dans les mains. Je veux comparer le signal donné par les accéléromètres du téléphone.
    Je vais donc comparer le signal avec ceux pré-enregistrés (durant la phase d'apprentissage).

    C'est là que j'ai un problème...
    Car je ne vois pas comment les comparer justement ^^
    La comparaison des extrema que j'ai mise en place fonctionne, mais n'est pas suffisante pour discriminer les différents signaux... Le cercle du carré notemment.

    Suis-je plus clair lou_ibmix_xi?

    Jiherve, je ne comprends pas ce que tu veux dire par référentiel commun. Est-ce par exemple la durée du signal? Mes signaux font tous en moyenne 2200ms...

    Evil.Saien, la fonction cross-correlation fonctionne-t-elle sur le même principe que la convolution? J'ai un peu cherché de ce côté-là aussi, mais je ne suis pas sûr d'avoir tout bien compris. De plus, je n'arrive pas à faire fonctionner la fonction convolve sous Python, en travaillant avec des tableaux/listes et non avec des fonctions...

    Merci à tous pour vos réponses, j'attends de vos nouvelles!

  7. #6
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Citation Envoyé par PTSI-PT Voir le message
    la fonction cross-correlation fonctionne-t-elle sur le même principe que la convolution? J'ai un peu cherché de ce côté-là aussi, mais je ne suis pas sûr d'avoir tout bien compris. De plus, je n'arrive pas à faire fonctionner la fonction convolve sous Python, en travaillant avec des tableaux/listes et non avec des fonctions...
    Oui, la convolution et la corrélation sont très proches. La seule différence est le sens du filtre.
    https://en.wikipedia.org/wiki/Cross-correlation

    Je suis pas un expert python mais il semble que ce soit faisable :
    https://docs.scipy.org/doc/numpy/ref....convolve.html

  8. #7
    jiherve

    Re : Comparaison de signaux numériques

    Bonsoir
    Référentiel commun = fréquence échantillonnage, résolution du codage identique .
    JR
    l'électronique c'est pas du vaudou!

  9. #8
    invite0ac39844

    Re : Comparaison de signaux numériques

    Evil.Saien d'accord merci!
    Je vais y jeter un œil et essayer de mettre ça en application!

    jiherve , alors oui, le référentiel ici est commun, je fais l'acquisition de tous les signaux avec le même capteur pour éviter tout problème justement.
    Sans le vouloir, j'ai travaillé en référentiel commun!

    jiherve , je ne comprends pas vraiment comment procéder selon votre/ta méthode. En effet, je pense comprendre l'idée générale, une sorte d'erreur moyenne non? Le problème est que deux signaux identiques déphasés seront jugés différents... Ainsi que deux signaux de même nature, mais de "fréquence" différente. Par fréquence j'entends un signal issu d'un mouvement plus lent, le signal sera étiré dans le temps... (Ici bien sûr je parle de signaux non-périodiques).

    Merci pour vos coups de pouce!

    Je pensais relever la valeur du temps auquel se produit un extremum... Et comparer en y ajoutant une marge de certitude, qu'en pensez-vous? Est-ce judicieux?

    Encore merci!

  10. #9
    invite0ac39844

    Re : Comparaison de signaux numériques

    Rebonjour,
    J'ai ce matin essayé de faire les convolutions.

    C'est vrai que ce n'était pas sorcier!

    Je ne comprends cependant pas comment je peux conclure quoi que ce soit des signaux que j'obtiens...

    Enfin, dans tous les cas de convolution, je n'obtiens jamais de courbe unitaire, ou nulle... Enfin cela est normal.
    Ce que je veux dire, c'est que je n'ai aucun moyen de savoir si les deux tableaux que j'ai "convolué" sont de même nature... Et à quel point il le seraient.

    Je vous remercie pour votre aide,

    M.E.

  11. #10
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Hello,

    En fait, le calcul de la correlation par une convolution ne normalise pas, donc à la fin tu n'obtiens pas des coefficients de correlation entre -1 et 1. Tu peux t'embêter à tout coder ou alors tu peux utiliser la fonction xcorr de matplotlib.pyplot (cf le premier lien que je t'ai donné), ça te donnera les coefficients de correlation...

  12. #11
    invite0ac39844

    Re : Comparaison de signaux numériques

    Bonjour

    Je ne comprends pas pourquoi je devrais avoir un coefficient de corrélation compris dans [-1,1]

    J'ai essayé d'utiliser la fonction xcorr de matlab comme suggéré, mais je n'obtiens pas les résultats attendus..

    Je travaille avec des tableaux ici de longueur 600... (Cos et Sin pour faire un exemple simple avant d'attaquer mes vrais signaux)
    La fonction xcorr me renvoie un tableau de 4 valeurs,
    Les deux premières sont des tableaux de longueur 21 chacune... Bizarre, je ne sais pas ce que c'est...
    Les deux dernières sont des ID, du genre <matplotlib.collections.LineCo llection object at 0x110726208>

    J'ai essayé d'utiliser la fonction correlate de numpy, mais bon, sans surprise j'obtiens (au signe près) exactement la même courbe qu'avec convolve...

    Que fais-je de travers?

    Merci pour votre aide,

    M.E.

  13. #12
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Citation Envoyé par PTSI-PT Voir le message
    Je ne comprends pas pourquoi je devrais avoir un coefficient de corrélation compris dans [-1,1]

    J'ai essayé d'utiliser la fonction xcorr de matlab comme suggéré, mais je n'obtiens pas les résultats attendus..
    Il faut toujours regarder la doc, d'autant plus que la doc matlab est très bien fournie.

    https://fr.mathworks.com/help/signal...utarg_scaleopt

  14. #13
    invite0ac39844

    Re : Comparaison de signaux numériques

    Bonjour,

    J'entends bien, j'ai également lu la doc avant de vous répondre,

    Ceci étant dit, quelque soit le mode que je choisis, la fonction renvoie un array de 4 éléments...
    Je ne comprends pas comment la fonction fonctionne (justement ^^)

    Je vois dans les exemples que la fonction renvoie deux arguments, puisque la typo est:
    acor,lag] = xcorr(s2,s1)

    Et dans la doc je lis que xcorr renvoie un tableau de la longueur de la plus longue des séquences (s1 ou s2)
    Je n'ai absolument pas ce genre de retour de la fonction...

    Pourriez-vous m'expliquer pourquoi?
    (Partez du principe que j'ai lu la doc, que j'ai fait des essais avec plusieurs tableaux et plusieurs modes de la fonction xcorr)

    Merci

    M.E.

  15. #14
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Pourquoi alors ne pas utiliser les options maxlag et scaleopt ?

  16. #15
    invite0ac39844

    Re : Comparaison de signaux numériques

    Je n'ai pas compris la description, je vais essayer ^^

  17. #16
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Tout en bas de la page sur xcorr, il y a même un lien directement en rapport avec la question:
    https://fr.mathworks.com/help/signal...asurement.html

  18. #17
    invite0ac39844

    Re : Comparaison de signaux numériques

    Je vous remercie pour votre aide, je reviens vers vous après mon exploration!

  19. #18
    invite0ac39844

    Re : Comparaison de signaux numériques

    Bonjour,

    Je reviens à la charge, je ne parviens toujours pas à comprendre pourquoi la fonction me retourne ce genre de tableau...

    En effet, quoi que je fasse, impossible d'aboutir. La fonction xcorr me renvoie toujours les mêmes choses, qui sont non seulement différentes de toutes celles que je vois sur les exemples, mais en plus insensées à mes yeux... Ni la longueur, ni les valeurs des/dans les tableaux ne correspondent à ce que j'ai donné en entrée.

    C'est comme si j'avais fait une erreur, et que le programme renvoyait une solution étrange plutôt qu'un message d'erreur...


    Si vous ne voyez pas d'où pourrait venir l'erreur, je peux vous envoyer un screenshot de mon écran, mais j'ai bien conscience qu'il est fastidieux de débugger un programme...

    Je vous remercie pour votre aide,

    M.E.

  20. #19
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Copier/coller les exemples de xcorr fournis par le site de matlab ne donnent pas les résultats attendus ?

  21. #20
    invite0ac39844

    Re : Comparaison de signaux numériques

    Je fais tout pareil, à part les différents "load" qu'ils mettent de tps en tps...
    Puisque je n'ai pas besoin de "load" les signaux, je les ai déjà...

    D'autre part, leur langage n'est pas du Python visiblement, puisqu'en copiant/collant, j'ai des erreurs de syntaxe...


    Je ne comprends juste pas pourquoi la fonction xcorr ne se comporte pas comme prévu, pourquoi ne renvoie-t-elle pas ce qu'elle est supposée renvoyer?

    Mis à part se problème d'appel de fonction, je comprends ce qui se passe dans leurs exemples, et il s'agit bien de ce que je voudrais faire (surtout dans les exemples du dernier lien que vous m'avez envoyé

  22. #21
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Ma conclusion sera "y'a une erreur quelque part"

    Sans donner de morceau de code, difficile d'en dire plus. Inutile de tout copier coller, un exemple bidon suffira. Tu peux déjà essayer de faire marcher xcorr sur 2 petits vecteurs dont 1 est une portion de l'autre (de manière à connaître à l'avance le résultat).

  23. #22
    invite0ac39844

    Re : Comparaison de signaux numériques

    Je vous joins le petit bout de code que j'ai fait,
    J'espère que vous y trouverez une erreur! ^^

    Voici le code:
    Capture d’e?cran 2017-02-21 a? 15.57.51.png

    Et voici le tracé des courbes à corréler:
    Capture d’e?cran 2017-02-21 a? 15.58.15.jpg

    J'ai donc demandé à voir le tableau "correlation":
    Capture d’e?cran 2017-02-21 a? 16.01.17.png

    Je pense avoir fait les mêmes manipulations que sur le site, explicatif..

    Puissiez-vous trouver une erreur dans ce que j'ai fait,

    Merci beaucoup

    M.E.

  24. #23
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Ok tout semble marche. Qu'est-ce qui cloche ?

    Tu pourrais essayer de plotter la valeur de la correlation en fonction du lag...

  25. #24
    invite0ac39844

    Re : Comparaison de signaux numériques

    Voilà ce que j'obtiens,

    Nom : Capture d’e?cran 2017-02-21 a? 16.16.32.png
Affichages : 537
Taille : 42,4 Ko

    C'est vrai que c'est concluant et que cela correspond avec les fonctions sinus et sinus tronqué!
    Ce que fait cette fonction est alors un mystère pour moi... Je pensais avoir compris le principe mais j'ai vraiment dû rater quelque chose...

    En effet, le résultat est bien différent de celui obtenu par la fonction numpy.correlate,

    Merci pour votre aide, j'ai vraiment galéré.

    Juste pour conclure, afin de savoir à quel point les signaux sont proches, je dois relever la valeur du maximum de corrélation, et cela m'indique à quel point les deux signaux sont semblables, c'est bien cela?

    Encore merci pour votre aide, pardon de vous avoir dérangé durant deux jours!

    M.E.

  26. #25
    inviteeecca5b6

    Re : Comparaison de signaux numériques

    Citation Envoyé par PTSI-PT Voir le message
    Juste pour conclure, afin de savoir à quel point les signaux sont proches, je dois relever la valeur du maximum de corrélation, et cela m'indique à quel point les deux signaux sont semblables, c'est bien cela?
    Tout à fait.

  27. #26
    invite0ac39844

    Re : Comparaison de signaux numériques

    D'accord, encore merci, je vais mettre ça en application avec mes vrais signaux d'accéléromètres, je vous remercie vraiment! ^^

Discussions similaires

  1. Signaux analogiques et numériques
    Par invite4c1fb33b dans le forum Physique
    Réponses: 13
    Dernier message: 07/05/2016, 21h58
  2. Comparaison de 2 signaux
    Par inviteca409fdd dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 01/03/2012, 15h50
  3. Comparaison signaux/moteur
    Par invitef78c28e0 dans le forum Électronique
    Réponses: 5
    Dernier message: 17/02/2009, 13h02
  4. Comparaison de 2 signaux
    Par invite78f7edf2 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 01/05/2007, 10h49
  5. Processeurs et signaux (numériques, analogiques ...)
    Par invite1679091c dans le forum Électronique
    Réponses: 12
    Dernier message: 17/10/2003, 13h00