MATLAB Diapos Partie1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 80

Outils Mathématiques et Logiciels

MATLAB & SIMULINK


Partie I

Pr M.N. KABBAJ
2021-2022
P LAN

1. Prise en main de MATLAB


2. Les vecteurs et matrices
3. Calculer avec MATLAB
4. Graphisme
5. Les polynômes
6. Les entrées-sorties
7. La programmation avec MATLAB
Prise en main de MATLAB

Introduction
• MATrix LABoratory: Un standard pour le calcul scientifique aussi bien
dans le milieu universitaire qu’industriel
• Logiciel qui permet, de manière interactive:
– de faire des calculs matriciels;
– d’analyser des données;
– de visualiser les résultats en 2D et 3D…
• Langage de programmation adapté pour les problèmes spécifiques
• Toolboxes: ensemble de fonctions (fichiers .m) développées pour des
domaines d’applications spécifiques;
• SIMULINK: extension graphique interactive de MATLAB. Le plus
répandu des outils de conception de systèmes.
Prise en main de MATLAB

Introduction
Prise en main de MATLAB

Installation et démarrage
• MATLAB doit être installé comme indiqué dans le manuel utilisateur (MATLAB
User’s Guide)
• Pour lancer l’exécution de MATLAB :
- Sous Windows, il faut effectuer un double clic sur l’icône de MATLAB
- Sous d’autres systèmes, se référer au manuel d’installation.
L’invite >> de MATLAB doit alors apparaître, à la suite duquel vous entrez les
commandes.
• Au démarrage, le logiciel ouvre une fenêtre principale divisée en quatre sous-
fenêtres :
• Current Folder : gère l’emplacement des fichiers. Celui-ci sera utile pour le
travail avec les m-files.
• Command Window : fenêtre d’interaction avec Matlab.
• Workspace : fenêtre qui permet de gérer les variables utilisées.
• Command History.
Prise en main de MATLAB
Prise en main de MATLAB

Fonctionnement
Mode Interactif : Les instructions sont exécutées au fur et à mesure qu’elles
sont entrées par l’utilisateur.
Mode programme : Matlab exécute, ligne par ligne, les instructions d’un
fichier .m
Type de variables : unique c’est la matrice, pas de déclaration de types, de
même, l’utilisateur ne s’occupe pas de l’allocation
mémoire
Prise en main de MATLAB

L’espace de travail: le Workspace


La fenêtre de commande
Prise en main de MATLAB

L’espace de travail
Gérer les accès fichiers
>> pathtool
Prise en main de MATLAB

Commandes et calculs de base


• On dispose des opérations arithmétiques et d’un ensemble important de
fonctions de calcul numérique et visualisation graphiques

• Dans MATLAB, on trouve des constantes pré-définies:

pi : 3.14159265358979
eps : 2.2204e-16 (distance entre 1.0 et le flottant le plus proche)
Inf : (Infinite) nombre infini
NaN : (Not a Number) n’est pas un nombre, exprime parfois une
indétermination
ans : variable contenant la dernière réponse
Prise en main de MATLAB

Commandes et calculs de base


>> pi
ans =
3.1416

>> cos(pi/3)
ans =
0.5000

>> log(1.5)
ans =
0.4055

>> j^2
ans =
-1
Prise en main de MATLAB

Gestion des variables


Déclarer des variables
>> x=12.5;
>> y=[1 -5 0 2];
- définies et dimensionnées automatiquement au fur et à mesure de leur
déclaration:
- stockées dans l’espace de travail

Supprimer une (ou toutes les) variable(s)


>> clear x
>> clear all

Entrer une valeur au clavier


>> x=input('valeur de x=')
valeur de x=12
x=
12
Prise en main de MATLAB

Gestion des variables


Afficher un texte à l’écran:
>> disp('ceci est un test')
ceci est un test

>> disp(['x vaut ', num2str(x)])


x vaut 12

S’informer sur les


variables
>> who
>>whos
Prise en main de MATLAB

Historique des commandes


Matlab garde en mémoire les dernières commandes effectuées.
• Elles sont visibles dans l’onglet Command History.
• On peut également y accéder directement dans la Command Window au
moyen des touches [↑] et [↓]. Ceci est particulièrement utile pour répéter la
dernière commande.
Prise en main de MATLAB

Sauvegarde
Le Workspace : On peut sauver l’état de la session en cours dans un
fichier .mat. Pour cela, dans la barre d’outils, dans l’onglet Variable cliquer sur
Save Workspace, et vous choisissez l’emplacement et le nom de votre fichier.
Matlab sauvegarde ainsi le nom et la valeur de chacune des variables. La
prochaine fois que vous utilisez Matlab, au moyen de l’onglet File /Open vous
retrouvez le Workspace dans l’état dans lequel vous l’avez laissé.

Les m-files : Il s’agit d’un fichier dans lequel on regroupe des commandes.
C’est très utile pour aborder des problèmes plus complexes et éviter de
retaper les mêmes commandes plusieurs fois.
Prise en main de MATLAB

L’aide sous MATLAB


Comme tout logiciel fonctionnant sous Windows, Matlab possède une base de
données d’aide. Pour obtenir de l’information vous pouvez :
- Cliquer sur l’icône d’aide
- Choisir l’option Documentation du menu Help.

>> doc
>> help nom de commande: fournit de
l’aide sur l’utilisation de la commande

>> lookfor mot-clé: fournit la liste des


fonctions contenant le mot-clé
Les vecteurs et matrices

Les types de données


Les 4 types de données MATLAB:
Les trois principaux types de variables utilisés par MATLAB sont les types réel, complexe et
chaîne de caractères. Il n'y a pas de type entier proprement dit. Le type logique est associé
au résultat de certaines fonctions. Le type est établi automatiquement à partir des valeurs
affectées à la variable. Par exemple :

>> clear all


>> x = 2; z = 2+i; rep = 'oui';
>> whos
Name Size Bytes Class Attributes
rep 1x3 6 char array
x 1x1 8 double array
z 1x1 16 double array complex
Les vecteurs et matrices
Les types de données (2)
Grâce aux commandes ischar, islogical et isreal.
ischar(x) retourne 1 si x est de type chaîne de caractères et 0 sinon.
islogical(x) retourne 1 si x est de type logique et 0 sinon.
>> ischar(rep)
ans =
1
>> ischar(x)
ans =
0
>> isreal(z)
ans =
0
>> isreal(x)
ans =
1
>> isreal(rep)
ans =
1
Les vecteurs et matrices
Les types de données (3): complexe
L'unité imaginaire est désignée par i ou j.
Les nombres complexes peuvent être écrits sous forme cartésienne a+ib ou sous forme polaire r eit.
Les différentes écritures possibles sont a+i*b, a+b*i, a+bi et r*exp(ti) ou r*exp(i*t) avec a, b, r et t des
variables de type réel.
Les commandes imag, real, abs, angle permettent de passer aisément de la forme polaire à la forme
cartésienne et réciproquement.
On se méfiera donc des boucles d'indices i et j dans lesquelles on manipule des variables de
type complexe.

