140 likes | 420 Views
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
E N D
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 ?
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 fe=2000; f0=200; 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é