TP Traitement de Signal (Acoustique et Traitement du Son) : Application sur Matlab

Embed Size (px)

DESCRIPTION

Ce TP a pour but d’apprendre à utiliser le logiciel Matlab afin de pouvoir développer des applications simples en traitement du signal.

Citation preview

Institut Suprieur des Sciences Appliques et de Technologie de Sousse

Fascicule de Travaux PratiquesAcoustique et Traitement du Son

Par : RHIF AhmedDpartement Gnie lectronique

Anne Universitaire 2010-2011

Version 1.0 - Dcembre 2010 (Brouillon)

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

SommaireManipulation 0 Initiation au logiciel MATLAB ................ 3 Manipulation 1 Les Transformations de Fourier .............. 10 Manipulation 2 Systmes Linaires Continus Filtrage Analogique.......................................................................... 15 Manipulation 3 Lchantillonnage ................................... 23

RHIF Ahmed

Dp. Gnie Electronique

2

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Manipulation 0 Initiation au logiciel MATLABCe TP a pour but dapprendre utiliser le logiciel Matlab afin de pouvoir dvelopper des applications simples en traitement du signal. Entrer dabord la commande diary(initiation) pour garder les traces de votre travail ; la fin de la sance entrer la commande diary() ; I- Manipulation des variables On distingue les variables scalaires et les variables vectorielles (matricielles en gnral). 1- Variables scalaires Dans un premier temps on gnre trois variables scalaires a, b et c de la manire suivante : >> a=2 ; >> b=3; >> c=4 ; On peut consulter la valeur dune variable en entrant son nom : >> a La rponse serait : a= 2 Cela signifie que les valeurs des variables sont mmorises automatiquement avec leurs noms. 2- Taille des variables dans la mmoire La taille dun scalaire de type double est 8 Bytes = 8 Octets = 64 Bits 3- Commandes de base : who et whos : Affiche la taille mmoire et types de toutes les variables utilises. cd : 3

RHIF Ahmed

