Vous êtes sur la page 1sur 27

TP1 : INITIATION MATLAB

1. Introduction

Matlab (abrviation de " MATrix LABoratory ") est un puissant logiciel de calcul
numrique. Cest un environnement informatique conu pour le calcul matriciel.
L'lment de base est une matrice dont la dimension n'a pas tre fixe. Matlab est
un outil puissant qui permet la rsolution de nombreux problmes en beaucoup
moins de temps qu'il n'en faudrait pour les formuler en C ou en Pascal. La
programmation au mme titre que C, Pascal ou Basic. Par contre, sa singularit est
quil sagit dun langage interprt, c'est--dire que les instructions sont excutes
immdiatement aprs avoir t tapes.

Le but de ce TP est de vous familiariser avec lutilisation de MATLAB.

1.1. Lancement

Au lancement de Matlab, la fentre "command" apparat. C'est dans cette fentre que
l'on peut taper les instructions Matlab ( la suite des chevrons >>).
Fenetre Command

Maths de lIngnieur ENSI 2011-2012 Page 2


1.2. Langage interprt 1.4. Les variables complexes

Puisque Matlab est un langage interprt. Il n'est pas ncessaire de compiler un Matlab travaille indiffremment avec des nombres rels et complexes. Par dfaut les
programme avant de l'excuter. Toute commande tape dans la fentre de variables i et j sont initialises la valeur complexe. Naturellement si vous
commande est immdiatement excute. redfinissez la variable i ou j avec une autre valeur elle n'aura plus la mme
signification.

Les fonctions usuelles de manipulation des nombres complexes sont prdfinies dans
La rponse est affiche si on ne met pas de point-virgule en fin de ligne. Elle est de
Matlab : real, imag, abs, angle (en radian), conj.
plus stocke dans une variable nomme ans (answer). La plupart des fonctions
mathmatiques usuelles sont dfinies dans Matlab, et ceci sous une forme naturelle
(sin, cos, exp, ...). Cest galement le cas de certaines constantes comme pi par
exemple :

1.5. Les vecteurs, les matrices et leur manipulation

En fait, toute variable de Matlab est une matrice (scalaire : matrice 1x1, vecteur :
1.3. Les variables
matrice 1xN ou Nx1). On peut spcifier directement une matrice sous la forme d'un
On peut videmment indiquer le nom de la variable dans laquelle le rsultat doit tre tableau avec des crochets, l'espace ou la virgule spare deux lments d'une mme
stock (ce nom doit commencer par une lettre et occuper moins de 19 caractres). ligne, les points virgules sparent les lments de lignes distinctes.

Remarque : Matlab distingue les minuscules des majuscules.

Le nom de la variable ainsi que le rsultat sont alors affichs. On peut taper plusieurs Les lments d'une matrice peuvent tre n'importe quelle expression de Matlab :
commandes par ligne si elles sont spares par un point virgule.

Maths de lIngnieur ENSI 2011-2012 Page 3 Maths de lIngnieur ENSI 2011-2012 Page 4
Les lments d'une matrice peuvent ensuite tre rfrencs par leurs indices, on
utilise alors des parenthses et non des crochets. Le mot-cl end peut tre utilis en
indice pour signifier le dernier lment.

On peut remarquer que la taille du vecteur x a t ajuste en remplissant les lments


non prciss par 0. On peut aussi crer des matrices avec les fonctions zeros, ones et 1.6. L'oprateur " : "
eye, ces fonctions crent des matrices de la taille prcise, respectivement remplies de
L'oprateur " : ", sous Matlab, peut tre considr comme l'oprateur d'numration.
zros, de un, et de un sur la diagonale et de zros ailleurs (eye =prononciation
Sa syntaxe usuelle est : deb:pas:fin . Il construit un vecteur dont le premier lment
anglaise de I comme identit).
est deb puis deb+pas, deb+2*pas... jusqu' deb+n*pas tel que deb+n*pas < fin <
deb+(n+1)*pas. : est trs utile pour construire des signaux.

Le pas d'incrmentation peut tre omis, un pas de 1 est alors pris par dfaut :
On peut avoir des informations sur la taille d'une matrice :

On peut aussi utiliser le " : " pour slectionner des lments d'un vecteur ou d'une
matrice :

On peut ajouter des lignes et des colonnes des matrices dj existantes (attention,
les dimensions doivent toutefois tre compatibles ...).

Maths de lIngnieur ENSI 2011-2012 Page 5 Maths de lIngnieur ENSI 2011-2012 Page 6
1.7. Oprations matricielles

Les oprations usuelles sont dfinies de faon naturelle pour les matrices :
On peut aussi demander des valeurs l'utilisateur :

Matlab affichera la chane de caractre entre en paramtre et attendra une rponse


de l'utilisateur.

2.2. Affichages graphiques de courbes 1D

Matlab permet un grand nombre de types d'affichage 1D et 2D, seuls les plus courant
seront dcrits ici. La commande plot permet l'affichage d'une courbe 1D :
Autres fonctions utiles pour les oprations matricielles

renverra un vecteur ligne dont chaque lment sera le maximum de la colonne


correspondante. De la mme faon est dfinie la fonction min(). On peut ajouter un titre aux figures ainsi que des labels aux axes avec les commandes
title, xlabel, ylabel:

2.3. Affichages graphiques de courbes 2D


2. Affichages graphiques et alphanumriques Avec la commande mesh on peut aisment avoir une reprsentation d'une fonction
2D. Cependant il faut construire la grille des coordonnes des points en lesquels on a
2.1. Affichage alphanumrique
les valeurs de la fonction l'aide de la fonction meshgrid.
On peut afficher des chanes de caractres dans la fentre de commande :

Les fonctions sprintf et fprintf existent galement

Maths de lIngnieur ENSI 2011-2012 Page 7 Maths de lIngnieur ENSI 2011-2012 Page 8
3.2. Sauvegarde et chargement de variables
2.4. Affichage de plusieurs courbes Il peut tre utile, lors d'une session de travail, de sauvegarder des variables dans des
On peut bien videmment vouloir afficher plusieurs courbes l'cran. Pour cela deux fichiers du rpertoire de travail. Cela peut tre ralis l'aide de la fonction save dont
solutions s'offrent nous :On peut effectuer plusieurs affichages sur une mme la syntaxe est :
figure en utilisant la commande subplot qui subdivise la entre graphique en save nom_fichier nom_variables .
plusieurs sous figures. Sa syntaxe est :
subplot(nombre_lignes,nombre_colonnes,numro_subdivision).Les subdivisions
sont numrots de 1 nombre_lignes*nombre_colonnes, de la gauche vers la droite
puis de haut en bas. Si le nom des variables est omis, tous l'espace de travail est sauv; si l'extension du
fichier est omise elle sera automatiquement .mat, si de plus, le nom du fichier est
omis, la sauvegarde se fera dans le fichier matlab.mat. Pour recharger des variables
sauves dans un fichier, il suffit de taper :

On peut aussi ouvrir une deuxime fentre graphique l'aide de la commande


Si le nom du fichier est omis, Matlab chargera le fichier matlab.mat. On peut un
figure. Le passage d'une fentre graphique une autre pourra alors se faire la
moment donn vouloir connatre toutes les variables disponibles dans l'espace de
souris ou en prcisant le numro correspondant dans la commande figure(n). NB : on
travail. Cela est possible grce aux commandes who et whos. La commande who
peut galement superposer plusieurs courbes sur le mme rfrentiel, en utilisant la
nous donne le nom de toutes les variables existantes, tandis que whos nous donne
commande hold on (resp. hold off).
leur nom et l'espace mmoire qu'elles occupent.

3. Environnement de travail, scripts et fonctions


