Académique Documents
Professionnel Documents
Culture Documents
TP1 TRc1 2013-2014 Son
TP1 TRc1 2013-2014 Son
TP TR-C1 n°1
La réponse fréquentielle d’un filtre numérique notée H(f) est obtenue à partir de H(z) en posant z = e j2πfTe .
Cette réponse fréquentielle est à valeurs complexes. Elle peut donc s’écrire : H(f) = H(f) e jArg(H(f))
H. Garnier -3- TP 1
La réponse d’un filtre numérique est périodique de « période » fe=1/Te. On tracera cette réponse pour l’intervalle de
fréquence : 0 et fe/2.
Sous Matlab, le module H(f) et l’argument (la phase) φ(f) = Arg(H(f)) peuvent être facilement obtenus à l’aide 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 réponse fréquentielle 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 répertoire. Dans la fenêtre command,
exécuter les lignes suivantes :
»fe=1000;
»num=[0.5 0.5];
»den=[1 0];
»repfreqz
Vérifier que le filtrage réalisé est de type passe-bas de fréquence de coupure fe/4 et que la réponse fréquentielle en phase
est linéaire 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 fréquence(s) de coupure, observer la raideur des filtres
sur la réponse fréquentielle, 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 défini par
1 1
l’équation n°1 s n = e n + e n −1 . Calculer la sortie du filtre sur le papier. Utiliser la fonction filter de Matlab pour
2 2
réaliser ce filtrage et vérifier votre calcul.
Ecrire un programme filtre.m qui permet de réaliser le filtrage du signal e défini par le filtre n°1 (comme le réalise
la fonction Matlab filter). On pourra utiliser une boucle for … end. Comparer les résultats fournis par votre fonction
filtre et la fonction Matlab filter. Faire valider par l’enseignant.
H. Garnier -5- TP 1
utilisez la commande sound.
sound(x,fe);
On pourra également utiliser la fonction soundsc plutôt que la fonction sound qui ne fonctionne correctement que si
toutes les valeurs du signal sont comprises dans l’intervalle [-1 ;1].
soundsc(x,fe);
La fonction soundsc (‘sc’ pour scale, c'est-à-dire mise à l’échelle) multiplie et décale automatiquement les
échantillons du son pour que le minimum soit égal à -1 et le maximum à 1. Elle présente l’inconvénient de ne pas
rendre forcément un son débutant ou finissant par une valeur proche de 0, ce qui peut provoquer un « clic » en début ou
fin d’écoute du son. Pour éviter ce désagrément, on peut précéder 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 résultat (le son doit être
devenir plus grave, le filtre ayant éliminé les aigus).
De même, nous admettrons que les lignes suivantes réalisent un filtrage passe-haut de fréquence de coupure
fc=fn*fe/2 où fn est la fréquence de coupure normalisée 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 résultat (le son doit
être devenir plus aigu, le filtre ayant éliminé les graves). Faire valider par l’enseignant.
Enfin, effectuez un filtrage passe-bande de votre choix en consultant l’aide 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