Comment créer des filtres d’ordre 1 et 2 Séance 7, 1 heure, application de la séance sur les filtres Version : mardi 26 avril 2005 Auteur: Jean-Paul Stromboni Contenu de la séance : On étudie ici des filtres récursifs d’ordre un et d’ordre deux : on pose le problème du filtrage passe bas pour lequel on suggère deux solutions non démontrées : 1/ premier ordre et 2/ second ordre on vérifie avec MATLAB et Goldwave la solution du premier ordre on vérifie de même pour la solution du second ordre et on compare on propose un filtre passe-haut du premier ordre on précise comment on peut réaliser un filtre résonateur 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 peut spécifier un filtre en donnant la réponse fréquentielle souhaitée. Pour atténuer le spectre d’un signal audio au-delà d’une fréquence fc (fréquence de coupure à 3 dB), la fréquence d’échantillonnage étant fe > fc, le gain de la réponse indicielle doit suivre un gabarit : Une première solution simple (à vérifier) consiste à utiliser le filtre F1 du premier ordre : Voici une autre solution F2 du second ordre :
Pour concevoir un filtre discret, on peut utiliser les fonctions suivantes de Matlab Par exemple : Créer un filtre avec la fonction de transfert : ftz=tf(0.1,[1,–0.9],1/8000) %ftz=tf(num,den,Te) calculer la réponse impulsionnelle de ftz [hn,t]=impulse(ftz); % puis plot(t,hn)% pour le tracé, ou impulse(ftz) la réponse indicielle à un échelon de Heaviside [ind,t]=step(ftz); % ou simplement step(ftz)% pour le tracé la réponse harmonique : bode(ftz) % qui la trace, ou [m,p,w]=bode(ftz); Matlab calcule le produit de convolution : yn=conv(hn, xn); ou applique le filtre à partir de l’EaD : yn=filter(0.1,[1,-0.9],xn) ; définir avec Matlab le filtre suivant et tracer sa réponse harmonique :
On évaluera un filtre récursif avec Matlab, puis Goldwave peut le mettre en œuvre Voici l’exemple d’un filtre passe bas de fréquence de coupure fc=200Hz réalisé avec fe=2000Hz. Le script Matlab suivant calcule la solution 1: 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 le gain statique, vérifier fe, fc, et dire comment on programme F1 avec Goldwave
Avec Matlab, on compare les solutions du premier et du second ordre Avec Matlab, on compare les solutions du premier et du second ordre. Conclusion ? La solution F2(z) du problème précédent est le filtre de Butterworth d’ordre 2. Le script Matlab suivant compare F1z et F2z: 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=06413 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 différencie les deux solutions ? Comment programmer F2 avec Goldwave ?
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, Quel est le type de ce nouveau filtre ? Retrouver la fréquence à +3dB avec H(z)
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 x>0 est proche de zéro. Pour Matlab trouve a=0.7615, b=0.9391. Mesurer la hauteur et la fréquence de la réso-nance, le gain statique, qu’obtient-on si x=0 ?
On peut même programmer un filtre qui oscillera à la fréquence f0, avec 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 Vérifier la fréquence d’oscillation ; quelles sont la fréquence et la hauteur de la résonance?
Un produit de fonctions de transfert aboutit à la somme des réponses fréquentielles Comment peut-on réaliser ce filtre (dit notch filter) ? Quelle est l’action sur le spectre ?