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

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

5.0

|Views: 1,372|Likes:
Publié parAhmed Rhif
Ce TP a pour but d’apprendre à utiliser le logiciel Matlab afin de pouvoir développer des applications simples en traitement du signal.
Ce TP a pour but d’apprendre à utiliser le logiciel Matlab afin de pouvoir développer des applications simples en traitement du signal.

More info:

Published by: Ahmed Rhif on Feb 17, 2012
Droits d'auteur :Traditional Copyright: All rights reserved

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

06/21/2015

pdf

text

original

Institut Supérieur des Sciences Appliquées et de Technologie de Sousse

Fascicule de Travaux Pratiques
Acoustique et Traitement du Son

Par : RHIF Ahmed
Département Génie Électronique

Année Universitaire 2010-2011

Version 1.0 - Décembre 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 Systèmes Linéaires Continus Filtrage Analogique.......................................................................... 15 Manipulation 3 L’Échantillonnage ................................... 23

RHIF Ahmed

Dép. Génie Electronique

2

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Manipulation 0 Initiation au logiciel MATLAB
Ce TP a pour but d’apprendre à utiliser le logiciel Matlab afin de pouvoir développer des applications simples en traitement du signal. Entrer d’abord la commande diary(‘initiation’) pour garder les traces de votre travail ; à la fin de la séance entrer la commande diary() ; I- Manipulation des variables On distingue les variables scalaires et les variables vectorielles (matricielles en général). 1- Variables scalaires Dans un premier temps on génère trois variables scalaires a, b et c de la manière suivante : >> a=2 ; >> b=3; >> c=4 ; On peut consulter la valeur d’une variable en entrant son nom : >> a La réponse serait : a= 2 Cela signifie que les valeurs des variables sont mémorisées automatiquement avec leurs noms. 2- Taille des variables dans la mémoire La taille d’un scalaire de type « double » est 8 Bytes = 8 Octets = 64 Bits 3- Commandes de base : · who et whos : Affiche la taille mémoire et types de toutes les variables utilisées. · cd : 3

RHIF Ahmed

