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 :

synthèse de filtres numériques


Sujet :

Signal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut synthèse de filtres numériques
    Bonjour,
    J'ai un travail à rendre sous matlab dans lequel on doit synthétiser des filtres numériques à réponse impulsionnelle infini.
    Le tout grâce à deux méthodes :
    La conservation de l’intégrale avec p → 2/Te · (1−z-1/ 1+z-1) (z-1 est la transformé en z)
    La conservation de la dérivation avec p → (1−z-1 / Te) (méthode d'Euler)

    Je dois réaliser des filtres numériques basés sur les deux méthodes ci-dessus et de les tester sur des sons générés en Matlab.
    On débutera avec un filtre passe-bas du 1er ordre de fréquence de coupure de l’ordre de 1 ou 2 kHz.
    On peut ensuite modifier ces différents paramètres :
    La (les) fréquence(s) de coupure
    L’ordre du filtre
    La nature du filtre :passe-bas,passe-bande...
    Le type d’entrée : sinusoïde pure, signal composé d’harmoniques, son parlé

    On peut également étudier l’effet du filtre et le comparer au cas analogique :
    Sur une entrée périodique pour des fréquences de coupure plus ou moins proches de la fréquence max acceptée (Fe/2)
    Sur une entrée de type échelon.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour

    Quel est le problème? Quelle est la question?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    Soit un filtre passe bas du 1er ordre H(p)=K/1+tau*p
    on a déterminer nos 2 équations aux différences :

    - Quand p vaut 1-z^-1 / Te

    on a H(z)= K / 1 + tau/Te - tau/Te * z^-1

    on trouve y(n)= tau/Te+tau * y(n-1) + KTe/Te+tau * x(n)

    - Quand p vaut (2/Te)*((1-z^-1) / (1+z^-1))

    on trouve y(n)=( 1/1+2tau/Te) * ((K(x(n) + x(n-1)) + (2tau/Te -1)*y(n-1))

    Maintenant comment on implémante ceci sur Matlab, en sachant que le but du travail est de réaliser des filtres numériques basés sur les deux méthodes que j'ai cité dans mon post précédent et de les tester sur des sons générés en Matlab ??

    Merci d'avance

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Petite chose avant de continuer à discuter, fais attention à l'ordre (et à la présence) de tes parenthèses quand tu écris tes formules, car j'ai du refaire les calculs pour être sûr que ce que tu disais été correct (ça l'est, si on ne tient pas compte des parenthèses manquantes).

    Bref, prenons le problème depuis le début.

    Tu as en clair cette formule :

    Nom : eqn5830.png
Affichages : 895
Taille : 753 octets

    (fais à partir de ce petit outil online)

    Donc en connaissant ton entré x à l'instant n, l'état de ta sortie à l'instant 0, tu peux calculer la sortie à l'instant n point par point. D'une entrée tu peux calculer une sortie. ça t'avance? si cela ne t'avance pas, soit beaucoup plus précis dans tes questions, montre nous ce que tu as déjà fait, et montre nous exactement quel est le problème. Je t'ai juste donné une piste de départ, à toi de me transmettre des questions sur le langage matlab précises.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Bonsoir,

    Je dois précisément implémenter un filtre passe pas numérique d'équations aux différences précédemment listées.

    Mais je ne sais pas comment faire ça sous matlab, voilà ce que j'ai fait pour l'instant :
    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
    24
    25
    % realisation d'un filtre passe bas par conservation de la derivée 
    clear all
     
    Fe = 44100 ;
    Te = 1/Fe;
    F0= 2000
    fc= 1000
     
    tau= 1/(2*pi*fc) ;
    t = 0: Te : 1;
    x = 1;
    N = length (t); 
    y(1)=0 ;
    for n = 2:N ;
    y(n) =  (Te*1 + tau*y(n-1))/(Te+tau);
    end 
    %subplot (2,1,1,'g') 
    plot (x,'b') 
     
    %axis ([0,5*Fe/F0,-1, 1])
     
    %subplot (2,1,2,'r')
    hold on, plot (y,'r'), hold off
    axis ([0,5*Fe/F0,-1, 1])
    grid

  6. #6
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Mon problème actuel c'est que je n'arrive pas à tracer la réponse impulsionnelle de mon filtre passe bas :/

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Et bien pour ça, il faut déjà créer un signal x qui modélise une impulsion.

    Comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    myX = exp(-1000:10);
    myX2 = flipdim(myX,2);
    X = cat(2,myX,myX2);
    X = X(900:end);
    Ensuite connaissant ta fonction de transfert (voir ma dernière formule) connaissant x et y à son état initial, y'a plus qu'à !
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  8. #8
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    D'accord merci bien !

    Et comment je fais pour construite la réponse du filtre analogique ?

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Malheureusement je ne sais pas, me suis jamais penché sur la question sur Matlab. Cela dit, tu peux t'en approcher en augmentant le nombre de points...
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  10. #10
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Oui c'est ce que je me suis dit, en gros j'augmente Fe (énormément) pour approcher le comportement de mon filtre analogique ?

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    ça me semble être un bon début. Il y a peut être d'autre méthode plus propre, peut être via simulink, mais je ne connais pas. Donc pour l'instant, tu peux faire comme ça.

    Edit: et si tu veux éviter des comportements bizarre, je te déconseille de faire un x= 0 0 0 0 0 1 0 0 0 0. ça risque de pas faire très propre, augmente plutôt ton Fe
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

Discussions similaires

  1. différence entre un filtre numérique et un filtre analogique
    Par cedric06000 dans le forum Traitement du signal
    Réponses: 7
    Dernier message: 18/07/2009, 15h41
  2. filtre numérique sur un champ texte
    Par debdev dans le forum Access
    Réponses: 15
    Dernier message: 26/05/2006, 17h45
  3. Filtres numériques (de Butterworth)
    Par spunky78 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 06/03/2006, 14h52
  4. conception d'un filtre numérique passe-bande
    Par sayain dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 24/02/2005, 17h22

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