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 :

Elimination composante continue d'un signal


Sujet :

Traitement du signal

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Elimination composante continue d'un signal
    Bonjour,

    Débutant en matlab, je cherche une solution pour éliminer la composante continue d'un signal en vue d'un traitement ultérieur par FFT. Le but est de ne pas avoir la raie spectrale à f=0

    J'ai fait un exemple simple d'un sinus + composante continue.

    J'ai trouvé une solution en soustrayant à mon signal sa moyenne calculée par la fonction mean. Le problème avec mean c'est que le calcul se fait sur tout le signal. Or ca va poser des problèmes si j'ai un signal avec une variation de la composante continue (ex : mesure de contraintes dynamique dans une structure sachant que la contrainte statique moyenne varie, par exemple traction / compression))

    Mais je me demande s'il n'est pas possible de faire la même chose avec la commande filter et en choisissant judicieusement les coefs a et b.

    Phil

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 883
    Points
    52 883
    Par défaut
    Je déplace cette question dans le forum Algorithme.
    La question porte plus sur la recherche d'une méthode que sur une implémentation sous MATLAB
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Philoup78 Voir le message
    Or ca va poser des problèmes si j'ai un signal avec une variation de la composante continue
    une "variation de la composante continue" ????
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je m'explique sur la variation de la composante continue que je devrais plutot appeler composante statique.

    Prenons une grue qui lève une charge puis la dépose.
    Sur la flèche de cette grue est collée une jauge de déformation qui mesure les contraintes dynamiques lors du levage et de la dépose de la charge.

    Les contraintes enregistrés par cette jauge va contenir deux types de contraintes :
    - contraintes dynamiques engendrés par le levage ou dépose de la charge (choc, vibrations transmises) à la grue
    - contrainte statique du à la charge

    Je mets en copie la forme qu'aura le signal enregistré. Sur le graphe la contrainte statique correspond à grande sinusoide et dépend par exemple de la vitesse d'orientation de la grue, ou des cycles levage / depose plus ou moins rapides

    Ce que je veux faire sur ce signal est une analyse FFT afin de déterminer les fréquences de vibration de la grue. Afin d'avoir une courbe spectrale plus propre je veux éliminer de ce signal la composante statique

    J'espère que j'ai été plus clair
    Images attachées Images attachées  

  5. #5
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Je suis loin d'être un expert là-dedans mais n'est-ce pas le propre de la FFT que de diviser ton signal en fréquence ? La FFT t'as bien séparé la composante statique (fréquence nulle ou presque...) des autres composantes à fréquences plus élevées qui t'intéressent. A mon avis, appliquer un filtre dessus ne fera que rajouter de l'erreur sur la mesure plutôt qu'autre chose.

    Il te suffit simplement de commencer à t'intéresser à l'amplitude/phase de tes fréquences à partir d'une certaine fréquence min Fmin non ?
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  6. #6
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut
    salut

    je suis à peu près d'accord avec tanek
    dans ton cas je dirais qu'un simple filtre passe haut ferait l'affaire, par exemple
    un filtre gaussien

    F = fft(f);
    n = -length(F)/2:length(F)/2-1;
    F *= exp(-n.*n/(variance*2));

    à toi de trouver la bonne variance ! (carré de l'écart type)

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    l'interet pour moi de supprimer la composante continue est de ne pas avoir de raie à f=0 qui a une magnitude très élevé par rapport aux autres et écrase le graphe.

    Ci joint un exemple simple d'un signal sinus de fréquence 1 Hz + une composante continue égal à 5.

    Si je fais une FFT directement sur ce signal j'obtiens un graphe avec une raie à f=0 de magnitude très élevé qui écrase la raie à 1Hz.

    Par contre si avant d'appliquer la FFT je soustrais à ce signal la moyenne du signal, la raie à f=0 disparait (le signal a été recentré afin d'avoir une moyenne nulle).

    Ci joint les 3 graphes
    - signal sinus 1Hz + composante continue 5
    - FFT sur signal original
    - FFT sur (signal - moyenne du signal)
    Images attachées Images attachées  

  8. #8
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Et bien pourquoi ne tout simplement pas mettre à 0 les premières valeurs du tableau résultat de ta FFT ? Tu dois savoir quelles sont les fréquences qui t'intéressent ? Imaginons que tu aies comme tableau résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    frequencies = fft(...);
     
    for i=1:10
        frequencies[i] = 0;
    end
    Quelque chose comme ça. Bien sûr au lieu de 10 je te laisse le soin de choisir la bonne valeur. Et ton affichage redeviendra correct...
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  9. #9
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut
    au fait :
    Or ca va poser des problèmes si j'ai un signal avec une variation de la composante continue (ex : mesure de contraintes dynamique dans une structure sachant que la contrainte statique moyenne varie, par exemple traction / compression))
    que veux tu dire ?
    ta moyenne varie, ok c'est une fréquence comprise entre 0 et 1 dans ton signal

    quel sera le problème ?
    que veux-tu faire à termes ?

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Le problème c'est que les fréquences que je cherche sont très faibles. En effet les 1ers modes propres d'une grue ont des fréquences comprises entre 0.2Hz et 1Hz. J'ai peur que la raie de la composante statique me noie les fréquences qui m'intéressent

    Pour TanEK, effet j'ai pensé à cette méthode de mettre à 0 les premières valeurs du tableau mais je ne trouve pas ca très propre.

    A+
    Phil

Discussions similaires

  1. [Débutant] Eliminer le bruit d'un signal
    Par haraigo dans le forum Signal
    Réponses: 3
    Dernier message: 17/12/2012, 19h57
  2. Analyse Composante Continue
    Par Pastore dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/05/2012, 18h04
  3. TF et composante continue
    Par Artinuin dans le forum Images
    Réponses: 2
    Dernier message: 29/05/2010, 12h02
  4. Eliminer des bandes d'un signal wav
    Par cedric06000 dans le forum Scilab
    Réponses: 11
    Dernier message: 03/08/2009, 18h18
  5. Eliminer des bandes d'un signal wav
    Par ammoula1 dans le forum Signal
    Réponses: 9
    Dernier message: 02/06/2009, 08h45

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