Dép. Génie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Affiche le répertoire (directorie) où vous opérez en ce moment. · what, dir : Affiche la liste les noms des fichiers contenus dans le répertoire actuel. · help nom_fonction : Donne un descriptif de la fonction et ses arguments d’entrée sortie. 4- Opérations 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 l’usage 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 même 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 éléments. · Ones(1,N) est le vecteur ligne à N éléments égaux à 1. 6- Opérations sur les vecteurs § Il faut respecter les dimensions des vecteurs et matrices. Génération automatique d’un vecteur V=début:pas:fin; § On définit une valeur de début : début § On définit une valeur de fin : fin § On définit un pas de progression linéaire ou logarithmique (incrémentation) : pas ; § si le pas n’est pas spécifié, il est égal à 1 automatiquement. >>v3=1:10 >>v4=1:-0.5:-1
RHIF Ahmed Dép. Génie 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 désigne le nombre 3.14… >>v5=debut:pas:fin Une liste des fonctions les plus courantes est disponible dans l’aide en ligne en tapant la commande (elfun désigne 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 séparées 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 Plutôt que de taper les commandes au clavier les unes après les autres pour effectuer une tâche, ce qui vous oblige à refaire la même chose à chaque utilisation de cette tâche, il est préférable 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 tâche s’exécute. Exemple 1 Créez un fichier qui s’appelle essai1.m, qui génère un signal sinusoïdal x(t) de n points, puis visualisez le à l’aide de la commande plot(x). § Etape 1 : édition du fichier par la commande : edit essai1.m § Etape 2 : taper les commandes suivantes dans la fenêtre d’édition : ce fichier génère et affiche une sinusoïde : t=0:0.1:2*pi; % t est le vecteur temps avec un pas d’échantillonnage 0.1 x=sin(t); % le signal x est un vecteur de même taille que le vecteur t
RHIF Ahmed Dép. Génie Electronique

5

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

plot(t,x) ;grid on % dessine à l’écran x en fonction de t Remarques : 1- Le texte débutant par % est un commentaire de votre choix, il est ignoré par le logiciel. Vous pouvez supprimer ces commentaires, mais ils sont utiles lorsqu’on a plusieurs programmes. 2- Chaque instruction doit être suivie d’un point virgule. Etape 3 : Sauvegardez le fichier dans le répertoire en cours ; Etape 4 : Exécutez 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 visualisée. xlabel(‘titre des abscisses’) affiche un titre horizontal suivant x. ylabel(‘titre des ordonnés’) affiche un titre vertical suivant y. grid on et grid off quadrille ou non le graphique. Exemple 2 Générez,à l’aide d’un programme prog1.m, deux périodes des deux signaux x(t)=cos(t) et y(t)=sin(t) et visualisez les deux signaux sur une même figure, l’une en rouge et l’autre en bleu à l’aide de la fonction plot(t,x,’b’,t,y,’r’). Mettre une légende. Exemple 3 Visualisez sur une même figure,à l’aide d’un programme prog2.m, les quatre signaux cos(t), sin(t),log10(t) et exp(t) en utilisant la fonction subplot(.,.,.) qui divise l’écran 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 d’une donnée au clavier : Pour saisir une variable x à partir du clavier, on utilise l’instruction : x=input(‘x=’) ;

RHIF Ahmed

Dép. Génie Electronique

6

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Affichage d’un message à l’écran : Pour afficher à l’écran un message personnel suivi d’un retour à la ligne : fprintf(‘message personnel \n’) ; Affichage de la valeur d’une variable : Pour afficher à l’écran la valeur d’une variable x : fprintf(‘x=’%d) ; III- LES FONCTIONS Si plusieurs de vos programmes personnels utilisent en commun une liste d’instructions, il est préférable de regrouper ces instructions sous forme d’un programme indépendant. A chaque besoin on appelle le dit programme par son nom : c’est une fonction. Une fonction possède des paramètres d’entrée et des paramètres de sortie, dont la syntaxe de déclaration est la suivante : function [sortie1,sortie2,…]=nom_fonction(entrée1,entrée2,…) Le programme matlab correspondant à la fonction doit porter le même nom que la fonction : nom_fonction.m Exemple 1 : Calcul de la moyenne arithmétique m d’un 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); %déclaration de la fonction r=0; %initialisation de la moyenne for k=1:n r=r+v(k); end resultat=r/n;
RHIF Ahmed Dép. Génie Electronique

7

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

On note la présence de la boucle itérative :

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
Créez une fonction puissance.m qui donne la valeur efficace s et la puissance moyenne p d’un 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 sinusoïdal d’amplitude A et de période 1. Comparer avec la fonction matlab std.

Exemple 3 : Diagramme de bode.
1- Créez une fonction spectre(f,H) qui affiche à l’écran le spectre d’amplitude 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 paramètres d’entrée sont le vecteur fréquence f=0:fmax et le vecteur complexe

H.
Fonctions conseillées :abs(x),angle(x) et log10(x).

RHIF Ahmed

Dép. Génie Electronique

8

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

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

fc étant la fréquence de coupure demandée par le programme et fournie par l’utilisateur à
l’exécution.

Exemple 4 : vitesse de convergence d’une série
Considérons la série en N suivante (qui converge vers exponentiel de x) :

Réaliser : · Une fonction factoriel(n) qui calcule le factoriel d’un entier naturel. · Une fonction somme(x,n) qui calcule s(x,n). · Un programme prog3.m qui calcule la valeur de l’exponentiel de 2 avec une précision (incertitude relative) supérieure à 95% (incertitude inférieur à 5%).

RHIF Ahmed

Dép. Génie 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 méthode MATLAB et la méthode mathématique vis-à-vis le calcul de la transformée de Fourier d’une fonction. Ensuite on va mettre en évidence la restitution du signal temporel ainsi que l’effet du décalage fréquentiel sur le spectre.

1 La transformée de Fourier
La transformée de Fourier F est une opération qui transforme une fonction intégrable en une autre fonction, décrivant le spectre fréquentiel de cette dernière. Si x(t) est une fonction intégrable, sa transformée de Fourier est la fonction X(f) donnée par la formule :

1 X ( f ) = ∫ x(t )e −2πjft dt T 0
2 La transformée de Fourier inverse

T

