Vous êtes sur la page 1sur 26

Institut Suprieur des Sciences Appliques et de Technologie de Sousse

Fascicule de Travaux Pratiques


Acoustique et Traitement du Son

Par : RHIF Ahmed


Dpartement Gnie lectronique

Anne Universitaire 2010-2011

Version 1.0 - Dcembre 2010 (Brouillon)

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Sommaire
Manipulation 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

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Manipulation 0 Initiation au logiciel MATLAB


Ce 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:-1
RHIF Ahmed Dp. Gnie Electronique

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 t
RHIF Ahmed Dp. Gnie Electronique

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

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

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

On note la prsence de la boucle itrative :

for indice=debut:pas:fin instruction ; end


Qui 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 2
Crez 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

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 srie


Considrons 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

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 Fourier
La 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 0
2 La transforme de Fourier inverse

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 prealables
a=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 & legendes


grid 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 prealables
Fe=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 & legendes


grid 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 prealables
n1=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 & legendes


grid 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 obtenues
figure(2) hold on plot(f,X,'b') plot(f1,abs(X1),'r') hold off

%2) Quadrillage, titre, axes & legendes


grid 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 & legendes


grid 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 frquentiellement
fo=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 & legendes


grid 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 Fourier


Ce 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 pralables
T=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<n<4000.

%Dfinition du domaine temporel


t=-20:Te:20; Le domaine temporel tant dfini, on peut maintenant tracer la fonction porte pour T= 5 :

RHIF Ahmed

Dp. Gnie Electronique

15

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Avec T(t) = 1 pour T/2 < t < T/2 avec T= 5 0 ailleurs

%Cration de la fonction porte


x=(((-T/2)<=t)&(t<=(T/2)));

%Reprsentation temporelle de la fonction porte avec T=5


figure(1) . grid axis([-5 5 -0.05 1.05]) title('Reprsentation temporelle de la fonction Porte avec T = 5') xlabel('Temps t') ylabel('Amplitude du signal')

2) Dfinition du domaine frquentiel et trac de la fonction H(f) :


Dans le domaine frquentiel, il faut aussi reprsenter f sous forme dun vecteur : on discrtise donc le domaine frquentiel. En effet, le calculateur, en loccurrence Matlab, ne peut calculer le contenu frquentiel du signal quen un nombre fini de points frquentiels. Pour pouvoir passer du domaine temporel au domaine frquentiel sans problme, la dimension de f doit tre gale la dimension de t. On a donc f = (Fe/2) + k*(f) avec (f) = (Fe/2-(-Fe/2))/4000 = Fe/4000 = 1/40 Hz.

%Dfinition du domaine frquentiel


f=linspace(.); Le domaine frquentiel tant dfini, on peut maintenant tracer H(f). H(f) est un passe-bas idal de frquence de coupure fc= 2/T = 2/5 = 0.4 Hz On a donc : Avec H(f) = 1 pour 2/T< f <+2/T 0 ailleurs

%Cration du filtre passe-bas de frquence de coupure fc=2/T


Hf=.;

%Reprsentation frquentielle du filtre passe-bas idal H(f)


figure(2) plot(f,Hf) grid axis([-2 2 -0.05 1.05])
RHIF Ahmed Dp. Gnie Electronique

16

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

title('Reprsentation frquentielle du filtre passe-bas idal H(f) de frquence de coupure fc=2/T') xlabel('Frquence f') ylabel('Amplitude de H(f)')

3) Calcul et trac de X(f) entre 2 et 2 Hz %Transforme de Fourier de la fonction porte (appele x) : X(f) = TF[x(t)]
Xf=.;

%Reprsentation graphique de X(f)


figure(3) plot(f,abs(Xf),'r' ) grid axis([-2 2 0 5]) % limite la reprsentation de X(f) lintervalle de frquences [-2 2Hz] title('Reprsentation frquentielle du signal x(t) : X(f) = TF[x(t)]') xlabel('Frquence f') ylabel('Amplitude de X(f)')

4) Calcul et trac de Y(f) entre 2 et 2 Hz Le produit de convolution


Appliquer un filtre sur un signal revient raliser, dans le domaine temporel, le produit de convolution : Soit x(t) un signal filtr, h(t) un filtre et y(t) le signal rsultant on a :
+

y (t ) = x * h(t ) =

x(u )h(t u )du

Dans le domaine frquentiel, le produit de convolution est converti en un simple produit


