filtrage sous matlab
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

filtrage sous matlab



  1. #1
    membreComplexe12

    filtrage sous matlab


    ------

    Bonjour tous,

    j'ai fais un peu le tour des discussions sur le forum et je pense avoir compris comment faire un filtre coupe bande de manière assez propre:
    Code:
    clear all;close all;clc;
    t=0:0.01:1;
    f=sin(2*pi*5*t)+sin(2*pi*12*t);
    nbPoint=length(t);
    fe=nbPoint/(t(end)-t(1))
    [b,a]=butter(2,[10 13]/(fe/2),'stop')
    y=filtfilt(b,a,f);
    figure (1)
    plot(t,f,'b',t,y,'r')
    ce bout de code fonctionne bien mais si j'ai un pas de temps non pas
    de 0.01 mais de 0.1 alors je vais avoir un problème :
    Code:
    The cutoff frequencies must be within the interval of (0,1).
    si j'ai bien compris cela veut dire que je ne peux pas filtrer des frequences supérieurs à la frequence d'echantillonage divisé par 2 ?

    Question 1
    du coup quel recours j'ai ? si j'augmente l'ordre du filtre ça va changer quelque chose ? je vous demande ceci car dans un cas réel j'ai justement ce problème.. j'ai une frequence d'acquisition de 2Hz et je veux filtrer la frequence 50 Hz.

    Question 2
    ma deuxieme question porte que certains choix :
    Code:
    filtfilt
    Code HTML:
    http://www.mathworks.fr/fr/help/signal/ref/filtfilt.html
    j'ai utilisé 'filtfilt' car d'après ce que j'ai compris c'est la même chose que 'filter' sauf que ça compense le dephasage qui peut etre introduit par le filtrage ?

    Code:
    butter
    Code HTML:
    http://www.mathworks.fr/fr/help/signal/ref/butter.html
    butter est une technique qui permet de donner les paramètres du filtre mais si j'utilise "fir1" :
    Code HTML:
    http://www.mathworks.fr/fr/help/signal/ref/fir1.html
    plutôt que "butter" qu'es ce que ça va changer ?

    Code:
    ordre
    ma dernière question porte sur l'ordre du filtre: comment le choisit ton en pratique ? plus l'ordre est elevé plus on va filtrer nos pics de manière "etroite" ?

    Pourriez vous m'aidez s'il vous plait ?

    -----

  2. #2
    JPL
    Responsable des forums

    Re : filtrage sous matlab

    Déplacé depuis le forum Physique à la demande de membreComplexe12.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    lou_ibmix_xi

    Re : filtrage sous matlab

    si j'ai bien compris cela veut dire que je ne peux pas filtrer des frequences supérieurs à la frequence d'echantillonage divisé par 2 ?
    Oui, mais les "fréquences" au delà de la moitié de la fréquence d'échantillonnage n'existent pas dans la représentation numérique du signal... C'est la théorie de l'échantillonnage et le théorème de Shannon associé.

    Question 1
    du coup quel recours j'ai ? si j'augmente l'ordre du filtre ça va changer quelque chose ? je vous demande ceci car dans un cas réel j'ai justement ce problème.. j'ai une frequence d'acquisition de 2Hz et je veux filtrer la frequence 50 Hz.
    Si tu échantillonnes à 2Hz, il faut que tu coupes toutes les fréquences au-delà de 1Hz _EN_ANALOGIQUE_, par ce qu'on appelle un filtre anti-repliement, en effet les fréquences au-delà de la fréquence d'échantillonage divisée par 2 se retrouvent en bas du spectre: par exemple 1,5Hz sera vu en numérique comme une fréquence de 0,5Hz (c'est expliqué par Shannon justement)

    j'ai utilisé 'filtfilt' car d'après ce que j'ai compris c'est la même chose que 'filter' sauf que ça compense le dephasage qui peut etre introduit par le filtrage ?
    De ce que j'en comprends, ça à l'air d'être ça, mais je ne vois pas trop l'intérêt pour ton problème

    butter est une technique qui permet de donner les paramètres du filtre mais si j'utilise "fir1" :
    Butter construit un filtre de type Butterworth, il existe une foultitude de type de filtre (chebychev, ...) répartie en deux familles: les IIR et les FIR, les premiers peuvent être instables mais ont des caractéristiques de coupure raide avec des ordres assez faibles, les seconds sont stables par construction mais nécessite des ordres important pour arriver à des raideurs de coupures comparables... Après le choix d'une sous-famille se fait en fonction de critères qui ne dépendent que de toi, déphasage linéaire dans la bande, sur-oscillation autour de la fréquence de coupure, constance du gain dans la bande-passante etc...

    ma dernière question porte sur l'ordre du filtre: comment le choisit ton en pratique ? plus l'ordre est elevé plus on va filtrer nos pics de manière "etroite" ?
    En gros oui, mais ou détriement du déphasage, de la stabilité....

    En résumé, sois tu augmente la fréquence d'échantillonnage suffisament pour être sûr que tu n'est aucune composeantes fréquentielles au delà de la moitié, soit tu utilises un filtre anti-repliement à 2Hz en analogique avant de numériser (ou certain type de numérisateur dit "delta-sigma" qui par construction font l'anti-repliement)

  4. #4
    membreComplexe12

    Re : filtrage sous matlab

    merci beaucoup lou_ibmix_xi,
    tout est beaucoup plus clair à présent

    Citation Envoyé par lou_ibmix_xi Voir le message
    Oui, mais les "fréquences" au delà de la moitié de la fréquence d'échantillonnage n'existent pas dans la représentation numérique du signal... C'est la théorie de l'échantillonnage et le théorème de Shannon associé.
    c'est le seul point qui me bloque encore un peu. Si je comprends bien, si ma fréquence d'echantillonage est de 10Hz alors ça veut dire que mon signal numérique ne contiendra aucune frequence supérieure à 5Hz ? donc si j'ai un signal numérique bruité alors les seuls fréquences qui sont "débruitables" sont forcement inférieurs à 5Hz (car les autres ne sont pas représentés)

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

    Re : filtrage sous matlab

    Je dirai plutôt qu'un signal numérisé à 10Hz ne peut pas représenter de fréquences au delà de 5Hz, donc si ton signal analogique contient des fréquences au-delà de 5Hz, elles vont se "replier" pour se retrouver dans la bande 0-5Hz, et ton signal numérisé ne sera plus une représentation fidèle de ton signal analogique. C'est vraiment la base du traitement numérique du signal, je te conseillerai de googler un peu avec shannon, repliement, échantillonnage... pour un peu cerner ce dont il s'agit.

  7. #6
    membreComplexe12

    Re : filtrage sous matlab

    merci beaucoup pour ces infos, que je comprends à présent
    tout est beaucoup plus clair

Discussions similaires

  1. filtrage d'une fréquence particulière sous matlab
    Par membreComplexe12 dans le forum Physique
    Réponses: 8
    Dernier message: 14/10/2012, 21h23
  2. Filtrage des données sous matlab ??
    Par invitebe5b0d57 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 23/05/2012, 15h31
  3. un peu de filtrage numérique avec matlab
    Par fouga dans le forum Électronique
    Réponses: 0
    Dernier message: 18/04/2011, 15h01
  4. reconstitution d'image par filtrage de wiener matlab
    Par invitea58b9c08 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 29/10/2009, 15h14
  5. Probleme de filtrage avec Matlab
    Par invite9c8819a7 dans le forum Électronique
    Réponses: 2
    Dernier message: 16/05/2009, 18h32