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 :

FFT sur de longs signaux


Sujet :

Traitement du signal

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut FFT sur de longs signaux
    Bonjour tout le monde,

    J'ai un signal sinusoïdal acquis par un oscilloscope numérique. Ce signal est composée de plusieurs parties: une partie avec une amplitude haute (> 3 V), une autre avec une amplitude nulle le tout répété trois fois. Je souhaite analyser ce signal de manière à diviser le signal en partie haute et en partie basse. J'ai besoin d'un grand échantillonnage afin de déterminer la fréquence, l'amplitude et la durée de chaque partie.
    Mon problème c'est que j'ai un signal de 1MHz qui dure plus de 12 secondes et j'obtiens plus de 30 millions d'échantillons.

    Jusqu'à présent j'utilisais la FFT sur mon signal afin de trouver l'enveloppe du signal et je faisais un filtre binaire pour déterminer les différentes parties.
    Malheureusement, cette méthode ne fonctionne pas avec ce signal (trop long et surtout manque de mémoire en utilisant Numpy en 32 bits (pas le choix)).

    Mon idée était de couper le signal, effectuer les FFT sur les sous-signaux et assemblé ces FFT... Malheureusement, mon idée est bien foireuse et ne me procure pas une bonne enveloppe.

    Y-aurait-il un expert en traitement du signal?

    Merci

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 184
    Points : 11 548
    Points
    11 548
    Par défaut
    Salut,
    Je ne suis pas un expert du traitement du signal mais je ne comprends pas bien ton problème.

    Ton signal est périodique alors pourquoi ne fais tu pas une FTT par période ?

    Ou alors il n'est pas périodique ?

    En électronique on utilise un intégrateur (en quelque sorte) pour détecter une enveloppe.
    https://fr.m.wikipedia.org/wiki/Circ..._d%27enveloppe

    Voir la partie "Signaux numérique"
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    En gros, mon signal est la combinaison de trois signaux avec un temps entre les signaux. Je souhaite déterminer la durée de chacun de ces signaux ainsi que des délais entre les signaux.

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 184
    Points : 11 548
    Points
    11 548
    Par défaut
    Tu peux poster une image de ce signal car du coup je ne comprends plus pourquoi déterminer une enveloppe pour calculer des délais ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Voici le signal complet (j'ai dû prendre seulement 1 échantillon sur 10000):
    Nom : full_signal.png
Affichages : 321
Taille : 41,9 Ko

    Et voici la partie du signal lorsque je zoom entre deux signaux:
    Nom : sub_signal.png
Affichages : 349
Taille : 16,7 Ko

    Je rajoute aussi comme information que les signaux ont une durée de 2 secondes et les délais de 1ms (ce qui fait qu'ils sont invisible à l'oeil nu sur le signal complet)

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 184
    Points : 11 548
    Points
    11 548
    Par défaut
    En fait, tu cherches a avoir l'enveloppe (signal rouge) du signal ? C'est bien ça ?
    Un peu comme ci tu avais un signal modulé en OOK (On Off Keying) ?

    Nom : Capture du 2017-04-23 01-57-16.png
Affichages : 343
Taille : 56,8 Ko
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Je ne connais pas le terme exact mais c'est un peu ça.
    La différence avec ton dessin, c'est que je souhaite seulement l'enveloppe positive et surtout que le signal bleu (celui en bas à droite) correspond à la totalité du signal, c'est à dire les tirs (signaux d'amplitude non nulle) et les délais (signaux d'amplitude nulle).

  8. #8
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 184
    Points : 11 548
    Points
    11 548
    Par défaut
    Citation Envoyé par darkman19320
    La différence avec ton dessin, c'est que je souhaite seulement l'enveloppe positive
    D'accord.

    Citation Envoyé par darkman19320
    et surtout que le signal bleu (celui en bas à droite) correspond à la totalité du signal, c'est à dire les tirs (signaux d'amplitude non nulle) et les délais (signaux d'amplitude nulle).
    Tu veux dire celui en bas à gauche ?

    Donc si je comprends tu es bien dans le cas d'une modulation OOK (On Off Keying) c'est à dire ça :
    Le signal du haut (1) est multiplié par un signal logique (2) et donne le signal (3) donc des salves. On dit que le signal (3) est le signal (1) modulé par le (2) qui est du OOK
    Nom : Capture du 2017-04-23 01-57-17.png
Affichages : 320
Taille : 140,1 Ko

    Si je résume, ton oscilloscope a numérisé le signal (3) et toi tu cherches le signal (2) ? Si c'est ça alors oui calculer/retrouver l'enveloppe du signal (3) que te donne l'oscillo correspond bien a retrouver le signal logique (2) qui a servi a moduler.
    Nom : Capture du 2017-04-23 01-57-18.png
Affichages : 287
Taille : 31,0 Ko

    C'est bien ce que tu veux trouver ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  9. #9
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    C'est exactement ça! Je n'avais pas le vocabulaire pour l'exprimer clairement tu as bien compris ce que je recherche.

    Sinon, c'était bien le signal en bas à gauche (faut que je retourne à la maternelle pour différencier la droite et la gauche ^^).

    Jusqu'à présent j'utilisais la FFT (la rfft pour être plus précis vu que je n'ai qu'un signal en réel) mais vu le nombre d'échantillons (plus de 30 millions) et mon environnement de travail (Python 2.7 en 32 bits), j'atteins rapidement les limites...

  10. #10
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 184
    Points : 11 548
    Points
    11 548
    Par défaut
    Citation Envoyé par darkman19320 Voir le message
    C'est exactement ça!
    OK !

    Citation Envoyé par darkman19320 Voir le message
    Jusqu'à présent j'utilisais la FFT (la rfft pour être plus précis vu que je n'ai qu'un signal en réel) mais vu le nombre d'échantillons (plus de 30 millions) et mon environnement de travail (Python 2.7 en 32 bits), j'atteins rapidement les limites...
    Je veux bien te croire, c'est beaucoup trop complexe comme outil mathématique et comme tu le dis, avec la quantité de données à traiter ça ne fonctionne pas.

    Si c'est bien un signal OOK, il y a deux choses a déterminer.
    - L'enveloppe qui est l'image du signal logique qui a servit a moduler (en rouge).
    - La durée des états logiques pour décoder le message binaire (t HIGH et t LOW).

    Une fois que tu connais les deux alors tu peux décoder/démoduler les messages binaires.

    Nom : Capture du 2017-04-23 01-57-20.png
Affichages : 324
Taille : 104,3 Ko

    Normalement, enfin j'espère, que tu connais t HIGH et t LOW ? En électronique lorsqu'on doit démoduler un signal, on peut le faire facilement car très souvent on connait la fréquence de modulation.

    Avant qu'on aille plus loin, connais tu ces temps ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  11. #11
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    J'ai réussi à obtenir un résultat convenable avec des données générées parfaites (pas de bruits) mais dans des durées équivalentes (3 tirs de 2s avec des pauses de 1000us). J'essaierai mardi en rentrant du boulot pour voir si la méthode convient.

    Voici l'étape de mon algo:
    1. Couper le signal en petite partie (j'ai pris 1000 échantillons)
    2. Pour chaque sous-signaux:
      1. Calculer la RFFT,
      2. Multiplier par 2 les harmoniques différentes de la principale,
      3. Prendre la valeur absolue de la FFT inverse et l'ajouter dans la liste d'enveloppe (éviter de faire une concaténation)
    3. Applanir la liste

  12. #12
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 184
    Points : 11 548
    Points
    11 548
    Par défaut
    Très bien, attendons tes tests de mardi.

    Est ce que l'étape 1 de ton algorithme (que je qualifierai de fenêtrage) ne va pas couper une donnée en 2 ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  13. #13
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 184
    Points : 11 548
    Points
    11 548
    Par défaut
    Re moi,
    Après plusieurs recherches, je suis presque sur qu'une transformée de Hilbert te donnera l'enveloppe mais je pense qu'il va te manquer une information importante pour démoduler. Il me semble que ton algo s'en approche

    Toute fois sans une notion de temps comment vas tu déterminer la durée d'un 1 et d'un 0 ? Car même en trouvant l'enveloppe (en rouge ci dessous), tu ne peux pas différentier les 3 exemples qui suivent.

    Nom : Capture27.png
Affichages : 278
Taille : 33,4 Ko

    Nom : Capture28.png
Affichages : 266
Taille : 33,4 Ko

    Nom : Capture29.png
Affichages : 274
Taille : 33,3 Ko
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  14. #14
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Merci Vincent pour tes conseils!

    Effectivement pour obtenir le temps d'un signal OOK, la méthode semble complexe, cependant, dans mon cas, je n'ai pas réellement un signal OOK (confirmation de notre ingé électronicien) mais un signal acoustique simple avec différentes amplitudes.
    Pour calculer le temps, du coup j'utilise le nombre d'échantillons par "sous"-signaux.

    J'ai mis un peu de temps à répondre ce matin car je n'obtenais pas du tout le résultat souhaité. Je me suis aperçu que mon signal d'entrée était faux (problème de configuration du Picoscope en streaming).

    Je passe à résolu mais je suis toujours ouvert à de nouvelles propositions!

  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 430
    Points
    1 430
    Par défaut
    Tu découpes ton signal en petites tranches légèrement plus grandes que la période de la "porteuse". Tu trouve le max dans chaque boite et tu as un signal démodulé ...
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

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

Discussions similaires

  1. Réponses: 54
    Dernier message: 12/08/2010, 11h00
  2. Questions sur Traitement des signaux
    Par nadjibnet dans le forum POSIX
    Réponses: 4
    Dernier message: 19/05/2010, 21h32
  3. [VB.Net Vb2008] left sur un long
    Par 6ril25 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/06/2009, 16h22
  4. Créer une action sur clic long
    Par louis_lab dans le forum C++/CLI
    Réponses: 4
    Dernier message: 01/03/2007, 15h17
  5. [FLASH MX] Synchroniser une animation sur un long mp3
    Par calogerogigante dans le forum Flash
    Réponses: 9
    Dernier message: 05/07/2006, 12h37

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