scalaire. Soit X(f) la transforme de Fourier du signal x(t), H(f) un filtre et Y(f) la rsultante on a :

Y ( f ) = X ( f ).H ( f )
%Calcul de Y(f) = H(f) . X(f)
Yf=Hf.*Xf;

RHIF Ahmed

Dp. Gnie Electronique

17

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

%Reprsentation frquentielle
figure(4)

%A) Reprsentation graphique de H(f) et X(f)


subplot(2,1,1);plot(f,abs(Xf),'r',f,Hf) grid axis([-2 2 0 5]) % limite la reprsentation de X(f) et H(f) lintervalle de frquences [-2 2Hz] title('Reprsentation frquentielle de TF[x(t)] et de TF[h(t)]') xlabel('Frquence f') ylabel('Amplitude') legend('X(f) = TF[ x(t) ]','H(f) : filtre passe-bas idal','de frquence de coupure fc = 2/T')

%B) Reprsentation graphique de Y(f)=H(f) x X(f)


subplot(2,1,2);plot(f,abs(Yf),'m') grid axis([-2 2 0 5]) % limite la reprsentation de Y(f) lintervalle de frquences [-2 2Hz] title('Reprsentation frquentielle: Y(f)') xlabel('Frquence f') ylabel('Amplitude') legend('Y(f) = H(f) . X(f)')

5)Calcul et trac de y(t)


Pour obtenir y(t), il nous faut revenir dans le domaine temporel. Pour cela, on utilise la Transforme de Fourier Inverse : y(t)=TF [Y(f)]. On utilise la commande ifft de Matlab.
-1

%Calcul de y(t) = TF-1[ y(t) ]


yt=abs(ifft(fftshift(Yf)/Te)); %Reprsentation graphique y(t) = h(t) * x(t) figure(5) plot(t,yt) grid axis([-20 20 0 1.2]) title('Reprsentation temporelle : y(t) = TF-1[ Y(f) ]') xlabel('Temps t') ylabel('Amplitude') 18

RHIF Ahmed

Dp. Gnie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

legend('y(t) = h(t) * x(t)') On peut observer une dformation de notre signal de sortie y(t) par rapport lentre x(t) : signal porte. Ceci peut sexpliquer par la suppression dharmoniques de frquences f < -Fe/2 et f > Fe/2, do une perte dinformation.

6) Trac de y(t) pour des valeurs croissantes de la frquence de coupure


fc=[2/T,1,5,15,50]; %La frquence de coupure prendra respectivement les valeurs 2/T, 1Hz, 5Hz, 15Hz, 50Hz figure(6) for k=1:5 %Boucle nous permettant de calculer et tracer y(t) en fonction de fc Hf=((-fc(k)<=f)&(f<=fc(k))); Yf=Hf.*Xf; subplot(5,1,k);plot(t,yt); %| grid %|=> On trace dans une sous-fentre graphique y(t) pour axis([-10 10 -0.05 1.5]) %| les diffrentes valeurs de la frquence de coupure if (k==1) title('Reprsentation du signal d''entre x(t) aprs un filtrage passe-bas idal h(t) : y(t) = h(t) * x(t)') end xlabel('Temps t') %| ylabel('Amplitude') %|=> dfinition des axes switch k %| case 1, legend('fc = 2/T Hz') %| case 2, legend('fc = 1 Hz') %| case 3, legend('fc = 5 Hz') %|=> Affichage de la lgende en fonction de k (... et donc case 4, legend('fc = 15 Hz') %| en fonction de fc) case 5, legend('fc = 50 Hz') %| end %| end On constate que plus la frquence de coupure augmente plus on se rapproche du signal initial savoir : T(t) avec T= 5.

RHIF Ahmed

Dp. Gnie Electronique

19

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

EXPLICATION
Plus la frquence de coupure du signal augmente, plus le filtre H(f) laisse passer de lobes du sinus cardinal. Comme les lobes pour lesquels f tend vers linfini sont damplitude quasiment nulle, leur nergie peut tre considre comme nulle. Ainsi, plus la frquence de coupure est grande plus les nergies de X(f) et Y(f) sont proches. Quand fc tend vers linfini, on peut considrer que X(f) et Y(f) ont mme nergie. En effet, pour les frquences filtres par H(f), Y(f) est damplitude quasiment nulle, on rcupre alors la totalit du spectre de X(f). Comme la Transforme de Fourier conserve lnergie du signal entre le domaine frquentiel et le domaine temporel, y(t) a la mme nergie que Y(f). De mme, x(t) et X(f) ont mme nergie. On en dduit donc que y(t) a mme nergie que x(t). Ceci sexplique car quand fc est trs grand, la perte dinformations est minimale lors du filtrage. Ici, pour fc=50Hz, on constate que le signal de sortie y(t) est le mme que le signal dentre x(t) savoir une porte. On en dduit quune frquence de coupure de 50 Hz est suffisamment grande pour minimiser la perte dinformations.