3.3. Scripts
3.1. Rpertoire de travail
Il est parfois (souvent) souhaitable, pour ne pas avoir taper plusieurs fois une
Il est indispensable de travailler dans votre propre rpertoire et non dans le
mme squence d'instructions, de la stocker dans un fichier. Ainsi on pourra
rpertoire de Matlab. De mme dans votre rpertoire vous pouvez organiser vos
rutiliser cette squence dans une autre session de travail. Un tel fichier est dnomm
fichiers dans des sous rpertoires. Pour que vos fonctions et scripts soient accessibles
script. Sous windows, il suffit d'ouvrir un fichier avec le menu file, new, de taper la
partir de la ligne de commande Matlab il faut le rpertoire dans lequel vous allez
squence de commande et de sauver le fichier avec une extension " .m "
travailler, en utilisant les commandes cd et dir.
(nom_fich.m). En tapant le nom du fichier sous Matlab, la suite d'instructions
s'excute. Les variables dfinies dans l'espace de travail sont accessibles pour le
script. De mme les variables dfinies (ou modifies) dans le script sont accessibles
dans l'espace de travail. On peut (doit) mettre des commentaires l'aide du caractre

Maths de lIngnieur ENSI 2011-2012 Page 9 Maths de lIngnieur ENSI 2011-2012 Page 10
pour-cent " % ". Toute commande situe aprs " % " n'est pas prise en compte par faire des fonctions Matlab pouvant dpendre d'un nombre variable de paramtres.
Matlab, jusqu' la ligne suivante. Les variables de l'espace de travail ne sont pas accessibles la fonction sauf si elles
sont entres comme variables d'entre. De mme les variables dfinies dans une
3.4. Fonctions fonction ne sont pas accessibles dans l'espace de travail.
On a parfois (souvent) besoin de fonctions qui ne sont pas fournies par Matlab. On
peut alors crer de telles fonctions dans un fichier spar et les appeler de la mme 4. Boucles et contrles
faon que les fonctions prexistantes. La premire ligne (hormis les lignes de Comme de nombreux autres langages de programmation, Matlab possde trois types
commentaires) d'une fonction doit imprativement avoir la syntaxe suivante : d'instructions de contrles et de boucles : for, if et while.

4.1. Contrle : " if "

Exemple de fonction :

La condition est exprime au travers d'une expression logique. Les expressions


logiques sont des expressions quelconques pour lesquelles on considre uniquement
Cette fonction pourra tre appele par :
le fait qu'elles soient nulles (expression fausse) ou non (expression vraie). On peut
aussi construire ces expressions l'aide des oprateurs logiques et (&), ou (|), gal
(==), suprieur (>,>=), infrieur(<,<=), non(~), ou exclusif (xor) ou l'aide de
Exemple de fonction plusieurs variables de sortie :
fonctions logiques prdfinies exist, any, find , isinf, isnan...

4.2. Boucle : while

Cette fonction pourra tre appele par :

Le nom de la fonction doit imprativement tre le mme que le nom du fichier dans
La suite dinstructions est rpte un nombre indfini de fois jusqu ce que
lequel elle est stocke (sinon Matlab ne prendra pas en compte ce nom mais
lexpression logique soit fausse.
uniquement celui du fichier). Les nombres d'arguments en entre et en sortie ne sont
pas fixes et peuvent tre rcuprs par nargin et nargout. Cela nous permet donc de

Maths de lIngnieur ENSI 2011-2012 Page 11 Maths de lIngnieur ENSI 2011-2012 Page 12
4.3. Boucle : "for" nous donne le mme rsultat (mais en moins de temps) que :
La boucle for a pour syntaxe :

5. Help / Aide en ligne


Matlab est pourvu d'une fonction d'aide trs utile : help. Ainsi si vous tapez help sur
la ligne de commande apparaissent tous les rpertoires accessibles depuis Matlab
Cette structure de contrle est trs utile, mais il est recommand d'viter au
ainsi qu'une explication concernant ces rpertoires. Si vous tapez help suivi du nom
maximum les boucles dans Matlab, car elles sont trs lentes par rapport un
d'un rpertoire, Matlab affiche une explication brve sur toutes les fonctions et
traitement matriciel. Par exemple, la boucle suivante :
scripts de ce rpertoire. Enfin si vous tapez help suivi du nom d'un fichier (script ou
fonction), apparat une explication dtaille sur l'utilisation de la fonction ou du
script. De plus vous pouvez crer une aide sur les fonctions et scripts que vous crez
est quivalente
et sur vos rpertoires. Pour une fonction, Matlab prendra comme help toutes les
lignes de commentaires suivant l'instruction function (en premire ligne). Pour un
script, Matlab prendra toutes les lignes de commentaires placs en dbut de fichier.
Mais s'excutera beaucoup plus lentement. Essayez avec N = 10, 100, 1000, etc. et
Ces aides que vous crez pour vos fonctions et scripts sont intressantes pour un
comparez les temps. Malheureusement, on ne rencontre pas toujours des cas aussi
utilisateur ventuel, mais aussi pour vous, pour vous rappeler le but de telle fonction
simples et il est difficile de penser matriciel, c'est dire penser en Matlab. Les
ou pour vous souvenir de sa syntaxe.
fonctions zeros et ones, permettent parfois d'viter de mettre en uvre une boucle.
Exemple simple :
Par exemple, au lieu de faire la boucle :

On peut crire : 6. Exercices dapplication


Exercice 1 :
Ecrire une fonction traitement_image_2D(x) qui prend comme paramtre dentre
le nom dune image et qui renvoie en sortie le nombre de pixels ayant la couleur
De plus certaines fonctions Matlab agissent sur une matrice en tant que suite de blanche et le nombre de pixels ayant la couleur noire.
vecteurs. La ralisation dune telle fonction se fait comme suit :
Ainsi 1. Lecture de limage dont le nom est le paramtre dentre de la fonction (en
utilisant la fonction imread voir Help).

Maths de lIngnieur ENSI 2011-2012 Page 13 Maths de lIngnieur ENSI 2011-2012 Page 14
2. Affichage de limage (en utilisant la fonction imshow). TP2 : GNRATION DES SIGNAUX
3. Balayer limage et chercher le nombre de pixel correspondant la couleur
blanche et ceux correspondant la couleur noire.
Ce TP a pour but de familiariser l'tudiant avec l'utilisation du logiciel MATLAB
pour la gnration des diffrents types de formes d'ondes.
Exercice 2 :
Ecrire une fonction traitement _surface_3D(x) qui prend comme paramtre The Signal Processing Toolbox de MATLAB contient des fonctions pour la gnration

dentre le nom dun fichier contenant les coordonnes x,y et z des points dune des formes d'ondes couramment utilises priodiques et non priodiques, squences

surface 3D et qui renvoie en sortie le point parmi tous ces points qui soit le plus (impulsion, chelon, rampe), train d'impulsions

proche au centre de gravit de cette surface


1. Gnration des signaux : Impulsion Unit et Echelon Unit
La structure du fichier est la suivante :
Deux signaux lmentaires de base sont : limpulsion Unit et lchelon Unit.
V x1 y1 z1
V x2 y2 z2 Limpulsion unit u[n] de longueur N peut tre gnre en utilisant la commande

. . . . . MATLAB suivante :

. . . . .
u = [1 zeros(1,N-1)] ;
. . . . .
V xn y n zn De mme, limpulsion unit ud[n] de longueur N et dcales de M chantillons, tel
que M<N, peut tre gnre par la commande MATLAB suivante :

La ralisation de cette fonction se fait comme suit : ud = [zeros(1,M) 1 zeros(1,N-M-1)];


1. Ouverture en lecture du fichier dont le nom est le paramtre dentre de la
Lchelon unit s[n] de longueur N peut tre gnr en utilisant la commande
fonction (utiliser la commande fopen).
MATLAB suivante :
2. Lecture du fichier et stockage des coordonnes des points dans un vecteur X
selon laxe des x, dans un vecteur Y selon laxe des y et dans un vecteur Z s=[ones(1,N)]
selon laxe des z. (utiliser la fonction fscanf pour la lecture. Voir Help).
La version dcale de lchelon unit sobtient de la mme manire que dans le cas de
NB : Le nombre de ligne du fichier cad le nombre de points nest pas connu en
limpulsion unit.
avance donc il faut trouver une condition darrt de la lecture.
3. fermeture du fichier (la fonction fclose). Le programme P1 peut tre utilis pour gnrer et tracer un signal impulsion unit :
4. Affichage de la surface 3D en utilisant le commande plot3 (voir help).
***********************************************************************
5. Calcul du centre de gravit de cette surface.
6. chercher parmi les points de la surface 3D le point qui soit le plus proche ce %Programme P1
centre de gravit.
% Gnration d'une impulsion unit

