Vous êtes sur la page 1sur 69

Introduction à MATLAB

Richard BOPILI MBOTIA LEPIBA

UNIKIN

1
But

But du cours
Ce cours est dispensé dans le but de fournir aux apprenants les
bases de l’utilisation de MATLAB.

2
Plan

Plan
1 Introduction
2 Chap I : Les Notations matricielles de MATLAB.
3 Chap II : Les Opérateurs.
4 Chap III : La Programmation en MATLAB.
5 Chap IV : Exemples.

3
Introduction : Avant-Propos

MATLAB est un puissant logiciel de calcul calcul matriciel d’où il


tire son nom (MATLAB = Matrix Laboratory). Ce logiciel est de
plus en plus utilisé par les scientifiques à cause de son mode
interactif, de ses capacités graphiques, de ses fonctions intégrées et
de son langage de programmation simple.

4
Introduction : Avant-Propos

MATLAB est un logiciel complet, ouvert et extensible pour le calcul


et la visualisation. Il accepte des modules intégrés qui sont
parfaitement intégrés. En voici quelques uns :
1 Des boites à outils (Toolboxes), collections de fonctions,
développées pour résoudre des catégories spécifiques de
problèmes. C’est le cas de la toolbox YAWTB de
Lovain-la-Neuve. Cette toolbox est constituée des fonctions
qui permettent d’appliquer la transformée en ondelettes dans
l’environnement MATLAB.
2 Des schémas blocs et de simulation de systèmes linéaires et
non linéaires (Simulink).
3 Des bibliothèques de blocs Simulink spécialisés : Blocksets.

5
Introduction : Démarrer MATLAB

Pour lancer MATLAB sous Linux(ou UNIX), on tape la commande


matlab dans une fenêtre de commande (shell) tandis que sous
Windows, on clique sur l’icone MATLAB. On obtient (Fig.1 :
bureau MATLAB) une fenêtre graphique avec des menus, des
icones et une sous-fenêtre de commande où apparaît le signe :

>>

qui indique que MATLAB est prêt à recevoir des commandes.


Introduction : Desktop

Fig.: bureau MATLAB

7
Introduction : Présentation du bureau de MATLAB

La configuration par défaut du bureau présente les fenêtres


suivantes :
1 Command Window : C’est la console de commandes. Cette
fenêtre permet de lancer les fonctions et les scripts MATLAB ;
2 Workspace (Espace de travail) : affiche des noms, valeurs et
classes des variables utilisées dans la session courante ;
3 Launch Pad (Plate-forme de lancement) : Plate-forme qui
permet le lancement des différents outlis (toolboxes,
documentations, · · · ) incorporés dans MATLAB ;
4 Current directory (Répertoire courant) : donne la liste des
fichiers contenus dans le répertoire courant ;
5 Command History : C’est l’historique des commandes. Cette
fenêtre conserve les commandes écrites dans la fenêtre
Command Window ;

8
Introduction : Présentation du bureau de MATLAB

MATLAB interpréte chaque instruction tapée sur la ligne de


commande et l’évalue numériquement. On appuie sur la touche
« enter »pour valider l’instruction. Le résultat de l’évaluation est
affiché sous la ligne de commande et en l’abscence d’affectation
explicite, le résultat est affecté par défaut à une variable système
générique désignée par ans (signifie answer). Exemple :

>> version

ans =

7.0.4.365 (R14) Service Pack 2

9
Introduction : Affectation des variables
Il est possible de manipuler des expressions au moyen des variables
que l’on peut définir soit même :

>> x = sqrt(25)

x =

Pour afficher la valeur d’une variable, il suffit de taper le nom de la


variable sur la fenêtre de commandes window. Le nom peut être
composé d’un ou de plusieurs caractères (une lettre, une suite de
lettres, des chiffres et du caractère souligné). Pour afficher la liste
des variables définies dans l’espace de travail, on utilise la fonction
who. (whos donne la liste et la taille de chaque variable). La
commande clear permet d’éffacer les variables contenues dans
l’espace de travail.

