Vous êtes sur la page 1sur 5

Université Saâd Dahlab, Blida 1 Master 1 / Electronique des systèmes embarqués

Faculté de Technologie/Département d’Électronique 2018 / 2019

T.P. 1 : Analyse de filtres numériques RIF

Partie 1 : ANALYSE DE FILTRES NUMERIQUES SOUS MATLAB

1.1. REPRESENTATION D’UN FILTRE NUMERIQUE SOUS MATLAB


Un filtre numérique en général est représenté par sa fonction de transfert en z. Sous
MATLAB, une fonction de transfert en z est caractérisée par deux vecteurs contenant les
coefficients des puissances décroissantes de z-1, du numérateur et du dénominateur de la
fonction de transfert considérée.
1 1 −1 0.5+0.5 z−1
Ex : La fonction de transfert en z suivante : H ( z ) = + z =
2 2 1+0. z −1
sera représentée sous Matlab par :
»num=[0.5 0.5];
»den=[1 0];

1.2. REPONSES TEMPORELLES ET FREQUENTIELLES


L’analyse d’un filtre peut être effectuée à partir de ses réponses temporelles et
fréquentielles. Les divers modes de représentation sont complémentaires et traduisent de
manière différente les caractéristiques d’un filtre.

1.2.1 Réponse impulsionnelle


La réponse impulsionnelle est directement tracée à l’aide de la commande impz:
»impz(num,den)

1.2.2 Réponse à une entrée quelconque


On peut, grâce à la fonction filter, calculer la réponse temporelle d’un filtre numérique à
une entrée quelconque. Ainsi, dans les lignes ci-dessous, on veut tracer la réponse du filtre
du 1er ordre à un signal sinusoïdal de pulsation 1000 rads/s sur2 périodes :
» f0=1000/(2*pi);
» T0=1/f0;
» duree=2*T0;
» t=0:T0/100:duree;
» u=sin(2*pi*f0*t);

1
Université Saâd Dahlab, Blida 1 Master 1 / Electronique des systèmes embarqués
Faculté de Technologie/Département d’Électronique 2018 / 2019

» y=filter(num,den,u); % y = sortie du filtre pour l'entrée u


» stem(t,u) % tracé de l’entrée et de la sortie en fonction du temps sur une
» hold on % même figure
» stem(t,y)
» hold off

La fonction stem permet le tracé d’une séquence de valeurs discrète. On peut ainsi à l’aide
de la fonction filter calculer la réponse d’un filtre numérique à une excitation quelconque.
Cette fonction est donc fondamentale lorsque l’on désire réaliser le filtrage numérique d’un
signal sous Matlab.

1.2.3 Réponse fréquentielle


La réponse fréquentielle d’un filtre numérique notée H(f) est obtenue à partir de H(z) en
posant z = ej2πfTe .
Cette réponse fréquentielle est à valeurs complexes. Elle peut donc s’écrire :
H(f) = |H(f)|ejArg(H(f))
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 etfe/2).

1.3. TRACE DES REPONSES IMPULSIONNELLES ET FREQUENTIELLES


 Réponse impulsionnelle
Créer un fichier texte repimpz.m(Menu File+ New M-File) contenant les lignes suivantes:
[y,t]=impz(num,den,N);
stem(t,y)
title('Réponse impulsionnelle')

 Sauvegarder ce fichier (Menu File+ Save as) sous le nom repimpz.m sous votre
répertoire. Dans la fenêtre command, exécuter les lignes suivantes :

2
Université Saâd Dahlab, Blida 1 Master 1 / Electronique des systèmes embarqués
Faculté de Technologie/Département d’Électronique 2018 / 2019

»N=10
»num=[0.5 0.5];
»den=[1 0];
»repimpz
 Vérifier que le réponse impulsionnelle est finie.

 Réponse fréquentielle en amplitude et phase et diagramme de Bode


Créer un fichier texte repfreqz.m (Menu File+ New M-File) contenant les lignes
suivantes:
[H,f]=freqz(num,den,512,fe);
amp=abs(H);
phase=unwrap(angle(H));
% Tracé de la réponse fréquentielle en amplitude et phase
figure
subplot(2,1,1)
plot(f,amp),grid
title('Réponse fréquentielle en amplitude et phase pour [0;fe/2]'),
ylabel('Amplitude')
subplot(2,1,2)
plot(f,phase*180/(pi)),grid
ylabel('Phase en °'),
xlabel('fréquence (Hz)')
% Tracé du diagramme de Bode en amplitude et phase
figure
subplot(2,1,1)
plot(f,20*log10(amp)),grid
title('Diagramme de Bode en amplitude et phase pour [0;fe/2]'),
ylabel('Amplitude en dB')
subplot(2,1,2)
plot(f,phase*180/(2*pi)),grid
ylabel('Phase en °'),
xlabel('fréquence (Hz)')
 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;

3
Université Saâd Dahlab, Blida 1 Master 1 / Electronique des systèmes embarqués
Faculté de Technologie/Département d’Électronique 2018 / 2019

»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.

Partie 2 : ANALYSE DE FILTRES RIF


2.1. ETUDE THEORIQUE
Pour chacun des filtres suivants :

Déterminer :
a) le type de filtre (RIF, RII) et son ordre,
b) la fonction de transfert en z,
c) la réponse impulsionnelle,
d) la réponse fréquentielle, en précisant la (ou les) fréquence(s) de coupure et la zone utile.
Il faudra par conséquent calculer la (ou les) fréquence(s) de coupure.
e) le type du filtre (passe-bas, passe-haut, passe-bande, réjecteur,…).

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, ...).

2.2. ANALYSE EN SIMULATION SOUS MATLAB

4
Université Saâd Dahlab, Blida 1 Master 1 / Electronique des systèmes embarqués
Faculté de Technologie/Département d’Électronique 2018 / 2019

Pour chacun des filtres étudiés dans la partie étude théorique, vérifier les réponses
impulsionnelle et fréquentielle à l’aide de vos fichiers créés plus haut : fichiers repimpz,
repfreqz. Faire valider les résultats par l’enseignant.

Partie 3 : IMPLANTATION D’UN FILTRE SOUS MATLAB

Soit un signal e(n) contenant 5 échantillons e=[0 1 1 0 1]. Nous allons filtrer ce signal par

1 1
le filtre défini par l’équation n°1 : s ( n )= en + e n−1
2 2

 Calculer la sortie du filtre sur le papier. Utiliser la fonction filter de Matlab pour
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.