Le phnomne de Gibbs
Lors de l'tude des sries de Fourier et des transformes de Fourier, il apparat parfois une dformation du signal, connue sous le nom de phnomne de Gibbs. Ce phnomne est un effet de bord qui se produit proximit d'une discontinuit, lors de l'analyse d'une fonction drivable par morceaux. Le phnomne fut mis pour la premire fois en vidence en 1848 par Wilbraham, mais cette dcouverte ne connut gure d'cho. En 1898, Albert Michelson dveloppa un systme mcanique capable de calculer et sommer la srie de Fourier d'un signal donn en entre. Il observa alors un effet d'amplification des discontinuits, qui persistait malgr l'augmentation du nombre de coefficients calculs. Alors que Michelson souponnait un dfaut dans la fabrication de son engin, Gibbs montra que le phnomne tait d'origine mathmatique et se produisait dans des conditions trs gnrales. En 1906, Maxime Bcher donna la premire interprtation satisfaisante du phnomne auquel il donna le nom de phnomne de Gibbs qui est, en quelque sorte, un dfaut d'approximation pour une fonction continue de classe C1 par morceaux.

RHIF Ahmed

Dp. Gnie Electronique

20

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Approximation du crneau l'ordre 10

Approximation du crneau l'ordre 50

Approximation du crneau l'ordre 250

RHIF Ahmed

Dp. Gnie Electronique

21

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Le phnomne de Gibbs est plus frquent en utilisant les portes discontinues et les signaux numriques. Comme solution on pourra utiliser des portes de type Gibbs (portes continues) : Sinus\ Cosinus\ Triangulaire\ Harming\ Blackman\ Kaiser

RHIF Ahmed

Dp. Gnie Electronique

22

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Manipulation 3 Lchantillonnage
Objectif
Lobjectif de ce travail pratique est de mettre en application les connaissances acquises sur lchantillonnage, quil soit idal ou rel. Nous verrons tout au long de ce TP, deux mthodes de discrtisation du signal. On pourra alors juger et comparer les rsultats de chaque technique.

La transforme de Fourier numrique


La transforme de Fourier numrique est dfinie comme suit :

X ( f ) = x(k )e 2jfk
k

On utilise une somme au lieu dune intgration point par point (cas des signaux analogique) pour faire le calcul sur des segments (priodes dchantillonnages). La transforme de Fourier numrique inverse est la suivante :

1/ 2

x( k ) =

X ( f )e
1 / 2

2jfk

df

I / Reprsentation du signal rel


On commence donc par crer notre signal x(t) rel : tant impossible de raliser un signal continu sous Matlab, on le reprsentera sur lintervalle temporel [-2 2] avec un pas T0 = 0.001s.

x(t) = sin(*f0*t)/(*t) = f0*sinc(*f0*t) avec f0 = 5 Hz


%Dfinitions pralables fo=5; To=0.001; %Dfinition du domaine temporel 23

RHIF Ahmed

Dp. Gnie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

t=-2:To:2; %Dfinition du signal x(t) x=..;

II / Echantillonnage idal
On discrtise le signal x(t) dfini prcdemment par un chantillonneur idal, savoir un peigne de Dirac. Donc par la thorie :

xe(t) = x(nTe) * (t-nTe)