Le signal utile est toujours exprimé dans le domaine spatial (temporel), donc après avoir filtré un signal dans le domaine fréquentiel on à besoin de transformer la résultante dans le domaine spatial pour pouvoir ensuite l’utilisé. La transformée de Fourier inverse est exprimée comme suit :

+∞

x(t ) =

∫ X ( f )e
−∞

2πjft

df

%I- Représentation temporelle et fréquentiel de x(t)= exp(-a*|t|) %A) Représentation temporelle
%1) Definitions prealables
a=1; Te=0.01; 10

RHIF Ahmed

Dép. Génie 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 transformée de Fourier de x et vérifier avec le résultat 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

Dép. Génie 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) précédement 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 méthodes') legend('TF[x(t)] : méthode formelle','TF[x(t)] : méthode matlab') 12

RHIF Ahmed

Dép. Génie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

xlabel('Frequence f (en Hz)') ylabel('Amplitude du signal') 1) Interpréter la figure et conclure quelle est la méthode la plus adéquate (méthode 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 récupéré à partir de X(f)') xlabel('Temps t (en s)') ylabel('Amplitude du signal') 2) Commenter le résultat trouver.

%D) Decalage fréquentiel de la TF
%1) Definition de la nouvelle fonction x(t) décalée fréquentiellement
fo=5;

RHIF Ahmed

Dép. Génie 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 : Transformée de Fourier
Ce TP permet de mettre en application définitions et propriétés concernant la Transformée de Fourier selon deux points de vue: les méthodes formelles et matlab présentent tout au long de celui-ci leurs atouts et leurs inconvénients. La méthode formelle se révèle être plus laborieuse à mettre en place car elle nécessite le calcul de l’intégrale de la Transformée de Fourier du signal que l’on souhaite étudier. Cependant, elle apparaît être la solution la plus précise et la plus rigoureuse sur le plan purement mathématique. La méthode matlab prouve son efficacité par sa « simplicité » et sa rapidité d’utilisation. Aucun calcul n’est nécessaire. Malgré cela, cette solution est légèrement moins précise que la méthode précédente ; la différence étant infime. Le principal problème rencontré au cours de ce TP est la taille de nos vecteurs : ils devaient être obligatoirement de même taille (taille du vecteur abscisse = taille du vecteur ordonnée) pour pouvoir obtenir l’affichage des différents graphes.

RHIF Ahmed

Dép. Génie Electronique

14

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Manipulation 2 Systèmes Linéaires Continus Filtrage Analogique

Objectif :
L’objectif de ce travail pratique est de mettre en application les connaissances acquises sur la Transformée de Fourier et le filtrage. Nous verrons, grâce à Matlab, les différences existantes entre le filtrage idéal (Partie 1) utilisé en théorie et le réel (Partie 2) appliqué dans divers domaines tels que la télécommunication, l’électronique, l’automatique…

Partie I : Convolution, transformée de Fourier et filtrage.
Dans cette partie, on étudie le filtrage idéal d’un signal porte. Avec ΠT(t) = 1 pour –T/2 < t < T/2 0 ailleurs On considère un filtre H(f) passe-bas idéal de fréquence de coupure fc=2/T.

%Définitions préalables
T=5; Fe=100; Te=1/Fe; fc=2/T;

1°) Définition du domaine temporel et tracé de la fonction porte pour T=5 :
D’abord, on discrétise 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 différentes. t = -20 + n.Te avec n un entier tel que 0<n<4000.

%Définition du domaine temporel
t=-20:Te:20; Le domaine temporel étant défini, on peut maintenant tracer la fonction porte pour T= 5 :

RHIF Ahmed

Dép. Génie 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

%Création de la fonction porte
x=(((-T/2)<=t)&(t<=(T/2)));

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

2°) Définition du domaine fréquentiel et tracé de la fonction H(f) :
Dans le domaine fréquentiel, il faut aussi représenter f sous forme d’un vecteur : on discrétise donc le domaine fréquentiel. En effet, le calculateur, en l’occurrence Matlab, ne peut calculer le contenu fréquentiel du signal qu’en un nombre fini de points fréquentiels. Pour pouvoir passer du domaine temporel au domaine fréquentiel sans problème, 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.

%Définition du domaine fréquentiel
f=linspace(………….); Le domaine fréquentiel étant défini, on peut maintenant tracer H(f). H(f) est un passe-bas idéal de fréquence 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