Maths de lIngnieur ENSI 2011-2012 Page 15 Maths de lIngnieur ENSI 2011-2012 Page 16
% Gnration d'un vecteur de -10 20 **************************************************

n=-10:20; % Programme P2

% Gnration de l'impulsion unit % Gnration d'un signal sinusodal

u = [zeros(1,10) 1 zeros(1,20)]; n = 0:100;

% Tracer le signal gnr f = 0.1;

stem(n,u); phase = 0;

xlabel('Temps index en n'); ylabel('Amplitude'); A = 1.5;

title('Impulsion Unit'); arg = 2*pi*f*n - phase;

axis([-10 20 0 1.2]); x = A*cos(arg);

****************************************************************** clf; %efface lancienne figure

Application : stem(n,x);

1- Modifier le programme prcdent pour gnrer une impulsion unit dcale axis([0 100 2 2]);
de 11 chantillons. Excuter le programme et tracer le signal gnr.
grid;
2- Modifier le programme prcdent pour gnrer un chelon unit dcal de 20
chantillons. title(Signal Sinusoidal);

xlabel(Temps index en n);


2. Gnration des signaux priodiques
Une autre classe de signaux trs utile en traitement du signal et en automatique sont ylabel(Amplitude) ;

les signaux sinusodaux de la forme : axis ;

x[n]= A.cos(0 n+ ) ******************************************************

Avec MATLAB, ce type de signaux peut tre gnr en utilisant les oprateurs Application :
trigonomtriques cos et sin.
1- Modifier le programme prcdent pour gnrer et tracer un signal sinusodal
Le programme P2 est un exemple qui gnre un signal sinusodal. de longueur 50, frquence 0.08, amplitude 2.5 et phase dcale de 90 degrs.
2- Gnrer et tracer les squences dfinies ci dessus :