Avec Matlab, lchantillonnage idal est ralis par le choix de la variable t. Comme nous lavons dj dit prcdemment, Matlab ne peut pas crer & travailler avec des signaux continus : nous sommes donc obligs de discrtiser le domaine temporel : t pour pour gnrer x(t). le signal x(t) est donc dj chantillonn idalement. Mais cela ne se voit pas car le pas est trs fin. Nous allons maintenant discrtiser notre signal x(t) pour 3 frquences dchantillonnage Fe = 5, 10 & 30 Hz : A la vue de ces reprsentations temporelles, on peut tout de suite dduire que plus la frquence dchantillonnage est grande, plus la forme du signal xe(t) est proche de celle de x(t) et donc plus la perte dinformation pendant lchantillonnage est faible. Ce qui est tout fait logique car en augmentant la frquence Fe, on diminue Te = 1/Fe , impliquant la rcupration dun plus grand nombre dchantillons. Cependant pour effectuer un bon chantillonnage, cest--dire un chantillonnage sans perte dinformation, il est important de respecter le thorme de Shannon. Pour cela, il faut et il suffit que Fe >= 2*fmax Dans notre cas : Fe >= 2*f0 pour respecter le thorme de Shannon : - On peut observer la perte dinformation pour xe1(t) avec Fe = 5 Hz On ne retrouve plus du tout lenveloppe du signal x(t) respect - Contrairement xe1(t) & xe2(t) respectivement pour Fe = 10 Hz et 15 Hz o lon voit bien la vue de ces reprsentations temporelles, on peut tout de suite dduire que plus la frquence dchantillonnage est grande, plus la forme du signal xe(t) est proche de celle de x(t) et donc
RHIF Ahmed Dp. Gnie Electronique

Shannon non-

24

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

plus la perte dinformation pendant lchantillonnage est faible. Ce qui est tout fait logique car en augmentant la frquence Fe, on diminue Te = 1/Fe , impliquant la rcupration dun plus grand nombre dchantillons. Cependant pour effectuer un bon chantillonnage, cest--dire un chantillonnage sans perte dinformation, il est important de respecter le thorme de Shannon. Pour cela, il faut et il suffit que Fe >= 2*fmax Dans notre cas : Fe >= 2*f0 pour respecter le thorme de Shannon : - On peut observer la perte dinformation pour xe1(t) avec Fe = 5 Hz On ne retrouve plus du tout lenveloppe du signal x(t) respect Contrairement xe1(t) & xe2(t) respectivement pour Fe = 10 Hz et 15 Hz o lon voit bien apparatre lenveloppe du sinus cardinal %Dfinitions pralables Fe=[5 10 30]; %Dfinition du domaine temporel t1=-2:..:2; %Dfinition du signal x(t) x1=.. ; Shannon respect Shannon non-

III / Echantillonnage rel


Cette fois-ci, nous ralisons un chantillonnage rel du signal x(t) laide dun chantillonneur moyenneur : on ne ralise plus la discrtisation avec une impulsion infiniment brve, mais on utilise au contraire une impulsion de largeur finie et on considre la valeur moyenne de x(t) pendant la dure de limpulsion. En effet, dans la ralit, il est impossible dutiliser un peigne de Dirac car chaque impulsion se caractrise par une dure T qui correspond au temps de conversion analogique / numrique. Quel que soit le type de discrtisation, plus la frquence dchantillonnage augmente, plus le nombre dchantillons augmente et donc plus notre signal chantillonn sapproche du signal continu. Il est donc tout fait normal de voir (pour un T donn) que xe(t) ressemble de plus en plus x(t) quand Fe augmente (il y a moins de perte dinformations). 25

RHIF Ahmed

Dp. Gnie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Le second facteur dans lchantillonnage moyenneur est T. Quand T tend vers 0, T tend vers (t) limpulsion de Dirac. Or chantillonner avec T = (t) reviendrait au cas idal : celui qui permettrait le meilleur chantillonnage du signal x(t). On peut donc en dduire que plus

T est petit, meilleur sera lchantillonnage.


Tout comme pour lchantillonnage idal, lchantillonnage rel ncessite le respect du thorme de Shannon. Mais, en plus, il requiert lutilisation dun pas de numrisation T que lon doit choisir largement infrieur Te

%3) Echantillonnage reel


Te=[1/5 1/10 1/30]; DT=[Te(i) Te(i)/2 Te(i)/5]; for j=1:3 %Dfinitions pralables tech=-2::2; %Discrtisation du signal x(t) par l'chantillonneur moyenneur for n=1:length() ind1=find((t>=tech(n))&(t<tech(n)+DT(j))); Xtech_reel(n)=mean(x(ind1)); end end 1) Calculer la transforme de Fourier numrique de la fonction x par la mthode mathmatique et reprsenter sa courbe sur matlab. Comparer les deux figures. 2) Donner la conclusion gnrale du TP.

RHIF Ahmed

Dp. Gnie Electronique

26