Академический Документы
Профессиональный Документы
Культура Документы
TP TR-C1 n1
La rponse frquentielle dun filtre numrique note H(f) est obtenue partir de H(z) en posant z = e j2fTe .
Cette rponse frquentielle est valeurs complexes. Elle peut donc scrire : H(f) = H(f) e jArg(H(f))
H. Garnier -3- TP 1
La rponse dun filtre numrique est priodique de priode fe=1/Te. On tracera cette rponse pour lintervalle de
frquence : 0 et fe/2.
Sous Matlab, le module H(f) et largument (la phase) (f) = Arg(H(f)) peuvent tre facilement obtenus laide de la
fonction freqz selon la commande suivante :
[H,f]=freqz(num,den,N,fe)
o N est le nombre de points de calcul de la rponse frquentielle entre [0 ; fe/2] (N=512 par exemple). La commande
freqz(num,den,N,fe) permet de tracer directement le diagramme de Bode pour la zone utile du filtre (entre 0 et
fe/2).
Sauvegarder ce fichier (Menu File+ Save as) sous le nom repfreqz.m sous votre rpertoire. Dans la fentre command,
excuter les lignes suivantes :
fe=1000;
num=[0.5 0.5];
den=[1 0];
repfreqz
Vrifier que le filtrage ralis est de type passe-bas de frquence de coupure fe/4 et que la rponse frquentielle en phase
est linaire dans la bande passante du filtre.
H. Garnier -4- TP 1
2. ANALYSE DE FILTRES RIF
Comparer les filtres passe-bas obtenus entre eux (calculer la ou les frquence(s) de coupure, observer la raideur des filtres
sur la rponse frquentielle, relier la raideur l'ordre, ...).
Soit un signal e(n) contenant 5 chantillons e=[0 1 1 0 1]. Nous allons filtrer ce signal par le filtre dfini par
1 1
lquation n1 s n = e n + e n 1 . Calculer la sortie du filtre sur le papier. Utiliser la fonction filter de Matlab pour
2 2
raliser ce filtrage et vrifier votre calcul.
Ecrire un programme filtre.m qui permet de raliser le filtrage du signal e dfini par le filtre n1 (comme le ralise
la fonction Matlab filter). On pourra utiliser une boucle for end. Comparer les rsultats fournis par votre fonction
filtre et la fonction Matlab filter. Faire valider par lenseignant.
H. Garnier -5- TP 1
utilisez la commande sound.
sound(x,fe);
On pourra galement utiliser la fonction soundsc plutt que la fonction sound qui ne fonctionne correctement que si
toutes les valeurs du signal sont comprises dans lintervalle [-1 ;1].
soundsc(x,fe);
La fonction soundsc (sc pour scale, c'est--dire mise lchelle) multiplie et dcale automatiquement les
chantillons du son pour que le minimum soit gal -1 et le maximum 1. Elle prsente linconvnient de ne pas
rendre forcment un son dbutant ou finissant par une valeur proche de 0, ce qui peut provoquer un clic en dbut ou
fin dcoute du son. Pour viter ce dsagrment, on peut prcder la fonction sound(x,fe) de la commande suivante :
x=s/max(x) ;
sound(x,fe);
fc=2000;
fn=fc/(fn/2));
b1=fir1(100,fe,low);
x1=filter(b1,1,x);
soundsc(x1,fe);
spectre(x1,fe);
Faites varier fc varie entre 80 et fe/2. Tracez le spectre du signal filtr x1 et coutez le rsultat (le son doit tre
devenir plus grave, le filtre ayant limin les aigus).
De mme, nous admettrons que les lignes suivantes ralisent un filtrage passe-haut de frquence de coupure
fc=fn*fe/2 o fn est la frquence de coupure normalise comprise entre 0 et 1 :
b2=fir1(100,fn,high);
x2=filter(b2,1,x);
soundsc(x2,fe);
spectre(x2,fe);
Faites galement varier fc entre 500 et fe/2. Tracez le spectre du signal filtr x2 et coutez le rsultat (le son doit
tre devenir plus aigu, le filtre ayant limin les graves). Faire valider par lenseignant.
Enfin, effectuez un filtrage passe-bande de votre choix en consultant laide en ligne de la fonction fir1.
Pour en savoir plus, surfez par exemple sur http://www-gmm.insa-toulouse.fr/~guillaum/
H. Garnier -6- TP 1