>> z = [1+i, 2, 3i]


z=
1.0000 + 1.0000i 2.0000 0 + 3.0000i
>> y = [1+i, 2, 3 i]
y=
1.0000 + 1.0000i 2.0000 3.0000 0 + 1.0000i
>>
Les vecteurs et matrices
Les types de données (4): chaîne de caractères
Une chaîne de caractères est un tableau de caractères. Une donnée de type chaîne de caractères (char)
est représentée sous la forme d'une suite de caractères encadrée d'apostrophes simples ('). Une
variable de type chaîne de caractères étant interprétée comme un tableau de caractères, il est possible
de manipuler chaque lettre de la chaîne en faisant référence à sa position dans la chaîne. La
concaténation de chaînes de caractères s'effectue selon les règles de manipulation des tableaux,

>> ch1 = 'bon' >> ch=[ch1, ch2]


ch1 = ch =
bon bonjour
>> ch2 = 'jour' >> ch(1), ch(7), ch(1:3)
ch2 = ans =
jour b
>> whos ans =
Name Size Bytes Class r
ch1 1x3 6 char array ans =
ch2 1x4 8 char array bon
Les vecteurs et matrices
Les types de données (4): chaîne de caractères
Si une chaîne de caractères doit contenir le caractère apostrophe (') celui-ci doit être doublé dans la
chaîne (ainsi pour affecter le caractère apostrophe (') à une variable on devra écrire '''', soit 4
apostrophes.
>> rep = 'aujourd'hui'
??? rep = 'aujourd'hui'
|
Error: Missing operator, comma, or semicolon.
>> rep = 'aujourd''hui'
rep =
aujourd'hui
>> apos = ''''
apos =
'
La chaîne de caractères vide s'obtient par 2 apostrophes ''.
La commande isempty permet de tester si une variables de type chaîne de caractères est vide ou non.
La commande strcmp permet de tester si deux chaines de caractères sont égales ou non.
Les vecteurs et matrices

Les types de données (5): logiques


• Le type logique possède 2 formes: 0 pour faux et 1 pour vrai.
• Un résultat de type logique est retourné par certaines fonctions ou dans le cas de certains tests.

>> x = 123; y = exp(log(x));


>> tst = ( x==y );
>> if tst, disp('x est egal a y '), else disp('x est
different de y '), end
x est different de y
>> whos
Name Size Bytes Class
tst 1x1 1 logical array
x 1x1 8 double array
y 1x1 8 double array
Les vecteurs et matrices

Les vecteurs (1)


• On définit un vecteur ligne en donnant la liste de ses éléments entre crochets ([ ]).
• Les éléments sont séparés au choix par des espaces ou par des virgules.

• On définit un vecteur colonne en donnant la liste de ses éléments séparés au choix par des points

virgules (;) ou par des retours chariots (touche Entrée/Enter).

• On peut transformer un vecteur ligne x en un vecteur colonne et réciproquement en tapant x'

(' est le symbole de transposition).

• La longueur d'un vecteur donné grâce à la commande length.

• Un vecteur peut également être défini << par blocs >>


Les vecteurs et matrices

Les vecteurs (2)


>> x1 = [1 2 3], x2 = [4,5,6,7], x3 = [8; 9; 10] >> length(x2), length(x3)
x1 = ans =
1 2 3 4
x2 = ans =
4 5 6 7 3
x3 = > whos
8 Name Size Bytes Class
9 ans 1x1 8 double array
10 x1 1x3 24 double array
>> x3' x2 1x4 32 double array
ans =
8 9 10 x3 3x1 24 double array
>> X = [x1 x2 x3']
X=
1 2 3 4 5 6 7 8 9 10
Les vecteurs et matrices

Les vecteurs (3)


• Les éléments d'un vecteur peuvent être manipulés grâce à leur indice dans le tableau.
• Le k-ième élément du vecteur x est désignée par x(k).
• Le premier élément d'un vecteur a obligatoirement pour indice 1.
• Il est possible de manipuler plusieurs éléments d'un vecteur simultanément. Ainsi les éléments k à l
du vecteur x sont désignés par x(k:l). On peut également manipuler facilement les éléments d'un
vecteur dont les indices sont en progression arithmétique. Si, on souhaite extraire les éléments k,
k+p, k+2p,..., k+Np = l, on écrira x(k:p:l). >> X
X=
1 2 3 4 5 6 7 8 9 10
>> X(4:10)
ans =
4 5 6 7 8 9 10
>> X(2:2:10)
ans =
2 4 6 8 10
>> K = [1 3 4 6]; X(K)
ans =
1 3 4 6
Les vecteurs et matrices

Les vecteurs (4)


• Il est très facile de définir un vecteur dont les composantes forment une suite arithmétique.
• La commande linspace permet de définir un vecteur x de longueur N dont les composantes
forment une suite arithmétique de premier terme a et de dernier terme b (donc de raison (b-a)/N-1 ).
• Les composantes du vecteur sont donc linéairement espacés.
• La syntaxe est x = linspace(a,b,N).

>> x = 1.1:0.2:2
x=
1.1000 1.3000 1.5000 1.7000 1.9000
>> x = linspace(1.1,1.9,9)
x=
Columns 1 through 7
1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000
Columns 8 through 9
1.8000 1.9000
Les vecteurs et matrices

Les vecteurs (5): Vecteurs spéciaux


Les commandes ones, zeros et rand permettent de définir des vecteurs dont les éléments ont

respectivement pour valeurs 0, 1 et des nombres générés de manière aléatoire.

ones(1,n): vecteur ligne de longueur n dont tous les éléments valent 1

ones(m,1): vecteur colonne de longueur m dont tous les éléments valent 1

zeros(1,n) : vecteur ligne de longueur n dont tous les éléments valent 0

zeros(m,1): vecteur colonne de longueur m dont tous les éléments valent 0

rand(1,n): vecteur ligne de longueur n dont les éléments sont générés de manière aléatoire entre

0 et 1

rand(m,1): vecteur colonne de longueur m dont les éléments sont générés de manière aléatoire

entre 0 et 1
Les vecteurs et matrices

Les matrices (1)


Pour définir la matrice en tapant A = [ 1 3; 4 2 ].

D'une façon générale, on définit une matrice en donnant la liste de ses éléments entre crochets.

Signalons que MATLAB admet d'autres façons d'écrire les matrices. Les éléments d'une ligne de la

matrice peuvent être séparés au choix par un blanc ou bien par une virgule (,). Les lignes quant à

elles peuvent être séparées au choix par le point-virgule (;) ou par un retour chariot.
>> A = [1,3;4,2]
A=
1 3 Sous MATLAB le premier
4 2 indice d’un tableau est 1
>> A = [1 3
4 2]
A=
1 3
4 2
Les vecteurs et matrices

Les matrices (2)


Un élément d'une matrice est référencé par ses numéros de ligne et de colonne. A(i,j) désigne le j-

ième élément de la i-ième ligne de la matrice A. Ainsi A(2,1) désigne le premier élément de la

deuxième ligne de A, >> A(2,1)


ans =
4

• La commande size permet d'obtenir les dimensions d'une matrice A donnée.

• Le nombre m de lignes et le nombre n de colonnes est obtenu par l'instruction [m,n] = size(A).

• On peut construire une matrice << par blocs >> . Si A, B, C, D désignent 4 matrices (aux

dimensions compatibles), on définit la matrice bloc,

par l'instruction K = [A B ; C D]
Les vecteurs et matrices

Les matrices (3)


Voici un exemple de construction par blocs de la matrice
>> A11 = [35 1 6; 3 32 7; 31 9 2]; >> B12 = [ 24 25 20 15 16]';
>> A12 = [26 19; 21 23; 22 27]; >> B = [ B11 B12];
>> A21 = [ 8 28 33; 30 5 34]; >> B21 = [ 4 36 29 13 18 11];
>> A22 = [17 10; 12 14]; >> B = [ B ; B21]
>> B11 = [ A11 A12; A21 A22 ] B=
B11 = 35 1 6 26 19 24
35 1 6 26 19 3 32 7 21 23 25
3 32 7 21 23 31 9 2 22 27 20
31 9 2 22 27 8 28 33 17 10 15
8 28 33 17 10 30 5 34 12 14 16
30 5 34 12 14 4 36 29 13 18 11
Les vecteurs et matrices

Les matrices (4): Matrices spéciales


Certaines matrices se construisent très simplement grâce à des commandes dédiées.
eye(n): la matrice identité de dimension n
ones(m,n): la matrice à m lignes et n colonnes dont tous les éléments valent 1
zeros(m,n): la matrice à m lignes et n colonnes dont tous les éléments valent 0
rand(m,n): une matrice à m lignes et n colonnes dont les éléments sont générés de manière
aléatoire entre 0 et 1
Si les entiers m et n sont égaux on peut se contenter de ne spécifier qu'une seule valeur de
dimension: ones(n). La commande magic(n) qui permet d'obtenir une matrice magique de dimension
n.
>> eye(3) >> zeros(2) >> magic(6)
ans = ans = ans =
1 0 0 35 1 6 26 19 24
0 1 0 0 0
0 0 3 32 7 21 23 25
0 0 1
>> ones(3,2) >> rand(2,3) 31 9 2 22 27 20
ans = 8 28 33 17 10 15
ans =
1 1
0.6154 0.9218 0.1763 30 5 34 12 14 16
1 1
1 1 0.7919 0.7382 0.4057 4 36 29 13 18 11
Les vecteurs et matrices
Les matrices (5): Manipuler des matrices
Le symbole deux-points (:) permet d'extraire simplement des lignes ou des colonnes d'une matrice.
Le j-eme vecteur colonne de la matrice A est désigné par A(:,j).
A(j, :) désigne la j-eme ligne de la matrice A.

>> A = magic(5)
Si l'on souhaite échanger les colonnes 2 et 3 de la matrice A une
A=
17 24 1 8 15
première possibilité consiste à exécuter:
23 5 7 14 16
> v = A(:,2); A(:,2) = A(:,3); A(:,3) = v;
4 6 13 20 22
10 12 19 21 3 >> A
11 18 25 2 9 A=
>> A(1,:)
17 1 24 8 15
ans =
17 24 1 8 15 23 7 5 14 16
>> A(:,2) 4 13 6 20 22
ans = 10 19 12 21 3
24
5 11 25 18 2 9
6
12
18
Les vecteurs et matrices
Les matrices (6): Manipuler des matrices
Possibilité de n'extraire qu'une partie des éléments des lignes et colonnes d'une matrice. Si L et C
sont deux vecteurs d'indices, A(L,C)désigne la matrice issue de la matrice A dont les éléments sont
les A(i,j) tels que i soit dans L et j soit dans C.

>> A = magic(5)
A=
Seconde possibilité pour échanger les colonnes 2 et 3 de la matrice A
17 24 1 8 15 consiste à exécuter:
23 5 7 14 16
4 6 13 20 22 J = [1 3 2 4 5]; A = A(:,J)
10 12 19 21 3
A=
11 18 25 2 9
>> L=[1 3 5]; C=[3 4]; 17 1 24 8 15
>> A(L,C)
ans = 23 7 5 14 16
1 8 4 13 6 20 22
13 20
25 2 10 19 12 21 3
>> A(1:2:5,3:4) 11 25 18 2 9
ans =
1 8
13 20
25 2
Les vecteurs et matrices
Les matrices (7): Manipuler des matrices
Il existe des commandes MATLAB permettant de manipuler globalement des matrices.
v=diag(A) : vecteur composé des éléments diagonaux de A.
A=diag(v) : matrice diagonale dont la diagonale est v.

>> A=eye(3); diag(A) La commande diag admet un second paramètre k pour désigner la k
ans = sur-diagonale (si k>0) ou la k sous-diagonale (si k<0).
1
1 >> A = [4 5 6 7 ; 3 4 5 6 >> diag(A,1)
1 2 3 4 5; 1 2 3 4] ans =
>> v=[1:3] A= 5
v= 4 5 6 7 5
1 2 3 3 4 5 6 5
>> diag(v) 2 3 4 5 >> diag(A,-2)
ans = 1 2 3 4 ans =
1 0 0
2
0 2 0
2
0 0 3
Les vecteurs et matrices

Les matrices (8): Manipuler des matrices


• La commande diag permet de construire des matrices diagonales .
• La commande tril permet d'obtenir la partie triangulaire inférieure (l pour lower) d'une matrice.
• La commande triu permet d'obtenir la partie triangulaire supérieure (u pour upper) d'une matrice.

> N=5; >> A = [ 2 1 1 ; -1 2 1 ; -1 -1 2]


A=diag(2*ones(N,1)) - diag(ones(N-1,1),1) - diag(ones(N-1,1),-1) A=
A= 2 1 1
-1 2 1
2 -1 0 0 0
-1 -1 2
-1 2 -1 0 0 >> triu(A)
0 -1 2 -1 0 ans =
0 0 -1 2 -1 2 1 1
0 0 0 -1 2 0 2 1
0 0 2
>> tril(A)
ans =
2 0 0
-1 2 0
-1 -1 2
Les vecteurs et matrices

Les matrices (9): Manipuler des matrices


• La commande diag permet de construire des matrices diagonales .
• La commande tril permet d'obtenir la partie triangulaire inférieure (l pour lower) d'une matrice.
• La commande triu permet d'obtenir la partie triangulaire supérieure (u pour upper) d'une matrice.
> N=5; >> A = [ 2 1 1 ; -1 2 1 ; -1 -1 2]
A=diag(2*ones(N,1)) - diag(ones(N-1,1),1) - diag(ones(N-1,1),-1) A=
A= 2 1 1
-1 2 1
2 -1 0 0 0
-1 -1 2
-1 2 -1 0 0 >> triu(A)
0 -1 2 -1 0 ans =
2 1 1
0 0 -1 2 -1
0 2 1
0 0 0 -1 2 0 0 2
Les commandes triu et tril admettent un second >> tril(A)
paramètre k. On peut ainsi obtenir la partie triangulaire ans =
supérieure (ou inférieure) à partir de la k diagonale. 2 0 0
!"#$%&'()* , !"#$%&')* -1 2 0
A' permet d’obtenir la transposée de la matrice A. Si la -1 -1 2
matrice est à coefficients complexes, A' retourne la
matrice adjointe de A.
Les vecteurs et matrices

Les matrices (10): La structure sparse


• matrice creuse ( sparse matrix ): matrice comportant une forte proportion de coefficients nuls.
De nombreux problèmes issus de la physique conduisent à l'analyse de systèmes linéaires à
matrice creuse. L'intérêt de telles matrices résulte non seulement de la réduction de la place
mémoire (on ne stocke pas les zéros) mais aussi de la réduction du nombre d'opérations (on
n'effectuera pas les opérations portant sur les zéros).
• La commande sparse(M) permet d'obtenir la même matrice mais stockée sous la forme sparse.
• La commande full permet d’obtenir la même matrice stockée sous la forme ordinaire
• La commande spy permet de visualiser graphiquement la structure d'une matrice
• La commande nnz permet d'obtenir le nombre d'éléments non-nuls d'une matrice
>> N=5; >> B=sparse(A)
>> A=diag(2*ones(N,1)) - diag(ones(N-1,1),1) - diag(ones(N-1,1),-1) B=
A= (1,1) 2
(2,1) -1
2 -1 0 0 0 (1,2) -1
-1 2 -1 0 0 (2,2) 2
0 -1 2 -1 0 (3,2) -1
(2,3) -1
0 0 -1 2 -1 (3,3) 2
0 0 0 -1 2 (4,3) -1
>> nnz(A) (3,4) -1
(4,4) 2
ans = (5,4) -1
13 (4,5) -1
(5,5) 2
Calculer avec MATLAB

Les constantes >> pi=0; cos(pi)


ans =
Les principales constantes sont: 1
>> clear pi
>> cos(pi)
3.1415926535897 : 3.1415926535897 ans =
i : i2 = - 1
j : j2 = - 1 -1
eps : précision numérique relative 2.2204e-016
realmin : plus petit nombre à virgule flottante manipulable 2.2251e-308
realmax : plus grand nombre à virgule flottante manipulable 1.7977e+308
inf : infini. Est obtenu quand on essaie d'évaluer une expression dont le résultat
excède realmax
NaN : not-a-number. Est obtenu quand on essaie d'effectuer une opération non-
définie comme 0/0

On fera attention, si l'on utilise le type complex, à ne pas écrire de boucles ayant i ou j comme indices.
Pour que l'identificateur fasse à nouveau référence à la constante MATLAB, il suffit de supprimer la
variable de même nom de la mémoire par la commande clear.
Calculer avec MATLAB

Opérations et fonctions portant sur les scalaires


• Si x et y sont deux variables scalaires(réel ou complexe), x+y, x-y, x*y et x/y désignent les 4
opérations usuelles. L'exponentiation s'obtient grâce au symbole ^ (la syntaxe est x^y).
• La commande rem donne le reste de la division entière de deux entiers (la syntaxe est rem(m,n)).
• Les commandes lcm(m,n) et gcd(m,n) retournent respectivement le plus petit multiple commun et le
plus grand commun diviseur à deux entiers m et n.
• La commande factor(n) permet d'obtenir les termes de la décomposition en facteurs premiers de
l'entier n.
• Les fonctions mathématiques incorporées sont:
log(x) : logarithme néperien de x,
log10(x) : logarithme en base 10 de x,
exp(x) : exponentielle de x,
sqrt(x) : racine carrée de x (s'obtient aussi par x.^0.5),
abs(x) : valeur absolue de x,
sign(x) : fonction valant 1 si x est positif ou nul et 0 sinon
Calculer avec MATLAB

Opérations et fonctions portant sur les scalaires


Lorsque la fonction est définie sur le corps des nombres complexes l'argument peut être de
type complexe. On dispose également de fonctions spécifiques aux complexes

Les fonctions d'arrondis sont:


conj(z): le conjugué de z,
round(x) : entier le plus proche de x,
abs(z) : le module de z,
angle(z) : argument de z, floor(x) : arrondi par défaut,

real(z): partie réelle de z, ceil(x) : arrondi par excès,


imag(z): partie imaginaire
fix(x) : arrondi par défaut un réel positif
de z.
et par excès un réel négatif.
Calculer avec MATLAB

Opérations et fonctions portant sur les vecteurs


• Si k est une variable scalaire et x un vecteur, l'instruction k*x multiplie tous les éléments de x par k.
• Si x et y sont deux vecteurs de longueur identique, l'instruction z = x+y définit le vecteur z dont les
éléments sont z(i) = x(i) + y(i).
• L’instruction z = x.*y (respectivement z = x./y) donne un vecteur dont la i-eme composante est le
produit (respectivement le quotient) de la i-eme composante du vecteur x par la i-eme composante du
vecteur y.
• La commande cross(x,y) permet de calculer le produit vectoriel des deux vecteurs x et y. La
commande sum(x.*y) et dot(x,y) permet de calculer le produit scalaire des deux vecteurs x et y.

>> x = [1:10:100]; y=sqrt(x)


y=
Columns 1 through 7
1.0000 3.3166 4.5826 5.5678 6.4031 7.1414 7.8102
Columns 8 through 10
8.4261 9.0000 9.5394
Calculer avec MATLAB

Opérations et fonctions portant sur les vecteurs


Il existe également quelques fonctions spécifiques aux >> x=[3 1 2];
vecteurs:
sum(x) somme des éléments du vecteur x,
>> sum(x)
ans =
:prod(x) : produit des éléments du vecteur x, 6
>> prod(x)
max(x) plus grand élément du vecteur x, ans =
:min(x) 6
plus petit élément du vecteur x,
>> max(x)
:mean(x) moyenne des éléments du vecteur x, ans =
:sort(x) ordonne les éléments du vecteur x par ordre
3
>> min(x)
:fliplr(x) croissant,
échange la position des éléments du vecteur x. ans =
: 1
• all(v) retourne vrai (1) si tous les éléments du vecteur sont >> sort(x)
ans =
différents de 0 et faux (0) si au moins un élément vaut 0.
1 2 3
• any(v) retourne vrai (1) si au moins un élément du vecteur est >> fliplr(x)
différent de 0 et faux (0) si le vecteur est composé exclusivement ans =
de 0. 2 1 3
Calculer avec MATLAB

Opérations et fonctions portant sur les matrices


• A*B : le produit de la matrice A par la matrice B, >> A=[1 2 3; 4 5 6]
A=
• A+B : la somme de ces deux matrices
1 2 3
• A^2 le carré de la matrice A. 4 5 6
• Si les dimensions des matrices A et B sont incompatibles avec >> B = [1 1; 2 2; 3 3]
B=
l'opération matricielle, MATLAB renvoi un message d'erreur 1 1
• Possibilité d'effectuer des opérations entre matrices <<élément 2 2
par élément>>. Pour cela, il faut faire précéder l'opérateur d'un 3 3
>> C = A*B
point (.). C=
• A.*B: (A et B sont de même dimension), on obtient la matrice 14 14
dont le terme d'indices (i,j) est le produit des deux termes 32 32
>> C^2
d'indices (i,j) des matrices A et B. ans =
• A.^2: fournit la matrice dont les termes sont les carrés des 644 644
termes de la matrice A. 1472 1472
>> A+B
• A.+B et A+B donnent le même résultat. ??? Error using ==> +
Matrix dimensions must
agree.
Calculer avec MATLAB

Opérations et fonctions portant sur les matrices


Les fonctions matricielles les plus courantes sont:
det(A) renvoie le déterminant de la matrice carrée A.
eig(A) les valeurs propres (eigenvalues) de la matrice carrée A. [V,D] = eig(A)
renvoie une matrice diagonale D formée des valeurs propres de A et une
matrice V dont les vecteurs colonnes sont les vecteurs propres correspondant.
poly(A) renvoie les coefficients du polynôme caractéristique associé à la matrice
inv(A) carrée
renvoieA.l'inverse de la matrice carrée A.
rank(A) renvoie le rang de la matrice carrée A.
trace(A) renvoie la trace de la matrice A.
expm(A) renvoie l'exponentielle matricielle de A.
norm(A) renvoie la norme 2 de la matrice A.
norm(A,2) même chose que norm(A).
norm(A,1) norme 1 de la matrice A,
norm(A,inf) norme infini de la matrice A,
norm(A,'fr') norme de Frobenius de la matrice A,
Graphisme
Courbes dans le plan
Etant donné deux vecteurs de même taille, x et y, la fonction plot(x,y)
trace le graphe de y en fonction de x. En fait Matlab relie les points de
coordonnées (x(k),y(k)) pour 1 ≤ k ≤ length(x). En prenant un grand
nombre de points dans le vecteur x et en définissant ensuite y = f(x)
pour une certaine fonction f, la fonction plot(x,y) nous donnera le
graphe de la fonction f.

>> x=[0:0.01:4*pi];
>> y=sin(x);
>> plot(x,y)
Graphisme
Courbes dans le plan
Pour tracer deux graphes, Matlab propose plusieurs méthodes suivant si l’on
désire que les courbes apparaissent dans une ou plusieurs fenêtres. Pour voir
les graphiques sur deux fenêtres, il suffit de dire à Matlab de construire une
nouvelle fenêtre avec la commande figure.
>> z=cos(x);
>> plot(x,y)
>> figure
>> plot(x,z)

Pour avoir les deux courbes dans la même fenêtre, il existe deux méthodes
équivalentes :
soit avec les commandes hold on et hold off,
>> hold on, plot(x,y), plot(x,z), hold off
soit en donnant plus de paramètres à la commande plot.
>> plot(x,y,x,z)
Graphisme
Courbes dans le plan
▪ Options de la commande plot

Les options de la commande plot permettent de personnaliser les


graphiques. On présente quelques réglages que l’on peut faire sur l’affichage
des graphiques. La commande help plot donne plus de détails. (voir xlabel,
ylabel, title, grid).

On peut commencer par régler les axes. Deux options intéressantes sont axis
equal et axis off. La première met la même échelle sur les deux axes et la
deuxième supprime les axes. On peut également combiner les deux.

>> plot(x,y), axis equal


>> plot(x,y), axis equal off
Graphisme
Courbes dans le plan
▪ Options de la commande plot

Les couleurs et le style du tracé peuvent également être modifiés. Pour cela,
il suffit d’ajouter à plot une chaîne de caractères spécifiant le style ; voir help
plot pour toutes les possibilités.

>> x=[0:0.1:4*pi];
>> y=sin(x);
>> z=cos(x);
>> plot(x,y,'ro',x,z,'b*')
Graphisme
Courbes dans le plan
▪Graphes multiples dans une même figure (subplot)
1 2
20 4.5

>> x=1:1:20; 15
4

>> y=x.^0.5; 3.5

3
>> z=x.^2; 10
2.5

>> w=x.^1.5; 5
2

>> subplot(2,2,1);plot(x,x);title('1') 1.5

>> subplot(2,2,2);plot(x,y);title('2')
0 1
0 5 10 15 20 0 5 10 15 20

>> subplot(2,2,3);plot(x,z);title('3') 3 4
>> subplot(2,2,4);plot(x,w);title('4') 400 100

80
300

60
200
40

100
20

0 0
0 5 10 15 20 0 5 10 15 20
10 3

5 2

0 1

Graphisme
0 5 10 15 20 0 5 10 15 20

courbe 3 courbe 4
400 100

Courbes dans le plan 300

200 50

▪Fonctions de graphisme 100

0 0
MATALB fourni d’autres fonctions 0
de
5
graphisme
10 15 20
2D0
adaptées
5 10 15
à 20des cas de tracés spécifiques.
On reporte ici quelques unesd autres
MATALB fourni d’elles : de graphisme D adaptées à des cas de tracés spécifiques.
fonctions
On reporte ici quelques unes d elles

semilogx échelle logarithmique pour l axe des x


semilogy échelle logarithmique pour l axe des
loglog échelle logarithmique pour les deux axes
area trace la courbe avec une aire au dessous
errorbar trace la courbe avec des barres d erreurs
line trace une ligne dans les axes courants (2D & 3D)
bar trace les valeurs en barres vert. ou horiz.
hist pour les histogrammes
pie pour les tracés en secteurs (portions)
stairs tracé en escalier pour les fonctions discrètes
stem Tracé d une séquence discrète

Tracé de fonctions
fplot permet de tracer la courbe d'une fonction y = f(x) dont on spécifie l'expression sous
forme d'une chaîne de caractères 'f(x)'. Cette expression peut être remplacée par le nom
d'un fichier M (fichier de fonction) dans lequel est programmée la fonction f.
Graphisme
Courbes dans le plan
▪Tracé de fonctions : fplot
fplot permet de tracer la courbe d'une fonction y = f(x) dont on spécifie l'expression
sous forme d'une chaîne de caractères 'f(x)'.

fplot('expression', [xMin xMax])

La commande suivante permet de contrôler aussi l’axe des ordonnées :

fplot('expression', [xMin xMax yMIN yMAX])


Graphisme
Courbes dans le plan
▪Tracé de fonctions : fplot >> fplot('sin(2-x^2)', [-pi pi -1.2 1.2])
>> grid
>> fplot('sin(2-x^2)', [-pi pi -1.2
1.2])
>> title('Tracé de y = sin(2-x^2) avec fplot')
xlabel x dans l intervalle -\pi \pi]')
>> grid
>> title('Tracé de y = sin(2-x^2) avec fplot') Tracé de y = sin(2-x 2) avec fplot
>> xlabel('x dans l’intervalle [-\pi \pi]')
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1

-3 -2 -1 0 1 2 3
da l i e alle [- ]
Graphisme
Graphiques 3D
▪Les Courbes 3D
Pour la représentation des courbes tridimensionnelles, la fonction plot3 constitue
l’extension de plot.
Le tracé de la fonction z = (2 - x2 ) (2 - y2 ) sur la diagonale du carré [-2, 2]
s’obtient par :
>>x = [-2:0.1:2]; y = x; % définie la diagonale
>>z = (2-x.^2).*(2-y.^2); % évalue la fonction
>>plot3(x, y, zeros(1,length(x)), x, y, z, 'LineWidth',1.5)
>>grid on 4

>> xlabel('x')
3
>> ylabel('y')
>> zlabel('z') 2

z
1

0
2
1 -2
0 -1
0
-1 1
-2 2
y
x
2
1 -2
0 -1
0
-1 1

x
-2 2
Graphisme
y

Graphiques 3D
Les surfaces 3D
ans la▪Les surfaces
représentation 3D
tridimensionnelle des surfaces, les fonctions mesh et surf sont les
alogues de la fonction plot. Les surfaces sont définies dans MATLAB par trois matrices x,y,z
- Les
nt les fonctions
composantes sontmesh et surf sont
des coordonnées dans les analogues
l’espace deappartenant
des points la fonctionà laplot.
rface.- Les surfaces sont définies dans MATLAB par trois matrices x,y,z dont
les composantes
sont des coordonnées dans l’espace des points appartenant à la surface.
it l'exemple suivant d'une fonction à deux variables :
cos 𝑥 + 𝑦
▪Exemple : 𝑧 Pour x et y variant de -π à π avec un pas de π /10.
𝑥 +𝑦

ur x et y variant de -π à π avec un pas de π /10.

- On
n génère deuxgénère
matrices deux
carrées matrices carréesle X
X et Y qui définissent et Y qui
domaine définissent
de calcul le domaine de calcul de z, on
de z, on utilisera
utilisera
ur ceci pour
la fonction ceci laLafonction
meshgrid. fonction z meshgrid.
est ensuite évaluée et les données sont
ockées dans Z. On utilise ensuite la fonction mesh pour dessiner la surface représentative
la fonction.
- La fonction z est ensuite évaluée et les données sont stockées dans Z. On utilise
ensuite la fonction mesh pour dessiner la surface représentative de la fonction.
x = -pi:pi/10:pi;
y= x;
[X,Y]= meshgrid(x, y);
Z = cos(X.^2+Y.^2)./(X.^2+Y.^2);
mesh(X,Y,Z)
xlabel('angle x= -\pi : \pi')
Graphisme
Graphiques 3D
▪Les surfaces 3D (Exemple) cos(x2 +y 2 )/(x 2 +y 2 )

>> x = -pi:pi/10:pi;
>> y= x;
>> [X,Y]= meshgrid(x, y); 12

>> Z = cos(X.^2+Y.^2)./(X.^2+Y.^2);
10
>> mesh(X,Y,Z)
>> xlabel('angle x= -\pi : \pi')
8

>> ylabel('angle y= -\pi : \pi') 6

>> title('cos (x^2+y^2)/(x^2+y^2)')4


2

-2
4

2 4

0 2
0
-2
-2
angle y= - : -4 angle x= - :
-4
Les Polynômes
▪ Saisie d’un Polynôme
MATLAB représente un polynôme sous forme d'un tableau de ses coefficients classés dans
l'ordre des puissances décroissantes.
Le polynôme P(x) = x2−2x + 5, est représenté par le tableau à une dimension suivant :

>> P=[1 -2 5]

▪ Racines d’un Polynôme


On peut déterminer les racines des polynômes P à l'aide de la fonction roots.
>> roots(P)
ans =
1.0000 + 2.0000i 1.0000 - 2.0000i
Les Polynômes
▪ Evaluation d’un Polynôme
Pour évaluer un polynôme en un point, on utilise la fonction polyval.
Valeur du polynôme P en 1
>> polyval(P,1)
ans =
4
▪ Détermination d’un polynôme à partir de ses
racines
On peut aussi déterminer les coefficients d'un polynôme à partir de ses racines en
utilisant la fonction poly.
>> r=[1 2]
r=
1 2
>> Q=poly(r)
Q=
1 -3 2
Les Polynômes
▪ Représentation graphique
Pour tracer la représentation graphique du polynôme Q(x), définissons un domaine
pour la variable x qui contient les racines de Q.
Tracé de y = x 2 -3x+2
2
>> x = 0:0.1:3;
>> y = polyval(Q,x);
>> plot(x,y) 1.5
>> grid
>> title('Tracé de y = x^2-3x+2')
>> xlabel('x') 1
>> ylabel('y') y

0.5

-0.5
0 0.5 1 1.5 2 2.5 3
x
Les Polynômes
▪ Représentation graphique
La commande fplot :
Utilisée avec la commande polyval, la commande fplot permet de tracer le graphe
de la fonction polynômiale P sur un intervalle [xmin , xmax] donné.
La syntaxe de l'instruction est :

fplot(@(x) polyval(P,x), [x_min , x_max])


Les Polynômes
▪ Approximation polynomiale
La commande ployfit permet de calculer les coefficients du polynôme d’interpolation
de Lagrange associé à des points (x0,y0),...,(xn,yn), X = (x0,..., xn) et Y = (y0,..., yn) étant
donnés.
p = polyfit(X, Y, n) trouve le meilleur polynôme de degré n approchant les points X et Y
1.5

>>x = 0:0.1:3*pi ;
>>y = sin(x) ; 1

>>p = polyfit(x, y, 5)
>>plot(x,y)
>>hold on 0.5

>>xx = 0:0.001:3*pi ;
>>plot(xx, polyval(p,xx), ’r-’)
0

-0.5

-1
0 1 2 3 4 5 6 7 8 9 10
Les Polynômes
▪ Décomposition en éléments simples
La commande residue permet de faire une décomposition en éléments simples
d’une fraction polynomiale.
[r,p,k] = residue(b,a)
[b,a] = residue(r,p,k)

Exemple :
r = 2×1

-12
>>b = [-4 8];
8
>>a = [1 6 8];
>>[r,p,k] = residue(b,a)
p = 2×1

-4
-2
Ce qui représente la décomposition en éléments simples suivante :
k=

[]
Les entrées-sorties

Les formats d'affichage des réels MATLAB


Tous les calculs dans Matlab se font en double précision. Matlab affiche cependant les nombres de
la façon suivante :
- si tous les éléments d’une variable sont entiers, ils seront affichés en entiers;
- si un des éléments est un nombre fractionnaire, tous les éléments seront affichés dans un des
modes suivants :
format long : format long à 15 chiffres.
format short e : format court à 5 chiffres avec notation en virgule flottante.
format long e : format long à 15 chiffres avec notation en virgule flottante.
Matlab choisit automatiquement le mode le plus approprié, mais celui-ci peut être modifié avec la
commande format mode-de-format où mode-de-format peut prendre les valeurs dans le tableau
ci-haut. >> format short e
>> pi >> pi
ans = ans =
3.1416 3.1416e+000
>> format long >> format short g
>> pi >> pi
ans = ans =
3.14159265358979 3.1416
Les entrées-sorties

Affichage simple, la commande disp


La commande disp permet d'afficher un tableau de valeurs numériques ou de caractères. L'autre
façon d'afficher un tableau est de taper son nom. La commande disp se contente d'afficher le
tableau sans écrire le nom de la variable ce qui peut améliorer certaines présentations.
On utilise fréquemment la commande disp avec un tableau qui est une chaîne de caractères pour
afficher un message. Par exemple disp('Calcul du déterminant de la matrice A'). On utilise
également la commande disp pour afficher un résultat. Par exemple disp(['Le déterminant de la
matrice A vaut ', num2str(det(A))]). On remarque que l'usage de la commande disp est alors un peu
particulier. En effet un tableau doit être d'un type donné, les éléments d'un même tableau ne
peuvent donc être des chaînes de caractères et des valeurs numériques. On a donc recours à la
commande num2str (<< number to string >>) pour convertir une valeur numérique en une chaîne
de caractères. Par défaut la commande num2str affiche 4 décimales mais il est possible de lui
spécifier le nombre de décimales souhaité en second paramètre. De même il est possible de lui
spécifier un format d'affichage particulier de la valeur numérique; on consultera la documentation
MATLAB pour plus de détails. Attention, si la chaîne de caractères contient une apostrophe il est
impératif de doubler l'apostrophe.
Les entrées-sorties

Lecture
La commande input permet de demander à l'utilisateur d'un programme de fournir des données. La
syntaxe est var = input(' une phrase '). MATLAB attend que l'utilisateur saisisse une donnée au
clavier. Cette donnée peut être une valeur numérique ou une instruction MATLAB. Un retour chariot
provoque la fin de la saisie. Une valeur numérique est directement affectée à la variable var. Il est
possible de provoquer des sauts de ligne pour aérer le présentation en utilisant le symbole \n de la
manière suivante: var = input('\n une phrase : \n '). Pensez à mettre un point virgule (;) à la fin de
l'instruction si vous ne souhaitez pas voir s'afficher var = . Sous cette forme il est impossible d'avoir
une donnée de type chaîne de caractères dans la mesure où MATLAB essaie d'interpréter cette
chaîne de caractères comme une instruction. Si l'on souhaite saisir une réponse de type chaîne de
caractères on utilise la syntaxe var = input(' une phrase ','s'). Signalons qu'un retour chariot (sans
autre chose) initialise la variable var au tableau vide [].
> rep = input(' Affichage du resultat ? o/n [o] ','s');
if isempty(rep), rep = 'o'; end
if rep == 'o' | rep == 'y'
disp(['Le resultat vaut ', num2str(res)])
end
Affichage du resultat ? o/n [o] 0
>>
Les entrées-sorties

Impressions dirigées par format


La commande sprintf permet l'impression de variables selon un modèle donné. Un modèle d'édition

se présente sous la forme du symbole pourcent (%) suivi d'indications permettant de composer le

contenu du champ à imprimer, en particulier sa longueur en nombre de caractères. Le modèle

d'édition utilisé par MATLAB est le modèle d'édition du langage C. La syntaxe de la commande

sprintf est: sprintf(format, variables)

•variables est le nom des variables à imprimer suivant le modèle d'édition spécifié dans format;

•format est le format d'édition. Il s'agit d'une chaîne de caractères contenant les modèles d'éditions

des variables à imprimer


Les entrées-sorties

Impressions dirigées par format: Modèle d'édition de caractères


Un modèle d'édition de caractères est de la forme %Ls où % est le symbole de début de format et s
le symbole précisant que la donnée est de type chaîne de caractères. L est un entier donnant la
longueur total du champ (en nombre de caractères). Par défaut le champ est justifié à droite (si la
longueur de la chaîne de caractères est plus petite que la longueur L du champ, des espaces sont
insérés après la chaîne de caractères). Le symbole - (moins) juste après le symbole % permet de
justifier à gauche. En l'absence de l'entier L la longueur totale du champ est égale au nombre de
caractères de la chaîne.

>> sprintf('%s', 'il fera beau a Rabat') >> sprintf('%-30s', temps)


ans = ans =
il fera beau a Rabat
>> temps = 'il fera beau a Rabat'; il fera beau a Rabat
sprintf('%s',temps)
>> sprintf('meteo : %s', temps)
ans =
il fera beau a Rabat ans =
>> sprintf('%30s', temps) meteo : il fera beau a Rabat
ans =
il fera beau a Rabat >>
Les entrées-sorties

Impressions dirigées par format: Modèle d'édition des réels


Un modèle d'édition de réel est de la forme %+- L.D t, où % est le symbole de début de format, L est
un entier donnant la longueur total du champ (en nombre de caractères, point virgule compris), D est
le nombre de décimales à afficher et t spécifie le type de notation utilisée. Par défaut le champ est
justifié à droite (si la longueur de la variable est plus petite que la longueur du champ L, des espaces
sont insérés à gauche). Le symbole - (moins) permet de justifier à gauche. Le symbole + (plus)
provoque l'affichage systématique d'un signe + devant les réels positifs. Les principales valeurs
possibles pour t sont les suivantes
>> x = pi/3; y = sin(x);

d: pour les entiers sprintf('sin(%8.6f) = %4.2f', x,y)

e ; pour une notation à virgule flottante (ex: 3.1415e+00) ans =


E: même notation mais E remplace e (ex: 3.1415E+00) sin(1.047198) = 0.87
f: pour une notation à virgule fixe (ex: 3.1415) >> sprintf('sin(%8.6f) = %4.2E', x,y)
g: la notation la plus compacte entre la notation à virgule ans =
flottante et la notation à virgule fixe est utilisée sin(1.047198) = 8.66E-001
Les entrées-sorties

Impressions dirigées par format: Utilisations particulières


La commande sprintf est << vectorielle >> : si la variable n'est pas scalaire le format d'impression
est réutilisé pour tous les éléments du tableau, colonne par colonne.

> z =[]; x = [1:10]; for i=1:length(x), z = [z


Il est possible d'utiliser les symboles suivant dans les ,x(i), log(x(i))]; end;
chaînes de caractères: s = sprintf('%4.1f | %8.6E \n ', z )
\n: provoque le passage à une nouvelle ligne s=
\t: insère une tabulation horizontale 1.0 | 0.000000E+000
\b: décale l'impression du champ suivant d'un 2.0 | 6.931472E-001
3.0 | 1.098612E+000
caractère vers la gauche
4.0 | 1.386294E+000
\r : saut horizontal
5.0 | 1.609438E+000
Si l'on a besoin d'afficher le caractère % on le 6.0 | 1.791759E+000
doublera %% pour qu'il ne soit pas interprété comme 7.0 | 1.945910E+000
le début d'un format. La commande fprintf est
8.0 | 2.079442E+000
l'analogue de sprintf pour imprimer de variables selon
9.0 | 2.197225E+000
un modèle donné dans un fichier.
10.0 | 2.302585E+000
Les fichiers et la
programmation avec Matlab
▪ Fichiers de données
En plus des fichiers de données que l'on peut définir et utiliser par
programmation, dans MATLAB on trouve les fichiers MAT. Ce sont des
fichiers binaires (d'extension «mat» ) qui permettent de stocker et de
restituer des variables utilisées dans l'espace de travail. Ces opérations
sont réalisées respectivement par les commandes save et load.

Exemple :
On définit une variable t

On sauvegarde la variable t dans le fichier fic_t.mat,


Les fichiers et la
programmation avec Matlab
▪ Fichiers de données
Si on efface toutes les variables de la mémoire,

Matlab ne connait plus la variable t.

Si l'on charge le fichier fic_t, la variable t est de nouveau présente dans


l'espace de travail.
Les fichiers et la
programmation avec Matlab
▪ Fichiers de commandes et de fonctions
MATLAB peut exécuter une séquence d'instructions stockées dans un
fichier. Ce fichier est appelé fichier M (M-file).

La majorité de votre travail avec MATLAB sera liée à la manipulation de


ces fichiers. Il y a deux types de fichiers M : les fichiers de commandes
(fichiers scripts) et les fichiers de fonctions.
Les fichiers et la
programmation avec Matlab
▪ Fichiers de commandes et de fonctions
• Les fichiers de commandes (scripts)
Un fichier de commandes ou script est une séquence d'instructions
MATLAB. Les variables de ces fichiers sont locales à l'espace de
travail.

Les valeurs des variables de votre environnement de travail peuvent


être modifiées par les instructions des fichiers scripts.

Les fichiers de commandes (scripts) sont aussi utilisés pour la saisie


de données. Dans le cas de grandes matrices, l'utilisation de scripts
vous permet de corriger facilement et rapidement les erreurs de
saisie.

Un fichier script peut appeler un autre ou s'appeler lui même de


façon récursive.
Les fichiers et la
programmation avec Matlab
▪ Fichiers de commandes et de fonctions
• Les fichiers de commandes (scripts)
Exemple : Script stocké dans un fichier appelé courbe1.m, dont le
code permet de tracer la courbe de la fonction y = x2+5, sur
l'intervalle [-5, 5].
Les fichiers et la
programmation avec Matlab
▪ Fichiers de commandes et de fonctions
Les fichiers de commandes (scripts)
Pour exécuter un script, dans la fenêtre de commande de MATLAB, il
suffit de mettre son nom après le prompt ou de cliquer sur la flèche
verte de l’éditeur .

L'exécution de ce script permet


de tracer la courbe de parabole
suivante :
Les fichiers et la
programmation avec Matlab
▪ Fichiers de commandes et de fonctions
Fichiers de fonctions
Les fichiers fonctions fournissent une extensibilité à MATLAB. Vous
pouvez créer de nouvelles fonctions spécifiques à votre domaine de
travail qui auront le même statut que toutes les autres fonctions
MATLAB.
Les variables dans les fonctions sont par défaut locales, mais on peut
définir des variables globales.

Exemple de fichier fonction


Nous allons écrire une fonction pour générer un tableau de n nombres
aléatoires entiers compris entre 0 et une valeur maximale contenue
dans une variable notée max.
Les fichiers et la
programmation avec Matlab
▪ Fichiers de commandes et de fonctions
Fichiers de fonctions
fichier randint.m

Lorsqu’on sauvegarde ce programme, MATLAB propose de donner le même


nom que cette fonction. Il est préférable de garder ce nom. Cet exemple sera
ainsi stocké dans un fichier appelé randint.m.
Les fichiers et la
programmation avec Matlab
▪ Fichiers de commandes et de fonctions
Fichiers de fonctions
On peut remarquer que, contrairement aux langages classiques, les
fonctions MATLAB peuvent donner en retour plusieurs arguments et de
différents types.
Pour invoquer une fonction, il suffit de l'appeler suivant la syntaxe
suivante :

resultat = nom_fonction(liste des arguments d'appel)

L'exemple suivant génère un vecteur aléatoire d'entiers, nommé


"nb_alea", de longueur 10 et dont toutes les valeurs sont comprises
entre 0 et 50.
Les fichiers et la
programmation avec Matlab
Structures conditionnelles
▪ if - else if - else
if expression1 % est vraie
% exécute ces commandes
elseif expression2 % est vraie
% exécute ces commandes
else % par defaut
% exécute ces commandes
end
Les fichiers et la
programmation avec Matlab
Structures conditionnelles
▪ switch– case--otherwise

switch (expression)
case expression1, % est vraie
% exécute ces commandes
case expression2, % est vraie
% exécute ces commandes
otherwise, % par defaut
% exécute ces commandes
end
Les fichiers et la
programmation avec Matlab
Structures de contrôle
▪ Boucle for
for x = 1: 0.5 : 10
% exécute ces commandes
end

▪ Boucle while
while x <= 10
% exécute ces commandes
end

Vous aimerez peut-être aussi