Maths de lIngnieur ENSI 2011-2012 Page 17 Maths de lIngnieur ENSI 2011-2012 Page 18
subplot(212), plot(t,x2), xlabel('Time (sec)'); ylabel('Amplitude'); title('Square Periodic

( )
Wave')
x1 (n )=sin n 0n35
17
************************************************************************

( )
x2(n)=sin n
17
15n25
3. Gnration des signaux exponentiels

(
x3 (n)=sin 3n+
2
) 15n15
Un autre type de signaux de base sont les signaux exponentiels. Ce type de signaux
peut tre gnr par les oprateurs de MATLAB .^ et exp .


x4(n)=sin n 0n50 Le programme P4 est employ pour gnrer un signal exponentiel x[n] = A exp(jn)
23
valeurs complexes.
En plus des fonctions sin et cos, le toolbox de MATLAB offre d'autres fonctions qui
****************************************************************
produisent des signaux priodiques comme sawtooth et square.
% Programme P4
La fonction sawtooth gnre une onde triangulaire avec des maximums en +-1 et une
priode de 2*pi. % Gnration d'un signal exponentiel complexe

La fonction square gnre une onde carre avec une priode de 2*pi. Un paramtre clf ;

optionnel spcifie le cycle, la priode en pourcent pour laquelle le signal est positif.
c = -(1/12)+(pi/6)*i;

Le programme P3 gnre 1.5 secondes d'onde triangulaire (respectivement carr), de


k = 2;
frquence 50Hz et avec une frquence d'chantillonnage de 10KHz.
n = 0:100;
***************************************************************************
x = k*exp(c*n);
%Programme P3
subplot(2,1,1);
fs = 10000;
stem(n,real(x));
t = 0:1/fs/1.5;
xlabel (Temps index en n); ylabel(Amplitude);
x1 = sawtooth(2*pi*50*t);
title(Partie relle) ;
x2 = square(2*pi*50*t);
subplot(2,1,2);
subplot(211), plot(t,x1), xlabel('Time (sec)'); ylabel('Amplitude'); title('Sawtooth
stem(n,imag(x));
Periodic Wave')

Maths de lIngnieur ENSI 2011-2012 Page 19 Maths de lIngnieur ENSI 2011-2012 Page 20
xlabel (Temps index en n) ; ylabel(Amplitude) ; Application :

title (Partie imaginaire) ; Gnrer et tracer un signal alatoire de longueur 100 tels que ces lments sont
uniformment distribus dans lintervalle [-2,2].
*******************************************************************
5. Gnration des signaux complexes
Le programme P5 gnre lui une squence exponentielle valeurs relles partir de
Des signaux complexes peuvent tre gnrs en utilisant les oprations faites pour les
lexpression suivante :
signaux lmentaires.
X[n]=A.cn
Par exemple un signal de modulation damplitude peut tre gnr par la
*********************************************************************** modulation dun signal sinusodal de haute frquence xH[n] = cos(Hn) avec un

% Programme P5 signal sinusodal de basse frquence xB[n] = cos(Bn). Le signal rsultant y[n] a la
forme suivante :
% Gnration d'une squence exponentielle valeurs relles
y[n] = A(1+m xB[n]) xH[n] = A(1 + m cos(Bn)) cos(Hn)
n = 0 : 35; a = 1.2; k = 0.2;
avec m, appel facteur de modulation, est choisi pour sassurer que lexpression
x = k*a.^n;
(1+m xB[n]) est positive pour toutes les valeurs de n.

stem(n,x)
Le programme P6 est utilis pour gnrer un signal modul en amplitude.

xlabel (Temps index en n); ylabel(Amplitude);


**************************************************************

*************************************************************************
% Programme P6

4. Gnration des signaux alatoires % Gnration dun signal modul en amplitude


Un signal alatoire de longueur N avec une distribution uniforme dans lintervalle [0
clf ;
1] peut tre gnr par la commande de MATLAB suivante :

n = 0 :100 ;
x = rand(1,N) ;

m = 0.4 ; fH = 0.1 ; fL = 0.01 ;


De mme, u signal alatoire x[n] de longueur N avec une distribution normalise
moyenne nulle et variance unit peu tre gnr en utilisant la commande suivante xH = sin(2*pi*fH*n);
de MATLAB :
xL = sin(2*pi*fL*n);
x = randn (1,N) ;
y = (1+m*xL).*xH;

Maths de lIngnieur ENSI 2011-2012 Page 21 Maths de lIngnieur ENSI 2011-2012 Page 22
stem(n,y); grid; TP2 (SUITE) : CONVOLUTION DES SIGNAUX
xlabel(Temps index en n); ylabel(Amplitude);
Il sagit dans cette manipulation dtudier la convolution sur quelques exemples de
**************************************************************
signaux. On va e situer dans le cas dun systme linaire et invariant dans le temps,
Application : ces--dire que le signal de sortie de ce systme se prsente comme le rsultat du
Gnrer et tracer un signal de modulation damplitude de frquence fH=0.08 et produit de convolution entre le signal dentre x(t) et sa rponse impulsionnelle h(t).
fL=0.04 et de facteur de modulation m=0.5. Interprter.
Manipulation
1. Lancer MATLAB.
2. Excuter le programme convolution-demo.
3. A laide de cette interface gnrer le signal x(t)=u(t)-u(t-2), avec u(t) le
signal chelon unit. Pour cela utiliser le bouton choisir x(t).
4. Gnrer le signal h(t)=x(t). Pour cela utiliser le bouton choisir h(t).
5. Slectionner ensuite le signal faire dplacer, soit dplacer x(t), soit
dplacer h(t).
6. Utiliser la sourie pour faire dplacer linstant de translation t sur laxe
.
7. Interprter les signaux obtenus au fur et mesure.
8. Vrifier le rsultat obtenu graphiquement par rapport celui calcul
thoriquement.
9. Changer maintenant le signal x(t) par x(t)=u(t)-u(t-5).
10. Interprter le rsultat de la convolution obtenu.
11. Refaire la mme manipe ave les signaux suivants :
x(t ) = u (t ) u (t 5)eth(t ) = e 1 / 2 [u (t ) u (t 10)]

x (t ) = (t )eth (t ) = cos( 0,2t ) w(t ) avecw(t ) = [u (t ) u (t 10)]


x(t ) = (t 5)eth (t ) = cos( 0,2t ) w(t )avecw(t ) = [u (t ) u (t 10)]
x(t ) = sin(t ) w(t )eth (t ) = (t 6) et cette fois-ci faire dplacer x(t).

Maths de lIngnieur ENSI 2011-2012 Page 23 Maths de lIngnieur ENSI 2011-2012 Page 24
TP3 : INTRODUCTION LANALYSE DE FOURIER La variable u est une matrice de 20 lignes (nombre dharmoniques) et 1024
colonnes (nombre dchantillons dans le temps). On peut vrifier les tracs des
parties relles de la premire et seconde exponentielle par la syntaxe suivante :
1. Srie de Fourier
*************************************************************************
Il sagit dans cette premire manipe de voire comment calculer lamplitude et la
plot(t,real(u(1, : )))
phase des 20 premiers harmoniques du signal carr x(t) priodique de priode T=1s.
plot(t,real(u(2, : )))
Ce signal vaut 1 sur 25% de la priode et 0 sur le reste de la priode.
*************************************************************************
Utiliser le programme suivant pour gnrer le signal x(t) :
**************************************************************************
On a maintenant tous les lments pour calculer les coefficients de Fourier du
T0=1/1024 ; % priode dchantillonnage
signal x(t). Puisque lintgrale est la limite dune somme.
t=0 :T0 :1-T0 ; % discrtisation de laxe temporel
*************************************************************************
uns=ones(1,256) ; %25 pour cent de la priode vaut 1
C0=sum(x)*T0 ;
zer=zeros(1,1024-256) ;% le reste de la priode vaut 0
for k=1 :20
x=[uns,zer] ; % construire le signal x(t)
X(k)=sum(x.*u(k, : )*T0 ;
plot(t,x) % tracer le signal
end
axis([0 1 -1 2])
*************************************************************************
**************************************************************************

La 1re ligne calcule la composante continue C0. Il sagit simplement dintgrer x(t)
Maintenant que nous avons gnr le signal temporel x(t), nous allons gnrer
sur une priode. La boucle k=1 :20 calcule successivement les coefficients X(k) (20
les fonctions exponentielles : e-jkw0t qui se trouve dans lintgrale de Fourier.
premires harmoniques). La somme sum est lapproximation de lintgrale, le
Dans notre cas la priode T est gale 1s de sorte que la pulsation
symbole .* en MATLAB signifie la multiplication point par point de deux
fondamentale 0=2.
fonctions, et llment T0 est llment diffrentiel de lintgration.
Le programme suivant montre comment gnrer avec MATLAB les 20 premires
Pour afficher les spectres damplitude et de phase, on utilise les fonctions
fonctions exponentielles :
abs et angle de MATLAB :
*************************************************************************
*************************************************************************
w0=2*pi ;
A=abs(X) ;
for k=1 :20
subplot(2,1,1) ; stem(0 :20,[C0 A])
u(k, : )=exp(-j*k*w0*t) ;
P=angle(X)
end
subplot(2,1,2); stem(0:20,[angle(C0) P])
*************************************************************************
*************************************************************************

Maths de lIngnieur ENSI 2011-2012 Page 25 Maths de lIngnieur ENSI 2011-2012 Page 26
Sur la 1re ligne, on calcule le spectre damplitude partir du spectre complexe X.
Sur la 2me ligne, on affiche le spectre damplitude (incluant la composante continue
1

C0 k=0) avec la fonction stem . Cette fonction permet un affichage en btonnets,


0.8
contrairement la fonction plot qui trace une ligne reliant les points du signal. La
0.6
fonction subplot permet de tracer plusieurs courbes avec diffrents axes sur la
0.4
mme figure. Les crochets ici [C0 A] indique que lon forme un vecteur en
0.2
concatnant la composante C0 aux amplitudes de A . La mme opration est faite
pour le spectre de phase. 0

Finalement, on montre ici comment faire pour reconstituer le signal dorigine -0.2
0 1 2 3 4 5 6 7 8

x(t) partir des 20 premires harmoniques (incluant C0) :


*************************************************************************
y=C0 ; 2. Transforme de Fourier
for k=1 :20 On considre le signal carr de lexemple prcdent. La priode fondamentale est

y=y+2*A(k)*cos(k*w0*t+P(k)) ; T=1s. Les coefficients de Fourier X(k) sont calculs par la formule suivante :
T
end 1
x(t )e jkt dt
T 0
X (k ) =
plot(t,y,b,t,x,r)
*************************************************************************
Dans ce code, on a utilis la proprit des sries de Fourier pour les signaux rels qui Reprsenter le module des 20 premiers coefficients spectraux de ce signal.

remplace les exponentielles en cosinus. La dernire ligne trace le signal y Que se passe-t-il maintenant si on double la priode du signal qui devient

reconstruit partir des harmoniques en bleu et le signal dorigine x(t) en rouge. T=2 ?

On peut vrifier lapport du nombre des harmoniques sur lapproximation du Mme questions pour T=4 et T=8.

signal dorigine x(t) en faisant varier le nombre des harmoniques entre 5 et 30 Que se passe-t-il si on fait tendre la priode du signal vers linfini ?

par pas de 5 par exemple. interprter ;

Application :
Calculer et reprsenter les spectres damplitude et de phase (20 premires
harmoniques) du signal triangulaire ci-dessous. Afficher la reconstruction de ce
signal partir de ces harmoniques en faisant varier le nombre des harmoniques entre
5 et 30 par pas de 5.

Maths de lIngnieur ENSI 2011-2012 Page 27 Maths de lIngnieur ENSI 2011-2012 Page 28
TP 3(suite) : ANALYSE ET SYNTHSE DE SIGNAUX A : amplitude

PRIODIQUES En utilisant lquation (2) pour calculer les coefficients de Fourier, nous obtenons :

xn=A/2 pour n=1 et xn=0 pour n diffrent de 1

Le but de ce TP est dtablir la correspondance entre le spectre en amplitude dun


Le spectre en amplitude est donn par la norme de xn et peut tre trac de la faon
signal priodique et son dveloppement en srie trigonomtrique. Ceci doit
suivante :
permettre dans un second temps de synthtiser diffrents signaux priodiques
partir du relev de leurs spectres. Nous allons prsent rappeler quelques
gnralits sur lanalyse de Fourier. La dcomposition en srie de Fourier dun
signal priodique de priode T0 (ou dure limite sur un intervalle T0) scrit :
+
t
x(t ) = xn exp(2in
T0
)
n =

x(t) : signal priodique de priode T0.

xn : coefficients de Fourier de x(t).

Ces coefficients donnent une reprsentation en frquence ou spectrale du signal.


Pour passer de la reprsentation temporelle la reprsentation spectrale, on utilise la
formule suivante :
On remarque que ce signal priodique nest constitu que dune fondamentale, il est
1 t
x(t ) exp(2in )dt
T0 T0
xn = monochromatique. Le domaine des frquences ngatives na aucune signification
T0
physique, il est d aux fonctions exponentielles complexes introduites dans la
dfinition des sries de Fourier. Pour les signaux rels, le spectre en amplitude sera
1/T0 : reprsente une frquence appele fondamentale, et de manire plus gnrale
toujours une fonction paire. Les analyseurs de spectre dlivrent plus gnralement le
on nomme nime harmonique la frquence correspondant n/T0.
spectre en puissance qui est reprsent ci-dessous dans le cas de la fonction cosinus
Prenons une fonction cosinus comme exemple pour calculer le spectre dun signal
priodique partir des sries de Fourier :

t
x(t ) = A cos(2 )
T0

T0 : priode

Maths de lIngnieur ENSI 2011-2012 Page 29 Maths de lIngnieur ENSI 2011-2012 Page 30
1
T0 T0
x0 = a 0 = x(t )dt

Les relations donnant les valeurs de an et bn sont obtenues partir des quations (6)
et (2) :

2 t
x(t ) cos(2n )dt
T0 T0
an =
T0

2 t
x(t ) sin(2n )dt
T0 T0
bn =
T0

Les coefficients an et bn ne sont dfinis que pour des valeurs de n positives. Dans le
cas des signaux rels ( partie imaginaire nulle) une relation simple provenant de la
Cette reprsentation permet de faire un calcul trs simple de la puissance moyenne
proprit de symtrie hermitienne permet de calculer les coefficients xn pour des
totale par le thorme de Parseval :
indices n ngatifs partir des valeurs de xn pour n positif : x n = x *n
+
1 T0 2
P= x (t )dt = xn2 En appliquant ces relations notre signal sinusodal, le seul coefficient diffrent de 0
T0 0
n = est a1=A. Ce rsultat sobtient galement de faon trs simple dans ce cas particulier

Le rsultat P=A2/2 est alors immdiat partir du spectre reprsent prcdemment. en identifiant les quations (3) et (5).

1. Relations entre la srie de Fourier et la dcomposition en srie


2. Relation entre la transforme de Fourier et les coefficients de
trigonomtrique
Fourier pour les signaux priodiques
Pour obtenir la relation entre les coefficients xn et les coefficients en cosinus (an) et les
coefficients en sinus (bn), on remplace la fonction exponentielle complexe dans la Il est galement possible de calculer la transforme de Fourier pour un signal

formule (1) par cosinus + i sinus. Ensuite, on identifie le rsultat obtenu avec le priodique de priode T0, le rsultat obtenu donne en ralit les mmes informations

dveloppement en srie trigonomtrique donn ci-dessous : que les coefficients de Fourier, ceci va tre dmontr prsent :

+ +
t t
x(t ) = a0 + an cos(2n ) + bn sin(2n )
T0 n = T0
n =

On obtient alors la relation suivante entre les coefficients xn et les valeurs de an et bn :

a ibn
xn = n
2 pour n diffrent de 0

Maths de lIngnieur ENSI 2011-2012 Page 31 Maths de lIngnieur ENSI 2011-2012 Page 32
+ a) Sinusode redresse
X( f ) = x(t ) exp(2ift )

+ + t
= x n exp 2in exp( 2ift )dt
T
n= 0
+
+ n
= xn

exp 2i f t dt
T
n = 0
+
n
= x n f
T

n = 0

3. Proprits de la srie trigonomtrique 40 20

Il existe de nombreux cas o les coefficients an et bn se calculent trs rapidement :


Montrer que : a n =
(
1 (2n)2
) a0 =
et bn=0 pour tout n

b) Rampe
a) pour un signal rel et pair tous les coefficients bn sont nuls seuls les coefficients an
sont diffrents de zro.

