Problème filtre butter sur Matlab
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Problème filtre butter sur Matlab



  1. #1
    pamath

    Problème filtre butter sur Matlab


    ------

    Bonjour à tous,

    D'avance je vous remercie pour votre aide.

    Je veux raliser un filtre avec Butterworth sur un signal du niveau d ela mer (marée) mais, matlab me donne un message d'erreuret me dit que votre cuttof doit être compris entre (0 , 1).

    Voici mon filtre pour le signal enregistré avec un pas de mesure de 60 s (0.016 Hz) est (niv.dat est le nom du fichier ayant deux colonnes x: élévation de la mer et t: temps (pas de 60 s) 0, 60 , 120, ...
    Je veux filtrer ce signal entre 0.00002 et 0.008

    load niv.dat;
    fe=0.016;
    x=niv(:,1);
    t=niv(:,2);
    plot(t,x)
    grid
    Fc1=0.00002;
    Fc2=0.008;
    [b,a]=butter(2,[Fc1 Fc2]/(fe/2));
    f=filter(b,a,x);
    hold on
    plot(t,f,'r')

    En revanche, j'ai un autre signal de vagues, cette fois-ci, mesurées à un pas de fréquence de 2Hz (toutes les 0.5 s) et le filtre marche bien avec ce signal (vagues.dat c'est le nom du fichier). j'ai extrait les signaux compris entre 0.003 et 0.03 Hz et ca marche!

    load vagues.dat;
    fe=2;
    x=vagues(:,1);
    t=vagues(:,2);
    plot(t,x)
    grid
    Fc1=0.003;
    Fc2=0.03;
    [b,a]=butter(2,[Fc1 Fc2]/(fe/2));
    f=filter(b,a,x);
    hold on
    plot(t,f,'r')

    Je ne comprnds pas comment avec le même code matlab ca marche pour les vagues et quand je l'applique sur la marée il me dit que votre cuttof doit être compris entre 0 et 1 alors dans mon code il est entre Fc1=0.00002;
    Fc2=0.008;


    Merci d'avance de votre aide

    Bien à vous

    Maps

    -----

  2. #2
    Fanch5629

    Re : Problème filtre butter sur Matlab

    Bonjour.

    Dans le premier cas, la fréquence de coupure relative Fc2 / (fe/2) est exactement égale à 1. Or,si je me souviens bien, elle doit être strictement inférieure à 1. A vérifier dans la doc ...

    Cordialement,

  3. #3
    pamath

    Re : Problème filtre butter sur Matlab

    Citation Envoyé par Fanch5629 Voir le message
    Bonjour.

    Dans le premier cas, la fréquence de coupure relative Fc2 / (fe/2) est exactement égale à 1. Or,si je me souviens bien, elle doit être strictement inférieure à 1. A vérifier dans la doc ...

    Cordialement,
    Merci pour cette réponse,

    En effet, la férquence de coupure relative est égale à 1. Maintenant, je ne sais pas quoi faire. Car mon signal est enregistré à 0.016 Hz.

    Est ce que vous pouvez me proposer une solution pour réaliser un filtre.

    Merci d'avance

    Maps

  4. #4
    Fanch5629

    Re : Problème filtre butter sur Matlab

    Re.

    On ne filtre pas pour le plaisir. Quel est l'objectif recherché ?

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

    Re : Problème filtre butter sur Matlab

    J'ai un signal du niveau de la mer de basse fréquence (compris entre 0.00005 et 0.016 Hz). Je veux filtrer ce signal afin d'en avoir que les ondes, fréquentiellement, comprises entre 0.01 et 0.00002 Hz. Concètement, je cherche à isoler un certain type de vagues marine (entre 0.01 et 0.00002 Hz) de la marée.

    Merci d'avance,

    Maps

  7. #6
    Fanch5629

    Re : Problème filtre butter sur Matlab

    Bonjour.

    Je note une incohérence. Si la fréquence d'échantillonnage est de 0,016 Hz (période ~ 1 mn) et si le critère de Shannon est respecté, le signal échantillonné ne contient des informations que pour la gamme de fréquences comprises entre 0 et 0.008 Hz. Toute composante de fréquence supérieure (0.01 Hz, par exemple) est inaccessible.

    Une suggestion : revoir tout ce qui tourne autour de l'échantillonnage : périodisation et repliement du spectre, critère de Shannon, etc...

    Bon courage.

  8. #7
    pamath

    Re : Problème filtre butter sur Matlab

    Bonjour,

    Merci beaucoup. Je viens de revoir le principe de Shannon. Et j'ai réussi à raliser des filtres.

    Merci,

    Maps

  9. #8
    invitec699f590

    Re : Problème filtre butter sur Matlab

    [b,a]=butter(2,[Fc1 Fc2]/(fe/2))
    faut la corrige est mettre a la place [b,a]=butter(2,[Fc1 Fc2]*2/fe)

Discussions similaires

  1. filtre bandpass démodulation matlab
    Par invitef9aa98cd dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 26/03/2010, 11h11
  2. synthèse de filtre en matlab
    Par invite873da441 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/11/2009, 09h12
  3. filtre passe bande sous matlab
    Par invite522722ae dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 10/12/2008, 13h30
  4. [Debutant] Filtre Butterworth Matlab
    Par invite21c39dcd dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 15/12/2007, 00h02
  5. filtre à particules sous matlab
    Par invited58ee606 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 12/08/2007, 23h09