Dp. Gnie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Affiche le rpertoire (directorie) o vous oprez en ce moment. what, dir : Affiche la liste les noms des fichiers contenus dans le rpertoire actuel. help nom_fonction : Donne un descriptif de la fonction et ses arguments dentre sortie. 4- Oprations sur les variables >>d=a+b+c >>e=a+b*c >>f=(a+b)*c >>g=(a/b)*c >>h=a^2 5- Les matrices et les variables vectorielles Matlab est optimis pour lusage matriciel : Eviter les formulations non matricielles. [ a b c ] est un vecteur ligne. [a ;b ;c ;] est un vecteur colonne. V est le transpos du vecteur V u=1:5 est le vecteur [1 2 3 4 5] (de mme que [1 :5] et (1 :5). t=0 :2 :15 est le vecteur [0 2 4 6 8 10 12 14] sin(t) est le vecteur [sin(0) sin(2) sin(14)] zeros(1,N) est le vecteur ligne nul N lments. Ones(1,N) est le vecteur ligne N lments gaux 1. 6- Oprations sur les vecteurs Il faut respecter les dimensions des vecteurs et matrices. Gnration automatique dun vecteur V=dbut:pas:fin; On dfinit une valeur de dbut : dbut On dfinit une valeur de fin : fin On dfinit un pas de progression linaire ou logarithmique (incrmentation) : pas ; si le pas nest pas spcifi, il est gal 1 automatiquement. >>v3=1:10 >>v4=1:-0.5:-1RHIF Ahmed Dp. Gnie Electronique

4

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

>>debut=0;fin=256;pas=8; >>v5=debut:pas:fin >>debut=0;fin=2*pi;pas=0.1; o pi dsigne le nombre 3.14 >>v5=debut:pas:fin Une liste des fonctions les plus courantes est disponible dans laide en ligne en tapant la commande (elfun dsigne elementary functions : sin, cos, log, exp) >>help elfun 7- Les matrices Saisir la matrice 3x3 suivante : a=[1 2 3 ;4 5 6 ;7 8 9] Noter que deux lignes sont spares par un point virgule. Si vous entrez la commande a(:) vous obtenez le vecteur colonne [1 4 7 2 5 8 3 6 9]. La fonction eig donne les valeurs propres de la matrice a. zeros(N) est la matrice nulle NxN, eye(N) est la matrice identit NxN. II- ROGRAMMATION 1-LES SCRIPTS Plutt que de taper les commandes au clavier les unes aprs les autres pour effectuer une tche, ce qui vous oblige refaire la mme chose chaque utilisation de cette tche, il est prfrable de grouper les commandes dans un fichier extension .m, ainsi tous les programmes auront pour nom name.m. Il suffit alors de taper name pour que la tche sexcute. Exemple 1 Crez un fichier qui sappelle essai1.m, qui gnre un signal sinusodal x(t) de n points, puis visualisez le laide de la commande plot(x). Etape 1 : dition du fichier par la commande : edit essai1.m Etape 2 : taper les commandes suivantes dans la fentre ddition : ce fichier gnre et affiche une sinusode : t=0:0.1:2*pi; % t est le vecteur temps avec un pas dchantillonnage 0.1 x=sin(t); % le signal x est un vecteur de mme taille que le vecteur tRHIF Ahmed Dp. Gnie Electronique

5

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

plot(t,x) ;grid on % dessine lcran x en fonction de t Remarques : 1- Le texte dbutant par % est un commentaire de votre choix, il est ignor par le logiciel. Vous pouvez supprimer ces commentaires, mais ils sont utiles lorsquon a plusieurs programmes. 2- Chaque instruction doit tre suivie dun point virgule. Etape 3 : Sauvegardez le fichier dans le rpertoire en cours ; Etape 4 : Excutez le programme en entrant la commande suivante : >>essai1 2- Utilitaires graphiques Les instructions : title(titre de la courbe ou la figure) ajoute un titre la figure visualise. xlabel(titre des abscisses) affiche un titre horizontal suivant x. ylabel(titre des ordonns) affiche un titre vertical suivant y. grid on et grid off quadrille ou non le graphique. Exemple 2 Gnrez, laide dun programme prog1.m, deux priodes des deux signaux x(t)=cos(t) et y(t)=sin(t) et visualisez les deux signaux sur une mme figure, lune en rouge et lautre en bleu laide de la fonction plot(t,x,b,t,y,r). Mettre une lgende. Exemple 3 Visualisez sur une mme figure, laide dun programme prog2.m, les quatre signaux cos(t), sin(t),log10(t) et exp(t) en utilisant la fonction subplot(.,.,.) qui divise lcran en quatre sous figures : (2,2,1),(2,2,2),(2,2,3) et (2,2,4). >>subplot(2,2,1),plot(t,x); Saisie dune donne au clavier : Pour saisir une variable x partir du clavier, on utilise linstruction : x=input(x=) ;

RHIF Ahmed

Dp. Gnie Electronique

6

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Affichage dun message lcran : Pour afficher lcran un message personnel suivi dun retour la ligne : fprintf(message personnel \n) ; Affichage de la valeur dune variable : Pour afficher lcran la valeur dune variable x : fprintf(x=%d) ; III- LES FONCTIONS Si plusieurs de vos programmes personnels utilisent en commun une liste dinstructions, il est prfrable de regrouper ces instructions sous forme dun programme indpendant. A chaque besoin on appelle le dit programme par son nom : cest une fonction. Une fonction possde des paramtres dentre et des paramtres de sortie, dont la syntaxe de dclaration est la suivante : function [sortie1,sortie2,]=nom_fonction(entre1,entre2,) Le programme matlab correspondant la fonction doit porter le mme nom que la fonction : nom_fonction.m Exemple 1 : Calcul de la moyenne arithmtique m dun vecteur v de dimension n : m=1 n v(i) n i =1

La fonction moyenne.m comportera les instructions suivantes :

function resultat=moyenne(v,n); %dclaration de la fonction r=0; %initialisation de la moyenne for k=1:n r=r+v(k); end resultat=r/n;RHIF Ahmed Dp. Gnie Electronique

7

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

On note la prsence de la boucle itrative :

for indice=debut:pas:fin instruction ; endQui est quivalente : indice=debut ; (B) instruction; debut=debut+pas; si debut=fin aller B;

Mise en uvre de la fonction

>>moyenne(1:100,100)Comparer avec la fonction matlab mean.

Exemple 2Crez une fonction puissance.m qui donne la valeur efficace s et la puissance moyenne p dun signal. x tant un vecteur de composantes x(i) , i=1..n, la valeur efficace de x est :

S=

p=

1 n ( x(i) x) n i =1

Testez cette fonction sur un signal sinusodal damplitude A et de priode 1. Comparer avec la fonction matlab std.

Exemple 3 : Diagramme de bode.1- Crez une fonction spectre(f,H) qui affiche lcran le spectre damplitude 20log|H(f)| et le spectre de phase Arg(H(f)) en fonction de f en Hertz avec indication du titre de chaque courbe ; Les paramtres dentre sont le vecteur frquence f=0:fmax et le vecteur complexe

H.Fonctions conseilles :abs(x),angle(x) et log10(x).

RHIF Ahmed

Dp. Gnie Electronique

8

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

2- Utilisez la fonction spectre dans un programme indpendant myfilter.m pour tracer les diagrammes de Bode des filtres passe bas et passe haut dont les fonctions de transferts sont dfinies par :

fc tant la frquence de coupure demande par le programme et fournie par lutilisateur lexcution.

Exemple 4 : vitesse de convergence dune srieConsidrons la srie en N suivante (qui converge vers exponentiel de x) :

Raliser : Une fonction factoriel(n) qui calcule le factoriel dun entier naturel. Une fonction somme(x,n) qui calcule s(x,n). Un programme prog3.m qui calcule la valeur de lexponentiel de 2 avec une prcision (incertitude relative) suprieure 95% (incertitude infrieur 5%).

RHIF Ahmed

Dp. Gnie Electronique

9

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Manipulation 1 Les Transformations de Fourier

Objectif :Dans ce TP on cherche comparer entre la mthode MATLAB et la mthode mathmatique vis--vis le calcul de la transforme de Fourier dune fonction. Ensuite on va mettre en vidence la restitution du signal temporel ainsi que leffet du dcalage frquentiel sur le spectre.

1 La transforme de FourierLa transforme de Fourier F est une opration qui transforme une fonction intgrable en une autre fonction, dcrivant le spectre frquentiel de cette dernire. Si x(t) est une fonction intgrable, sa transforme de Fourier est la fonction X(f) donne par la formule :

1 X ( f ) = x(t )e 2jft dt T 02 La transforme de Fourier inverse

T

Le signal utile est toujours exprim dans le domaine spatial (temporel), donc aprs avoir filtr un signal dans le domaine frquentiel on besoin de transformer la rsultante dans le domaine spatial pour pouvoir ensuite lutilis. La transforme de Fourier inverse est exprime comme suit :

+

x(t ) =

X ( f )e

2jft

df

%I- Reprsentation temporelle et frquentiel de x(t)= exp(-a*|t|) %A) Reprsentation temporelle%1) Definitions prealablesa=1; Te=0.01; 10