b) pour un signal rel et impair tous les coefficients an sont nuls seuls les coefficients
bn sont non nuls.

Les valeurs de a0 ne suivent pas les conditions prcdentes, a0 reprsente la valeur


moyenne du signal.

4. Travail demand

4.1. Calcul des coefficients en srie trigonomtrique


cos(n)
Montrer que : bn = 10
Calculer les coefficients en srie trigonomtrique des signaux suivants, prenez soins n et an=0 pour tout n

bien relever les priodes des signaux (attention laxe des abscisses est donn en
millisecondes):

Maths de lIngnieur ENSI 2011-2012 Page 33 Maths de lIngnieur ENSI 2011-2012 Page 34
- Calculer les coefficients de Fourier dun peigne de Dirac de priode gale 1
seconde.
c) Signal modul en amplitude
- En dduire les valeurs des coefficients a0, an et bn.

4.2. Synthse de signaux priodiques partir des valeurs de an et bn


prcdemment obtenues.
Ralisez des fonctions que vous nommerez sinred.m, rampe.m, modam.m et dirac.m
pour raliser la synthse par srie trigonomtrique des fonctions sinus redresse,
rampe, cosinus modul en amplitude par un cosinus, et peigne de Dirac. Les
arguments dentre de ces fonctions seront :
- N : le nombre de sinusodes sommer
- T0 : la priode de la fonction.
Il ny a pas dargument de sortie, il faut simplement tracer les reprsentations
temporelles et frquentielles : x(t) et |X(f)|
Ce dernier signal peut tre modlis par l'quation: Pour cela, les signaux seront donc gnrs partir dun vecteur temps t de 1000
y (t ) = (1 + m cos(2f m t )) cos(2f p t )) points rpartis sur lintervalle [0, 2T0] grce la formule suivante :
+ +
avec fm=1 kHz: frquence du signal modulant, fp=8kHz: frquence de la porteuse, m t t
x(t ) = a0 + an cos(2n ) + bn sin(2n )
T0 n = T0
indice de modulation fix arbitrairement 0.5 dans le cas prsent. Pour trouver la n =

dcomposition en srie trigonomtrique dece signal, il n'est pas ncessaire d'utiliser Pour chaque fonction il faudra calculer les valeurs pour an, bn et a0. C'est ainsi que

les formules 7 et 8 pour calculer les coefficients an et bn, il suffit de dvelopper le l'on pourra synthtiser de faon exacte ou de manire approche les signaux

produit des fonctions cosinus apparaissant dans l'quation prcdente. Le signal y(t) a),b),c),d) partir de leurs dcompositions en srie trigonomtrique.

peut alors s'exprimer comme la somme de fonctions cosinus, on ralise donc aussi la - Pour les signaux a) et b), relevez et commentez l'volution des ondulations

dcomposition de ce signal en somme de plusieurs sinusodes que l'on peut appeler prsentes sur les signaux synthtiss x(t) au fur et mesure que vous augmentez le

srie trigonomtrique. nombre N de sinusodes. En dduire l'origine de ces ondulations qui constituent ce

- Dterminer la priode du signal modul ainsi que les coefficients de Fourier. qu'on appelle l'effet Gibbs. Comment expliquez-vous que ces ondulations soient plus
importantes sur la rampe que sur le sinus redress. Pour vos explications, basez-vous

d) Peigne de Dirac sur les spectres des signaux gnrs.

Le peigne de Dirac a t tudi en cours et nous avons dtermin la transforme de - Pour le signal c), vrifiez que le signal que vous obtenez par synthse de

Fourier de ce signal et donc ses diffrents coefficients de Fourier. plusieurs sinusodes correspond exactement celui reprsent dans l'nonc.

Maths de lIngnieur ENSI 2011-2012 Page 35 Maths de lIngnieur ENSI 2011-2012 Page 36
- Pour bien visualiser leffet Gibbs et son volution avec le nombre N de TP 4 : UTILISATIO N DE LA TFD
sinusodes ajoutes, crer dans la fonction Dirac une animation obtenue en r
initialisant dans une boucle while le graphe obtenu pour le tracer de x(t) au fur et
POUR LANALYSE SPECTRALE DE SIGNAUX
mesure que N augmente. Expliquer en conclusion pour quelles raisons il est
impossible de gnrer un peigne de Dirac ou une impulsion de Dirac. 1. Introduction
Le but de ce TP est dinterprter correctement les rsultats obtenus par le calcul
dune transforme de Fourier discrte dans le cas de signaux priodiques. Il faudra
pouvoir lier ces rsultats aux coefficients de Fourier et la transforme de Fourier du
signal chantillonn. A titre dillustration on traitera des cas simples de signaux
priodiques et on verra tout lintrt de lanalyse spectrale sur des signaux
priodiques bruits. Nous verrons comment le choix de la frquence
dchantillonnage et du nombre dchantillons influe sur les spectres obtenus. Pour
des rappels sur lanalyse de Fourier de signaux priodiques, reportez vous
lintroduction du TP 2. On peut facilement exprimer la transforme de Fourier X(f)
partir des coefficients de Fourier xn pour un signal priodique x(t) :

