Vous êtes sur la page 1sur 42

TRAVAUX PRATIQUES

DE TRAITEMENT
DU SIGNAL

Hicham AISSAOUI
FIEEA 2011

TRAVAUX PRATIQUES
DE TRAITEMENT
DU SIGNAL

- Sommaire

1- Introduction l'utilisation du logiciel Matlab et Simulink,

2- Spectre, densit Spectrale D.S.P et auto-corrlation d'un signal,

3- La Transforme de Fourier Discrte FFT,

4- Filtrage Numrique,

5- Synthse d'un filtre numrique

Traitement du Signal 2
FIEEA 2011

Sommaire

SOMMAIRE --------------------------------------------------------------------------------------------- 3

INTRODUCTION L'UTILISATION DU LOGICIEL MATLAB --------------------------- 5

0.0 Introduction--------------------------------------------------------------------------------------------------------- 5

1.1 Accs MATLAB-------------------------------------------------------------------------------------------------- 5

1.2 Prise en main du logiciel MATLAB ---------------------------------------------------------------------------- 6

1.2.1 Dclaration par une liste explicite des lments ------------------------------------------------------ 6

1.2.2 Par utilisation des fonctions et oprateurs offerts par Matlab ------------------------------------ 6

1.2.3 Aide sur quelques fonctions utiles de Matlab --------------------------------------------------------- 7

1.3 Graphique sous matlab ----------------------------------------------------------------------------------------- 16

1.4 Fichiers de programmes ---------------------------------------------------------------------------------------- 17

1.5 Fonctions function --------------------------------------------------------------------------------------------- 18

1.7 Lecture de donnes ---------------------------------------------------------------------------------------------- 19

1.8 Exemples d'applications ---------------------------------------------------------------------------------------- 19

INTRODUCTION SIMULINK ------------------------------------------------------------------ 21

2.1 Introduction Simulink ---------------------------------------------------------------------------------------- 21

2.2 Paramtres de simulation -------------------------------------------------------------------------------------- 23

2.3 Paramtres des oscilloscopes----------------------------------------------------------------------------------- 24

2.4 Rcupration de donnes --------------------------------------------------------------------------------------- 25

TP 2: SPECTRE, DENSIT SPECTRALE D.S.P D'UN SIGNAL ET


AUTOCORRELATION. ---------------------------------------------------------------------------- 29

0.0 Objectifs ----------------------------------------------------------------------------------------------------------- 29

1 - Spectre d'un signal sinusodal---------------------------------------------------------------------------------- 29

2 - Spectre d'une porte dcale (Signal rectangulaire) -------------------------------------------------------- 29

3- Spectre de la fentre de Hanning------------------------------------------------------------------------------- 29

4- Spectre de la fentre de Blackman----------------------------------------------------------------------------- 30

5 -Autocorrelation et DSP d'un signal alatoire ---------------------------------------------------------------- 30

Traitement du Signal 3
FIEEA 2011

TP 3: LA TRANSFORME DE FOURIER DISCRTE ------------------------------------ 31

0.0 Objectifs ----------------------------------------------------------------------------------------------------------- 31

1 - Spectre dun signal sinusodal --------------------------------------------------------------------------------- 31

2 - Spectre dun bruit blanc ---------------------------------------------------------------------------------------- 31

3 - Spectre dun signal sinusodal noy dans un bruit blanc ------------------------------------------------- 31

TP 4 FILTRAGE NUMRIQUE ------------------------------------------------------------------ 36

0.0 Objectifs ----------------------------------------------------------------------------------------------------------- 36

1. Introduction -------------------------------------------------------------------------------------------------------- 36

2. Filtres Rponse Impulsionnelle Fini FIR ------------------------------------------------------------------- 37

2.2 Laboratoire : filtres FIR---------------------------------------------------------------------------------------- 38


2.2.1 Filtrage de courbes en cosinus ------------------------------------------------------------------------- 38

2.2.2. Filtre du premier ordre -------------------------------------------------------------------------------- 39

2.2.3 Linarit du filtre -------------------------------------------------------------------------------------- 40

2.2.4 Linvariance en temps du filtre ----------------------------------------------------------------------- 40

TP 5 SYNTHSE D'UN FILTRE NUMRIQUE RIF ---------------------------------------- 41

0.0 Objectifs ----------------------------------------------------------------------------------------------------------- 41

1 Thorie ------------------------------------------------------------------------------------------------------------- 41

2- Mthode ------------------------------------------------------------------------------------------------------------- 41

3 - Travail effectuer------------------------------------------------------------------------------------------------ 42

Traitement du Signal 4
FIEEA 2011

Introduction l'utilisation du logiciel Matlab

0.0 Introduction

MATLAB est un logiciel interactif permettant deffectuer des calculs numriques complexes
particulirement utiles dans le domaine de lingnierie. Disponible sur de gros systmes, il
fut adapt pour lordinateur personnel muni dun coprocesseur mathmatique permettant une
grande capacit de calcul. Il est utilis en programmation scientifique, pour le calcul
numrique et la visualisation graphique, bas sur la reprsentation matricielle des donnes.
Le nom est driv de cette reprsentation MATLAB = MATrix LABoratory.

