Vous êtes sur la page 1sur 16

Université Ibn Tofail

Faculté des Sciences


Département de Physique
Kenitra

Travaux Pratiques De Traitement


Du Signal
Matlab & Application

Filière : SMP

Module : Physique VI – Semestre 6

Responsable de TP : Année Universitaire : 2014/2015

Pr. Y. El merabet
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

TP de Traitement du signal.
Séance 1 : Premiers contacts avec MatLab

Introduction

a. Contexte

Cet énoncé constitue le premier volet des séances de TP du module de Traitement du


signal. La vocation de cette première séance, qui sera assez théorique, est de permettre à
chaque étudiant de prendre en main le logiciel MatLab (connaissance de l’environnement,
commandes usuelles, programmation de base) et de réaliser ses premiers programmes qui
constitueront les briques de bases nécessaires à la réalisation des TP suivant. Les bases
des signaux et des traitements doivent être traités avant de s’attaquer à des problèmes
informatiques.

Le TP est en conséquence structuré comme suit :

1. Présentation de MatLab et du cadre de développement des applications du TP.


2. Réalisation des premiers programmes.

b. Objectifs pratiques

Les objectifs sont triples : rafraîchir et consolider les connaissances acquises en cours,
découvrir et assimiler les commandes usuelles de MatLab et le fonctionnement de
MatLab Help, et mettre en application l’ensemble de ces savoirs et savoir-faire via la
réalisation de premiers programmes en vue des futures TP.

En conséquence, il sera demandé aux étudiants, pour chaque séance :

• De rédiger en temps réel un court rapport illustré retraçant le TP en suivant la


trame des questions posées dans l’énoncé. La clarté des graphiques, la pertinence
des remarques, et la correction linguistique seront prises en compte dans
l’évaluation. La concision des réponses sera d’autant plus appréciée qu’elle ira de
pair avec leur précision,
• De remplir au fil du TP les plages qui ont été laissées vides sur le présent
document.
• D’écrire soigneusement les programmes demandés sous formes de M-File
commentées,
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

1. Présentation de MatLab et du cadre de développement des applications du TP

Principales caractéristiques de MatLab 7 :

MatLab est un langage mathématique interprété et un environnement de développement


interactif. Il fait appel à des fonctions et routines qui ont été développées dans des
langages de plus bas niveau et sont interprétées par le logiciel. C’est pourquoi nous ne
devons pas compiler les programmes réalisés.

Calcul matriciel et non calcul formel : inutile de demander à MatLab de calculer une
dérivée ! MatLab est un outil performant de calcul numérique, qui permet de résoudre des
problèmes d’analyse matricielle, d’approximation de solutions d’équations différentielles,
de statistiques et de fouille de données, de traitement du signal numérique, ou encore
d’optimisation numérique. Pour des calculs mathématiques formels (comme la résolution
exacte d’ED, le calcul d’intégrales, etc…), l’utilisateur devra se reporter à d’autres
logiciels…ou encore aux services d’un mathématicien !

Principales fenêtres de MatLab:


• Command window:
• Command History:
• Current directory:
• Workspace:
• Help:
• Profile:

Figure 1: vue des 6 fenêtres


principales de MatLab. Pour réunir
les 6 fenêtres en une avec onglets de
sélection : Menu Desktop,
commande « Desktop Layout »,
option « All Tabbed ».

Insistons sur Help : le menu et la commande help : l’aide de MatLab est munie d’un
moteur de recherche très pratique, et s’avère bien souvent être un recours précieux pour se
sortir des mauvaises passes, mais aussi pour découvrir de nouvelles fonctionnalités. Une
utilisation intelligente de cet outil peut permettre de renforcer très rapidement ses
connaissances en MatLab et mener à la réalisation de programmes au-delà de ses
espérances.
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

Remarques : Penser aussi à utiliser la commande help suivie du nom de la fonction à


étudier dans la fenêtre de commande (plus rapide, mais nécessite de savoir à l’avance ce
que l’on recherche !).
M-files : les m-files sont les fichiers dans lesquels sont écrits les programmes et les
fonctions. Ils portent l’extension « .m », et sont analogues (par exemple) aux fichiers « .c
» du langage C.
Pour créer un m-file, on peut utiliser l’éditeur de Matlab : fichier-> Nouveau-> m-file