+ n
X( f ) = xn f
T
n = 0

avec T0 : la priode de x(t)

et : limpulsion de Dirac ou impulsion unit

En thorie, chantillonner le signal x(t) revient le multiplier par un peigne de Dirac


Te(t) de priode gale la priode dchantillonnage Te. On notera xs(t) le signal
chantillonn, il scrira en fonction de x(t) sous la forme :

+
x s (t ) = x(t ) Te (t ) = x(t ) (t nTe )
n=

La transforme de Fourier de xs(t) (Xs(f)) scrira alors comme le produit de


convolution de X(f) avec la transforme de Fourier du peigne de Dirac qui est
galement un peigne de Dirac :

Maths de lIngnieur ENSI 2011-2012 Page 37 Maths de lIngnieur ENSI 2011-2012 Page 38
X s ( f ) = X ( f ) * f e f e ( f ) Cette quation sobtient en simplifiant lexpression de la transforme de Fourier de
+ xs(t) calcule en
= fe X ( f nf e )
n=
f=n/T0. T0 dsigne ici le temps de mesure du signal, N reprsente le nombre de
La simplification opre pour passer de la premire la deuxime ligne de lquation points chantillonns sur cette dure, et tm=mte o te est la priode dchantillonnage
(3) est due la proprit dlment neutre de limpulsion de Dirac pour la qui correspond T0/N. La majeure partie des problmes danalyse spectrale par
convolution. La figure suivante illustre la relation existant entre X(f) et Xs(f). calcul de transforme de Fourier discrte proviennent de cette limitation de dure du
Attention la fonction Xs(f) tant priodique de priode fe, il est impossible de la signal qui est videmment indispensable. En effet limiter la dure de x(t) revient
reprsenter dans son intgralit (de - +). multiplier x(t) par une fonction porte de largeur gale T0. X(f) sera alors convolu
par la transforme de Fourier de cette fonction porte qui est un sinus cardinal. Au
lieu davoir un spectre de raies pour un signal priodique on aura des fonctions sinus
cardinales prsentant diffrents lobes (un lobe principal ou central et des lobes
secondaires) qui donnent lieu leffet Gibbs. Les problmes de rsolution spectrale
en analyse par transforme de Fourier discrte sont lis au recouvrement possible de
ces lobes.

A titre dexemple, prenons le cas dune fonction cosinus de frquence et damplitude


unit :