RHIF Ahmed

Dp. Gnie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

t=-5:Te:5;

%2) Definition de la fonction x(t)

%3) Trace de notre fonction x(t)figure(1) subplot(2,1,1),..

%4) Quadrillage, titre, axes & legendesgrid title('Representation temporelle du signal x(t)') legend('x(t) = exp(-a*|t|)') xlabel('Temps t (en s)') ylabel('Amplitude du signal')

%B)Representation frequentielle : methode formelle%1) Definitions prealablesFe=0.01; f=-3:Fe:3;

%2) Definition de X(f)Faite le calcule de la transforme de Fourier de x et vrifier avec le rsultat ci-dessous. X=(a*2)./((a.*a)+(pi.*pi)*(f.*f)*4);

%3) Trace de X(f)subplot(2,2,3),..

%4) Quadrillage, titre, axes & legendesgrid title('Methode formelle: Calcul & representation frequentielle du signal x(t) : X(f)') legend('TF[x(t)] = X(f)') xlabel('Frequence f (en Hz)') ylabel('Amplitude du signal')

RHIF Ahmed

Dp. Gnie Electronique

11

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

%II- Calcul de la transformee de Fourier de x(t) : methode Matlab %A) Transformee de Fourier: x(t) -> X(f)%1) Definitions prealablesn1=length(x); f1=linspace(..);;

%2) Definition du signal X(f)X1=fftshift();

%3) Trace de notre fonction X(f)subplot(2,2,4),plot(.)

%4) Quadrillage, titre, axes & legendesgrid axis([-3 3 0 2]); title('Methode Matlab: Calcul & representation frequentielle du signal x(t) : X(f)') legend('TF[x(t)] = X(f)') xlabel('Frequence f (en Hz)') ylabel('Amplitude du signal')

%B) Comparaison des 2 TF obtenus%1) Trace de nos fonctions X(f) prcdement obtenuesfigure(2) hold on plot(f,X,'b') plot(f1,abs(X1),'r') hold off

