Pr. Y.
El merabet Faculté des Sciences Université Ibn Tofail -- 2024/2025 --
TP de Traitement du signal.
Séance 1 : Premiers contacts avec MatLab
et réalisation de quelques signaux types
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,
Pr. Y. El merabet
Pr. Y. El merabet Faculté des Sciences Université Ibn Tofail -- 2024/2025 --
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
Pr. Y. El merabet
Pr. Y. El merabet Faculté des Sciences Université Ibn Tofail -- 2024/2025 --
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 définir un vecteur v = (11 22 33 44 55)
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 :
Pr. Y. El merabet
Pr. Y. El merabet Faculté des Sciences Université Ibn Tofail -- 2023/2024 --
>> 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];
>> y=x.*sin(x) ; % l’on a ici besoin de la
multiplication “avec le point” (.*) puisque x
et y sont des vecteurs
>> plot(x,y)
>> xlabel(’x’)
>> ylabel(’y’)
>> title(’titre de la figure’)
>> subplot(1,2,1) %subplot (Nbre pavés sur
hauteur, Nbre pavés sur largeur, Numéro pavé)
>> plot(x,sin(x),'b') %courbe en bleue
>> subplot(1,2,2)
>> plot(x,cos(x),'r') %courbe en rouge
Pr. Y. El merabet
Pr. Y. El merabet Faculté des Sciences Université Ibn Tofail -- 2024/2025 --
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
Pr. Y. El merabet
Pr. Y. El merabet Faculté des Sciences Université Ibn Tofail -- 2024/2025 --
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.…).
Pr. Y. El merabet
Pr. Y. El merabet Faculté des Sciences Université Ibn Tofail -- 2024/2025 --
c. Réaliser les signaux suivants :
Impulsion unite
1.5
Une impulsion unité (Dirac) défini 1
par f(n) = 1 si n = 0 et 0 sinon.
Amplitude
(utiliser les fonctions stem et 0.5
zeros) ,
0
-0.5
-10 -8 -6 -4 -2 0 2 4 6 8 10
n
Echelon unite
1.5
Un échelon unité par défini 1
par f(n) = 1 si n ≥ 0 et 0
sinon. . (utiliser les fonctions
Amplitude
0.5
stem , zeros et ones)
0
-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 0.9
0.8
N entiers positifs, par la suite : 0.7
0.6
Amplitude
Rect(n) =0 si n appartient à
0.5
0.4
{P+1,…,N}ou {-N,…,-P-1} 0.3
Rect(n) =1 si n appartient à {-
0.2
0.1
P,…,P} 0
-10 -8 -6 -4 -2 0 2 4 6 8 10
(Essayer d’utiliser les
n
fonctions ones et zeros)
Pr. Y. El merabet
Pr. Y. El merabet Faculté des Sciences Université Ibn Tofail -- 2024/2025 --
rampe : r(t)=at (rampe unité)
20
18
16
14
12
10
0
0 1 2 3 4 5 6 7 8 9 10
0.8
0.6
Sinus amorti 0.4
exp(-t).*sin(2*pi*t)
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 :
Pr. Y. El merabet
Pr. Y. El merabet Faculté des Sciences Université Ibn Tofail -- 2024/2025 --
3. Devoir
Exercice 1 : Ecrire un programme qui donne en sorite la figure ci-contre.
Exercice 2 : Tracer le motif du signal
traité dans l’exercice 4 du TD, i.e.,
écrire un programme qui donne en
sortie
Exercice 3 : Tracer le motif du signal
traité dans l’exercice 5 du TD, i.e.,
écrire un programme qui donne en
sortie
Pr. Y. El merabet