@ccueil Colles

Introduction à Matlab

Commandes et fonctions générales



Généralités

Matlab (acronyme de Matrix laboratory est un logiciel et langage de programmation de calcul scientifique de haut niveau.
Matlab propose de nombreuses commandes et fonctions permettant, entre autre,
  • de résoudre équations non linéaires
  • manipuler aisément des vecteurs et matrices, et de résoudre des système linéaires (ou systèmes matriciels)
  • tracer des graphiques, courbes de fonctions, paramétriques, surfaces, …
  • calculer des intégrales, résoudre des équations différentielles
  • programmer et donc de résoudre des problèmes complexes
  • par le biais de nombreuses "toolbox" (ou bibliothèques de fonctions / outils), d'aborder de nombreux domaines spécifiques: traitement du signal, bio-informatique, finance, réseaux de neurones, équations aux dérivées partielles (éléments finis), …
Matlab permet de taper directement des commandes au prompt:--> et d'en obtenir le résutat (si tout se passe bien):
>>3+2
 ans  =
 
    5.  
Aucune ponctuaton en fin d'instruction n'est nécessaire. Néanmoins, une virgule peut être utilisée pour séparer plusieurs instructions consécutives sur la même ligne, tandis qu'un point-virgule après une instruction indique à Matlab d'exécuter la commande mais sans en afficher le résultat.

On peut naviguer dans l'historique des commandes déjà exécutées avec les flèches "haut" et "bas". La flèche vers le haut permet de remonter de commandes en comandes dans l'historique (et d'en redescendre avec celle vers le bas).
De plus la navigation peut de faire après avoir taper quelques lettres d'une commande: la navigation dans l'historique se fait alors uniquement parmi les commandes de l'historique commençant par ses lettres.

Fonctions mathématiques

Comme logiciel scientifique, Matlab connaît évidemment les opérations mathématiques élémentaires: +, -, /, *, ^,
>>2/3,3^2
 ans  =
 
    0.6666667  
 ans  =
 
    9. 
et possède bien sûr aussi un vaste catalogue de fonctions mathématiques: sin, cos, tan, exp, log (logarithme népérien, ou ln), log10 (logarithme décimal),

Aide sur les fonctions

D'une manière générale, la commande help donne la liste des aides disponibles (ou ouvre cette liste dans une fenêtre dédiée); la commande help fun affiche (ou ouvre dans une fenêtre) l'aide concernant la fonction fun. Enfin, si on ne connaît par le nom exact de la fonction, ou qu'on recherche une fonction effectuant une opération particulière, on peut se tourner vers la commande lookfor key_word et Matlab affichera une liste de toutes ses fonctions qui citent le mot clé key_word dans leur description.

Variables

Matlab permet bien sûr de définir et utiliser des variables.
À peu près n'importe quel suite de caractères peut servir de nom de variable, ne commençant pas par un caractère spécial ou un chiffre:
>>a=2
 a  =
 
    2.  
on peut ensuite afficher la valeur d'une variable simplement en l'appelant par son nom:
>>a
 a  =
 
    2.  
puis la manipuler, la faire varier…
>>2*a
 ans  =
 
    4.  
 
>>a=a+3;2*a
 ans  =
 
    10.  
On peut effacer la variable a avec la commande clear('a'), et, tout aussi interessant la commande clear all permet d'effacer toutes les variables de l'espace de travail.
>>a=2,b=3
 a  =
 
    2.  
 b  =
 
    3.  
 
>>clear('a')
 
>>a

  Undefined function or variable 'a'
 
 
>>b
 b  =
 
    3.  
 
>>clear
>>b

  Undefined function or variable 'b'
Enfin la commande clc clear command window) permet d'effacer la fenêtre de commandes. L'historique des commandes n'est pas effacer pour autant avec clc et les commandes antérieures restent accessibles avec les flèches du "haut" et "bas" du clavier.

Matrices

En calcul scientifique (et en programmation d'une manière plus générale), les matrices, ou tableaux de données, sont des objets fondamentaux.
Avec Matlab, on définit une matrice suivant:
>>M=[1 2 3;12,0,-6]
 M  =
 
    1.     2.    3.         
    12.    0.    -6
Les lignes sont séparées par un point virgule, les colonnes par un espace ou une virgule.

Création de matrices / vecteurs

On peut définir, comme précédemment, une matrice terme à terme, par exemple avec une formule explicite:
>>for i=1:3,for j=1:5, F(i,j)=j+(i-1)*5;end;end;
 
>>F
 F  =
 
    1.     2.     3.     4.     5.   
    6.     7.     8.     9.     10.  
    11.    12.    13.    14.    15.  
Quelques commandes génèrent aussi rapidement des matrices particulières: zeros(n,m), ones(n,m), eye(n,m), et rand(n,m) permettent de définir des matrices à n lignes et m colonnes respectivement de zeros, de uns, la matrice identité, et une matrice de nombres aléatoires.
Enfin, le cas courant d'un vecteur dont les éléments sont en progression arithmétique se fait avec linspace(a,b,N): vecteurs à N éléments régulièrement distribués entre a et b:
>>linspace(1,7,4)
 ans  =
 
    1.    3.    5.    7.  
 
>>linspace(0,4,9)
 ans  =
 
    0.    0.5    1.    1.5    2.    2.5    3.    3.5    4.  
Ce type de vecteur peut aussi se définir en donnant le pas entre les éléments:
>>1:2:7
 ans  =
 
    1.    3.    5.    7.  
 
>>0:0.5:4
 ans  =
 
    0.    0.5    1.    1.5    2.    2.5    3.    3.5    4.  

Opérations usuelles sur les matrices

Les opéations mathématiques usuelles, de l'algèbre des matrices, sont là aussi bien sûr disponibles: addition matricielle +, produit matriciel *, puissance matricielle ^, lorsque les dimensions des matrices permettent bien ces opérations.
>>A=[1 2;3 4;5 6];B=[9 8;7 6;5 4];A+B
 ans  =
 
    10.    10.  
    10.    10.  
    10.    10.  
ou encore
>>A=[1 2;3 4];A^2
 ans  =
 
    7.     10.  
    15.    22.  
et même pour l'inverse (même s'il vaut largement mieux utiliser la commande inv(A)):
>>A=[1 2;3 4];A^-1,A^-1*A
 ans  =
 
  - 2.     1.   
    1.5  - 0.5  
 ans  =
 
    1.           0.  
    2.220D-16    1.  

Opérations matricielles terme à terme

Les matrices peuvent aussi être utilisées commes de simples tableaux de données sur lesquelles on veut effectuer des opérations.
D'une manière générale, pour effectuer des opérations terme à terme sur des matrices, on préfixe les opérations usuelles précédentes d'un point:
>>A=[1 2;3 4;5 6];B=[9 8;7 6;5 4];A.*B
 ans  =
 
    9.     16.  
    21.    24.  
    25.    24.  
ou encore
>>A=[1 2;3 4];A.^-1
 ans  =
 
    1.           0.5   
    0.3333333    0.25  
ou encore, avec des puissances terme à terme:
>>[1 2 3].^[1 2 3]
 ans  =
 
    1.    4.    27.  
Enfin, les fonctions mathématiques usuelles opèrent aussi généralement sur des matrices, par exemple
>>x=1:0.8:3
 x  =
 
    1.    1.8    2.6  
 
>>exp(x)
 ans  =
 
    2.7182818    6.0496475    13.463738  

Commandes usuelles et pratiques pour définir et manipuler des matrices

Parmi les commandes les plus usuelles:
  • lenght(V): retourne la longueur (nombre d'éléments) de V
  • size(A): retourne les dimensions de la matrice A
  • repmat(A,p,q): retourne la matrice obtenu en répétant la matrice A p fois en ligne et q fois en colonne
    >>A=[1 2;3 4]
     A  =
     
        1.    2.  
        3.    4.  
     
    >>size(A)
     ans  =
     
        2.    2.  
     
    >>B=repmat(A,2,3)
     B  =
     
        1.    2.    1.    2.    1.    2.  
        3.    4.    3.    4.    3.    4.  
        1.    2.    1.    2.    1.    2.  
        3.    4.    3.    4.    3.    4.  
     
    >>size(B)
     ans  =
     
        4.    6.  
    
  • det(A): retourne le déterminant de la matrice A
  • inv(A): retrourne la matrice inverse de A (si celle-ci est inversible…)
  • diag(A): retourne la diagonale de A (i.e. le vecteur V=[A(i,i)])

Extraction d'éléments dans une matrice

Pour une matrice donnée M, M(i,j) désigne simplement le terme de la i-ème ligne et j-ième colonne.
L'opérateur : désigne tous les éléments de la dimension où il se trouve:
>>for i=1:3,for j=1:5, M(i,j)=j+(i-1)*5;end;end;
 
>>M
 M  =
 
    1.     2.     3.     4.     5.   
    6.     7.     8.     9.     10.  
    11.    12.    13.    14.    15.  
 
>>M(2,4)
 ans  =
 
    9.  
 
>>M(:,3)
 ans  =
 
    3.   
    8.   
    13.  
 
>>M(2,:)
 ans  =
 
    6.    7.    8.    9.    10.  
 
Le mot clé end utilise dans une matrice désigne la fin, ou dernier élément, de la dimension désignée. Pour un vecteur V, V(end) désigne le dernier élement.
On peut résumer les différentes extractions de matrices,
Schéma d'extraction de sous-matrices

On peut aussi sélectionner plus finement, M(V,W) où V et W sont deux vecteurs d'entiers: par exemple avec
  • V=[1:3]: on extrait dans M les 1ère et 3ème lignes
  • W=1:2:5, soit W=[1 3 5], on extrait les 1ère, 3ème et 5ème colonnes
>>M
 M  =
 
    1.     2.     3.     4.     5.   
    6.     7.     8.     9.     10.  
    11.    12.    13.    14.    15.  
 
>>M([1 3],1:2:5)
 ans  =
 
    1.     3.     5.   
    11.    13.    15.  
À noter que le même indice peut être utilisé plusieurs fois, permettant ainsi de répéter, ou répliquer, des éléments de la matrice:
>>A=[1 2;3 4]
 A  =
 
    1.    2.  
    3.    4.  
 
>>A([1 1 1],:)
 ans  =
 
    1.    2.  
    1.    2.  
    1.    2.  

Voir aussi: