Vous êtes sur la page 1sur 8

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,
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.
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;] Creer matrice 3x3


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

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


>>A( :,2) obtenir la deuxi`eme colonne de A
>> A( :,3) obtenir la troisi`eme.
>>A(1, :) retourne toute la premi`ere 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]
>> 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


6
la multiplication “avec le point” (.*)
puisque x et y sont des vecteurs 4

>> plot(x,y) 2
>> xlabel(’x’)
y

>> ylabel(’y’) 0

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

-4

-6
0 1 2 3 4 5 6 7 8 9 10
>> subplot(1,2,1) %subplot x

(Nbre pavés sur hauteur, Nbre pavés sur


largeur, Numéro pavé) 1 1

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

bleue 0.6

0.4
0.6

0.4

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

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

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

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

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

Un échelon unité par défini par Echelon unite


1.5
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 [-N, porte


1
+N] et de largeur 2P+1. Pet N
0.9
entiers positifs, par la suite :
0.8

Rect(n) =0 si n appartient à 0.7

{P+1,…,N}ou {-N,…,-P-1} 0.6


Amplitude

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

…,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

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 :