INITIATION À MATLAB
Ce document présente une introduction à MATLAB, un logiciel de calcul numérique spécialisé dans le traitement matriciel. Il s'adresse aux étudiants débutants souhaitant se familiariser avec l'environnement MATLAB, ses commandes de base, la manipulation des matrices, les affichages graphiques, la programmation avec scripts et fonctions, ainsi que l'analyse spectrale de signaux par la Transformée de
D'après le document INITIATION À MATLAB
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Programming, Math · PDF · 10 pages · 2015
Afficher l'aperçu du document
Ce document présente une introduction à MATLAB, un logiciel de calcul numérique spécialisé dans le traitement matriciel. Il s'adresse aux étudiants débutants souhaitant se familiariser avec l'environnement MATLAB, ses commandes de base, la manipulation des matrices, les affichages graphiques, la programmation avec scripts et fonctions, ainsi que l'analyse spectrale de signaux par la Transformée de Fourier Discrète (TFD).
Introduction à MATLAB
MATLAB, abréviation de "MATrix LABoratory", est un environnement informatique puissant conçu pour le calcul matriciel. L'élément fondamental est la matrice, dont la dimension n'a pas besoin d'être fixée à l'avance. MATLAB est un langage interprété, ce qui signifie que les instructions sont exécutées immédiatement après leur saisie, sans phase de compilation.
Lancement et interface
Au lancement, MATLAB affiche la fenêtre "command" où l'utilisateur peut saisir les instructions après le prompt >>. Toute commande tapée est exécutée immédiatement.
Variables et langage interprété
Les résultats des commandes sont affichés sauf si la ligne se termine par un point-virgule ;, qui supprime l'affichage. Le résultat est aussi stocké dans la variable ans si aucune variable n'est spécifiée. Les noms de variables doivent commencer par une lettre, être sensibles à la casse et contenir moins de 19 caractères.
Variables complexes
MATLAB gère les nombres réels et complexes. Par défaut, i et j représentent la racine carrée de -1, mais peuvent être redéfinis. Les fonctions prédéfinies pour les complexes sont :
real: partie réelleimag: partie imaginaireabs: moduleangle: argument (en radians)conj: conjugué complexe
Vecteurs, matrices et manipulation
En MATLAB, toute variable est une matrice : un scalaire est une matrice 1x1, un vecteur une matrice 1xN ou Nx1. Les matrices se définissent avec des crochets [ ], les éléments d'une ligne sont séparés par des espaces ou des virgules, et les lignes par des points-virgules.
Exemple :
A = [1 2 3; 4 5 6; 7 8 9]
Les éléments sont accessibles par indices entre parenthèses, par exemple A(2,3) donne l'élément de la 2e ligne et 3e colonne. Le mot-clé end désigne le dernier indice.
On peut créer des matrices spéciales :
zeros(m,n): matrice m×n remplie de zérosones(m,n): matrice m×n remplie de unseye(n): matrice identité n×n
La taille d'une matrice se récupère avec size :
[m,n] = size(A)
Il est possible d'ajouter des lignes ou colonnes à une matrice existante, à condition que les dimensions soient compatibles.
Opérateur ":"
L'opérateur : sert à créer des vecteurs énumérés avec la syntaxe :
deb:pas:fin
Il génère la séquence deb, deb+pas, deb+2*pas, ... jusqu'à la valeur inférieure ou égale à fin. Le pas est optionnel et vaut 1 par défaut.
Exemple :
x = 1:2:9 % crée [1 3 5 7 9]
On peut aussi utiliser : pour sélectionner des sous-ensembles :
A(1:3, 2:end) % lignes 1 à 3, colonnes 2 à la fin
Opérations matricielles
Les opérations classiques sont définies naturellement :
- Addition :
A + B - Multiplication matricielle :
A * B - Multiplication élément par élément :
A .* B - Puissance élément par élément :
A .^ 2
Fonctions utiles :
max(A): vecteur ligne des maxima de chaque colonnemin(A): vecteur ligne des minima de chaque colonne
Affichages graphiques et alphanumériques
Affichage alphanumérique
On peut afficher des chaînes de caractères dans la fenêtre de commande avec :
disp('Texte à afficher')
Les fonctions sprintf et fprintf permettent des affichages formatés.
Pour demander une valeur à l'utilisateur :
val = input('Entrez une valeur : ')
Affichage graphique 1D
La commande plot trace une courbe 1D :
x = 0:0.1:2*pi;
y = sin(x);
plot(x,y)
On peut ajouter un titre et des labels :
title('Courbe sinusoïdale')
xlabel('x')
ylabel('sin(x)')
Affichage graphique 2D
La commande mesh permet de représenter une fonction 2D. Il faut d'abord créer une grille avec meshgrid :
[X,Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = X.^2 + Y.^2;
mesh(X,Y,Z)
Affichage de plusieurs courbes
Pour afficher plusieurs graphiques dans une même fenêtre, on utilise subplot :
subplot(2,1,1)
plot(x,y)
subplot(2,1,2)
plot(x,cos(x))
Pour ouvrir plusieurs fenêtres graphiques, on utilise figure :
figure(1)
plot(x,y)
figure(2)
plot(x,cos(x))
Pour superposer plusieurs courbes dans la même figure :
plot(x,y)
hold on
plot(x,cos(x))
hold off
Environnement de travail, scripts et fonctions
Répertoire de travail
Il est important de travailler dans son propre répertoire, accessible via les commandes :
cd 'chemin_du_répertoire'
dir
Sauvegarde et chargement de variables
Pour sauvegarder des variables :
save nom_fichier nom_variables
Si aucun nom de variable n'est donné, toutes les variables sont sauvegardées. L'extension .mat est ajoutée automatiquement si omise.
Pour charger un fichier :
load nom_fichier
Pour connaître les variables dans l'espace de travail :
who % liste des noms
whos % noms et tailles
Scripts
Un script est un fichier texte contenant une suite d'instructions MATLAB, enregistré avec l'extension .m. Il s'exécute en tapant son nom dans la fenêtre de commande. Les variables définies dans le script sont accessibles dans l'espace de travail et vice versa.
Les commentaires commencent par % et ne sont pas exécutés.
Fonctions
Une fonction MATLAB est définie dans un fichier .m dont le nom doit être identique à celui de la fonction. La première ligne a la syntaxe :
function [sortie1, sortie2, ...] = nom_fonction(entree1, entree2, ...)
Exemple simple :
function y = carre(x)
y = x.^2;
end
Appel :
resultat = carre(5)
Fonction avec plusieurs sorties :
function [somme, produit] = somme_produit(a,b)
somme = a + b;
produit = a * b;
end
Appel :
[s, p] = somme_produit(3,4)
Les fonctions ne peuvent accéder qu'aux variables passées en entrée. Les variables internes ne sont pas visibles dans l'espace de travail.
Boucles et structures de contrôle
Instruction if
La condition est une expression logique évaluée comme vraie (non nulle) ou fausse (zéro). Les opérateurs logiques sont :
- et :
&&ou& - ou :
||ou| - égal :
== - supérieur :
>,>= - inférieur :
<,<= - non :
~ - ou exclusif :
xor
Exemple :
if x > 0
disp('x est positif')
else
disp('x est négatif ou nul')
end
Boucle while
Répète les instructions tant que la condition est vraie :
while condition
instructions
end
Boucle for
Syntaxe :
for variable = vecteur
instructions
end
Exemple :
for k = 1:5
disp(k)
end
Il est conseillé d'éviter les boucles lorsque cela est possible, car elles sont plus lentes que les opérations matricielles vectorisées.
Exemple d'optimisation :
% Boucle lente
for i = 1:N
y(i) = x(i)^2;
end
% Version vectorisée plus rapide
y = x.^2;
Fonction d'aide (help)
La commande help affiche la documentation intégrée :
help: liste des répertoires accessibleshelp nom_répertoire: description des fonctions dans ce répertoirehelp nom_fonction: aide détaillée sur une fonction ou un script
Les commentaires placés en tête d'un script ou juste après la ligne function dans un fichier fonction sont utilisés pour générer cette aide.
Utilisation de la Transformée de Fourier Discrète (TFD) avec MATLAB
La fonction FFT implémente l'algorithme rapide de calcul de la TFD. Sa syntaxe générale est :
Y = fft(x, L)
où x est la séquence d'entrée, L le nombre de points de fréquence pour le calcul de la TFD, et Y la transformée obtenue.
Il est conseillé de choisir L comme une puissance de 2 pour optimiser la rapidité.
Zero padding
Le zero padding consiste à augmenter la taille de la séquence en ajoutant des zéros, ce qui améliore la résolution fréquentielle.
Exemple :
x = [1 2 3 4]; % séquence d'ordre 4
Y4 = fft(x,4); % FFT d'ordre 4
Y8 = fft(x,8); % FFT d'ordre 8 (zero padding)
On peut observer que la FFT d'ordre 8 offre un spectre plus détaillé que celle d'ordre 4.
Fenêtres
Une fenêtre est une suite de coefficients utilisée pour pondérer un signal avant calcul de son spectre, afin de limiter les effets de discontinuité aux bords.
Soit un signal x(n) et une fenêtre rectangulaire w(n) de longueur N. Le produit x(n) * w(n) est la version tronquée du signal.
On calcule la transformée de Fourier de la fenêtre :
W = fft(w, L);
On peut calculer et comparer les spectres des fenêtres suivantes :
- Rectangulaire
- Bartlett
- Hanning
- Hamming
En représentant les modules des spectres sur une même figure, on observe leurs différences en termes de lobes principaux et secondaires.
Conséquences de la limitation temporelle d’un signal
Phénomène de "Leakage"
Limiter la durée d'un signal revient à le multiplier par une fenêtre rectangulaire. Cette opération provoque un phénomène de fuite spectrale ("leakage") visible dans le spectre calculé.
Exemple :
x = cos(2*pi*50*(0:511)/512); % signal discret
w_rect = ones(1, 512); % fenêtre rectangulaire
X_rect = fft(x .* w_rect, 512); % spectre avec fenêtre rectangulaire
w_hamming = hamming(512)'; % fenêtre de Hamming
X_hamming = fft(x .* w_hamming, 512); % spectre avec fenêtre de Hamming
La comparaison des spectres montre que la fenêtre de Hamming réduit le leakage par rapport à la fenêtre rectangulaire.
Résolution spectrale
La résolution spectrale est la capacité à distinguer deux fréquences proches dans un signal. Elle dépend de la taille de la fenêtre temporelle.
Soit un signal :
x(n) = cos(2*pi*f1*n) + cos(2*pi*f2*n)
Le spectre du signal tronqué par une fenêtre rectangulaire w(n) est :
X = fft(x .* w, N)
où N est la longueur de la fenêtre.
En augmentant la taille de la fenêtre rectangulaire, on améliore la résolution spectrale, c'est-à-dire la séparation des pics aux fréquences f1 et f2.
En utilisant une fenêtre de Hamming, on peut observer un compromis entre réduction du leakage et résolution spectrale.
Glossaire des termes clés
- MATLAB : Environnement informatique et langage de programmation spécialisé dans le calcul matriciel.
- Variable : Nom associé à une valeur ou une matrice dans MATLAB.
- Langage interprété : Langage dont les instructions sont exécutées immédiatement sans compilation.
- Matrice : Tableau de nombres à deux dimensions, élément fondamental de MATLAB.
- Vecteur : Matrice à une seule ligne ou colonne.
- Opérateur ":" : Opérateur d'énumération pour créer des vecteurs ou sélectionner des sous-ensembles.
- FFT (Fast Fourier Transform) : Algorithme rapide de calcul de la Transformée de Fourier Discrète.
- Zero padding : Ajout de zéros à une séquence pour augmenter la résolution fréquentielle.
- Fenêtre : Suite de coefficients utilisée pour pondérer un signal avant analyse spectrale.
- Leakage : Phénomène de fuite spectrale dû à la limitation temporelle d'un signal.
- Résolution spectrale : Capacité à distinguer deux fréquences proches dans un spectre.
- Script : Fichier contenant une suite d'instructions MATLAB exécutées séquentiellement.
- Fonction : Bloc de code MATLAB avec entrées et sorties, stocké dans un fichier nommé après la fonction.
- Boucle for : Structure de contrôle répétant des instructions pour chaque valeur d'un vecteur.
- Boucle while : Structure de contrôle répétant des instructions tant qu'une condition est vraie.
- Instruction if : Structure conditionnelle exécutant des instructions selon une condition logique.
Points clés à retenir
- MATLAB est un langage interprété centré sur le calcul matriciel, facilitant les opérations sur vecteurs et matrices.
- L'opérateur
:est essentiel pour créer des vecteurs et manipuler des sous-ensembles de matrices. - Les scripts et fonctions permettent d'automatiser et de structurer les calculs.
- Les boucles sont souvent moins efficaces que les opérations vectorielles et doivent être utilisées avec précaution.
- La fonction
fftcalcule la Transformée de Fourier Discrète, outil fondamental pour l'analyse spectrale. - Le zero padding améliore la résolution fréquentielle sans modifier le signal.
- Les fenêtres (rectangulaire, Bartlett, Hanning, Hamming) modifient le spectre et influencent le phénomène de leakage.
- La limitation temporelle d'un signal provoque un leakage spectral, atténuable par le choix de fenêtres adaptées.
- La résolution spectrale dépend de la taille et du type de fenêtre utilisée.
- La commande
helpest un outil précieux pour comprendre les fonctions et scripts MATLAB.
Commentaires
Aucun commentaire pour le moment. Posez la première question.