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.

INITIATION À MATLAB

Document source

INITIATION À MATLAB

Programming, Math · PDF · 10 pages · 2015

Afficher l'aperçu du document

Consulter le document original →

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éelle
  • imag : partie imaginaire
  • abs : module
  • angle : 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éros
  • ones(m,n) : matrice m×n remplie de uns
  • eye(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 colonne
  • min(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 accessibles
  • help nom_répertoire : description des fonctions dans ce répertoire
  • help 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 fft calcule 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 help est un outil précieux pour comprendre les fonctions et scripts MATLAB.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions