License : Creative Commons Attribution 4.0 International (CC BY-NC-SA 4.0)
Copyright : Jean-Luc Collette, CentraleSupelec
Last modified : April 27, 2024 02:04
Link to the source : index.md

Table of contents

Documentation Matlab

Présentation

Matlab est un logiciel de calcul scientifique permettant notamment la manipulation de vecteurs et de matrices et l’appel à un grand nombre de fonctions relatives à de nombreux domaines du traitement de l’information. Il peut être utilisé à plusieurs niveaux :

Démarrage

Pour lancer et utiliser ensuite le logiciel

Utilisation en ligne de commande

Introduction

En haut de la fenêtre de commande (Command Window) apparaît le caractère ci-dessous.

»

Ce caractère est un prompt qui permet d’entrer une commande par le clavier et de la valider par la touche Entrée. On peut éditer sans difficulté la ligne de commande avant de la valider, comme dans un éditeur de texte classique. Les commandes déjà lancées peuvent être rappelées via les touches flèches haut et bas ou en consultant la fenêtre d’historique des commandes (Command History).

Commandes essentielles

Les commandes sont documentées plus complètement dans le menu Help de la fenêtre Matlab. On peut donner ci-dessous les commandes essentielles.

dir

Cette commande donne la liste des fichiers présents dans le dossier inscrit dans la rubrique Current Folder.

whos

Cette commande donne la liste des variables en cours d’utilisation, leur taille (vecteur ou matrice), leur encombrement en mémoire (en octet) ainsi que la nature de chacun de leurs éléments (réel ou complexe).

plot

Les variables peuvent être graphiquement visualisées grâce à cette commande. Les options sont présentées dans le menu Help.

clear all

Cette commande efface toutes les variables préalablement créées.

close all

Cette commande efface toutes les figures préalablement créées.

Variables et opérations

Initialisation

Une variable peut être notamment un scalaire, un vecteur ou une matrice. Exemples (à tester):

a = 1.2 ;

(a est un scalaire de valeur 1,2)

b = zeros (10,20) ;

(b est une matrice à 10 lignes et 20 colonnes remplie de zéro)

c = ones (10) ;

(c est une matrice carrée 10x10 remplie de un)

d = eye (5) ;

(d est la matrice identité 5x5)

e = (1:-0.1:0) ;

(e est une ligne dont les éléments décroissent de 1 à 0 avec un pas de 0.1)

f = [1 2;2 3;3 4] ;

(f est une matrice 3x2 dont les éléments sont donnés entre crochets)

Manipulation

L’utilisation des matrices sous Matlab est très souple.

Exemples (à tester) :