Ce logiciel travaille sur des matrices relles ou complexes. Par consquent, afin de l'utiliser
conformment, il est indispensable de garder toujours prsent l'esprit que toute variable ou
paramtre est systmatiquement considr comme une matrice (ou ses cas particuliers:
vecteurs ligne, vecteurs colonne et scalaire.

1.1 Accs MATLAB

MATLAB tant disponible sur diffrentes plates formes matrielles, on accde au logiciel en
lanant l'excutable matlab suivant la procdure habituelle de l'environnement concern.

Figure 1.1 Fentre de commande de Matlab

On se retrouve alors d ans un environnement dit fentre de commande dans lequel on peut
crire des commandes ou excuter des fonctions. La sortie du logiciel s'effectue en tapant
quit ou exit.

Sur les systmes qui permettent le multi-fentrage, on peut travailler sous MATLAB dans
une fentre et conserver son diteur de texte dans une autre afin de modifier simplement les
fonctions mettre au point.

Notez que MATLAB est un logiciel auto-document; des informations relatives une
commande donne peuvent tre obtenues lcran en composant help, suivi du nom de la

Traitement du Signal 5
FIEEA 2011

commande ou seulement help pour avoir la liste des commandes de Matlab. Il y a aussi la
possibilit dobtenir laide en ligne sur le cite de Mathworks www.mathworks.com ou vous
pouvez trouver toutes les nouveauts de Matlab.

1.2 Prise en main du logiciel MATLAB

Matlab est un logiciel qui travaille sur des matrices relles ou complexes. Par consquent,
afin de l'utiliser conformment, il est indispensable de garder toujours prsent l'esprit que
toute variable ou paramtre est systmatiquement considr comme une matrice (ou un de
ses cas particuliers: vecteurs ligne, vecteurs colonne et scalaire.

1.2.1 Dclaration par une liste explicite des lments

Vrifiez les galits suivantes: (pour ces premiers exemples, rester dans la fentre de
commande Matlab et crire aprs l'invite >>)

A = [ 1 2 3 4 5 6 ]= [1,2,3,4,5,6]= [1:1:6] = [1;2;3;4;5;6]

B = [1 2 3;4 5 6;7 8 9]

Rq : L'indexation des lments d'un tableau commence toujours 1.

1.2.2 Par utilisation des fonctions et oprateurs offerts par Matlab

Utiliser (liste non exhaustive)

ones(3,4) ones(1,4)

zeros(3,4) randn(4,5)

Avec ces quelques commandes, vous venez de construire un certain nombre de variables.
Matlab vous donne la possibilit de lister ces variables. Pour cela, utilisez la commande who
ou la commande whos. Vous pouvez ensuite dtruire ces variables. Vrifiez l'effet de who,
de clear et puis de clear all.

Des oprateurs matriciels sont dfinis dans Matlab. Afin de vous familiariser avec ceux ci,
traitez l'exemple suivant :

soient deux vecteurs ligne a = [10:-1:1] et ones(1,10).

Vous pouvez extraire une matrice d'une autre matrice; essayez par exemple, aprs
avoir crer la matrice A, la commande A[5:10, 2:4].

Traitement du Signal 6
FIEEA 2011

Construisez maintenant un vecteur ligne complexe a+j*b. Appliquez ce dernier


l'oprateur
" ' " puis recommencez avec l'oprateur " .' "

Il existe une aide "en ligne" que vous pouvez appeler grce Help, dans la barre de
menu. Vous accder alors une table de matire (table of contents) et un index. Appelez la
table des matires: une liste de rpertoires vous est alors propose. Slectionnez, l'aide de
la souris, le rpertoire ops et observer sont contenu.

1.2.3 Aide sur quelques fonctions utiles de Matlab

Oprations mathmatiques

Oprateurs sur les Matrices Oprateurs sur les Tableaux

+ addition + addition

- soustraction - soustraction

* multiplication .* multiplication

^ puissance .^ puissance

/ division droite ./ division droite

\ division gauche .\ division gauche

' transpose conjugu

.' transpose

- Remarque sur la multiplication

Si l'on veut multiplier un signal x par une fentre h, il suffit de taper :


y = xh en vrifiant que x et h on bien la mme longueur. ATTENTION ! n'oubliez pas le
point `.' avant le `*' car le signe `*' effectue la multiplication matricielle, alors que `.*'
effectue la multiplication terme terme. Ici aussi, il faut faire attention que les deux vecteurs
aient la mme taille et soient tous les deux lignes, ou tous les deux colonnes.

Traitement du Signal 7
FIEEA 2011

Oprateurs de relation

< infrieur

> suprieur

<= infrieur ou gal

>= suprieur ou gal

== gal

~= diffrent de

Liste des commandes utilises le plus frquemment

Voici une courte liste des instructions utiles pour les travaux pratiques, accompagnes d'une
brve description. Pour savoir comment utiliser ces fonctions, se rfrer l'aide de
MATLAB, par exemple en tapant help (nom de la commande) .

Commandes gnrales

clear Efface les variables gardes en mmoire

save Enregistre les variables pour utilisation future

who Affiche le nom des variables

whos Affiche le nom, le type et les dimensions des variables

load Permet de lire des variables pralablement enregistres

Fonctions mathmatiques

sin value le sinus

sinh value le sinus hyperbolique

exp value l'exponentielle

log value le logarithme naturel

log10 value le logarithme en base 10

sqrt value la racine carre

mod Retourne le modulo

Traitement du Signal 8
FIEEA 2011

Matrices particulires

eye Cre une matrice identit

ones Cre une matrice dont tous les lments valent 1

zeros Cre une matrice dont tous les lments valent 0

rand Cre une matrice dont les lments sont gnrs de manire alatoire

logspace Gnre un vecteur dont les lments suivent une progression logarithmique

Manipulations de matrices

' Effectue la transpose conjugue

.' Effectue la transpose (non conjugue)

det value le dterminant dune matrice carre

inv value l'inverse dune matrice carre

size Affiche les dimensions dune matrice

length Donne la longueur dun vecteur

Manipulation de nombres

lcm Dtermine le plus petit commun multiple

gcd Dtermine le plus grand commun diviseur

fix Arrondit en conservant uniquement la partie entire

ceil Arrondit vers le plus gros entier suivant

Manipulations de nombres complexes

real Retourne la partie relle d'un nombre complexe

imag Retourne la partie imaginaire d'un nombre complexe

abs value le module d'un nombre complexe

angle value la phase d'un nombre complexe

conj Gnre le conjugu d'un nombre complexe

Traitement du Signal 9
FIEEA 2011

Transformes

fourier value la transforme de Fourier

ifourier value la transforme inverse de Fourier

fft value la transforme discrte de Fourier

ifft value la transforme discrte inverse de Fourier

laplace value la transforme de Laplace

ilaplace value la transforme inverse de Laplace

ztrans value la transforme en z

iztrans value la transforme inverse en z

fftshift Inverse les deux moitis de courbes obtenues suite au calcul de la fft

Convolution et corrlation

conv Ralise la convolution de deux signaux

conv2 Ralise la convolution en deux dimensions de deux signaux

xcorr Ralise linter-corrlation de deux signaux, ou l'auto-corrlation d'un


seul signal

xcorr2 Ralise la corrlation en deux dimensions de deux signaux

Filtres

filter Filtre les donnes qui lui sont fournies selon le type de filtre qui a t dcrit

freqz Retourne la rponse en frquence complexe d'un filtre numrique

freqs Retourne la rponse en frquence complexe d'un filtre analogique

invfreqs Retourne les coefficients du numrateur et du dnominateur de la fonction


de transfert du filtre analogique ayant la rponse en frquence voulue

invfreqz Retourne les coefficients du numrateur et du dnominateur de la


fonction de transfert du filtre numrique ayant la rponse en frquence voulue

Traitement du Signal 10
FIEEA 2011

Statistiques

std value l'cart-type

var value la variance

mean value la valeur moyenne

median Identifie la valeur mdiane

max Identifie le plus grand lment

min Identifie le plus petit lment

Polynmes

roots Trouve les racines d'un polynme

poly Retourne les coefficients du polynme associ aux racines spcifies

demo permet de donner une dmonstration des possibilits que peut donner
MATLAB.

info donne des informations concernant MATLAB est ses toolboxs.

whatsnew affiche les fichiers Readme de MATLAB et ses ''toolboxs''.

help : donne un aide sur les fonctions spcifies.

Exp : help help.

Liste de commande avec des exemples

load permet de charger les fichiers de donnes.

Exp : load data.dat

save sauvegarde une variable dans un fichier.

Exp : save stock.dat x

delete efface le fichier spcifi.

Exp : delete stock.dat

type affiche le contenu dun fichier texte.

Exp : type data.dat

Traitement du Signal 11
FIEEA 2011

clear permet deffacer les variables spcifis de lespace mmoire.

Exp : clear x y z

who permet dafficher les variables de lespace mmoire.

roots permet de calculer les racines dun polynme.

Exp : a = [1 -1.2 0.35]; roots(a) = [0.5; 0.7];

conv calcul le produit entre deux polynmes.

Exp : a1 = [1 -0.5]; a2 = [ 1 -0.7]; conv(a1,a2) = [ 1 -1.2 0.35];

deconv calcul la division entre deux polynmes.

Exp : a1 = [1 -1.2 0.35]; a2 = [ 1 -0.7]; deconv(a1,a2) = [1 -0.5];

plot trace les courbes.

Exp : a = 1:100; plot(x);

axis dfinit les limites des axes des abscisses et des ordonnes.

Exp : xmin = 0; xmax = 100; ymin = -100; ymax = 100; axis([ xmin xmax ymin
ymax]);

figure permet de visualiser les courbes dj traces.

Exp : figure(1);

clg permet deffacer les courbes traces.

clc permet deffacer lcran.

exit permet de quitter le logiciel MATLAB.

min cherche le minimum dun vecteur.

Exp : a = [1 4 3 10 9 0.5 2 6]; min(a) = 0.5;

max cherche le maximum dun vecteur.

Exp : a = [1 4 3 10 9 0.5 2 6]; max(a) = 10;

sum calcul la somme des lments dun vecteur.

Exp : a = [1 4 3 10 9 0.5 2 6]; sum(a) = 35.5;

prod calcul le produit des lments dun vecteur.

Traitement du Signal 12
FIEEA 2011

Exp : a = [1 4 3 10 9 0.5 2 6]; prod(a) = 6480;

Sort classe les lments dun vecteur dans lordre croissant.

Exp : a = [1 4 3 10 9 0.5 2 6]; sort(a) = [0.5 1 2 3 4 6 9 10];

rand gnre une matrice ou un vecteur de variables alatoires dont les valeurs sont
comprises entre 0 et 1. Distribution uniforme.

Exp : rand(1,1) = 0.4315;

randn gnre une matrice ou un vecteur de variables alatoires dont les valeurs sont
comprises entre 0 et 1. Distribution normale.

round arrondi une variable autour de lentier le plus proche.

Exp : a= 5.25 ; round(a) = 5;

eig calcul les valeurs propres dune matrice.

Exp : a = [2 5; 4 3]; eig(a) = [-2 7];

det calcul le dterminant dune matrice.

Exp : a = [2 5; 4 3]; det(a) = -14;

exp calcul lexponentiel dune variable.

Exp : a =1; exp(1) = 2.71;

expm calcul lexponentiel dune matrice.

Exp : a = [2 5; 4 3]; expm(a) = [7.38 148.41; 54,59 20.08];

eye gnre une matrice identit.

Exp : eye(2,2) = [1 0; 0 1];

zeros gnre une matrice dont les lments sont de valeurs nuls.

Exp : zeros(2,2) = [0 0; 0 0];

ones gnre une matrice dont les lments sont de valeurs gale un.

Exp : ones(2,2) = [1 1; 1 1];

inv calcul linverse dune matrice ou dune variable.

Exp : a =1 ; inv(a) = 1;

rem donne le reste dune division entre deux variables.

Traitement du Signal 13
FIEEA 2011

Exp : a =10 ; a2 = 4; rem(a1,a2) = 2;

real donne la partie rel dun complexe.

Exp : a = 4 + 3i ; real(a) = 4;

imag donne la partie imaginaire dun complexe.

Exp : a = 4 + 3i ; imag(a) = 3;

conj donne le conjugu dun complexe.

Exp : a = 4 + 3i ; Conj(a) = 4 - 3i;

abs calcul le module dun complexe.

Exp : a = 4 + 3i ; abs(a) = 5;

sqrt calcul la racine dune variable.

Exp : a = 4 ; sqrt(a) = 2;

sqrtm calcul les racine dune matrice.

Exp : a = [4 4; 4 4]; sqrtm(a) = [2 2; 2 2];

chdir permet de changer le rpertoire de travail.

Exp : chdir c:\dos

dir permet de lister les fichiers dans un rpertoire.

Exp : dir *.m

function permet de dclarer une fonction.

Exp : function mean = min (x); a = length (x); mean = sum (x)/a;

length donne la dimension dun vecteur.

Exp : a = [1 2 9]; length(a) = 3;

size donne la dimension dune matrice.

Exp : a = [1 4;5 9]; size(a) = [2 2];

logm calcul le logarithme nprien dune matrice.

Exp : a = [1 1;1 1]; logm(a) = [0 0; 0 0];

log calcul le logarithme nprien dune variable.

Traitement du Signal 14
FIEEA 2011

Exp : a = 1; log(a) = 0;

log10 calcul le logarithme dcimal dune variable.

Exp : a = 10; log10(a) = 1;

fmin calcul le minimum dune fonction une variable.

Exp : fmin('cos',3,4);

fzero calcul le zro dune fonction une variable.

Exp : fzero('sin',3);

Matlab permet, comme tout langage volu, d'crire des boucles l'aide d'instructions du
type for, while, mais ces instructions ne sont utiliser que lorsque l'criture matricielle ne
permet pas de rsoudre le problme (cas d'un problme itratif...), car la vectorisation des
algorithmes rend les programmes plus concis et rduit beaucoup leur temps d'excution.

La syntaxe est de la forme:

for compteur = dbut : pas : fin while relation

expression ; expression;

expression; end

end

Comparez, par exemple, les deux programmes suivants qui construisent le mme vecteur
ligne.

a) b)

clear all clear all

i=0; t= [0:.01:20]

for t= 0:.01:20 y=sin(t);

i=i+1; plot(y)

y(i)=sin(t);

end

Traitement du Signal 15
FIEEA 2011

L'excution conditionnelle de programmes peut tre obtenue l'aide des instructions if, else
et elseif. Les programmes de boucle ainsi que les programmes excuts conditionnellement
doivent se terminer par l'instruction end.

La syntaxe est de la forme:

if relation if relation if relation Exemple

expression; expression; expression; for i=1:1:100

end else elseif relation if x(i)= = 0

expression; expression; x(i)= 1;

end else else

expression; x(i)= -1;

end end

end

1.3 Graphique sous matlab

MATLAB peut afficher des courbes planes, des courbes 3D, des surfaces mailles 3D ou des
surfaces facettes 3D. Les commandes respectives sont plot, plot3, mesh et surf.

Une commande plot suivante effacera le premier graphique pour tracer le nouveau dans la
mme fentre si la commande figure n'a pas t utilise entre temps. Cependant il est
possible de tracer des graphiques en surimpression l'aide de la commande hold on. Cette
commande a pour effet de conserver le graphe prsent avant de tracer le suivant. La
commande hold off annule cette possibilit.

MATLAB permet galement de tracer directement partir d'une fonction avec la commande
fplot. Soit la fonction sinus dfinie dans le fichier sinus.m par:

function y = sinus(x)

y = sin(x);

En excutant: fplot('sinus', [-pi pi]), on obtiendra le graphe.

Le graphe obtenu peut tre agrment d'un titre, de lgendes ou de texte. Les commandes
MATLAB correspondantes sont:

Traitement du Signal 16
FIEEA 2011

title('Ceci est le titre de la figure');

xlabel('Lgende des abscisses');

ylabel('Lgende des ordonnes');

gtext et text positionnement et criture dans la zone graphique.

Un graphe possde des attributs qui peuvent tre modifis l'aide de commandes, on
consultera l'aide de axis et plot.

Il est galement possible de tracer plusieurs graphes dans la mme fentre l'aide de la
commande subplot (voir aide). Enfin des reprsentations types sont obtenues l'aide des
commandes polar, bar, hist, etc...

La commande plot3 est identique la commande plot, elle ne fait appel qu' une coordonne
supplmentaire. La syntaxe de base est plot3(x,y,z). Les axes, titres et lgendes se traitent
comme dans le cas des courbes planes, la commande zlabel est disponible..

Supposons que l'on veuille reprsenter graphiquement la courbe y=sin(x) sur l'intervalle [-,] avec
200 points.

On excute alors les commandes suivantes :

x=-pi:pi/100:pi;

y=sin(x);

plot(x,y);

1.4 Fichiers de programmes

Pour ces premiers exemples, les instructions taient crites directement dans la fentre de
commande. Pour des programmes plus longs, il faut utiliser un diteur de texte. Vous
utiliserez le bloc-notes que vous pouvez ouvrir ds que vous slectionnez la commande new
dans file de la barre de menu. Vous pourrez aussi appeler un fichier existant avec la
commande open et lancer l'excution d'un programme avec Run Mfile.

Attention les fichiers ne pourront tre excuts que si leur nom possde l'extension.m. Vous
pouvez crire des programmes qui en appellent d'autres.

Traitement du Signal 17
FIEEA 2011

1.5 Fonctions function

Il est possible galement de crer vos propres fonctions MATLAB auxquelles on doit
transmettre un ou plusieurs paramtres. Exemple : on cre un fichier nomm sa.m
comprenant les lignes suivantes :

function Y=sa(X)

if X==0

Y=1

else

Y=sin(X)/X;

end

A chaque fois que lon demandera sa(V), on obtiendra lvaluation de sin(V)/V. Avant
lexcution de la fonction, la valeur du paramtre transmis est place dans X; le rsultat est
retourn dans la variable Y aprs que toutes les instructions aient t excutes.

Notez que les variables dune fonction de type function sont indpendantes des autres

variables, ce qui nest pas le cas lorsque le fichier ne dbute pas par linstruction function
.

1.6 Macro-instructions

Bien que chaque instruction puisse tre entre directement au clavier, il est souvent utile de
grouper un ensemble dinstructions excuter qui sera identifi par un seul nom et qui
pourra tre conserv et dit volont. Ceci est possible en plaant les instructions dans un
fichier dont le nom se termine par .m .

Exemple : on cre un fichier nomm graphe.m comprenant les lignes suivantes :


% COMMANDE GRAPHIQUE
plot(X,Y)
grid
% AFFICHAGE DU TITRE
title( RSULTATS )
% IDENTIFICATION DES AXES
xlabel( TEMPS(SEC) )
ylabel( AMPLITUDE )

Traitement du Signal 18
FIEEA 2011

A chaque fois que graphe sera appel du clavier ou dun autre fichier, la courbe de Y en
fonction de X sera trace lcran avec affichage du titre et identification des axes (on
suppose ici que les vecteurs X et Y ont t pralablement dfinis avant lappel de GRAPHE)

1.7 Lecture de donnes

Afin de lire des donnes utiles l'excution, on peut procder de deux faons : soit en
interrompant l'excution du programme et en demandant l'utilisateur d'indiquer les
donnes, soit en lisant un fichier de donnes. Cette deuxime solution tant bien souvent
prfrable.

Pour interrompre l'excution et demander une valeur, on utilise la commande input, dont
voici un exemple d'utilisation :

data=input('Donnez votre valeur (par defaut 0)');

Pour lire des fichiers de donne, on utilise la commande fscanf dont le principe de
fonctionnement est voisin de la commande fprint. Pour lire la donne data dans le fichier
ficdon, on utilisera la suite de commande suivante :

nfic=fopen(ficdon,'r'); %(ouvre le fichier ficdon en mode lecture)

data=fscanf(fid,'%d'); %(lit dans le fichier ficdon)

status=fclose(fid); %(ferme le fichier ficdon)

Pour plus d'informations, faire help fscanf, help fopen et help fclose. Il existe d'autres mthodes de
lecture et d'criture sur fichier, faire help iofun pour plus dinformations.

Maintenant, vous disposez de tous les outils ncessaires l'criture des programmes.

NB: Enregistrez vos programmes exclusivement dans le sous rpertoire correspondant


votre groupe de TP.

1.8 Exemples d'applications

1. Construire et visualiser le signal sinusodal:

y(t) = a cos (2 f t), sur 128 point avec a = 1, f = 10 Hz, et fe = 100 Hz.

Augmenter le nombre d'chantillons pour avoir plusieurs exemples.

2. Construire et visualiser le signal X redress double alternance issu du signal Y.

Traitement du Signal 19
FIEEA 2011

3. Construire et visualiser la somme de deux sinusodes S1 et S2.

S1(t)= a sin(2 f1t) f1 = 10 Hz a=1

S1(t)= b sin(2 f2t) f2 = 20 Hz b=1

4. Construire et visualiser la somme d'une srie de sinusodes Sn.

Sn(t)= a n sin(2 n f t) f = 10 Hz

avec a n = -4/(.n) pour n impaire et a n = 0 pour n paire.

Prendre n=5, 10, 100

Que remarquez-vous sur la forme que prend cette somme ?

5. Construire et visualiser la somme d'une srie de sinusodes Sn.

Sn(t)= a n sin(2 n f t) f = 10 Hz

avec a n = 1/n pour n impaire et a n = 0 pour n paire.

Prendre n=5, 10, 100

Que remarquez-vous sur la forme que prend cette somme ?

6. Composez cet exercice dans une macro-instruction. A laide de la fonction


MATLAB

[M,P]=bode(NUM,DEN,W), trouvez le diagramme de Bode du filtre dont la fonction de

transfert est :

Comme vecteur de frquences, on utilisera W = logspace(-1, 1, 100).

2. Transformez M afin davoir le module en dB.

3. Affichez graphiquement le module en fonction de la frquence en utilisant


linstruction semilogx(W,M) et les commandes daffichage du titre et didentification des
axes.

Traitement du Signal 20
FIEEA 2011

Introduction Simulink

2.1 Introduction Simulink

Simulink est un outil de MATLAB qui permet de remplacer les quations mathmatiques
entre certaines variables par des blocs. Lorsquon simule un schma en mode externe avec
loutil Real-Time Workshop (RTW), les donnes sont acquises et transformes en temps
rel.

Pour ouvrir un fichier simulink(.mdl), cliquez sur l'icne reprsentant simulink: . La


boite de dialogue suivante apparat.

Figure 2.1 Simulink library browser

Cette boite contient une liste de bibliothques disponibles, ainsi quun menu semblable
ceux auquel vous tes familier dans les logiciels de traitement de texte.

Donc, pour ouvrir un nouveau fichier, il suffit de cliquer avec la souris sur licne , alors

que pour ouvrir un module simulink existant cliquer sur licne .

Traitement du Signal 21
FIEEA 2011

Lorsquun module simulink est ouvert vous pouvez, en vous dplaant dans la liste des
librairies, importez les blocs dsirs sur lespace de travail.

Pour importer un bloc dans votre fichier de travail, glissez le losange qui est devant le nom
du bloc jusqu' votre espace de travail. Vous pouvez rechercher un lment de la liste en
tapant une partie de son nom dans la case libre suivi de ENTER .

Vous pouvez vous exercer en essayant de raliser ce petit module fig. 2.2, avec lequel vous
allez pouvoir simuler une opration de quantification dun signal sinusodal.

Fig 2.2 Module simulink

A ce stade vous allez pouvoir ajuster les paramtres de chaque bloc dans votre module
simulink en double cliquant sur licne du bloc dsir. Par exemple, en double cliquant sur
Quantizer la fentre de la figure 2.3 va souvrir et vous allez pouvoir changer lintervalle de
quantification.

Fig 2.3 Block des paramtres du quantizer

Traitement du Signal 22
FIEEA 2011

2.2 Paramtres de simulation

Avant de lancer la simulation vous devez fixer les paramtres de tous les blocs en vous
assurant que cela est conforme avec votre tude thorique.

Aprs avoir cr le schma excuter, assurez vous que la simulation Normale

est coche dans le menu droulant Simulation. Ensuite, en

cliquant sur Parameters sous longlet Solver fig 2.4, vous devez dfinir :

- les temps de dpart et darrive en secondes (vrifiez les spcifications demandes)

- le mode de simulation : Type Fixed-Step, Discrte

Fig 2.4 Paramtres de simulation

Enfin, lorsque les paramtres sont entrs, cliquez sur Start dans le menu Simulation ou
cliquer sur licne .

Le temps de simulation apparat dans la case en bas du fichier. Une fois que la simulation est
arrte, vous pouvez analyser les variables recueillies dans les blocs To Workspace et
Time Scope

La variable que vous avez dfinie dans le bloc To Workspace est transmise sur la fentre
de commande Matlab. Vous pouvez comparer son contenu en la traant, avec ce que donne
Time Scope.

Traitement du Signal 23
FIEEA 2011

Note : Matlab ne garde en mmoire que les derniers points de la simulation. Pour dfinir le
nombre de donnes garder en mmoire, on double-clique sur le bloc Time Scope

contenant la donne, on clique sur le bouton Properties et sous longlet Data History, on
ajuste la longueur du vecteur tel que dsir comme sur le schma ci-dessous :

2.3 Paramtres des oscilloscopes

Comme pour la simulation en mode normal, il est possible de rcuprer les donnes

affiches sur un Time Scope en ouvrant sa fentre, en cliquant sur le bouton de la

fentre suivante :

Properties et, sous longlet Data History, en cochant Save Data to Workspace. Puisque le
Time Scope contient 2 graphiques, donc deux variables, il est impossible de rcuprer les
donnes en format Matrix , mais il faut le faire en format Structure with Time . Nous
expliquerons dans la suite comment transformer cette variable en donne manipulable.

Traitement du Signal 24
FIEEA 2011

2.4 Rcupration de donnes

Pour rcuprer les donnes gnres par la simulation, il faut insrer dans le schma un bloc
provenant de la librairie Simulink, Sinks. Les deux blocs les plus utiliss sont le Time
Scope et To Workspace . Ce dernier enregistre les donnes dans MATLAB mais ne les
affiche pas, contrairement l'oscilloscope. Les ajustements de l'oscilloscope ont t dcrits
la section prcdente. Pour le bloc To Workspace , il faut suivre les tapes suivantes
(avant l'excution de la simulation):

- double-cliquer sur le bloc,

- donner le nom de variable voulu,

- fixer le nombre de points conserver (Limit data points to last),

- enregistrer le format Array.

Une fois la simulation excute, on sauve les donnes dans des variables en crivant dans la
fentre de commande MATLAB ou encore dans le M-File les commandes suivantes:

t=ScopeData(:,1)

y=ScopeData(:,2)

Le nom ScopeData doit tre remplac par le nom de variable que l'on a choisi lorsque l'on a
ajust les paramtres de l'oscilloscope ou du bloc To Workspace . Les donnes de la
premire colonne de cette variable correspondent au temps o ont t prlevs les
chantillons, tandis que les valeurs de la deuxime colonne sont les rsultats eux-mmes.
1. TRAVAIL RALISER AU LABORATOIRE

OBJECTIF
Le but de ce travail est de se familiariser avec la technique de drag and drop de Simulink
en valuant la rponse impulsionnelle dun systme linaire (filtre) et en simulant le filtrage
dun signal.
INTRODUCTION
La rponse impulsionnelle h(t ) dun systme linaire est la sortie du systme si lentre est
limpulsion de Dirac (t ) . Dans ce travail vous devrez valuer la rponse impulsionnelle
dun systme linaire et lafficher graphiquement. La fonction de transfert dun systme de
quatrime ordre vous sera prcise au laboratoire.

Vous devrez galement valuer la rponse lchelon dun systme. Vous aurez loccasion
dobserver les diffrentes rponses obtenues selon la position des ples du systme.

Traitement du Signal 25
FIEEA 2011

La dernire partie du travail traite du filtrage dun signal. Le but est dobserver la sortie dun
filtre Butterworth dont lentre est un signal tel quune onde carre priodique.

PREMIRE PARTIE : RPONSE IMPULSIONNELLE DUN SYSTME DORDRE


4
1. Ouvrir Matlab.

2. Cliquer sur le symbole color Simulink ou dans la fentre Command Window de


Matlab taper : simulink.

3. Dans la fentre Simulink Library Browser , cliquer sur file-new .

4. Dans la Library , choisir Continuous . Tirer la bote Transfer function et la


dposer sur le nouveau document simulink.

5. Programmer cette bote en double cliquant et en spcifiant les paramtres de la fonction


de transfert qui vous sera prcise au laboratoire. Exemple de fonction de transfert :
1
H s
s 1.197 s 1.717 s 2 1.025s 0.379
4 3

6. Choisir la source dentre en cliquant sur Sources et transportant la bote dchelon


(Step).

7. Vu que le but est dvaluer la rponse impulsionnelle plutt que la rponse lchelon et
vu que les transforme de Laplace de (t) et u(t) sont :
1
t 1 et u t
s
il faudra annuler le ple introduit par lchelon. Vous pouvez effectuer ceci en
multipliant H ( s ) par s, et ainsi annuler le ple de u (t ) par ce zro. Vous devrez ainsi
double-cliquer sur la bote Transfer function et programmer le numrateur par la
vecteur [1 0].

8. Pour observer la rponse lchelon du systme, il faudra relier lchelon lentre de la


fonction de transfert sans oublier de brancher une bote Scope (de la librairie Sink
de Simulink ) la sortie de la fonction de transfert.

9. Cliquer sur la flche noire Start simulation .

10. Double-cliquer sur Scope pour voir la rponse du systme.

11. Pour prolonger la dure de la simulation, cliquer sur Simulation - Simulation


parameters . Augmenter Stop Time 40, par exemple.

12. Prparer les lments du rapport remettre :

a) les paramtres de la fonction de transfert tels quobservs en double-cliquant sur la


bote Transfer Function ,

Traitement du Signal 26
FIEEA 2011

b) la sortie du Scope.
c) Imprimer un plot par Matlab de la sortie a partir des donnes sur Workspace, qui
contient le titre du graphique et les identifications des deux axes.

DEUXIME PARTIE : RPONSE LCHELON DUN SYSTME

1. valuer la rponse lchelon en remplaant la bote Transfer function par deux de


ces botes connectes en parallle et dont les sorties sont additionnes par un sommateur
(tir de la librairie de Simulink : Mat-Sum).

2. Programmer les deux fonctions de transfert pour obtenir la fonction :


1 1
H s
s p1 s p2
pour chacun des trois cas suivants :

p1 et p2 sont rels, par exemple, p1 1, p2 3 ,


p1 p2 , par exemple, p1 p2 1 ,
p1 et p2 sont complexes conjugus, par exemple,
p1 0.5 j , p2 0.5 j .

noter que pour le cas p2 p1 , il faudra remplacer les deux botes par une seule
dont la fonction de transfert est :
1 1 2s 2 Re p
H s 2
s 2 Re p s p

s p s p 2

Avec p j o 0.2 et 1 , nous avons :


2 s 2 2s 1
H s 2 .
s 2 s s s 1.25
2 2 2

3. Quelle est a valeur de la rponse en rgime permanent, c'est--dire, quand t ?

4. Prparer les lments du rapport remettre (pour chacun des trois cas) :

a) les paramtres de la fonction de transfert tels quobservs en double-cliquant sur la


bote Transfer Function ,
b) la sortie du Scope.

Traitement du Signal 27
FIEEA 2011

TROISIME PARTIE : FILTRAGE DUN SIGNAL

1. Programmer une bote Transfer function pour simuler le filtre Butterworth suivant :
1
H s
s 2.613s 3.414 s 2 2.613s 1
4 3

2. Transporter une source Pulse Generator de la bibliothque de Simulink pour produire


le signal qui sera appliqu lentre au systme.

3. Observer la sortie du systme sur un Scope . Remarquer le lissage quintroduit le


filtre.

4. Ajuster la priode du gnrateur dimpulsions pour que la sortie du systme soit assez
semblable son entre sauf pour un lger lissage. Imprimer le rsultat.

5. Remplacer la fonction de transfert par

1
H s ,
s 1
imprimer la sortie et indiquer le type du filtrage qui a produit sa forme.

6. Rduire successivement la priode de lentre et observer leffet sur la sortie. Continuer


jusquau cas o la sortie na presque pas doscillation. Imprimer le rsultat.

7. Observer la valeur finale de la sortie. Le filtre ayant admis uniquement les basses
frquences, expliquer la raison de la valeur finale de la sortie observe.

8. Prparer les lments du rapport remettre :

a) les paramtres de la fonction de transfert tels quobservs en double-cliquant sur la


bote Transfer Function ,
b) la sortie du Scope ltape 4 (indiquer la priode du gnrateur dimpulsions),
c) la sortie du Scope ltape 5 (indiquer la priode du gnrateur dimpulsions),
d) lexplication demande ltape 6.

Traitement du Signal 28
FIEEA 2011

TP 2: Spectre, Densit Spectrale D.S.P d'un signal et Autocorrelation.

0.0 Objectifs

Lobjectif de ce TP est la synthse de plusieurs signaux et le calcule de leur spectre. Un


intrt particulier sera port aux diffrentes fentres de troncature rectangulaire, hanning,
Blackman et hamming. Enfin, nous tudierons lutilit de la corrlation pour la comparaison
des signaux.

1 - Spectre d'un signal sinusodal

Construire et visualiser un signal qui soit la somme de deux signaux sur 1024
points partir des vecteurs lignes:

x1 = sin(2 50 t) x2= sin(2 120 t); x=x1+x2

Calculer la Transforme de Fourier de chaque signal et en tracer une


reprsentation sur la mme figure.

Construire un signal y qui se compose de x1 pour ces premiers chantillons et se


termine par les chantillons de x2.

Calculer la Transforme de Fourier du signal y et tracer sa reprsentation puis


comparer avec la Transforme de x.

2 - Spectre d'une porte dcale (Signal rectangulaire)

Construire et visualiser un signal rectangulaire sur un support de 1024 points


valant 1 pour n= 25 750

Visualiser le spectre de ce signal rectangulaire (utiliser Subplot pour faire


apparatre les deux figures sur le mme cran).

3- Spectre de la fentre de Hanning

La fentre de Hanning est dfinie par :

w = .5*(1-cos(2*pi*t))

Gnrer une fentre de Hanning de longueur P = 50 chantillons et de valeur


max 1, et afficher son allure temporelle.
Calculer la transforme de Fourier discrte (TFD) de la fentre sur N = 1000
points frquentiels.

Traitement du Signal 29
FIEEA 2011

Afficher le module de la transforme de Fourier en linaire puis en dB.


Quelle est la largeur du lobe principal ?
Quel est le rapport en dB entre le max du lobe principal et le max du lobe
secondaire ?

4- Spectre de la fentre de Blackman

La fentre de Blackman est dfinie par :

w = (.42-.5*cos(2*pi*t)+.08*cos(4*pi*t) ;

Gnrer une fentre de Blackman de longueur P = 50 chantillons et de valeur max


1, et afficher son allure temporelle.
Calculer la transforme de Fourier discrte (TFD) de la fentre sur N = 1000 points
frquentiels.
Afficher le module de la transforme de Fourier en linaire puis en dB.
Quelle est la largeur du lobe principal ?
Quel est le rapport en dB entre le max du lobe principal et le max du lobe
secondaire ?

5 -Autocorrelation et DSP d'un signal alatoire

Crer un bruit blanc sur 200 points (utiliser Randn) et le visualiser.

Calculer et visualiser sa fonction d'auto-corrlation temporelle.

En dduire sa DSP et la visualiser; Commentaires.

Traitement du Signal 30
FIEEA 2011

TP 3: La Transforme de Fourier Discrte

0.0 Objectifs

Lobjectif de ce TP est ltude des performances, par simulation numrique, de quelques


estimateurs spectraux classiques mono-dimensionnel par le calcul lutilisation de la
Transforme de Fourier Discrte et Rapide.

La comparaison sera effectue sur des signaux synthtiques dont on matrise lamplitude,
la phase et la frquence de rsonance. On tudiera les avantages et les inconvnients
rsultants lutilisation de quelques fentres : Rectangulaire, Hamming et Blackman.

1 - Spectre dun signal sinusodal

1. Construire et visualiser un signal sinusodal sur 1024 points :

s(t) = ACos(2f0t) (1)

o A = 1, f0 = 150 Hz et la frquence dchantillonnage Fe = 1/Te = 20000.

2. Calculer la transforme de Fourier FFT S(f) de s(t) sur 20000 points.

3. En dduire la densit spectrale de puissance |S(f)|2 et la reprsenter graphiquement sur


512 points en deux modes : linaire et logarithmique.

2 - Spectre dun bruit blanc

1. Crer et visualiser un bruit blanc b(t) de moyenne nulle et de variance 2 sur 1024
points.

2. Calculer la Transforme de Fourier FFT B(f) sur 1024 points.

3. En dduire la densit spectrale de puissance |B(f)|2 et la reprsenter graphiquement sur


512 points en deux modes : linaire et logarithmique.

3 - Spectre dun signal sinusodal noy dans un bruit blanc

1. Construire et visualiser un signal y(t) qui soit la somme du deux signaux s(t) (1) et le
bruit blanc b(t) sur 1024 points.

2. Calculer la Transforme de Fourier FFT Y(f) de y(t) sur 20000 points.

3. En dduire la densit spectrale de puissance |Y(f)|2 et la reprsenter graphiquement sur


512 points en deux modes : linaire et logarithmique.

Traitement du Signal 31
FIEEA 2011

Remarque
Lors de lanalyse spectrale dun signal de longue dure, nous navons accs, en pratique,
qu une portion limite de ce signal. Le spectre obtenu correspond donc au spectre du signal
analyser auquel une fentre a t pralablement multiplie. La figure ci-dessous illustre
cette opration.

Figure 3.1
Exemple

Figure 3.2
Cette opration de limitation de dure du signal ne se voit pas en pratique, surtout lorsquon
utilise une fentre rectangulaire. Et cest le cas des trois premires questions o la limitation
de la dure du signal consistait ne considrer que les chantillons dsirs.

Comme on peut le constater, la fentre f(t) doit tre telle que le spectre Y() puisse tre
considr comme une approximation acceptable de X(), le spectre du signal complet.
Plusieurs tudes ont t effectues pour dterminer la forme optimale de la fentre utiliser.

Les principales caractristiques dune fentre peuvent tre mises en vidence en utilisant, par
exemple, un signal x(t) sinusodal de frquence 0. Comme on le sait, le spectre X() de la

Traitement du Signal 32
FIEEA 2011

sinusode nest form que deux impulsions de Dirac situes 0; le spectre Y() sera donc
( un facteur prs) F(+0) + F(-0) et nous permettra dvaluer la qualit de la fentre selon
les deux critres (figure 3.3) suivants :

1 - La largeur du lobe central dtermine la rsolution spectrale de la fentre, cest--dire sa


capacit de discriminer deux frquences proches lune de lautre.

2 - Lamplitude des lobes latraux dtermine ltalement spectral de la fentre. Un


talement spectral trop grand nuira la dtection dun signal damplitude faible en
prsence dun signal damplitude leve.

Figure 3.3
Des exemples de fentres de troncation sont illustrs par la figure 3.4

Traitement du Signal 33
FIEEA 2011

Les commandes triang(n), blackman(n) et hamming(n) produisent directement les fentres


voulues selon n points (en vecteurs colonnes).

4- Etude de leffet de diffrentes fentres


On propose de travailler sur lintervalle illustr par la figure 3.5

Intervalle [ 0 ] reprsent par 1024 points


Intervalle [ 0 T ] reprsent par 16384 points

TRAVAIL EFFECTUER

Au dbut de la sance, deux fentres vous serons dsignes. Vous utiliserez le logiciel
MATLAB pour :

mettre en vidence par une simulation pertinente (1) la supriorit dune fentre sur lautre
en ce qui a trait la rsolution spectrale,
(1)
deux sinusodes de frquences trs proches lune de lautre

mettre en vidence par une simulation pertinente (2) la supriorit dune fentre sur lautre
en ce qui a trait ltalement spectral.
(2)
une sinusode damplitude forte + une sinusode de frquence diffrente et
damplitude faible

Traitement du Signal 34
FIEEA 2011

Dans le rapport de TP, vous devrez remettre :

des figures illustrant la supriorit dune fentre sur lautre en ce qui a trait la
rsolution spectrale,

des figures illustrant la supriorit dune fentre sur lautre en ce qui a trait ltalement
spectral,
le listage comment des commandes MATLAB utilises.

Traitement du Signal 35
FIEEA 2011

TP 4 Filtrage Numrique

0.0 Objectifs

Lobjectif de ce TP est dapprendre comment implmenter des filtres FIR sous Matlab et
dtudier la rponse de ces filtres face diffrentes entres.

De plus, les expriences de ce TP, vous permettront de comprendre comment dfinir un


algorithme de filtrage numrique. Enfin, on va introduire des exemples concrets pour
montrer comment un filtre ragit diffrentes composantes de frquence en entre.

1. Introduction

Nous allons dfinir un filtre comme un systme en temps discret qui convertit un signal
dentre x[n] en un signal de sortie y[n] laide de moyennes de la somme pondre
M N
y[n] = bk x[n-k] - a l y(n-l) (4.1)
k 0 l 1

Lquation (4.1) donne une rgle pour calculer la n-ime valeur de la squence de sortie
partir de certaines valeurs de la squence dentre. Les coefficients du filtre {b k) et (al) sont
des constantes qui dfinissent le comportement du filtre. Par exemple, considrons le
systme pour lequel les valeurs de sortie sont donnes par :

y[n] = 1 x[n] + 1 x[n-1] + 1 x[n-2] (4.2)


3 3 3

= 1 x[n] x[n -1] x[n - 2]


3

Cette quation nonce que la n-ime valeur de la squence de sortie est une moyenne de la
n-ime valeur de la squence dentre x[n] et des deux valeurs prcdentes, x[n -1] et

x[n 2]. Pour cet exemple, les b k sont : b0 = 1/3, b1 =1/3 et b2 =1/3.

Matlab a une fonction du nom de filter() pour excuter lopration dans (4.1).

nn = 0 :99; % <-- indices de temps

xx = cos (0.08* pi*nn) ; % <-- signal dntre

bb = [1/3 1/3 1/3 ] ; aa=1; % <-- coefficients du filtre

yy = filter ( bb,aa, xx ) ; % <-- calcule la sortie

Traitement du Signal 36
FIEEA 2011

2. Filtres Rponse Impulsionnelle Fini FIR

2.1 Rponse frquentielle


j n
La sortie ou rponse dun filtre pour une entre sinusodale complexe, e , dpend de la
frquence . Souvent, un filtre se dcrit simplement par la manire dont il affecte diffrentes
frquences. Ceci est communment appel la rponse frquentielle. Par exemple, la rponse
frquentielle dun filtre ( 2 points) y[n] =1/2 x[n] x[n -1] peut tre trouve en

utilisant une exponentielle gnrale complexe comme entre et en observant la sortie ou


rponse.
j n
x [n] = A e (4.3)

j n + j (n -1) +
y [n] = 1 A e +1Ae (4.4)
2 2

j n + 1 {1 + e - j}
=Ae (4.5)
2

Dans (4.4), il y a deux termes, lentre originale et un terme qui est une fonction de .
j
Ce second terme est la rponse frquentielle et est communment note H (e ).

j - j
H (e ) = 1 {1 + e } ( 4.6 )
2

j
Une fois que le rponse frquentielle H (e ) est dtermine comme une fonction de ,
leffet du filtre sur nimporte quelle exponentielle complexe pourrait tre dtermin en
j
valuant H (e ) la frquence correspondante. Le rsultat sera un nombre complexe dont
la phase dcrit la phase de transition de la sinusode complexe et dont lamplitude dcrit le
gain appliqu la sinusode complexe.

La rponse frquentielle (en gnral) dun systme FIR linaire et invariant en


temps est :
M
) = bk e
j - jk
H (e (4.7)
k 0

Matlab a une fonction pour calculer la rponse frquentielle dun systme LTI et discret en
temps. Elle sappelle freqz ( ). Les lignes de commande suivantes de Matlab montrent

Traitement du Signal 37
FIEEA 2011

comment utiliser freqz pour calculer et imprimer lamplitude (en valeur absolue) de la
rponse frquentielle dun systme (de 2 points) comme une fonction de dans
lintervalle - :

bb = [ 1, -1] ; %<-- coefficients du filtre

ww = -pi : ( pi/100) : pi ;

h = freqz ( bb, 1, ww ) ;

plot (ww, abs (H) )

Nous utiliserons toujours le H majuscule pour la rponse frquencielle. Pour les filtres FIR
de la forme de (4.1), le second argument de freqz doit toujours tre gal 1.

2.2 Laboratoire : filtres FIR

Dans les sections suivantes, nous allons tudier la manire dont un filtre affecte une entre
sinusodale, et nous commencerons comprendre la performance du filtre en tant que
fonction de la frquence dentre. Nous verrons que :

1. Les filtres de la forme de lquation 4.1 peuvent modifier lamplitude et la phase


dune courbe en cosinus, mais ils ne modifient pas les frquences.

2. Pour une somme de courbes en cosinus, le systme modifie chaque composante


indpendamment.

3. Les filtres peuvent enlever compltement une ou plusieurs composantes de la somme


de courbes en cosinus.

2.2.1 Filtrage de courbes en cosinus


Nous nous intresserons au filtrage de sinusodes en temps discret de la forme :

x[n] = A cos (n + ) o n = 0,1, 2, , L 1 (4.8)

La frquence en temps discret pour des courbes en cosinus en temps discret, , satisfait
toujours 0 .

Si la sinusode en temps discret est gnre en chantillonnant une courbe en cosinus


continue en temps, la frquence en temps discret est = Ts = 2. f / fs,

Traitement du Signal 38
FIEEA 2011

2.2.2. Filtre du premier ordre


Gnrer 50 chantillons dune courbe en cosinus (en temps discret) avec A = 7, = /3, et
= 0.125. Stocker ce signal dans le vecteur xx, comme cela il pourra aussi tre utilis
dans les parties suivantes. Maintenant utilisez firfilt ( ) pour implmenter le filtre suivant
avec le signal xx comme entre :

y[n] = 5 x[n] 5 x [n-1] (4.9)

Ceci est communment appel fisrt-difference filter, mais avec un gain de 5. Sous Matlab
vous devez dfinir le vecteur bb ncessaire dans firfilt.

1. Noter que y[n] et x[n] ne sont pas de la mme longueur. Quel est longueur du signal
filtr, et pourquoi est-il de cette longueur? (Si vous avez besoin dune indication, referez
vous la section (4.1)

2. Tracez les 50 premiers chantillons des deux courbes x[n] et y[n] sur la mme figure
en utilisant subplot. Utilisez la fonction stem pour un trac du signal (en temps discret),
mais tiquetez laxe des x pour rester dans lintervalle 0 < n < 49.

3. Vrifiez lamplitude et la phase de x[n] directement partir de son trac dans le


domaine temporel.

4. A partir du trac, observez que, lexception du premier chantillon y[0], la


squence y[n] semble tre une courbe en cosinus gradue et shifted de la mme frquence
que lentre. Expliquez pourquoi le premier chantillon est diffrent des autres.

5. Dterminez la frquence, lamplitude et la phase de y[n] directement partir du trac.


Ignorez le premier point de sortie, y[0].

6. Caractrisez la performance du filtre lentre frquentielle en calculant lamplitude


et la phase relative, i.e., le ratio de lamplitude de sortie par rapport lamplitude dentre et
la diffrence des phases dentre et de sortie.

7. Drivez lexpression mathmatique pour la sortie lorsque le signal dentre est une
jn
exponentielle complexe x[n] = e . A partir de cette formule, dterminez comment

lamplitude et la phase devraient changer pour x[n], qui a une frquence de = 0.125.

Traitement du Signal 39
FIEEA 2011

2.2.3 Linarit du filtre


1. Maintenant multipliez le vecteur xx de la section 2.2.2 par 2 pour obtenir xa, xa =2*
xx. Gnrez le signal ya en filtrant xa avec le filtre du premier ordre donn par lquation
4.3.b. Rptez les mesures relatives damplitude et de phase dcrites dans la section 2.2.2.

2. Gnrez un nouveau vecteur dentre xb correspondant au signal temps discret xb[n]


= 8 cos (0.25n) et ensuite filtrez le avec loprateur du premier ordre pour obtenir yb[n].
Maintenant, rptez les mesures relatives damplitude et de phase comme prcdemment.
Dans ce cas la mesure de la phase pourrait tre lgrement biaise car il y a seulement peu
dchantillons par priode. Dcrire la manire dont lamplitude, la phase et la frquence de la
sortie yb changent compares lentre.

3. Crez un autre signal dentre xc qui est la somme de xa et xb. Faites passer xc travers
le filtre pour obtenir yc. Faire le trac de yc. Comparez yc au trac de ya + yb. Sont-ils
gaux? Expliquez toute diffrence que vous observerez.

2.2.4 Linvariance en temps du filtre


Dcaler en temps le vecteur dentre xx par 3 units temps pour obtenir la squence :

xs[n] = 7 cos (0.125 (n 3) + /3 ) pour n = 0, 1, 2, 3,

puis le filtrer xs[n] en utilisant loprateur du premier ordre pour obtenir ys[n]. Comparez ys
yy, la sortie quand lentre est xx. Trouvez un dcalage de yy (en nombre dchantillons)
afin quil saligne parfaitement ys.

Traitement du Signal 40
FIEEA 2011

TP 5 Synthse d'un Filtre Numrique RIF

0.0 Objectifs

L'objet de ce TP est la synthse d'un filtre R.I.F phase linaire par le calcul des
coefficients du filtre satisfaisant les conditions imposes par un gabarit. Ces coefficients
seront obtenus par la technique du dveloppement en sries de Fourrier.

Dans la dernire partie de ce TP on tudiera les avantages et les inconvnients


rsultants de quelques fentres Rectangulaire, Hanning, Blackman...

1 Thorie

On dsire synthtiser un filtre numrique hn rponse impulsionnelle finie. Pour cela, on


spcifie H(f), rponse frquentielle du filtre. hn tant un filtre numrique, H(f)
ncessairement priodique et de priode 1. Ce problme admet donc toujours une rponse
qui est prendre pour rponse impulsionnelle h(n) la transforme de Fourier inverse de H(f),
soit :
1/ 2

H ( f )e
2 jfn
hn
1 / 2

La difficult provient de ce que, en gnral, la rponse impulsionnelle ainsi obtenue


comprend une infinit d'chantillons non nuls et n'est donc pas finie. On reformule alors le
problme en cherchant le filtre de rponse impulsionnelle finie h(n) dont le support est dfini
par n 1,2 N-1 et dont la rponse frquentielle est proche de H(f) en un sens dfinir.

2- Mthode

Soit Hd(f) la transforme de Fourier du filtre rponse impulsionnelle finie h(n);


n 1,2 N-1. Hd(f) est priodique et de priode 1 et il a t montr en cours que la
transforme de Fourier discrte X(k) de la squence h(n) chantillonne Hd(f) aux frquences fk
= k=N, soit X(k) = Hd(k=N) : (2)

L'ide consiste donc dfinir h(n) comme la transforme de Fourier inverse discrte de
H(k=N); k 1,2 N-1. De cette manire, Hd(k) et H(f) concideront aux frquences
f = k=N, mais seront en gnral diffrentes aux autres frquences (voir illustration ci-
dessous). La procdure comprend donc les tapes suivantes :

1. choix de la longueur N du support de la rponse impulsionnelle ;

2. dtermination des coefficients X(k) = H(k=N); k 1,2 N-1 ;

Traitement du Signal 41
FIEEA 2011

3. calcul de h(n); n 1,2 N-1 par transforme de Fourier inverse discrte :

n 1
1
hn
N
X ( k )e
k 0
2 jkn / N

3 - Travail effectuer

On dsire effectuer la synthse d'un filtre passe-bas la phase linaire dont le gabarit
est donne par:

1-1 < H(f)< 1+1 pour f<fp

H(f)< 2 pour fs<f<1/2

O f=F/Fe est la frquence normalise par rapport la frquence d'chantillonnage.

a) Gabarit en dB b) Gabarit en linaire

Figure 5-1 Gabarit du filtre passes bas dsir

1. Calculer la forme littrale des coefficients hn de la rponse impulsionnelle.

2. N= 200 Fc = 0.15

Calculer et visualiser les N chantillons de cette rponse impulsionnelle. Modifier N


et commenter.

3. N=100; Fc = 0.25

Calculer et visualiser la rponse impulsionnelle ainsi que sa rponse en frquence.


Quelle valeur prend le gain cette frquence Fc.

4. Refaire 1 2 et 3 en utilisant les diffrentes fentres Hanning, Blackman pour limiter la


dure des chantillons du filtre. Citer les avantages et les inconvnients, rsultants de
l'utilisation de la fentre rectangulaire. Se rfrer aux rsultats trouvs au TP 3.

Traitement du Signal 42

Vous aimerez peut-être aussi