Filtrage Matlab sous Linux
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Filtrage Matlab sous Linux



  1. #1
    jbgmp

    Filtrage Matlab sous Linux


    ------



    Salut,

    J'ai un petit problème. Je programme sous Matlab , une transformée de Fourier d'un signal, avec la fftshift. Et maintenant je dois le filtrer; enlever les bruits ambiant, enlever les harmoniques. Sa fais 3 semaines que je suis dessus et impossible de trouver. Quelqu'un aurait une idée d'une fonction de filtre sous Linux? Svp, c'est important,

    Merci

    -----
    Dernière modification par jbgmp ; 20/03/2015 à 10h25.

  2. #2
    lou_ibmix_xi

    Re : Filtrage Matlab sous Linux

    Quelqu'un aurait une idée d'une fonction de filtre sous Linux? Svp, c'est important,
    Le fait que ce soit sous linux n'a aucun rapport.
    Pour filtrer, encore faut-il avoir un filtre, une fois que tu as les coefficients de ton filtre c'est la fonction "filter"...
    Je ne vois pas trop ce que vient faire la FFT là-dedans, à moins que tu ne veuillent filtrer dans le domaine fréquentiel... Si c'est le cas, tu fais ton gabarit fréquentiel, tu le multiplies point à point avec le résultat de la FFT, FFT inverse et voilà...

    Sa fais 3 semaines que je suis dessus et impossible de trouver.
    Désolé de paraitre désagréable mais le forme de la question laisse supposer quelques lacunes en traitement du signal, et 3 semaines de recherche sans rien trouver alors que "matlab filtrage" dans google sort une foultitude de résultats...

  3. #3
    jbgmp

    Re : Filtrage Matlab sous Linux

    Comment je détermine les coefficients de mon filtre?
    C'est la transformé de Fourier de mon signal que je dois filtrer. Qu'est ce qu'un gabarit fréquentiel?
    Oui sa prouve des lacunes, parce que c'est la première fois que je fais du traitement de signal.

  4. #4
    phuphus

    Re : Filtrage Matlab sous Linux

    Bonjour,

    Citation Envoyé par jbgmp Voir le message
    Et maintenant je dois le filtrer; enlever les bruits ambiant, enlever les harmoniques.
    En gros, faut que tu dégages tout... Filtrer est un moyen, mais quel est ton but exactement ?

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

    Re : Filtrage Matlab sous Linux

    Oui sa prouve des lacunes, parce que c'est la première fois que je fais du traitement de signal.
    Tu dois avoir des cours? Peut-être qu'en les lisant...

  7. #6
    jbgmp

    Re : Filtrage Matlab sous Linux

    En gros j'ai fais un enregistrement d'un écoulement d'une bouteille d'eau. Et je veux isoler un son particulier dans tous cette enregistrement. Donc j'ai fais une FFT, et je veux filtrer ma transformé de Fourier. Pour cela on me dis d'utiliser la fonction Filter, mais il me faut des coefficients a et b. Et je ne sais pas comment les trouver.

  8. #7
    jbgmp

    Re : Filtrage Matlab sous Linux

    C'est un projet donc pas de cours dessus, ou du moins pas encore. Donc que des recherches. Mais merci quand même.

  9. #8
    phuphus

    Re : Filtrage Matlab sous Linux

    Bonsoir,

    le but est de pouvoir automatiser ce traitement ou simplement d'isoler ledit son ?
    Si c'est la deuxième solution et qu'il n'y a pas de notions de confidentialités ou de données trop personnelles dans ton enregistrement, alors pourrais-tu :
    - le partager ici
    - décrire un peu ce que l'on entend
    - décrire ce que l'on doit isoler ?

    Je ferai un essai.

    Le filtrage est un produit de convolution en temporel (éventuellement avec récurrence). Les coef [a] et [b] représentent les données pour le produit de convolution ([b] est la réponse impulsionnelle de la "partie directe", [a] celle du "retour" (donc la récurrence)). Si tu tapes "help filter" dans Matlab l'équation devrait te parler.

    Ce produit de convolution est équivalent à une multiplication en fréquentiel. Donc soit tu filtres en temporel, et là le problème devient : comment je détermines [b] et [a] ? soit tu filtres en fréquentiel et il faut te référer à l'intervention #2 de lou_ibmix_xi (avec une subtilité : il ne faut construire ton gabarit fréquentiel que jusqu'à la fréquence de Nyquist, et ensuite faire une symétrie conjuguée par rapport à cette fréquence ; sinon, la FFT inverse te donnera n'importe quoi).

    Tu peux aussi avoir une approche plus pragmatique : ce genre de manipulation est intégrée à tout logiciel de manipulation de son. Je ne vais pas te conseiller Pro Tools ou WaveLab pour cela, mais peut-être que Audacity ou GoldWave (je ne sais pas s'il est toujours en version partagiciel) feront ton bonheur.

  10. #9
    jbgmp

    Re : Filtrage Matlab sous Linux

    De manière générale quand on vide une bouteille d'eau, il y a un phénomène qui se produit, qui est une sorte de "gloups", c'est-à-dire que l'écoulement oscille permettant ainsi a de l'air de rentrer dans la bouteille.
    Mon projet se porte sur ce "gloups", j'ai donc enregistrer un écoulement, et je veux isolé ce "gloups" dans mon enregistrement. Mais il y a beaucoup de son parasite (comme le bruit de l'impact de l'eau contre lévier, le bruit ambiant,etc...).

  11. #10
    jbgmp

    Re : Filtrage Matlab sous Linux

    Je ne peux pas mettre en pièce jointe mon fichier WAV. Le forum ne veut pas apparament.

  12. #11
    phuphus

    Re : Filtrage Matlab sous Linux

    Bonjour,

    essaye en zip, ça devrait passer.
    A vue de pif rapide, ton "gloups" doit être un Helmholtz variable. Je pense pouvoir l'isoler assez facilement.

  13. #12
    lou_ibmix_xi

    Re : Filtrage Matlab sous Linux

    Voici comment je procèderai:
    1°) découpage temporel autour du "gloup": ouvre ton fichier avec un éditeur audio (audacity par exemple), et découpe au plus près la forme d'onde qui t'intéresse en sélectionnant un morceau, en le jouant et en reserrant la sélection. Exporte uniquement ta sélection en fichier WAV (les compressions type MP3 sont interdites, pour l'enregistrement également d'ailleurs)

    2°) étude de ton "gloup": une densité spectrale de puissance (plus adaptée que la simple FFT) te montrera comment se répartie la puissance en fonction de la fréquence, à toi de déterminer ce qui te semble être du bruit de ton signal d'intérêt... En gros si tu as 2 bosses, tu essaies d'en virer une, si ce n'est pas elle tu vire l'autre. Donc tu choisi la "bosse" que tu veux filtrer, elle a une fréquence min (éventuellement 0Hz), une fréquence max (éventuellement fs/2) -> ce sont les fréquences de coupure du filtre à appliquer, et la proximité de ta bosse d'intérêt va te guider pour la raideur du filtre: plus les 2 bosses sont proches, plus il te faudra un filtre raide, et donc d'ordre élevé. Tu as tout les éléments pour générer ton filtre grâce à la fonction "butter" ( par exemple, pour un filtre de type butterworth, il y a d'autre type de filtre mais je ne pense pas que dans ton cas ça soit très pertinent), puis tu appliques ton filtre généré sur la représentation temporelle de ton signal grâce à la fonction "filter".

    Je te conseille d'isoler un maximum de "gloups" différent de ton enregistrement d'origine, ce qui te permettra de vérifier qu'ils ont tous le même spectre (ou pas), si leurs spectres sont très proche, tu peux t'amuser à faire une moyenne des densités spectrale de puissance pour avoir un résultat moyenné, et donc à priori plus proche de la réalité.

Discussions similaires

  1. comment faire communiquer un automate sous linux et un PC sous windows?
    Par gerald2545 dans le forum Matériel - Hardware
    Réponses: 0
    Dernier message: 27/06/2013, 06h59
  2. filtrage sous matlab
    Par membreComplexe12 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 11/05/2013, 11h31
  3. filtrage d'une fréquence particulière sous matlab
    Par membreComplexe12 dans le forum Physique
    Réponses: 8
    Dernier message: 14/10/2012, 20h23
  4. Filtrage des données sous matlab ??
    Par invitebe5b0d57 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 23/05/2012, 14h31
  5. filtrage de colonnes sous excel
    Par invite624c5402 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 19/02/2008, 17h54