Cette figure montre bien quil est ncessaire dchantillonner le signal une x(t ) = cos(2f1t ) avec f1 = 1Hz
frquence fe suprieure ou gale 2 fois la bande limite du signal B de manire
1
viter un recouvrement de spectre (thorme de Shannon). On comprend ds lors X( f ) = ( ( f f1 ) + ( ( f + f1 )
2
lintrt dun filtre anti-repliement placer avant lchantillonneur pour limiter le
spectre du signal. On conoit galement quune simple opration de filtrage passe- Le spectre en amplitude de ce signal priodique est donc form dune impulsion de

bas puisse permettre de reconstruire le signal initial partir de ces chantillons. La Dirac dans les frquences positives situe en f1=1Hz. Pour calculer une TFD sur ce

figure prcdente montre galement une proprit importante de Xs(f) : la signal, on est amen limiter le nombre dchantillons du signal, donc la dure de

priodicit. celui-ci. On note alors x(t) le signal x(t) limite un intervalle de temps allant de 0

La transforme de Fourier discrte (X[n]) de x(t) est directement lie la transforme T 0:

de Fourier du signal chantillonn (Xs(f)) par la relation suivante :


T
x' (t ) = x(t )rT0 t 0 avec T0=1s
n N 1 2
= x(t m ) exp i 2
mn
X [n] = X s f =
T0 m =0 N
T T
X ' ( f ) = 0 sin c(( f f1 )T0 ) exp( i ( f f1 )T0 ) + 0 sin c(( f + f1 )T0 ) exp( i ( f + f1 )T0 )
2 2
Maths de lIngnieur ENSI 2011-2012 Page 39 Maths de lIngnieur ENSI 2011-2012 Page 40
Le spectre en amplitude du signal limit en dure laisse alors apparatre des pics ou prcdemment, on vrifie bien quen prenant N chantillons distants de 1/T0, on
lobes dont le plus important est situ f1=1Hz. N
couvre bien une gamme de frquence gale fe : f e =
T0

Dans notre exemple, nous avons choisi N=8 et fe=8Hz. Voici ce que nous obtenons
dans ce cas au niveau des spectres.

Aprs chantillonnage de ce signal limit lintervalle [0,T0[, le spectre du signal


devient priodique de priode fe. Ce spectre est dtermin partir de la transforme
de Fourier du signal chantillonn donn par :

+
X s ( f ) = fe X '( f kf e ) Dans lexemple que nous venons de traiter, nous avons particulirement bien choisi
k =
la frquence dchantillonnage fe et la dure de mesure T0.

La TFD correspond une ensemble dchantillons prlevs sur la transforme de


En effet, fe respecte le thorme de Shannon fe>2f1 et T0 est un multiple de la priode
Fourier du signal chantillonn calculs par :
du signal ce qui nous permet davoir la frquence du signal f1 multiple entier de la
n N 1 mn
X [n] = X s f = = x(tm ) exp i 2 rsolution spectrale f. Lorsque ces deux conditions sur fe et T0 sont satisfaites, il est
T0 m =0 N
possible dtablir la relation suivante entre les coefficients de Fourier du signal
N correspond aux nombres dchantillons prlevs sur x(t) sur [0, T0[ avec une priodique et la transforme de Fourier discrte :
T
priode dchantillonnage t e = 0 . N correspond aussi au nombre dchantillons
sur lintervalle [0, f e 2[ . En toute rigueur xn dsigne ici les coefficients de
N X [ n]
xn =
N
prlevs sur Xs(f) sur [0, fe[ avec un pas appel rsolution spectrale qui vaut :
Fourier de la rptition priodique de x(t), il faut donc ncessairement que T0 soit
1
f = . Ce dernier rsultat dcoule directement de lexpression de X[n] donne
T0 gale la priode de x(t) ou alors un multiple entier de celle-ci. Dans le cas contraire,
il est impossible dtablir un lien entre les rsultats de la TFD et les coefficients de

Maths de lIngnieur ENSI 2011-2012 Page 41 Maths de lIngnieur ENSI 2011-2012 Page 42
Fourier ou la transforme de Fourier du signal priodique. Cest ce que nous
pouvons observer au travers de l'exemple suivant dans lequel pour le mme signal
priodique, nous avons choisi une dure de mesure T0 diffrente dun multiple entier
de la priode.

Pour ces spectres, la dure de mesure a t choisie gale T0=1.3s. La frquence de la


fonction cosinus est toujours de 1Hz et 8 chantillons sont prlevs sur la dure T0. 2. Travail demand
Dans ce cas, on voit bien que la troncature du signal et le repliement d
2.1. Analyse dune fonction cosinus
lchantillonnage modifie fortement les rsultats obtenus par TFD et on na plus de
Crer une fonction tfd qui aura pour but de tracer la reprsentation temporelle x(t)
relation directe entre les coefficients de Fourier et la TFD.
ainsi que le spectre sous 3 reprsentations complmentaires :

1) partie relle du spectre obtenu par calcul de la transforme de Fourier


discrte en fonction des frquences

2) partie imaginaire

3) module

Pour tracer ces 4 graphes, il faut bien sur dfinir la fonction tudier et les conditions
dchantillonnage. On choisit danalyser une fonction cosinus, il faudra fournir son
amplitude et sa frquence ainsi que la frquence dchantillonnage fe et la dure de
mesure T0 comme paramtres dentres de votre programme. Si vous voulez par
exemple tudier un signal de frquence 3kHz et damplitude 0.2 avec une frquence

Maths de lIngnieur ENSI 2011-2012 Page 43 Maths de lIngnieur ENSI 2011-2012 Page 44
dchantillonnage 30kHz et une dure de mesure 1ms, il faudra taper exemple sommer la fonction cosinus un vecteur ab*randn(1,length(t)) o ab dsigne
tfd(3000,0.2,30000,0.001) pour obtenir les 4 graphes donnant les reprsentations lamplitude du bruit et length(t) la longueur du vecteur temps not t.
temporelles et spectrales du signal.
La variable ab devra tre fourni comme paramtre dentre de la fonction tfd. Au
NB : - pour calculer la transforme de Fourier discrte vous pouvez utiliser niveau des graphes tracer, contentez vous prsent de reprsenter le signal en
linstruction fft. fonction du temps et le spectre en amplitude (reporter uniquement le module et pas
les parties relles et imaginaires).
- utiliser toujours de prfrence linstruction stem plutt que plot.
Si vous voulez par exemple tudier un signal sinusodal de frquence 3kHz et
- Expliquer comment vous allez calculer le vecteur temps ncessaire la
damplitude 0.1 bruit par la fonction randn damplitude 0.1 et chantillonn une
reprsentation temporelle du signal.
frquence dchantillonnage 100kHz sur une dure de mesure 1ms, il faudra taper
- Expliquer comment vous allez calculer le vecteur des frquences ncessaire pour tfd(3000,0.1,0.1,100000,0.001) pour obtenir les 2 graphes donnant les reprsentations
pouvoir reprsenter le spectre. temporelles et spectrales du signal.

- En reprenant lexemple donn prcdemment expliquez comment vous pouvez - Observer et commenter les graphes obtenus pour le signal pris comme exemple
exploiter le spectre pour retrouver lamplitude et la frquence du signal. auparavant en choisissant pour ab diffrentes valeurs : 0.01, 0.05 et 0.1. Essayer dans
chaque cas dexploiter les deux reprsentations (temporelles et frquentielles) pour
- Dterminer les valeurs minimales de fe et T0 qui permettent dobtenir un spectre
en extraire lamplitude et la frquence de la sinusode, quelles conclusions peut-on en
exploitable pour ltude dun signal dfini par x(t) = 5cos(100t), jentends par
tirer quant lintrt de ltude frquentielle dun signal.
spectre exploitable un spectre partir duquel il est possible de dterminer
lamplitude et la frquence du signal sans aucune ambigut. Il est bien sr
souhaitable de donner les graphes obtenus pour les valeurs de fe et T0 choisies.
2.3. Analyse dune somme de sinusodes
- Expliquer pourquoi lorsque vous tapez tfd(1000,1,1050,0.04) vous observez une
Reprenez la fonction tfd prcdente en remplaant cette fois le bruit par une
reprsentation temporelle du signal qui laisse penser que le signal a une priode de
deuxime fonction cosinus. Pour raliser cette addition, il faudra par exemple
0.02s. Commenter et interprter galement le spectre obtenu.
sommer la fonction cosinus de dpart un vecteur a2*cos(2*pi*f2*t) o a2 et f2
dsignent lamplitude et la frquence de la deuxime sinusode. Les variables a2 et f2
devront tre fournis comme paramtres dentre de la fonction tfd.
2.2. Analyse dune fonction cosinus bruite

Si vous voulez par exemple tudier une somme dun signal sinusodal de frquence
Reprenez la fonction tfd prcdente en rajoutant cette fois la fonction cosinus du
3kHz et damplitude 0.1 et dune fonction cosinus de frquence 3.3kHz et
bruit obtenu grce linstruction randn qui permet de gnrer des nombres
damplitude 0.05 chantillonne une frquence dchantillonnage 100kHz sur une
alatoires qui suivent une loi gaussienne. Pour raliser cette addition, il faudra par

Maths de lIngnieur ENSI 2011-2012 Page 45 Maths de lIngnieur ENSI 2011-2012 Page 46
dure de mesure 1ms, il faudra taper tfd(3000,0.1,3300,0.05,100000,0.001) pour TP 5 : UTILISATION DE LA TFD
obtenir les 2 graphes donnant les reprsentations temporelles et spectrales du signal.
POUR LESTIMATION DUNE FONCTION DE
- Observer et commenter les graphes obtenus dans lexemple prcdent.
Essayer dextraire de ces graphes les amplitudes et frquences des deux
CORRLATION
sinusodes.
1. Introduction
- Quel est le paramtre dchantillonnage modifier pour pouvoir extraire
Un signal alatoire X(t,) est dfini chaque instant t1,t2,t3, par sa loi de probabilit
correctement les amplitudes et frquences des deux sinusodes. Reprsenter et
temporelle:
exploiter les graphes alors obtenus.
p(x1,x2,x3,,t1,t2,t3,). Il existe un grand nombre de lois de probabilit dont la loi
- En guise de conclusion gnrale ce TP donner les points forts de lanalyse gaussienne et la loi uniforme:
frquentielle de signaux priodiques par transforme de Fourier discrte.

1 (x m )2
loi gaussienne : p( x) = exp x
2 2 2

loi uniforme :


1
p( x) = xsup xinf
[
sur xinf , xsup ]
ailleurs
0

Il est possible de gnrer les signaux alatoires partir de variables alatoires qui
suivent ces lois de probabilit. On peut ainsi gnrer des bruits en prenant comme
modle:
Y (t , ) = Y (t , X ) = aX + b

avec X une variable alatoire gaussienne ou uniforme, et a et b des constantes qui


permettent de paramtrer la puissance moyenne totale, la variance ou encore la
valeur moyenne du signal Y. Un signal alatoire est dit stationnaire au sens strict si
ses proprits statistiques sont indpendantes de l'origine des temps. Il est
stationnaire au second ordre si son moment d'ordre 1 (valeur moyenne statistique) ne
dpend pas de l'instant choisi et si le moment mixte d'ordre 2 (l'autocorrlation
statistique) ne dpend que de : l'cart entre les instants t1 et t2 choisis pour relever
les ensembles statistiques.

Maths de lIngnieur ENSI 2011-2012 Page 47 Maths de lIngnieur ENSI 2011-2012 Page 48
Ces moments sont calculs partir d'ensembles statistiques forms par des L'avantage de cet estimateur est son absence de biais, mais sa variance devient
observations du signal en diffrents instants (t1, t2, ). Pour obtenir des rsultats importante lorsque p tend vers N-1. Les fonctions de corrlation qui vont tre
significatifs, il est donc ncessaire de constituer des ensembles importants, et pour calcules par la suite permettront de saisir les notions de biais et de variance dun
cela un grand nombre de relevs doit tre entrepris. Il est souvent plus facile de estimateur.
travailler sur un seul relev du signal en fonction du temps et de calculer alors des
moments temporels. C'est ce qui est fait habituellement pour des signaux 3. Utilisation de la TFD pour calculer ces estimes
dterministes, pour les signaux alatoires, ces moments temporels ne donnent des Pour calculer une fonction de corrlation numrique, il est plus intressant de passer
rsultats significatifs que si on fait l'hypothse d'ergodicit, c'est dire que les dans le domaine frquentiel au moyen de la TFD pour des signaux prsentant plus
moments ou moyennes temporelles correspondent aux moments statistiques. Nous de 80 chantillons car les oprations sont moins nombreuses donc plus rapides
allons prsenter les deux principales manires d'estimer numriquement la fonction excuter. Lutilisation de la TFD est base sur le thorme de Plancherel qui dit que la
d'autocorrlation. transforme de Fourier dun produit de convolution de deux signaux donne le
produit simple de la transforme de Fourier des deux signaux :
2. Estimation numrique de l'autocorrlation TF ( x (t ) * y (t )) = X ( f )Y ( f )
La fonction d'autocorrlation Rx() est calcule en prenant la valeur moyenne de Il est possible dutiliser ce thorme pour estimer la fonction dautocorrlation car
X(t,) multipli par X(t-,). Pour simplifier les critures, les signaux numriss sont cette dernire renferme une convolution : R x ( ) = x( ) * x * ( )
le plus souvent exprims en fonction d'indices prenant des valeurs entires. Par
Si on applique cette dernire relation au cas dun signal numrique sur lequel on
exemple, au lieu d'crire x(tm) avec tm=mte (te: priode d'chantillonnage), on prfre
essaie de calculer lestimateur biais de lautocorrlation, on obtient :
crire x(m). Ainsi, pour estimer numriquement la fonction d'autocorrlation, on
pose simplement le calcul d'une valeur moyenne sur lensemble de N chantillons
1 N 1 1
qui constituent x(m): r1 ( p ) = x(m) x* (m p) = N ( x( p) * x* ( p))
N m= p
1 N 1
r1 ( p ) = x ( m) x * ( m p ) pour 0 p N 1 N 1
N m= p O * dsigne la convolution linaire dfinie par: x( p ) * y ( p ) = x ( m) y ( p m)
m=0
Lorsque p tend vers N-1, peu de termes interviennent dans le calcul de la moyenne
alors que le terme de normalisation reste constant 1/N. Cela a pour consquence Avec y( p -m) = 0 pour ( p -m) est en dehors de l'intervalle [0, N -1]
d'introduire un biais dans l'estimation: l'autocorrlation est pondre par une fentre
La difficult pour les signaux numriques est quil existe deux dfinitions de la
triangulaire.
convolution : la convolution cyclique et la convolution linaire. La convolution
Pour liminer le biais, un second estimateur peut tre dfini de la faon suivante:
cyclique est dfinie par la relation :
1 N 1
r2 ( p ) = x ( m) x * ( m p )
N p m= p
pour 0 p N 1

Maths de lIngnieur ENSI 2011-2012 Page 49 Maths de lIngnieur ENSI 2011-2012 Page 50
N 1 laxe des abscisses ncessaire reprsenter les autocorrlations. Les valeurs de r(p)
x( p ) * y ( p ) = x ( m) y ( p m) en imposant une priodicit N pour les signaux et x et
pour des valeurs de p ngatives sont obtenues grce la proprit de priodicit des
m =0

y de manire pouvoir calculer les valeurs de y(m-p) lorsque m-p<0 (y(m-p)=y(m- autocorrlations estimes avec la TFD.

p+N)).

La convolution cyclique prsente la proprit suivante : 4. Travail demand

TFD ( x( p ) * y ( p )) = TFD( x( p )).TFD ( y ( p )) , ce qui permet de raliser cette opration de 4.1. Autocorrlation d'une sinusode
la manire suivante :
Ecrivez une fonction que vous nommerez autocor.m et dans laquelle vous gnrez

x( p ) * y ( p ) = TFD 1 (TFD ( x( p )).TFD ( y ( p))) o TFD dsigne la TFD inverse par exemple un signal sinusodal d'amplitude 1 de frquence 0.1Hz chantillonn
-1

une frquence de 1Hz en 50 points en partant de 0s. Les paramtres dentre seront :
Cette dernire galit ntant pas applicable la convolution linaire, une manire de
lamplitude et la frquence de la sinusode, la frquence dchantillonnage et le
contourner le problme pour pouvoir utiliser la TFD afin de calculer une convolution
nombre dchantillons. On considrera que le vecteur temps part de 0. Pour traiter
linaire est de rajouter N zros aux signaux x et y. La convolution inaire de deux
lexemple prcdent, il faudra taper : autocor(1,0.1,1,50).
signaux x et y de N chantillons chacun peut donc tre calcule de la manire
suivante : - La fonction devra effectuer les calculs et tracs des estimations biases et non
biaises de ce signal par les diffrentes formules donnes auparavant : 4.1, 4.2,
1
x( p ) * y ( p ) = TFD ( X ' Y ' ) avec X' et Y' correspondant : X '= TFD(x + N0), Y'= TFD( 4.3 et 4.4. Vrifier que vous obtenez les mmes rsultats par ces trois mthodes
y + N0). Les deux estimes de lautocorrlation peuvent donc tre calcules de la pour les deux estimations. Ne passer pas plus dune heure sur cette partie car
manire suivante : lessentiel du TP nest pas l. Par la suite, on se contentera de calculer et tracer
uniquement les deux estimes obtenues avec linstruction xcorr.
1
r1 ( p ) = TFD 1 ( X ' X '* )( p ))
N
- Tracer et comparer les estimations biaises et non biaise de lautocorrlation

1 du signal pris comme exemple auparavant.


r2 ( p ) = TFD 1 ( X ' X '* )( p ))
Np
- Exploiter ces tracs pour retrouver les caractristiques du signal, savoir la
Ces deux estimes sont obtenus directement sous Matlab grce la fonction xcorr : puissance moyenne totale et la frquence.

[r1,p]=xcorr(x,x,biased) pour lestimateur biais - Sachant que la puissance moyenne totale est donne par la fonction
d'autocorrlation en zro, donnez l'expression de l'estime numrique de la
[r2,p]=xcorr(x,x,unbiased) pour lestimateur non biais
puissance moyenne totale partir des estimateurs biais et non biais de
r1 et r2 sont les deux vecteurs renfermant les deux estimes ; p reprsente un vecteur l'autocorrlation. Calculer l'estime la puissance moyenne totale du signal et
qui contiendra les valeurs entires allant de (N-1) (N-1) et va servir pour calculer confronter votre rsultat la thorie.

Maths de lIngnieur ENSI 2011-2012 Page 51 Maths de lIngnieur ENSI 2011-2012 Page 52
4.2. Autocorrlation d'un bruit blanc 4.3. Autocorrlation d'un sinus bruit

Sous Matlab comme dans la plupart des langages de programmation, il existe un Rajoutez prsent dans la fonction autocor.m des instructions pour gnrer et tracer
gnrateur de nombres alatoires qui permet de modliser un bruit chantillonn. un sinus bruit par un bruit blanc gaussien centr. On prendra comme exemple un
Matlab propose deux types de gnrateur: rand et randn. sinus damplitude 1 et de frquence 0.1Hz constitu de 500 chantillons relevs une
frquence de 1Hz.
- En comparant les histogrammes obtenus pour ces deux bruits en tapant
hist(rand(1,1000)) et hist(randn(1,1000)) donnez les diffrences essentielles des - Sachant que l'on dsire un rapport signal sur bruit de 0dB, en dduire la variance
deux gnrateurs. du bruit blanc.

- Calculer l'estime de la puissance moyenne totale du signal obtenu partir - Commenter le trac du signal bruit, peut-on dterminer lamplitude et la frquence
de l'instruction randn(1,1000). de la fonction sinus ?

- Calculer galement l'estime de la valeur moyenne du mme signal. - Tracer et commenter les estimations biaises et non biaises de son autocorrlation

- Comment partir dun ensemble de variables alatoires qui suivent une loi - Exploiter ces tracs afin de retrouver la puissance moyenne totale du bruit, du sinus
de distribution gaussienne de moyenne nulle et de variance 1 est-il possible de et la frquence du sinus.
gnrer un signal alatoire de moyenne a et de variance b ?

- Remplacer dans la fonction autocor le signal sinusodal par un bruit blanc


gaussien. Les paramtres fournir seront la valeur moyenne, la variance du
bruit ainsi que le nombre dchantillons. Par exemple, pour gnrer 100
chantillons d'un bruit blanc gaussien de valeur moyenne 2 et de variance 3, il
faudra taper : autocor(2,3,100). La frquence dchantillonnage sera prise gale
1Hz dans tous les cas.

- Tracer et comparer les estimations biaises et non biaise de son


autocorrlation pour lexemple choisi auparavant.

- Expliquer comment utiliser ces tracs pour extraire la valeur moyenne, la


puissance moyenne totale et la valeur efficace du signal.

- Recommencer avec 1000 chantillons, commenter lvolution des rsultats.

Maths de lIngnieur ENSI 2011-2012 Page 53 Maths de lIngnieur ENSI 2011-2012 Page 54

Vous aimerez peut-être aussi