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 :

Eliminer des bandes d'un signal wav


Sujet :

Signal

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Eliminer des bandes d'un signal wav
    Bonjour à tous ,
    j'envoie ce message par déception !!
    je suis débutante en Matlab ,

    je veux éliminer d'un signal wav une ou des bandes bien déterminées qui sont les bandes critiques ,

    normallement je dois utiliser un filtre coupe-bande mais le problème ç que je sait pas comment je peux savoir les paramètres du filtre (et surtout la fréquence de coupure ) et comment je dois lui entrer ,à chaque fois , la bande que je dois couper du signal ,je suis totalement bloquée ,

    Toute aide sera la bien venue ,

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Ce n'est pas un problème de MatLab, mais un problème de traitement de signal. Commence donc par savoir exactement ce que tu veux faire, et ensuite on pourra se demander comment le faire.
    Jean-Marc Blanc

  3. #3
    Membre émérite
    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
    Points : 2 841
    Points
    2 841
    Par défaut
    1)Il faut choisir un filtre réjecteur :
    H(p)=(1+tau^2.p^2)/(1+4.tau.p+tau^2.p^2) avec tau=1/omega0 (omega0 pulsation de réjection)
    ou :
    H(p)=(1+2ksi1.tau.k.p+tau^2.p^2)/(1+2ksi2.p+tau^2.p^2)
    2)Tu passes en z-1
    3)Tu programmes l'équation récurrente

  4. #4
    Membre émérite
    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
    Points : 2 841
    Points
    2 841
    Par défaut
    Tu peux aussi utiliser le filtrage spectral :
    1) faire la fft
    2) déterminer le gabarit
    3) éliminer la fréquence choisie :
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i = 1:Nx;
    Gabarit=[30 0 30 ;120 30 60;30 60 140 ;120 140 160 ;30 160 Nx];
    g(i) = tf(i)*heavi(abs(tf(i))-seuil(i,Nx,T,Gabarit)); 
    end
    4) faire la ifft pour récupérer le signal filtré

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci de votre aide,
    ç très gentil ,
    mais désolée j'ai pas saisi votre code,
    tu veux dire quoi par Gabarit et g?
    Merci une autre fois,

  6. #6
    Membre émérite
    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
    Points : 2 841
    Points
    2 841
    Par défaut
    Exemple : je veux éliminer les fréquences 40Hz et 50 Hz d'un signal composite (le gabarit est en rouge) :
    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
    fe=200;t=(1:fe)/fe;
    x1 = 0.5*sin(2*pi*t*5)+0.5*randn(size(t)); 
    x2 = sin(2*pi*t*50)+0.5*randn(size(t));
    x3 = sin(2*pi*t*40)+0.5*randn(size(t));
    % signal somme
    xtot = x1+x2+x3;Nx = length(xtot);
    figure(1)
    tf=fft(xtot,Nx);
    w=(0:Nx-1)/Nx*fe;
    plot(w,abs(tf(1:Nx)));
    hold on
    line([0 30 30 60 60 140 140 170 170 Nx],[40 40 150 150 40 40 150 150 40 40],'color','r')
    grid
    xlabel('fréquences en Hz')
    for i=1:Nx;
       g(i)=tf(i)*heavi(abs(tf(i))-seuil1(i,Nx));
    end
    figure(2)
    i=1:Nx;
    plot(i,g(i));grid
    seuil1 est une function qui définit le gabarit :

    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
    function s=seuil1(n,N)
    plage=[40 0;150 30;40 60;150 140;40 170];
    if n>=plage(1,2)
        s=plage(1,1);
    end
    if n>=plage(2,2)
        s=plage(2,1);
    end
    if n>=plage(3,2);
        s=plage(3,1);
    end
    if n>=plage(4,2)
        s=plage(4,1);
    end
    if n>=plage(5,2)
        s=plage(5,1);
    end

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Je tente de faire tourner ces scripts, mais ca bloque à la fonction HEAVI,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    undefined function or method heavi for input arguments of type 'double'
    Elle sort d'où cette fonction? Je ne l'ai pas dans l'help

  8. #8
    Membre émérite
    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
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour.
    heavi réalise le signal de Heaviside :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function v=heavi(x)
     if x<=0
         v=0;
     else
         v=1;
     end

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 307
    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 307
    Points : 52 887
    Points
    52 887
    Par défaut
    Citation Envoyé par phryte Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function v=heavi(x)
     if x<=0
         v=0;
     else
         v=1;
     end
    Ce qui peut simplement s'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function v=heavi(x)
     v = x>0;

  10. #10
    Membre émérite
    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
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour.
    Merci Dut pour ta version beaucoup plus élégante.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Eliminer des bandes d'un signal wav
    Par cedric06000 dans le forum Scilab
    Réponses: 11
    Dernier message: 03/08/2009, 18h18
  2. Elimination des doublons
    Par amika dans le forum Requêtes
    Réponses: 8
    Dernier message: 05/11/2005, 09h28
  3. Elimination des doublons
    Par bilalove dans le forum Oracle
    Réponses: 3
    Dernier message: 11/08/2005, 13h53
  4. Réponses: 4
    Dernier message: 12/04/2005, 19h51
  5. Eliminer des Doublon dans une Table
    Par Soulama dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/02/2005, 14h27

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