%2) Quadrillage, titre, axes & legendesgrid axis([-3 3 0 2]); title('Representation frequentielle du signal x(t) : X(f) suivant 2 mthodes') legend('TF[x(t)] : mthode formelle','TF[x(t)] : mthode matlab') 12

RHIF Ahmed

Dp. Gnie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

xlabel('Frequence f (en Hz)') ylabel('Amplitude du signal') 1) Interprter la figure et conclure quelle est la mthode la plus adquate (mthode formelle ou matlab).

%C) Transformee de Fourier Inverse: X(f) -> x(t)%1) Recuperation de notre variable temporelle t partir de notre X(f)n2=length(X1)-1; borne=..; t2=-borne:Te:borne;

%2) Definition du signal x(t)x2=abs(ifft(X1)/Te);

%3) Trace de notre fonction X(f)figure(3) hold on plot(t,x,'b') plot(t2,x2,'r--') hold off

%4) Quadrillage, titre, axes & legendesgrid axis([-borne borne 0 1]); title('Representation temporelle du signal x(t) obtenu par la TF Inverse : X(f) -> x(t)') legend('x(t) : signal initial','x''(t) : signal rcupr partir de X(f)') xlabel('Temps t (en s)') ylabel('Amplitude du signal') 2) Commenter le rsultat trouver.

%D) Decalage frquentiel de la TF%1) Definition de la nouvelle fonction x(t) dcale frquentiellementfo=5;

RHIF Ahmed

Dp. Gnie Electronique

13

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

y=x.*(exp(i*2*pi*fo*t));

%2) Calcul de la transformee de Fourier de y(t)=x(t)*exp(i*2*pi*fo*t)Y=

%3) Trace de nos fonctions X(f) et X(f-fo)figure(4) hold on plot(f1,abs(X1)) plot(f1,Y,'r') hold off

%4) Quadrillage, titre, axes & legendesgrid axis([-10 10 0 2]); title('Representation frequentielle des signaux x(t) et x(t)*exp(i*2*pi*fo*t)') legend('x(t) -TF-> X(f)','x(t)*exp(i*2*pi*fo*t) -TF-> X(f-fo)') xlabel('Frequence f (en Hz)') ylabel('Amplitude du signal')

Bilan du TP : Transforme de FourierCe TP permet de mettre en application dfinitions et proprits concernant la Transforme de Fourier selon deux points de vue: les mthodes formelles et matlab prsentent tout au long de celui-ci leurs atouts et leurs inconvnients. La mthode formelle se rvle tre plus laborieuse mettre en place car elle ncessite le calcul de lintgrale de la Transforme de Fourier du signal que lon souhaite tudier. Cependant, elle apparat tre la solution la plus prcise et la plus rigoureuse sur le plan purement mathmatique. La mthode matlab prouve son efficacit par sa simplicit et sa rapidit dutilisation. Aucun calcul nest ncessaire. Malgr cela, cette solution est lgrement moins prcise que la mthode prcdente ; la diffrence tant infime. Le principal problme rencontr au cours de ce TP est la taille de nos vecteurs : ils devaient tre obligatoirement de mme taille (taille du vecteur abscisse = taille du vecteur ordonne) pour pouvoir obtenir laffichage des diffrents graphes.

RHIF Ahmed

Dp. Gnie Electronique

14

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Manipulation 2 Systmes Linaires Continus Filtrage Analogique

Objectif :Lobjectif de ce travail pratique est de mettre en application les connaissances acquises sur la Transforme de Fourier et le filtrage. Nous verrons, grce Matlab, les diffrences existantes entre le filtrage idal (Partie 1) utilis en thorie et le rel (Partie 2) appliqu dans divers domaines tels que la tlcommunication, llectronique, lautomatique

Partie I : Convolution, transforme de Fourier et filtrage.Dans cette partie, on tudie le filtrage idal dun signal porte. Avec T(t) = 1 pour T/2 < t < T/2 0 ailleurs On considre un filtre H(f) passe-bas idal de frquence de coupure fc=2/T.

%Dfinitions pralablesT=5; Fe=100; Te=1/Fe; fc=2/T;

1) Dfinition du domaine temporel et trac de la fonction porte pour T=5 :Dabord, on discrtise le domaine temporel car Matlab ne peut pas travailler sur du continu . Pour cela, on cr un vecteur t=[-20 20]. On choisit un pas Te=1/Fe=1/100. Autrement dit, entre 20 et 20, t prend 4001 valeurs diffrentes. t = -20 + n.Te avec n un entier tel que 0=tech(n))&(t