Comment créer des filtres « simples » utilise le son, Matlab et Goldwave selon temps disponible. Durée : 1 heure – auteur : Jean-Paul Stromboni Après cette séance, vous devez savoir : commenter le gabarit d'un filtre passe bas donner l’équation des filtres "simples" (récursifs d'ordre 1 et 2) calculer ces filtres selon le gain et la fréquence de coupure souhaités définir, caractériser et appliquer un tel filtre avec Matlab Mettre en œuvre un filtre avec Goldwave créer un filtre résonateur, un oscillateur, une combinaison de filtres En travaux dirigés, on calcule, on évalue, on applique, on met en œuvre des filtres simples en utilisant Matlab et Goldwave. Savez vous répondre aux questions suivantes ? Calculer Si et Stabilité et gain statique de Même question pour Quelle est la réponse indicielle du filtre dérivateur ? Qu’est ce qui différencie F1(z) et F2(z) ? Relation entre et Stabilité et gain statique de Le filtre intégrateur est il passe haut ou passe bas ?
On évalue un filtre à partir de sa réponse harmonique ou réponse fréquentielle On note RH(f) la réponse harmonique d'un filtre discret, sa courbe de gain (atténuation) est |RH(f)|. RH(f) est périodique, de période fe |RH(f)| est symétrique par rapport à fe/2 Voici par exemple l'allure de la courbe de gain d'un filtre passe bas discret entre 0Hz et fe/2 : l'échelle de fréquence est linéaire attention, la fréquence est parfois en rad/sec G est le gain statique, à la fréquence f = 0Hz, le gain est souvent exprimé en décibel, GdB fc est la fréquence de coupure à 3dB la bande passante est fc g est le gain minimum en f=fe/2 la pente (steepness) donne la qualité de coupure
La fonction de transfert d’un filtre récursif d'ordre n est dotée de n pôles non nuls. Par exemple, voici une fonction de transfert du premier ordre et quelques informations sur le filtre qu'on en déduit aisément : Un pôle en z=a La réponse harmonique La périodicité de la réponse harmonique La courbe de gain Le gain statique Le gain en fe/2 L'équation aux différences à programmer pour mettre le filtre en œuvre :
La fonction de transfert d’un filtre récursif d'ordre 2 possède donc 2 pôles non nuls Par exemple, voici une fonction de transfert du second ordre Que dire sur les pôles ? La réponse harmonique La périodicité de la réponse harmonique La courbe de gain Le gain statique Le gain en fe/2 L'équation aux différences à programmer pour mettre le filtre en oeuvre
On sait calculer les filtres F1(z) et F2(z) précédents selon les caractéristiques G et fc Pour le filtre F1(z) du premier ordre, on obtient la fréquence de coupure à 3dB notée fc et le gain sta-tique G en calculant les coefficients comme suit : Pour le filtre F2(z), les coefficients sont : Ces deux résultats qui ne sont pas démontrés découlent de la relation suivante entre la variable de Laplace p et la variable z :
Pour évaluer les performances d’un filtre on dispose des fonctions suivantes de Matlab : Par exemple : On crée le filtre avec l’instruction tf : ftz=tf(0.1,[1,–0.9],1/8000) %ftz=tf(num,den,Te) On calcule la réponse impulsionnelle de ftz : [hn,t]=impulse(ftz); % puis plot(t,hn)% pour le tracé, ou impulse(ftz) la réponse indicielle (à une entrée échelon) : [ind,t]=step(ftz); % ou simplement step(ftz) % pour tracer la réponse harmonique (ou fréquentielle): bode(ftz) % attention ! rad/s, pas Hz [m,p,w]=bode(ftz); % voir aussi freqz qui trace en Hz on applique le filtre au signal xn avec filter: yn=filter(0.1,[1,-0.9],xn) ; Comment définir avec Matlab le filtre suivant et comment tracer sa réponse harmonique :
Matlab permet de calculer les coefficients d'un filtre, avant de le mettre en œuvre Voici l’exemple d’un filtre passe bas calculé par MATLAB qui en trace la réponse harmonique fe=2000; a=exp(-2*pi*200/fe);% on trouve a=0.5335 b=1-a; % Matlab trouve b= 0.4665 F1z =tf([b,0],[1,-a],1/fe) bode(F1z) Mesurer G, Gmin, fe, fc, et préciser l'EaD du filtre F1z :
Sur ce tracé par Matlab, les réponses de deux filtres à comparer sont superposées. fe=2000; fc=200; a=exp(-2*pi*fc/fe),b=1-a; F1z=tf([b],[1,-a],1/fe); b=exp(-sqrt(2)*pi*fc/fe)% b=0.6413 a=b*cos(sqrt(2)*pi*fc/fe)% a=0.5790 F2z=tf([1-2*a+b^2,0],[1,-2*a,b^2],1/fe) bode(F1z,F2z) Qu’est ce qui rapproche ces deux filtres ? Qu’est ce qui les différencie ?
Inverser la fonction de transfert inverse la réponse harmonique (gain et déphasage) Ci-dessus la réponse harmonique du filtre : Calculer la fonction de transfert H(z) du filtre Mesurer le gain statique : Mesurer le gain maximum : Lire la fréquence à +3dB : Préciser le type de filtrage obtenu :
On sait calculer le filtre récursif F2(z) du second ordre pour créer des résonances Pour amplifier une zone de fréquence du spectre d’un signal, on calcule ainsi a et b du filtre F2(z) : x est l’amortissement réduit, f0 la fréquence propre, la résonance est d’autant plus haute et sa fréquence voisine de f0 que 1 > x > 0 est proche de zéro. Pour Matlab trouve a=0.7615, b=0.9391. Mesurer les caractéristiques de la résonance :
On peut programmer un filtre qui oscille à la fréquence f0, en imposant b=1; a=cos(2*pi*f0/fe); Ft8=tf([1-2*a+b^2,0],[1,-2*a,b^2],1/fe) bode(Ft8) grid Mesurer le gain statique: Vérifier la fréquence d’oscillation: Quelles sont les caractéristiques de la résonance ici?
Un produit de fonctions de transfert fait la somme des réponses fréquentielles Expliquer comment ce filtre a pu être réalisé