10
Introduction : Affectation des variables

Dans ce exemple, le nom de la variable, c’est michel :

>> michel = sqrt(25)

michel =

Le nom de la variable (michel) est composé de plusieurs lettres.

11
Introduction : Nombre complexe

Le nombre complexe −1 est prédéfini dans MATLAB. Il est
stocké dans 2 variables i et j.(Taper i, tapez j et comparer). Ensuite
on peut faire entrer z1 = 1 + 2*j et z2 = 2 + 1.5*j :

>> Z1 = 1 + 2*j

Z1 =

1.0000 + 2.0000i

>> z2 = 2 + 1.5*j

z2 =

2.0000 + 1.5000i

12
Introduction : Calculatrice scientifique

MTLAB peut être utilisé comme une calculatrice scientifique.


Exemple :

>> 130/12

ans =

10.8333

Par défaut, le résultat est affiché avec 5 ou 6 chiffres. Pour afficher


un résultat avec plus de chiffres, on utilise la commande format :

13
Introduction : Format

Commande Affichage
format short décimal à 5 ou 6 chiffres
format short e scientifique à 5 ou 6
chiffres
format long décimal à 15 ou 16
chiffres
format long e scientifique à 15 ou 16
chiffres
format bank virgule fixe à deux déci-
males
format rats fractionnaire
format + utilise les symboles +, -
et espace pour afficher les
nombres positifs négatifs
et nuls

14
Introduction : Quelques fonctions utiles

Fig.: Liste de quelques fonctions utiles

15
Introduction : Quelques fonctions utiles help

Pour des informations plus détaillées de chaque fonction, tapez


dans la fenêtre window la commande help suivi du nom de la
fonction ensuite valider en appuyant sur « enter ». Exemple :

16
Introduction : help exemple (15)

>> help abs


ABS Absolute value.
ABS(X) is the absolute value of the elements of X. When
X is complex, ABS(X) is the complex modulus (magnitude)
of the elements of X.

See also sign, angle, unwrap.