Les vecteurs en Matlab

>> v=[11 22 33 44 55] définir un vecteur v = (11 22 33 44 55)


>> v’ la transposée de ce vecteur
w=[1 :1 :5] ou définit un vecteur allant de 1 à 5 avec une incrémentation unité
>> w=[1 :5]
>> v(2) accès au 2em élément ici 22
>> v(1 :3) accès aux éléments qui vont de 1 `a 3 (le vecteur (11 22 33))

>> v(1 :2 :5) accès aux éléments qui vont de 1 `a 5, mais en incrémentant avec un pas
de 2, le vecteur (11 33 55) est retourné

>> v( :) le symbole “ :” sans autres précisions signifiant “tout le vecteur

Les matrices en Matlab

>> A=[1 2 3; 2 4 5; 6 7 8;] Créer matrice 3x3


>> A(1,3) permet d’accéder à l’élément (1,3) de la matrice A, qui est ici 3

>> A(1 :3,2 :3) retourne les lignes 1 à 3 et les colonnes 2 `a 3


>>A( :,2) obtenir la deuxième colonne de A
>> A( :,3) obtenir la troisième.
>>A(1, :) retourne toute la première ligne
>> A’ est bien la transposée de A
rand(p) : crée une matrice p × p dont les éléments sont aléatoires, distribués selon
une loi de probabilité uniforme dans l’intervalle [0, 1[.

eye(p) crée une matrice identité p × p.


zeros(p) crée une matrice de zéros p × p.
ones(p) crée une matrice de uns p × p.

Il est possible, pour finir, de définir les matrices par blocs, tester les commandes
suivantes :
>> B=[eye(3) eye(3) ;ones(3) zeros(3) ;]
>> B=[[eye(3) ones(3)]’ [eye(3) zeros(3)]’] (...en utilisant les colonnes)
>> B=[[eye(3) ; ones(3)] [eye(3) ;zeros(3)]]
>>inv(A) calcule l’inverse de A.
>>det(A) calcule le déterminant de A.
>>diag(A) retourne la diagonale.

>> C=[1 3 4;5 2 1;3 1 2]


Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

>> A*C multiplication entre matrices


>> A.*C multiplier les éléments de A par ceux de C
>> A.^2
>> size(A) taille de la matrice

Graphes et dessins

Il est facile d’effectuer diverses représentations graphiques avec Matlab, en 2d aussi bien
qu’en 3d. En tapant
>> help plot
>> demo
>> helpwin
Exemple : afficher la fonction x sin(x) dans l’intervalle [0 : 10], il suffit d’écrire

>> x=[0 :0.1 :10]; 8


titre de la figure

>> y=x.*sin(x) ; % l’on a ici besoin de la 6

multiplication “avec le point” (.*) puisque x et 4


y sont des vecteurs
2
>> plot(x,y)
y

>> xlabel(’x’) 0

>> ylabel(’y’) -2

>> title(’titre de la figure’) -4

-6
0 1 2 3 4 5 6 7 8 9 10
x

>> subplot(1,2,1) %subplot (Nbre pavés sur hauteur, 1 1


Nbre pavés sur largeur, Numéro 0.8 0.8
pavé) 0.6 0.6

>> plot(x,sin(x),'b') %courbe en bleue 0.4 0.4

>> subplot(1,2,2) 0.2 0.2

0 0
>> plot(x,cos(x),'r') %courbe en rouge -0.2 -0.2

-0.4 -0.4

-0.6 -0.6

-0.8 -0.8

-1 -1
0 5 10 0 5 10

Instructions graphiques diverses

Hold on Maintien du graphique


hold off revenir en mode normal,
ginput(N) permet de cliquer N points dans la fenêtre graphique, et la commande renvoie deux vecteurs,
l'un contenant les abscisses, l'autre les ordonnées. Utilisée sans le paramètre N, la commande
tourne en boucle jusqu'à ce que la touche «Entrée» soit tapée.
clf annule toutes les commandes subplot et hold passées
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

Les fonctions :

Toute fonction devra être déclarée à la première ligne du fichier en respectant la typologie
suivante : « ‘function’ » suivi du vecteur de sortie « [sortie1, sortie2] » « ‘=’ » «
nomdelafonction » « (entrée1, entrée2, entrée3) ».

Exemple : fonction qui calcule la somme et le produit de deux entiers :


On crée un fichier som_pro.m dans lequel on écrit :

function [s,p]=somme_produit(x,y)

s=x+y ;

p=x*y;

On notera le “ ;” pour éviter que Matlab nous affiche ce qu’il calcule dans la fonction.
On accédera ensuite aux valeurs de cette fonction dans la fenêtre principale de Matlab par
>> [s,p]=som_pro(1,2)

Les fonctions réalisant les fonctions mathématiques couramment utilisées en traitement


du signal sont données par help elfun et help datafun.
help elmat.

Les boucles et les instructions conditionnées

Instructions conditionnelles if

if condition logique
instructions
elseif condition logique
instructions
...
else
instructions
end
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

Boucles for

for variable = valeur début:pas:valeur fin


instructions
end

Boucles while

while condition logique


instructions
end

2. Exercices

a. Dans un fichier nommé distance.m, créer la fonction qui permet de retourner la


distance absolue et les distance en x et y entre deux points de coordonnées (x1,y1)
et (x2,y2).

b. Soit la fonction x (t) = sin (2*pi*50*t) +sin (2*pi*120*t) définie sur [0,0.6]. On
définit le vecteur des temps de la manière suivante : t = 0:0.001:0.6; Représenter x
en fonction de t en apportant tout le soin nécessaire à la présentation du graphique
(axes, titre, etc.…).

c. Réaliser les signaux suivants :

Une impulsion unité (Dirac) défini 1.5


Impulsion unite

par f(n) = 1 si n = 0 et 0 sinon.


(utiliser les fonctions stem et zeros)
1
Amplitude

0.5

-0.5
-10 -8 -6 -4 -2 0 2 4 6 8 10
n
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

Un échelon unité par défini par 1.5


Echelon unite

f(n) = 1 si n ≥ 0 et 0 sinon. .
(utiliser les fonctions stem ,
zeros et ones) 1

Amplitude
0.5

-0.5
-10 -8 -6 -4 -2 0 2 4 6 8 10
n

La fonction porte définie sur [- 1


porte

N,+N] et de largeur 2P+1. Pet N


0.9
entiers positifs, par la suite :
0.8

0.7
Rect(n) =0 si n appartient à
{P+1,…,N}ou {-N,…,-P-1} 0.6
Amplitude

Rect(n) =1 si n appartient à {- 0.5

P,…,P} 0.4

(Essayer d’utiliser les fonctions 0.3

ones et zeros) 0.2

0.1

0
-10 -8 -6 -4 -2 0 2 4 6 8 10
n

rampe : r (t ) = at ,t > 0 , ( a = 1, 20

rampe unité) 18

16

14

12

10

0
0 1 2 3 4 5 6 7 8 9 10
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

Sinus amorti 0.8


exp(-t).sin(2*pi*t)
0.6

0.4

exp(-t).*sin(2*pi*t)
0.2

-0.2

-0.4

-0.6
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
temps seconde

Produit de convolution entre deux portes


rectangulaire

d. On veut analyser les propriétés de certaines séquences élémentaires. Générer un


signal sinusoïdal sur 10000 points et le visualiser sur 200 échantillons. Puis
déterminer son minimum, maximum, moyenne, sa médiane et sa dispersion.

Rappel : la dispersion d’un vecteur est calculée comme suit :


Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

TP de Traitement du signal.
Séance 2 : Les Séries et Transformée de Fourier

I. Les Séries de Fourier


1. On considère le signal périodique représenté dans la figure ci-dessous. On désire
décomposer ce signal en série de Fourier.

On désire décomposer ce signal en série de Fourier.

a) Vérifier que la décomposition en série de Fourier est donnée par :

Avec :

b) Le programme Matlab ci-dessous permet de tracer la somme des N premières


harmoniques (N est une valeur fixée par l’utilisateur).
Etudier l'influence du nombre d'harmoniques sur la série de Fourier du signal.
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

N = 2000;
1
t = [0:0.01:1];
0.9
f0=1;
0.8
a0=0;
f=a0; 0.7

for i = 1:2:N 0.6

b = 2/pi/i; 0.5

f = f+ b*sin(2*pi*i*f0*t); 0.4
end 0.3
plot(t,f);
0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

2. On considère maintenant le signal périodique suivant :

La décomposition de ce signal en séries de Fourier complexes est donné par :

a) Donner l’expression des coefficients Ck et αk de fourier de la décomposition en SF


complexe
b) Ecrire un programme sous Matlab qui permet de tracer la somme des 11 premières
harmoniques
c) Ecrire un programme Matlab permettant de tracer les spectres unilatéraux et bilatéraux
d’amplitude et de phase du signal.
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

Rappel : La description de x(t) avec les fonctions cosinusoïdales conduit aux spectres
unilatéraux d'amplitudes et de phases (Ak et αk) du signal x(t). Ici, les fréquences sont
positives ou nulles car le compteur k des harmoniques varie de 0 à +∞.
La description de x(t) avec les fonctions complexes conduit aux spectres bilatéraux
d'amplitudes et de phases. Ici, les fréquences sont négatives et positives car le compteur k
varie de -∞ à +∞.

II. La Transformée de Fourier


1. Le programme ci-dessous permet de tracer le spectre du signal sinus amorti d’équation
suivante :

Il est demandé d’écrire des programmes Matlab permettant de tracer les spectres des
signaux suivants :

o cosinus d'amplitude A = 4 et de fréquence f0 = 1 KH


o sinus d'amplitude A = 2 et de fréquence f0 = 2 KH
o impulsion unité
o échelon unité

% sinus amorti
dt=0.01; 1
t = 0: dt :10; A = 1.0
a = 0.25; 0.5 fp = 4.0
a = 0.25
y(t)

0
Tp = 0.25;
fp = 1/Tp; -0.5

xt = exp(-a*t).*sin(2*pi*fp*t); -1
0 1 2 3 4 5 6 7 8 9 10
temps
figure;
subplot(2,1,1);
2

plot(t,xt); 1.5
|Y(jf))|

xlabel('temps'); ylabel('y(t)');
1
text(8,0.75, 'A = 1.0');
text(8,0.50,['fp = ' num2str(1/Tp,2) '.0']); 0.5
text(8,0.25,['a = ' num2str(a,2)]);
0
-10 -5 0 5 10
df=0.025; fréquence
ff = -12:df :12;
Xjf = (2*pi*fp)./((a+j*2*pi*ff).^2+(2*pi*fp)^2);

subplot(2,1,2);
plot(ff,abs(Xjf));
axis([-12 12 0 2.2]);
xlabel('fréquence'); ylabel('|Y(jf))|');
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

2. On considère une impulsion sinusoïdale de durée Delta t :

On se propose de tracer son spectre

a. Montrer que y(t) n’est autre que la multiplication de deux signaux connus x1(t) et
x2(t) dont on précisera tout les paramètres
b. Ecrire un programme Matlab permettant de tracer séparément les signaux x1, x2 et y
c. Déterminer l’expression des spectres des signaux x1 et x2
d. Tracer grâce à Matlab les spectres de ces deux signaux
e. Tracer le spectre du signal y. le résultat trouvé est il attendu ?
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

TP de Traitement du signal.
Séance 3 : Echantillonnage, Reconstruction,
Transformée de Fourier et Filtrage

Partie I : Echantillonnage et Reconstruction


A. Contexte

La première partie de ce deuxième volet des TP propose de mettre en place le concept


d’échantillonnage qui est très utilisé pour la transmission de donnée et la conversion analogique
numérique.

Dans la réalité, les capteurs prélèvent un signal analogique. On numérise ensuite le signal de façon à le
traiter ou de l’envoyer plus facilement. Enfin, la dernière étape consiste à renvoyer le signal en
analogique dans la chaîne de traitement.

Capteur Echantillonnage Reconstruction Traitement des


données

B. Objectifs pratiques

Dans cette 1ère partie du TP, la pratique de l’échantillonnage idéal et réel sera détaillée. Puis, une fois
l’échantillonnage réalisé, on reconstruira le signal avec la méthode de l’extrapolation d’ordre 0.

I. Représentation d’un signal réel :

La première étape de cette étude consiste à construire la fonction suivante.

x(t) = sin(π*f0*t)/( π*t).

Cette fonction peut se simplifier avec l’utilisation du sinus cardinal :

x(t) = f0*sinc(π*f0*t).

Le programme ci-dessous donne la définition de cette fonction sinc. Il est demandé de représenter la
fonction x(t) sur l’intervalle [-2,2]

function y=sincard(x) %| Fonction qui permet de calculer le sinus cardinal


%| Elle reçoit en entrée : x appartenant à IR et retourne : y appartenant à IR
%| tel que : y = sinc(x)
ind=find(x==0); %| On recherche l'indice pour lequel x = 0
x(ind)=1; %| Ainsi pour éviter la division par zéro, on %remplace la valeur de x à l'indice "ind"
%|car x(ind) = 0
y=sin(x)./x; %|On calcule le sinus cardinal : sinc(x) = sin(x)/x
y(ind)=1; %|On sait que : lim sinc(x) = 1
%| x->0
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

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. La théorie dit que :

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

Avec Matlab, l’échantillonnage idéal est réalisé par le choix de la variable t (le « pas »). Il est à noter
que Matlab ne peut pas créer & travailler avec des signaux continus : nous sommes donc obligés de
discrétiser le domaine temporel t 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.

a. Discrétiser le signal x(t) pour 3 fréquences d’échantillonnage Fe = 5, 10 et 30 Hz


b. Expliquer la différence entre les trois courbes par rapport à la fréquence d’échantillonnage
c. Estimer d’après les questions précédentes la bonne valeur d’échantillonnage

III. Reconstruction : Extrapolation d’ordre 0 :

La reconstruction consiste à établir un signal analogique continu à partir d’un signal numérique discret.
Le problème est de trouver les valeurs manquantes entre deux valeurs connues : on pratique
l’extrapolation.
Dans ce Tp, on propose d’utiliser la reconstruction par extrapolation d’ordre 0 du signal x(t) à partir du
signal échantillonné en fonction de Fe.

Rappel : l’extrapolation d’ordre 0 correspond à un échantillonnage blocage du signal x(t). Le principe


de l’extrapoleur d’ordre 0 consiste en effet à bloquer le signal jusqu’à ce que l’échantillon suivant
arrive. En clair, l’échantillon x(nTe) est maintenu tant que l’échantillon x(nTe+Te) n’est pas arrivé.

Il est demandé de:

a. Réaliser l’extrapolation d’ordre 0


b. Construire l’extrapolation d’ordre 0 pour un échantillonnage idéal

Partie II : Transformée de Fourier et Filtrage


I. Contexte

L’objectif de cette deuxième partie du TP est de mettre en application les connaissances acquises sur la
Transformée de Fourier Discrète et le filtrage.

II. Objectifs pratiques

Dans cette partie, on se propose d’étudier le filtrage idéal d’un signal porte.
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --

Avec

1) Il est demandé de:

a. Construire et tracer la fonction porte H(t) pour T=5


b. Afin de faire une étude non pas en temps mais en fréquence construire et tracer la fonction
porte H(f).

La réponse à la question b) correspond à la création d’un filtre « passe bas », i.e, une fonction qui ne
laisse passer que les basses fréquences. On peut ainsi définir la fréquence de coupure de ce filtre qui
correspond à la fréquence minimum laissant « passer » le signal. On peut donc définir le filtre passe bas
suivant :

Avec :

H(f) est un passe-bas idéal de fréquence de coupure fc= 2/T = 2/5 = 0.4 Hz

2) Calcul et tracé de X(f) entre -2 et 2 Hz

On considère X(f) la transformée de Fourier de la fonction porte Π(t).

Il est demandé de:

a. Calculer et tracer la TFD de la fonction porte (Ne pas oublier d’appliquer un traitement pour
remplacer les valeurs négatives)
b. Commenter la courbe obtenue par rapport au TP précédent et essayer de conclure sur la
fonction TFD d’une fonction porte.

3) Calcul et tracé de Y(f) entre -2 et 2 Hz

Y est la sortie du filtre en réponse à l’entrée porte x(t). Soit y(t)=h(t)*x(t).


D’après le théorème de Plancherel, on obtient : Y(f)=H(f).X(f).

Il est demandé de:

a. Calculer et tracer Y(f)


b. Commenter le résultat obtenu
c. Proposer des applications de ce type de filtre ?

Vous aimerez peut-être aussi