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

Signal Discussion :

Tracé filtrage cheby1


Sujet :

Signal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 135
    Par défaut Tracé filtrage cheby1
    Bonjour,

    Je souhaite réalisé un filtre de Chebyshev avec la commande cheby1 et ensuite filtré un signal de la forme w=Asin(wt)+Bsin(nwt)+... J'arrive à réaliser le filtre et à tracé son diagramme de Bode mais je n'arrive pas à filtrer le signal par la fonction de transfert.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    w=Asin(wt)+Bsin(nwt)+...
    [b,a] = cheby1(n,R,Wp,'bandpass','s');
    o = logspace(-1,1,5000);
    figure(2);
    freqs(b,a,o);
    Hf=freqs(b,a,o);
    J'ai essayé de faire la fft de mon signal w pour pouvoir le multiplier par Hf et ensuite faire la transformée inverse mais cela ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    wf=fft(w);
    yf=Hf.*wf;
    yt=ifft(yf);
    plot(t,yt);
    Quel opération je dois effectuer pour pouvoir visualiser le signal w filtré?

    Merci d'avance
    Ben

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour.
    Quel opération je dois effectuer pour pouvoir visualiser le signal w filtré?
    help filter

    Un essai en signal échantillonné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    clear
    Fe=1000;
    t=0:1/Fe:0.1;
    n=2;
    w=2*pi*15;
    10; R= 0.5;
    A=1;B=0.5;
    Wp = 2*pi*[10 20]/Fe/2;
    w=A*sin(w*t)+B*sin(3*w*t);
    [b,a] = cheby1(n,R,Wp,'bandpass');
    o = logspace(-1,1,5000);
    figure(1);
    freqs(b,a,o);
    Hf=freqs(b,a,o);
    wf=fft(w);
    yt=ifft(real(wf));
    figure(2)
    plot(t,real(yt));
    sf=filter(b,a,w);
    grid
    figure(3)
    plot(t,w,t,sf,'r')
    grid

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 135
    Par défaut
    Bonjour,

    J'ai regardé ton code et la fonction filter, j'arrive à avoir un résultat mais mon problème est que mon filtre est un passe-bas (voir diagramme de Bode) et non un passe-bande, pourtant je spécifie bien "passband", si quelqu'un voit le problème? Donc forcément mon signal de sortie est celui de 5 et 20 Hz alors que je devrais avoir un signal sinusoïdal de 20Hz.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    clc 
    clear all
    pi = 3.14159;
    f = 5;
    Fe=1000;
    t=0:1/Fe:1;
    x = sin(2 * pi * 1*f*t);
    y = sin(2* pi * 4*f*t);
    z = sin(2 * pi * 7*f*t);
    w = x+y+z;
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    Wp = 2*pi*[10 30]/Fe/2;
    n = 4;
    R = 1;
    [b,a] = cheby1(n,R,Wp,'bandpass');
    o = logspace(-1,1,5000);
    figure(1);
    freqs(b,a,o);
     
    s=filter(b,a,w);
    figure(2);
    plot(t,s);

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour.
    mon filtre est un passe-bas
    Alors il faut mettre 'low'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [b,a] = cheby1(n,R,Wp,'low');
    avec Wp la coupure normalisée.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je te conseille de regarder du coté de:
    avant d'appliquer cheby1

Discussions similaires

  1. filtrage d'une table interbase
    Par kouraichi35 dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/11/2004, 13h08
  2. Réponses: 7
    Dernier message: 27/08/2004, 14h25
  3. filtrage d'une chaine de caractéres
    Par localhost dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 20/09/2003, 01h11
  4. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  5. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 09h44

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