Overloaded functions or methods (ones with the same name


help frd/abs.m
help sym/abs.m
help iddata/abs.m

Reference page in Help browser


doc abs

17
Introduction : Création du répertoire de travail

Il est indispensable que chaque utilisateur de MATLAB crée son


répertoire de travail dès la première utilisation. Chaque utilisateur
pourra alors stocker tous ces fichiers dans son répertoire. Le chemin
d’accès à ce répertoire doit être ajouté aux chemins d’accès connus
de MATLAB. Cette création de répertoire est réalisée au moyen de
l’item Set Path du menu file. On peut aussi taper dans la fenêtre de
commandes window la commande addpath suivi du chemin d’accès.

18
Introduction : Quitter MATLAB

Il existe trois possiblités qui permettent de fermer MATLAB :


1 taper la commande quit la fenêtre Command Window ensuite
valider ;
2 Ouvrir dans la barre d’outlis le menu file et cliquer sur Exit ;
3 Cliquer sur l’icone MATLAB situé dans le coin supérieur
gauche de la fénêtre et sélectionner close.

19
Chap II : Les Notations matricielles de MATLAB

Il est important de savoir que tous les objets sous MATLAB sont
des matrices :
1 un scalaire est une matrice de dimension (1,1) ;
2 un vecteur ligne de n composantes est une matrice de
dimension (1,n) ;
3 un vecteur colonne de m composantes est une matrice de
dimension (m,1).

vecteur ligne et vecteur colonne


Remarquons que MATLAB fait la distinction entre un vecteur ligne
et un vecteur colonne.
Les Notations matricielles de MATLAB : saisie d’une matrice

La manière la plus simple de saisir une matrice dans MATLAB est


d’utiliser une ligne explicite d’éléments. Dans la liste, les éléments
sont séparés par des blancs ou des virgules, tandis que des points
virgules ( ;) sont utilisés pour indiquer la fin de ligne.
Les crochets [ ] encadre la liste. pour saisir par exemple la matrice
A(4x3), on procède comme suit :

>> A = [1 2 3; 4 5 6; 7 8 9; 10 11 12]

A =

1 2 3
4 5 6
7 8 9
10 11 12
Les Notations matricielles de MATLAB : Dimension d’une
matrice

On retrouver les dimensions de la matrice A, en utilisant la


commande size :

>> size(A)

ans =

4 3

La commande size(A) fournit le nombre de lignes et le nombre de


colonnes de A. On peut affecter à la variable m le nombre de lignes
et à la vaiable n le nombre de colonnes. On écrit alors la syntaxe
suivante :

22
Les Notations matricielles de MATLAB : Dimension d’une
matrice

>> [m n] = size(A)

m =

n =

23
Les Notations matricielles de MATLAB : Dimension d’une
matrice

L’instruction length(A) donne la plus grande dimension de la


matrice A. Ici, c’est 4.

>> length(A)

ans =

4
Les Notations matricielles de MATLAB : Extraction d’une
sous-matrice d’une matrice A

On peut utiliser deux points (:) pour extraire


une sous-matrice d’une matrice A.
A(:,j) extrait la jème colonne de A.
On considère successivement toutes les lignes de
A et on choisit le jème élément de chaque ligne.
A(i,:) extrait la ième ligne de A.
A(:) reforme le matrice A en un seul vecteur colonne
en concaténant toutes les
colonnes de A.
Les Notations matricielles de MATLAB : Extraction d’une
sous-matrice d’une matrice A

A(j:k) extrait les éléments j à k de A et


les stocke dans un vecteur ligne
A(:,j:k) extrait la sous-matrice de A
formée des colonnes j à k.
A(j:k,:) extrait la sous-matrice de A
formée des lignes j à k.
A(j:k,q:r) extrait la sous-matrice de A formée des
éléments situés dans les lignes j à k et
dans les colonnes q à r.
Les Notations matricielles de MATLAB : Transposition
d’une matrice

Transposition
Le caractère spécial (’) sert à désigner la transposée
d’une matrice.
La commande A = [1 2 3;4 5 6;7 8 9]’
produit la matrice
A =
1 4 7
2 5 8
3 6 9
Les lignes de A’ sont les colonnes de A, et vice versa.
Si A est une matrice complexe, A’ est sa
transposée conjuguée, ou transposée hermitienne.
Pour obtenir une transposée non conjuguée, il
faut employer les deux caractères point-prime (.’).
Les Notations matricielles de MATLAB : Création d’un
tableau

>> theta = 0:10:50;


>> sine = sin(pi*theta/180);
>> [ theta’ sine’ ]

ans =

0 0
10.0000 0.1736
20.0000 0.3420
30.0000 0.5000
40.0000 0.6428
50.0000 0.7660

28
Les Notations matricielles de MATLAB : Création d’un
vecteur ligne

X = first :pas :last génére le vecteur ligne X dont les valeurs des
éléments sont incrémentées séquentiellement. first est le premier
élément, pas est le pas d’incrémentation et last est le dernier
élément. Exemple :

>> theta = 0:10:50

theta =

0 10 20 30 40 50

Si le pas est égal à 1, on peut adopter la syntaxe suivante


X = first :last

29
Les Notations matricielles de MATLAB : La plus grande
dimension d’un vecteur

>> X = [1 4 6 3 2 1 6]

X =

1 4 6 3 2 1 6

>> length(X)% Donne la plus grande dimension de X

ans =

30
Les Notations matricielles de MATLAB : Le maximum

>> [mx,i] = max(X) % Donne le plus élément de X


% et sa position

mx =

i =

31
Les Notations matricielles de MATLAB : Le minimum

>> [mn,i] = min(X) % Donne le plus petit élément de X


% et sa position

mn =

i =

32
Les Notations matricielles de MATLAB : Matrices
particulières

Fig.: Quelques matrices particulières

33
Les Notations matricielles de MATLAB : Quelques fonctions
utiles

Fig.: Quelques fonctions utiles applicables aux matrices

34
ChapIII : Les Opérateurs (11)

Il s’agit ici des opérateurs arithmétiques, relationnels et logiques.


Ces opérateurs peuvent être appliqués aux scalaires, aux vecteurs et
aux matrices. Il faut seulement veiller à ce que les opérandes soient
compatibles.
Les Opérateurs Arithmétiques

Fig.: Opérateurs arithmétiques

36
Opérateurs Arithmétiques

Fig.: Opérateurs arithmétiques

37
Opérateurs Relationnels
ok

Fig.: Opérations relationnels

38
opérateur logique

Les opérateurs logiques:


Les opérateurs logiques sont &, | et ~. Ils correspondent
respectivement au et , ou et non logique.
- C=A&B est la matrice qui a pour éléments
1 si l’élément de A et l’élément
de B sont non nuls,
0 si l’un des deux est nuls. A et B doivent être de même
dimension à moins que l’un des deux soit un scalaire.
- C=A | B est la matrice qui a pour éléments
1 si l’un des éléments de A
ou de B est non nuls, 0 si les deux sont nuls.
A et B doivent être de même dimension à moins que
l’un des deux soit un scalaire.
- C=~B est la matrice qui a pour éléments 1
si l’élément de B est nul, 0 si
l’élément de B est non nul.
Applications des opérateurs sur les matrices

Fig.: Opérations arithmétiques sur les matrices


40
Application : Produit scalaire

un vecteur ligne  
A= a1 a2 · · · an
et un vecteur colonne qui contiennent le même nombre d’éléments
 
b1
 b2 
B= .
 
 ..


bn

peuvent être multipliés en utilisant l’opérateur ’*’. Le résultat sera :


A ∗ B = a1b1 + a2b2 + ... + anbn. Cette opération est appelé
produit scalaire.

41
Application : résolution d’un système d’équations

Soit le sydtème :

a11 x1 + a12 x2 + a13 x3 = b1 (1)


a21 x1 + a22 x2 + a23 x3 = b2 (2)
a31 x1 + a32 x2 + a33 x3 = b3 (3)

qui peut prendre la forme :

Ax = B (4)

     
a11 a12 a13 b1 x1
A =  a21 a22 a23  , B =  b2  , et x =  x2 
a21 a22 a23 b3 x3
La solution du système d’équations (4)est donnée par (algèbre
linéaire) :
x = A−1 B (5)
Etant donné que en MATLAB l’opération left division A \ B est
définie par :

A \ B = inv(A) x B

43
Application : left division

MATLAB applique la méthode d’élimination de Gauss en utilisant


l’opération left division. Pour que la solution soit fiable (correcte), il
faut la matrice A soit une matrice carrée de déterminant différent
de zéro. Une telle matrice a une matrice inverse qui peut être
calculée avec une commande de MATLAB.

44
Application : Racines d’un polynôme

Pour des nombeuses applications, les polynômes sont représentés


dans MATLAB sous la forme d’un tableau des coefficients de leurs
termes, dans l’ordre des puissances décroissantes. c’est ainsi que par
exemple le polynôme :x 2 + 2x + 1 est mémorisé dans le tableau :

>> coeff = [1 2 1]

. On peut s’intéresser aux racines de :

x 2 + 2x + 1 = 0 (6)

les racines sont obtenues par la commande :

>> r = roots(coeff)

45
Produit de deux polynômes

Le produit de deux polynômes est réalisé grâce à la commande


conv. Considérons par exemple les deux polynômes suivant
a(x) = x 3 + 2x 2 + 3x + 4 et b(x) = x 3 + 4x 2 + 9x + 16 et
effectuons leur produit :

>> a = [1 2 3 4]; b = [1 4 9 16];


>> c = conv(a,b)

c =

1 6 20 50 75 84 64

le résultat est c(x) = x 6 + 6x 5 + 20x 4 + 50x 3 + 75x 2 + 84x + 64

46
Division de deux polynômes
La division est l’inverse de la multiplication. C’est ainsi que la
division polynomiale dans MATLAB est réalisée par déconvolution
avec la commande deconv :

>> [ Q, R ] = deconv(c,a)

Q =

1 4 9 16

R =

0 0 0 0 0 0 0

Le tableau Q contient les coefficients du polynôme quotient, et le


tableau R ceux du polynôme reste.

47
Autre exemple
Soient les polynômes p1(x) = 10x 3 + 11x 2 + 2x et
p2(x) = 2x 2 + 3x + 1. cherchons le quotient Q et le reste R de la
division de p1 par p4 :
>> p1 = [10 11 2 0 ];
>> p2 = [2 3 1];
>> [ Q, R] = deconv(p1, p2)

Q =

5 -2

R =

0 0 3 2
Ici, on voit que le reste de la division est R(x) = 3x + 2.
48
ChapIV : Programmation

La programmation en MATLAB peut être faite soit avec les


fonctions m files, soit avec des structures répétitives ou des
structures de contrôle. Il est possible d’afficher un message, une
valeur à l’écran avec la commande disp. disp(’ceci est test’) affiche
”ceci est un test ”sur l’écran. on peut aussi faire entrer une valeur
dans un programme avec la commande input. Nous allons présenter
des exemples pour illustrer cette programmation en MATALAB.

49
Programmation : Scripts et m-files
Un script est une séquence d’expressions ou de commandes. On
peut écrire un script sur une ou plusieurs lignes. les différentes
commandes peuvent être séparées par une virgule, un point virgule
ou encore par le symbole de saut de ligne constitué de trois points
(...) suivis de « enter ».
MALAB permet d’enregistrer le texte d’un script sous forme de
fichier texte appelés m-files. Ces fichiers m-files sont crées à partir
de l’éditeur intégré dans MATLAB. On accéde à cet éditeur à partir
du menu file (new M-File)du bureau de MATLAB. Après avoir écrit
le fichier, on le sauvegarde (nom du fichier.m)dans le répertoire de
travail.Exemple :

% script test.m
a = 0.5;
b = pi;
c = a*b
Programmation : Scripts et m-files

Pour exécuter le script contenu dans un m-file, il suffit de taper le


nom de ce m-file dans la fenêtre de commande suivi de « enter ».
La présence du point virgule( ;) à la fin de deux premières lignes du
fichier test empêche l’affichage de a et b. Le caractère % au début
d’une ligne indique cette ligne est simplement un commentaire et
par conséquent n’est pas traitée par MATLAB.
Programmation : Scripts et m-files
Une fonction est un m-file particulier. On cmmence le m-file par le
mot function. On associe à cette fonction des arguments et la
fonction retourne une valeur. Le m-file et la fonction doivent avoir
le même nom. Exemple :

% vol = nom de la fonction;


% cette fonction calcule le volume cylindre
% test: r = 0,1;
% test: h = 2;
% test: volume du cylindre = 0.0628;
function out = vol(r,h);
r = input(’Enter rayon: r = \n’);
h = input(’Enter hauteur: h = \n’);
out = pi * r^2 * h ;
str = [’Le volume de ce cylidre vaut: ’ num2str(out)];
disp(str)
Programmation : Structures répétitives : Boucles For

Fig.:

53
Programmation : Structures de contrôle répétitives : Boucles
While

Fig.:

54
Programmation : boucle while

Fig.:

55
Programmation : Structures de contrôle : les conditionnelles
(if)

Fig.:

56
Programmation :Structures de contrôle : les conditionnelles
(Switch)

Fig.:

57
Programmation :Structures de contrôle : les conditionnelles
(Switch)

Fig.:

58
Question

Ecrire un m-file qui calcule la distance entre deux points A(x1,y1)


et B(x2,y2) situés dans le plan cartésien. On se rappelle cette
distance peut être calculée avec la formule suivante :
q
distance = (x2 − x1)2 + (y 2 − y 1)2

59
distance

function distance = dist2(x1, y1, x2, y2)


x1 = input(’entrer x abscisse du point a: ’);
y1 = input(’entrer y ordonnée du point a: ’);
x2 = input(’entrer x abscisse du point b: ’);
y2 = input(’entrer y ordonnée du point b: ’);
distance = sqrt((x2-x1).^2+(y2-y1).^2);
result = distance;
fprintf(’La distance entre le point a et
le point b est %f \n’,result)
%disp([’The value of the function
is ’ num2str(result)]);
Question

Un projectile est lancé verticalement vers le haut avec une vitesse


initiale u. Si, on néglige la résistance de l’air, le déplacement
vertical s(t) effectué par ce projectile au cours du temps t sera
donné par l’équation :

s(t) = ut − gt 2 /2

avec g : l’accélération de pésanteur

Ecrire une fonction m-fle calcule ce déplacement vertical dans


l’intervalle de temps compris entre 0 et 12.3 seconde avec un pas
de 0.1 seconde. Inscrire le couple (s,t)dans un tableau .Que ce
programme affiche aussi le graphe s(t).
Quelques Applications

%Nom du fichier: vertdepl.m


u = 60; % initial velocity (meters/sec)
t = 0 : 0.1 : 12.3; % time in seconds
g = 9.8;
s = u * t - g / 2 * t .^ 2; % vertical displacement
% in meters
plot(t, s), title( ’Vertical motion under gravity’),
xlabel( ’time’ ), ylabel( ’vertical displacement’),grid
disp( [t’ s’] ) % display a table
Question

Ecrire une fonction m-file de résolution de l’équation

Ax 2 + bx + c = 0

en tenant compte de toutes les possibilités du nombre des racines.


(Afficher les racines de l’équation pour chaque cas possible.)

63
Quelques Applications

%root.m
disp(’This program solves for the roots of a quadratic ’);
disp(’equation of the form A*X*2 + B*X + C = 0. ’);
a = input(’enter the coefficient A: ’);
b = input(’enter the coefficient B: ’);
c = input(’enter the coefficient C: ’);
discriminant = b^2 - 4 * a * c;

64
Quelques Applications

if discriminant > 0 % there are two real roots, so ...


x1 = (-b + sqrt(discriminant))/(2 * a);
x2 = (-b - sqrt(discriminant))/(2 * a);
disp(’This equation has two real roots:’);
fprintf(’x1 = %f\n’, x1);
fprintf(’x2 = %f\n’, x2);
elseif discriminant == 0 %there is one repeated root, so...
x1 = (-b)/(2*a);
disp(’This equation has two identical real roots:’);
fprintf(’x1 = x2 = %f\n’, x1);
else % there are complex roots, so ...
real_part = (-b)/(2*a);
imag_part = sqrt(abs(discriminant))/(2*a);
disp(’Tnis equation has two complex roots:’);
fprintf(’x1 = %f+i %f\n’, real_part, imag_part);
fprintf(’x1 = %f-i %f\n’, real_part, imag_part);
end
Question

Ecrire une fonction m-file qui permet de passer des coordonnées


cartésiennes (x,y) aux coordonnées polaires (r,θ)

66
Quelques Applications

function [x, y] = convrectpolar(r,theta)


x = input (’entrer abscisse x: ’);
y = input (’entrer ordonnée y: ’);
% r première coordonnée polaire
% theta est la deuxième coordonnée polaire
r = sqrt(x.^2 + y.^2);
theta = 180/pi * atan2(y,x);
disp(’les coordonnées polaires r et theta
valent respectivement: ’);
fprintf (’r = %f \n’, r);
fprintf (’theta = %f \n’, theta);
Question

Ecrire une fonction m-file qui résoud la fonction f(x,y) ;



x +y x >= 0 and y >= 0
 x + y 2 x >= 0 and y <0
f (x, y ) = 
 x2 + y x < 0 and y >= 0
x2 + y2 x < 0 and y <0

68
Quelques Applications

%solxy.m
x = input(’Enter the x coefficient: ’);
y = input(’Enter the y coefficient: ’);
if x >= 0 && y >= 0
sol = x + y;
elseif x >= 0 && y < 0
sol = x + y^2;
elseif x < 0 && y >= 0
sol = x^2 + y^2;
end
disp([’The value of the function is ’ num2str(sol)]);

Vous aimerez peut-être aussi