%Création du filtre passe-bas de fréquence de coupure fc=2/T
Hf=………………….;

%Représentation fréquentielle du filtre passe-bas idéal H(f)
figure(2) plot(f,Hf) grid axis([-2 2 -0.05 1.05])
RHIF Ahmed Dép. Génie Electronique

16

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

title('Représentation fréquentielle du filtre passe-bas idéal H(f) de fréquence de coupure fc=2/T') xlabel('Fréquence f') ylabel('Amplitude de H(f)')

3°) Calcul et tracé de X(f) entre –2 et 2 Hz %Transformée de Fourier de la fonction porte (appelée x) : X(f) = TF[x(t)]
Xf=………………….;

%Représentation graphique de X(f)
figure(3) plot(f,abs(Xf),'r' ) grid axis([-2 2 0 5]) % limite la représentation de X(f) à l’intervalle de fréquences [-2 2Hz] title('Représentation fréquentielle du signal x(t) : X(f) = TF[x(t)]') xlabel('Fréquence 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 à réaliser, dans le domaine temporel, le produit de convolution : Soit x(t) un signal à filtré, h(t) un filtre et y(t) le signal résultant on a :
+∞

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

∫ x(u )h(t − u )du
−∞

Dans le domaine fréquentiel, le produit de convolution est converti en un simple produit
scalaire. Soit X(f) la transformée de Fourier du signal x(t), H(f) un filtre et Y(f) la résultante on a :

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

RHIF Ahmed

Dép. Génie Electronique

17

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

%Représentation fréquentielle
figure(4)

%A) Représentation 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 représentation de X(f) et H(f) à l’intervalle de fréquences [-2 2Hz] title('Représentation fréquentielle de TF[x(t)] et de TF[h(t)]') xlabel('Fréquence f') ylabel('Amplitude') legend('X(f) = TF[ x(t) ]','H(f) : filtre passe-bas idéal','de fréquence de coupure fc = 2/T')

%B) Représentation 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 représentation de Y(f) à l’intervalle de fréquences [-2 2Hz] title('Représentation fréquentielle: Y(f)') xlabel('Fréquence 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 Transformée 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)); %Représentation graphique y(t) = h(t) * x(t) figure(5) plot(t,yt) grid axis([-20 20 0 1.2]) title('Représentation temporelle : y(t) = TF-1[ Y(f) ]') xlabel('Temps t') ylabel('Amplitude') 18

RHIF Ahmed

Dép. Génie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

legend('y(t) = h(t) * x(t)') On peut observer une déformation de notre signal de sortie y(t) par rapport à l’entrée x(t) : signal porte. Ceci peut s’expliquer par la suppression d’harmoniques de fréquences f < -Fe/2 et f > Fe/2, d’où une perte d’information.

6°) Tracé de y(t) pour des valeurs croissantes de la fréquence de coupure
fc=[2/T,1,5,15,50]; %La fréquence 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-fenêtre graphique y(t) pour axis([-10 10 -0.05 1.5]) %| les différentes valeurs de la fréquence de coupure if (k==1) title('Représentation du signal d''entrée x(t) après un filtrage passe-bas idéal h(t) : y(t) = h(t) * x(t)') end xlabel('Temps t') %| ylabel('Amplitude') %|=> définition 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 légende 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 fréquence de coupure augmente plus on se rapproche du signal initial à savoir : ΠT(t) avec T= 5.

RHIF Ahmed

Dép. Génie Electronique

19

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

EXPLICATION
Plus la fréquence 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 l’infini sont d’amplitude quasiment nulle, leur énergie peut être considérée comme nulle. Ainsi, plus la fréquence de coupure est grande plus les énergies de X(f) et Y(f) sont proches. Quand fc tend vers l’infini, on peut considérer que X(f) et Y(f) ont même énergie. En effet, pour les fréquences filtrées par H(f), Y(f) est d’amplitude quasiment nulle, on récupère alors la totalité du spectre de X(f). Comme la Transformée de Fourier conserve l’énergie du signal entre le domaine fréquentiel et le domaine temporel, y(t) a la même énergie que Y(f). De même, x(t) et X(f) ont même énergie. On en déduit donc que y(t) a même énergie que x(t). Ceci s’explique car quand fc est très grand, la perte d’informations est minimale lors du filtrage. Ici, pour fc=50Hz, on constate que le signal de sortie y(t) est le même que le signal d’entrée x(t) à savoir une porte. On en déduit qu’une fréquence de coupure de 50 Hz est suffisamment grande pour minimiser la perte d’informations.