x = f(1,2) ;% (On accède à chaque élément d'une matrice)
x = f(:,2) ;% (On accède à la deuxième colonne de la matrice)
y = f(1,:) ;% (On accède à la première ligne de la matrice)
z = f(1:2,:) ;% (On accède à un bloc quelconque d'une matrice)
g = [20 y y;y 10 10 10] ;% (On peut générer une matrice définie par blocs)
f(:,3) = [3;4;5] ;% (On peut compléter dynamiquement une matrice)
f(1:2,:) = [];% (On peut éliminer des blocs de lignes ou colonnes d'une matrice)

Opérations

Toutes les opérations sur les matrices sont disponibles. Exemples (à tester) :

x = [1 2 3;3 4 5] ;
y = [1 1 1;2 2 2;3 3 3];
z = x*y ;% (On effectue le produit de matrices)
z = z' ;% (On effectue la transposition de matrice)
z = x + y(1:2,:) ;% (On effectue la somme de deux matrices)
z = x .* y(1:2,:) ;% (On effectue le produit terme à terme de deux matrices)

Remarques

Les opérateurs logiques fonctionnent aussi sur des matrices (taper help ops pour en avoir la liste). Il est possible de visualiser le contenu d’une variable en entrant simplement son nom ou en ne plaçant pas de point-virgule à la fin de la ligne de commande.

Utilisation de fichiers scripts

Introduction

Un moyen de mémoriser les commandes successives est de créer un fichier script dont l’extension est .m (M-File). En tapant dans la fenêtre de commande le nom du fichier sans son extension, on lance les commandes qui y ont été stockées.

Utilisation

File -> New -> Script

exemple

Développement d’une application audio-visuelle

Objectif

Il s’agit de générer une vidéo dont le son correspond à un fichier sonore déjà enregistré et dont les images seront créées en fonction du contenu sonore. Les différentes étapes seront réalisées sous la forme de fonctions (voir annexe). Il est demandé d’écrire un fichier script qui lancera au final l’ensemble des étapes. L’intérêt de ce fichier script est de pouvoir régénérer automatiquement tous les résultats du traitement et de mémoriser la façon dont les fonctions peuvent être correctement utilisées.

Lecture d’un fichier sonore et affichage (fonction)

Ecrire une fonction (lectureson.m) qui prend en paramètre le nom du fichier sonore (extension .wav) et qui retourne le vecteur contenant les échantillons ainsi que le nombre d’échantillons par seconde. Cette fonction effectuera par ailleurs le tracé du signal avec en abscisse un axe gradué en secondes et des indications pertinentes (titre, échelle, etc.). Elle en fera aussi écouter le contenu.

Fonctions Matlab à utiliser :

Ecriture d’une fonction calculant l’énergie à court-terme (fonction)

Ecrire une fonction (calculenergie.m) qui prend en paramètre le vecteur contenant les échantillons, le nombre d’échantillons par seconde, le nombre de mesures de l’énergie à effectuer par seconde et la durée en seconde de la fenêtre de mesure dans laquelle on fera la somme des carrés des échantillons. Elle fera aussi le tracé de la mesure avec en abscisse un axe gradué en secondes.

Cette fonction doit retourner un vecteur contenant les mesures effectuées.

Fonctions Matlab à utiliser :

Génération de la vidéo (fonction)

La fonction generevideo est fournie. Taper help generevideo pour en connaître le mode d’emploi.

Script général pour lancer toutes les étapes (script)

Ecrire un script (lancertout.m) qui permet de lancer automatiquement les différentes étapes, de sorte que les résultats puissent être facilement reproduits si on change d’environnement de travail ou si on souhaite modifier les paramètres de fonctionnement.

Annexes

Utilisation de fichiers fonctions

Introduction

Un langage de programmation est disponible dans l'environnement Matlab, permettant notamment d’écrire des fonctions qui se présentent sous la forme de fichiers texte. On dispose en particulier d’instructions (for, while, if, etc.) dont on peut avoir la liste complète en tapant la commande ci-dessous.

help lang

Utilisation des fonctions existantes

Les fonctions disponibles sous Matlab correspondent en grande partie à des fichiers texte dont l'extension est .m.

Exemple :

Dans l'environnement Matlab, on peut entrer la commande suivante :

fen = hamming(512);

(On crée un vecteur colonne fen contenant 512 éléments représentant une fenêtre temporelle de Hamming)

En fait, l'interpréteur de commande recherche le fichier hamming.m afin d'en exécuter le contenu qui pourrait être celui donné ci-dessous.

function w = hamming(n)
% HAMMING HAMMING(N) returns the N-point Hamming window.
w = .54 - .46*cos(2*pi*(0:n-1)'/(n-1));

On remarque ici que la fonction cos peut s'appliquer à une variable de taille quelconque (scalaire, vecteur ou matrice). Elle retourne alors une variable de même dimension constituée des cosinus de chaque élément de la variable passée en paramètre. On retrouve la même procédure pour de nombreuses fonctions disponibles sous Matlab.

Les fonctions peuvent prendre un nombre quelconque de paramètres et retourner un nombre quelconque de variables. Les noms de variables utilisés dans une fonction n'ont pas d'incidence sur ce qui se passe dans l'environnement Matlab ou dans le programme appelant.

Développement de fonctions personnelles

Il est possible de développer sa propre fonction (fonc par exemple) en créant un fichier texte (fonc.m) contenant les différentes instructions associées à celle-ci. L'exécution s'effectue simplement en entrant la ligne de commande correspondante

» [resultat1,resultat2,...]=fonc(parametres1 ,parametres2,...)

Il faut cependant prendre garde à ne pas donner à cette fonction le même nom qu'une fonction existante de Matlab ; cette dernière serait alors appelée en priorité. Ainsi, avant de créer une fonction, il faut consulter l'index du help afin de vérifier que le nom n'est pas déjà utilisé.

Remarques sur la programmation

Il faut éviter autant que possible de faire appel à l'instruction for dans un programme. En effet, on peut obtenir un temps d'exécution beaucoup plus faible en procédant différemment.

Dans les trois exemples ci-dessous, le résultat est le même. On obtient cependant des temps d’exécutions qui décroissent du premier au dernier exemple.

1)

for k = 1:100
    a(k) = sin(2*pi*k/100);
end

a est un vecteur ligne dont on ne connaît pas la taille a priori ; Matlab réalloue dynamiquement de la mémoire au fur et à mesure de l'exécution dans la boucle.

2)

a = zeros(1,100);
for k = 1:100
    a(k) = sin(2*pi*k/100);
end

Le temps d'exécution est plus faible que dans le cas précédent car on connaît la taille du vecteur avant d'exécuter la boucle.

3)

a = sin(2*pi*(1:100)/100);

Avec le même effet que dans les deux exemples précédents, on réduit ici de façon importante le temps d'exécution. On exploite ici le fait que les fonctions mathématiques telles que la fonction sin s’appliquent aussi sur des vecteurs.

Remarques sur la syntaxe

Les noms de variables, de scripts, de fonctions :

Matlab fait la différence entre majuscules et minuscules :

Jean-Luc Collette,