Le phénomène de Gibbs
Lors de l'étude des séries de Fourier et des transformées de Fourier, il apparaît parfois une déformation du signal, connue sous le nom de phénomène de Gibbs. Ce phénomène est un effet de bord qui se produit à proximité d'une discontinuité, lors de l'analyse d'une fonction dérivable par morceaux. Le phénomène fut mis pour la première fois en évidence en 1848 par Wilbraham, mais cette découverte ne connut guère d'écho. En 1898, Albert Michelson développa un système mécanique capable de calculer et sommer la série de Fourier d'un signal donné en entrée. Il observa alors un effet d'amplification des discontinuités, qui persistait malgré l'augmentation du nombre de coefficients calculés. Alors que Michelson soupçonnait un défaut dans la fabrication de son engin, Gibbs montra que le phénomène était d'origine mathématique et se produisait dans des conditions très générales. En 1906, Maxime Bôcher donna la première interprétation satisfaisante du phénomène auquel il donna le nom de phénomène de Gibbs qui est, en quelque sorte, un « défaut d'approximation » pour une fonction continue de classe C1 par morceaux.

RHIF Ahmed

Dép. Génie Electronique

20

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Approximation du créneau à l'ordre 10

Approximation du créneau à l'ordre 50

Approximation du créneau à l'ordre 250

RHIF Ahmed

Dép. Génie Electronique

21

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Le phénomène de Gibbs est plus fréquent en utilisant les portes discontinues et les signaux numériques. Comme solution on pourra utiliser des portes de type Gibbs (portes continues) : Sinus\ Cosinus\ Triangulaire\ Harming\ Blackman\ Kaiser…

RHIF Ahmed

Dép. Génie Electronique

22

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Manipulation 3 L’Échantillonnage
Objectif
L’objectif de ce travail pratique est de mettre en application les connaissances acquises sur l’échantillonnage, qu’il soit idéal ou réel. Nous verrons tout au long de ce TP, deux méthodes de discrétisation du signal. On pourra alors juger et comparer les résultats de chaque technique.

La transformée de Fourier numérique
La transformée de Fourier numérique est définie comme suit :

X ( f ) = ∑ x(k )e −2πjfk
k

On utilise une somme au lieu d’une intégration point par point (cas des signaux analogique) pour faire le calcul sur des segments (périodes d’échantillonnages). La transformée de Fourier numérique inverse est la suivante :

1/ 2

x( k ) =

∫ X ( f )e
−1 / 2

2πjfk

df

I / Représentation du signal réel
On commence donc par créer notre signal x(t) réel : étant impossible de réaliser un signal continu sous Matlab, on le représentera sur l’intervalle temporel [-2 2] avec un pas T0 = 0.001s.

x(t) = sin(π*f0*t)/(π*t) = f0*sinc(π*f0*t) avec f0 = 5 Hz
%Définitions préalables fo=5; To=0.001; %Définition du domaine temporel 23

RHIF Ahmed

Dép. Génie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

t=-2:To:2; %Définition du signal x(t) x=…………………..;

II / Echantillonnage idéal
On discrétise le signal x(t) défini précédemment par un échantillonneur idéal, à savoir un peigne de Dirac. Donc par la théorie :

xe(t) = Σ x(nTe) * δ(t-nTe)
Avec Matlab, l’échantillonnage idéal est réalisé par le choix de la variable t. Comme nous l’avons déjà dit précédemment, Matlab ne peut pas créer & travailler avec des signaux continus : nous sommes donc obligés de discrétiser le domaine temporel : t pour pour générer x(t). le signal x(t) est donc déjà échantillonné idéalement. Mais cela ne se « voit » pas car le pas est très fin. Nous allons maintenant discrétiser notre signal x(t) pour 3 fréquences d’échantillonnage Fe = 5, 10 & 30 Hz : A la vue de ces représentations temporelles, on peut tout de suite déduire que plus la fréquence d’échantillonnage est grande, plus la forme du signal xe(t) est proche de celle de x(t) et donc plus la perte d’information pendant l’échantillonnage est faible. Ce qui est tout à fait logique car en augmentant la fréquence Fe, on diminue Te = 1/Fe , impliquant la « récupération » d’un plus grand nombre d’échantillons. Cependant pour effectuer un bon échantillonnage, c’est-à-dire un échantillonnage sans perte d’information, il est important de respecter le théorème de Shannon. Pour cela, il faut et il suffit que Fe >= 2*fmax Dans notre cas : Fe >= 2*f0 pour respecter le théorème de Shannon : - On peut observer la perte d’information pour xe1(t) avec Fe = 5 Hz On ne retrouve plus du tout l’enveloppe du signal x(t) respecté - Contrairement à xe1(t) & xe2(t) respectivement pour Fe = 10 Hz et 15 Hz où l’on voit bien la vue de ces représentations temporelles, on peut tout de suite déduire que plus la fréquence d’échantillonnage est grande, plus la forme du signal xe(t) est proche de celle de x(t) et donc
RHIF Ahmed Dép. Génie Electronique

Shannon non-

24

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

plus la perte d’information pendant l’échantillonnage est faible. Ce qui est tout à fait logique car en augmentant la fréquence Fe, on diminue Te = 1/Fe , impliquant la « récupération » d’un plus grand nombre d’échantillons. Cependant pour effectuer un bon échantillonnage, c’est-à-dire un échantillonnage sans perte d’information, il est important de respecter le théorème de Shannon. Pour cela, il faut et il suffit que Fe >= 2*fmax Dans notre cas : Fe >= 2*f0 pour respecter le théorème de Shannon : - On peut observer la perte d’information pour xe1(t) avec Fe = 5 Hz On ne retrouve plus du tout l’enveloppe du signal x(t) respecté Contrairement à xe1(t) & xe2(t) respectivement pour Fe = 10 Hz et 15 Hz où l’on voit bien apparaître l’enveloppe du sinus cardinal %Définitions préalables Fe=[5 10 30]; %Définition du domaine temporel t1=-2:…..:2; %Définition du signal x(t) x1=……………………….. ; Shannon respecté Shannon non-

III / Echantillonnage réel
Cette fois-ci, nous réalisons un échantillonnage réel du signal x(t) à l’aide d’un échantillonneur moyenneur : on ne réalise plus la discrétisation avec une impulsion infiniment brève, mais on utilise au contraire une impulsion de largeur finie et on considère la valeur moyenne de x(t) pendant la durée de l’impulsion. En effet, dans la réalité, il est impossible d’utiliser un peigne de Dirac car chaque impulsion se caractérise par une durée ∆T qui correspond au temps de conversion analogique / numérique. Quel que soit le type de discrétisation, plus la fréquence d’échantillonnage augmente, plus le nombre d’échantillons augmente et donc plus notre signal échantillonné « s’approche » 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 d’informations). 25

RHIF Ahmed

Dép. Génie Electronique

Travaux Pratiques Acoustique et Traitement du Son

ISSATSO 2010

Le second facteur dans l’échantillonnage moyenneur est ∆T. Quand ∆T tend vers 0, ∆T tend vers δ(t) l’impulsion de Dirac. Or échantillonner avec ∆T = δ(t) reviendrait au cas idéal : celui qui permettrait le meilleur échantillonnage du signal x(t). On peut donc en déduire que plus

∆T est petit, meilleur sera l’échantillonnage.
Tout comme pour l’échantillonnage idéal, l’échantillonnage réel nécessite le respect du théorème de Shannon. Mais, en plus, il requiert l’utilisation d’un pas de numérisation ∆T que l’on doit choisir largement inférieur à Te

%3) Echantillonnage reel
Te=[1/5 1/10 1/30]; DT=[Te(i) Te(i)/2 Te(i)/5]; for j=1:3 %Définitions préalables tech=-2:………:2; %Discrétisation 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 transformée de Fourier numérique de la fonction x par la méthode mathématique et représenter sa courbe sur matlab. Comparer les deux figures. 2) Donner la conclusion générale du TP.

RHIF Ahmed

Dép. Génie Electronique

26

You're Reading a Free Preview

Télécharger
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->