Vous êtes sur la page 1sur 48

UE optionnelle

Atelier Logiciel MSM24 S1


Master SdI 1re anne
Cours du 11 / 09 / 2012

Fatiha Bouchelaghem (MCF UPMC)


fatiha.bouchelaghem@upmc.fr

Objectifs :
Utilisation du langage MATLAB (calcul et
lments de programmation) pour des
applications dingnirie mcanique;
Modlisation par Elments Finis interface
COMSOL MULTIPHYSICS/MATLAB;

Application la mcanique des structures.


8 h Cours + 24 h TP
2

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

Au programme :

MATLAB
Matlab = hyper-calculatrice

Affectation et manipulation de variables (scalaires/vecteurs/matrices), calcul


matriciel, rsolution de systmes linaires, EDP, utilisation dalgorithmes
scientifiques, analyse et trac de fonctions etc
Matlab : environnement de dveloppement
Programmation fichiers script et function ( M-files ) dfinis par lutilisateur:
variables, boucles, tests, etc
Matlab : modlisation, discrtisation par diffrence finies ou
lments finis
Gomtrie, maillage, conditions aux limites etc.

COMSOL
Modlisation lments finis 1D, 2D et 3D, interface Matlab
3

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

MATLAB

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

1. Introduction :
MATLAB = Matrix Laboratory
console dexcution (shell)
Logiciel commercial de calcul numrique matriciel, de
visualisation et de programmation (socit The Mathworks)

Elments de donnes de base : matrices


Le langage MATLAB est interprt, i.e. chaque expression
MATLAB est traduite en code machine au moment de son
excution. Un programme MATLAB (script, M-file) n'a donc pas
besoin d'tre compil avant d'tre excut.
5

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

1. Introduction :
Pourquoi utiliser MATLAB ?
- Syntaxe simple, facilit de prise en main, aide en ligne
- Interface graphique puissante, facilit pour tracer des figures
- A la diffrence de langages de programmation comme Fortran,
MATLAB, tant un langage interprt, est interactif : facilite
lcriture de programmes
- MATLAB est optimis pour le traitement des matrices :
rsolution de systmes linaires ou non (Diffrences finies,
Elments Finis), calcul de modes propres (vibrations),
optimisation
- Interface MATLAB/COMSOL pour le calcul aux Elments Finis
6

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

2. Lancer MATLAB
Interface Graphique Utilisateur (Graphical User Interface) :
Rpertoire courant

Workspace
(espace mmoire)
Contenu
du rpertoire
courant

>>

Invite de commande :

>> commande
rsultat (Affichage du rsultat)
>>
>> commande ; (Pas daffichage)
>>

Variables actives
(who, whos)

Historique
des
commandes
7

2. Lancer MATLAB
Rpertoires de travail: Matlab permet douvrir, de crer, et de modifier des fichiers.
Travail dans un rpertoire par dfaut quil est possible de modifier par la commande
>> cd {chemin}

Ou en lanant le path browser : File/ Set Path (ajout, dplacement, suppression de


rpertoires de travail)
pwd : print working directory et ls : list directory fonctionnent comme sous Unix

Aide en ligne:
Menu droulant Help ou icne

ou F1

>> help { nom_commande } ou helpwin { nom_commande } : description +


syntaxe de la commande : pour une commande connue, e.g. help zeros
>> doc { nom_commande } : affichage dans le menu daide (fentre spare)
>> helpdesk
>> lookfor { -all } mot-cl : pour trouver une commande, e.g. lookfor roots
8

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

3. Notions de base
Gnralits sur les variables :
-

Le langage MATLAB ne requiert aucune dclaration pralable de type de


variable (rel, entier, chane de caractre) ou de dimension de
tableau/vecteur ;

Lorsque Matlab rencontre un nouveau nom de variable, il cre la variable


correspondante et y associe l'espace de stockage appropri dans le
workspace ;

Allocation dynamique : si la variable existe dj, Matlab change son


contenu, et lui alloue un nouvel espace de stockage en cas de
redimensionnement de tableau ;

Les variables sont dfinies l'aide d'expressions: 3, 3+1,4*3, 4^3, 6/11

>> who ou whos {nom de variable} permet dobtenir des informations sur les variables
stockes en mmoire
9

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

3. Notions de base
Gnralits sur les variables (suite) :
- Nom de variable valide : lettre + nombre quelconque de lettres, chiffres ou _
Exemple : x_min, COEFF55a, tres_long_nom_de_variable
noms non valides : 86ab, coeff-555
>> namelengthmax

% Taille maximale du nom de variable

- Attention ! Matlab est "case-sensitive", majuscules minuscules dans les noms de


variables, fonctions ... : variable abc Abc
- Les noms de toutes les constantes et fonctions prdfinies MATLAB sont en
minuscules
- Pour dsigner un ensemble de variables, on peut utiliser * (remplace 0, 1 ou plusieurs
caractres quelconques) ou ? (remplace 1 caractre quelconque)

Exemple: clear mat*

% Dtruit toutes les variables dont le nom commence par mat


10

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

3. Notions de base
Types de nombres (rels, complexes, entiers) :
Rels : de faon interne, Matlab calcule et stocke par dfaut tous les nombres en virgule
flottante double precision (prcision finie de 16 chiffres dcimaux)
Exemple : 3, 123, -99, 0.000145, -1.6341e20, 4.521e-5

Entiers : les fonctions int8, int16, int32 et int64 gnrent des variables entires signes
stockes respectivement sur 8 bits, 16 bits, 32 bits ou 64 bits ;

- oprateurs ou fonctions mlangeant des oprandes/paramtres de types entier et


rel, retournent un rsultat de type entier !
Exemple : l'expression 13.3 * int64(12) retourne 160 au lieu de 159.60

11

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

3. Notions de base
Types de nombres (rels, complexes, entiers) :
Complexes : stocks sous forme de nombres rels double precision

Exemples : 4e-13 - 5.6i, -45+5*j % Partie imaginaire: on peut utiliser i ou j


Partie relle :

real(nb_complexe)

Partie imaginaire :

imag(nb_complexe)

Conjugu :

conj(nb_complexe)

Module :

abs(nb_complexe)

Argument :

angle(nb_complexe)

12

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

3. Notions de base
Chanes de caractres :
Dans Matlab, une chane est un vecteur-ligne contenant autant d'lments que de
caractres.
>> string = 'chane de caractres'
Enregistre la chane de caractres sur la variable string ( = vecteur-ligne). Si la chane
contient une apostrophe, il faut la ddoubler ( fin de chane)
Exemple : section = 'Sciences de l''Ingnieur

>> string(i:j)

: partie de string comprise entre le i-me et le j-me caractre

>> string(i : end ) ou string(i : length(string)) : fin de la chane partir du caractre i


Exemple : section(15:23) ou section(15:end) retourne la chane Ingnieur

>> helpwin strfun : liste des fonctions relatives aux chanes de caractres
sprintf permet dcrire du texte formatt;
num2str, str2num : conversion nombre chane de caractres
UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

13

3. Notions de base

Exemples et fonctions prdfinies utiles :


fichier CoursMatlab_exemples.m

14

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

4. Calcul matriciel
Scalaire : matrice de 1 x 1 lment
Exemples : a = 12.34e-12, w = 2^3, r = sqrt(a)*5, s = pi*r^2 , w = -5+4i, z = w

Quelques constantes scalaires prdfinies :


Constante

Description

pi

3.141592653589793 =

i ou j

Racine de -1 (sqrt(-1)) nombre imaginaire

Inf ou inf

Infini (exemple : 10/0)

NaN ou nan

Indtermin (exemple : 0/0)

realmin

Plus petit rel positif (double precision)

realmax

Plus grand rel positif (double precision)

eps

Prcision relative en virgule flottante

true ou 1

Vrai

false ou 0

Faux
15

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

4. Calcul matriciel
Affectation de vecteurs = matrice 1 x n (ligne) ou n x 1 (colonne)
- Vecteur ligne: vec = [val1 val2 val3 ...]
Exemple: v1=[1 -4 5]

ou

vec = [val, var, expr ...]

v2=[-3, sqrt(4)] v3=[v2 v1 -3]

- Vecteur colonne: vec =[val ; var ; expr ...] ou vec =[var val var val ...]
vec=[val1
val2
... ]
Exemple: v4=[-3;5;2*pi]

Transposition

v5=[11 ; v4]

v6=[3 4 5 6]'

Loprateur : permet de construire des sries progression gomtrique :


vec=[dbut{:pas}:fin]

% si pas non spcifi = 1 par dfaut

- Fonction prdfinie linspace(X1,X2,N) = vecteur de N points entre X1 et X2


16

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

4. Calcul matriciel
Adressage de vecteurs :
-

vec(i) : ime lment du vecteur ligne ou colonne vec

vec(i{:p}:j) : adressage des lments d'indices i j du vecteur ligne ou


colonne vec avec un pas de "1" ou de "p" si spcifi

vec([i j k:l]) : adressage des lments i,j et k l

>> length(vec)

% dimension (= nombre dlments) du vecteur vec

Autres :
>> norm(vec)

% norme du vecteur vec

>> mean(vec)

% moyenne arithmtique

>> dot(vec1,vec2)

% produit scalaire

>> cross(vec1,vec2)

% produit vectoriel

dernier lment

Exemples : v4(6 : end ), v3(2:2:6), B(2,1:end-1), B(2,1:end/2)


UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

17

4. Calcul matriciel
Affectation de matrices :
Pour Matlab, une matrice est un tableau 2 dimensions de N x M lments (N
lignes et M colonnes) affectation [ ] et adressage ( ) gnralisent 2
dimensions de ce qui a t vu pour les vecteurs
Mat =

[v11 v12 ... v1m ;


v21 v22 ... v2m ;
... ... ... ... ;
vn1 vn2 ... vnm ]

% cre une matrice n lignes x m colonnes

Exemples :

m1=[-2 : 0 ; 4 sqrt(9) 3]

On peut aussi crer des matrices par


concatnation de sous-matrices:
>> [ones(2,2) zeros(2,2)]
>> [ones(2,2) ; zeros(2,2)]

v1=1:3:7 et v2=9:-1:7,m2=[v2;v1]

Fonctions prdfinies : zeros, ones, eye


18

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

4. Calcul matriciel
ligne

Adressage de matrices :

colonne

mat(i,j)

% lment ( i , j ) de mat

mat(i:j,k:m)

% sous-matrice de mat (lignes i j, colonnes k m)

mat(i,:) ou mat(i,1:end)

% ligne i

mat(i:j,:)

% lignes i j

mat(:,k)

% colonne k

mat(:,k:m)

% colonnes k m

>> numel(mat)

% nombre dlments de mat

>> size(mat)

% nombre de lignes x nombre de colonnes

>> rank(mat)

% rang (nb de lignes ou colonnes linairement


indpendants)
19

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

4. Calcul matriciel

Exemples dadressages de vecteurs et matrices :


fichier CoursMatlab_exemples.m

20

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

5. Oprateurs de base
>> helpwin ops ou helpwin .: : liste des oprateurs et caractres spciaux
sous Matlab

Oprateurs arithmtiques :
Oprateur ou fonction

Description

Prsance

+ ou fonction plus

Addition

- ou fonction minus

Soustraction

* ou fonction mtimes

Multiplication

/ ou fonction mrdivide

Division

^ ou fonction mpower

Puissance

()

Modifie lordre de prsance

Sappliquent des scalaires, vecteurs ou matrices.


21

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

5. Oprateurs de base
Oprateurs relationnels:
Les oprateurs relationnels permettent de faire des tests numriques en
construisant des "expressions logiques", i.e des expressions retournant les
valeurs vrai (1) ou faux (0)
Oprateur ou fonction

Description

a == b ou a eq b ou isequal(a,b)

Test dgalit; retourne 1 si a = b et 0 sinon

a ~= b ou a ne b

Test de diffrence; retourne 0 si a=b et 1 sinon

a < b ou a lt b

Test dinfriorit; 1 si ingalit vrifie, 0 sinon

a > b ou a gt b

Test de supriorit; 1 si ingalit vrifie, 0 sinon

a <= b

1 si ingalit vrifie, 0 sinon

a >= b

1 si ingalit vrifie, 0 sinon

Pour des vecteurs ou matrices : sappliquent tous les lments et retournent donc
galement des vecteurs ou des matrices.
22

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

5. Oprateurs de base
Oprateurs logiques :
Les oprateurs logiques ont pour arguments des expressions logiques et
retournent les valeurs logiques vrai (1) ou faux (0)

>> helpwin relop : liste des oprateurs relationnels et logiques


Oprateur

Description

~a
not (a)

Ngation logique
retourne 1 si a=0 et 0 si a=1

a & b, and(a,b)

ET logique
(0 ET 0 => 0; 0 ET 1 => 0; 1 ET 1 => 1)

a | b, or(a,b)

OU logique
(0 OU 0 => 0 ; 0 OU 1 => 1 ; 1 OU 1 => 1)

xor(a,b)

OU EXCLUSIF
0 OU EXCL 0 => 0 ; 0 OU EXCL 1 => 1 ; 1 OU EXCL 1 => 0)

ET et OU logiques : Si les expressions sont des matrices, retournent une matrice


23

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

6. Oprateurs matriciels
Concatnation

[]

Sparateur de ligne

Sparateur de colonne

espace ou ,

Transpose

transpose(M)=M

Addition, soustraction

A + B, A B (! dim(A) = dim(B); ou bien A ou B


est un scalaire)

Multiplication par un scalaire a

a*M

Multiplication matricielle

A * B (nb colonnes A = nb lignes B) ou mtimes

Multiplication lment par


lment

A .* B (! dim(A) = dim(B)) ou times

Division lment par lment

A ./ B (! dim(A) = dim(B))

Inversion

inv(M) ou M^(-1) (M = matrice carre)

Dterminant, valeurs propres

det(M), eig(M)

Trace

trace(M)

Somme et produit des lments

sum(M), prod(M)

24

7. Fonctions prdfinies
Les fonctions Matlab sont implmentes soit au niveau du noyau Matlab
(fonctions "built-ins") soit au niveau de M-files et packages (dont on peut voir et
mme changer le code).
Exemple:
>> which sin

% indique que sin est une fonction built-in, alors que

>> which axis % montre dans quel M-file est implmente la fonction axis.
Attention : les noms de fonction Matlab ne sont pas rservs et il est donc possible de
les craser. Pour restaurer la fonction originale : clear nom_fonction
>> helpwin elfun

% liste des fonctions mathmatiques lmentaires

>> helpwin specfun

% liste des fonctions mathmatiques avances (spcialises)

25

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

7. Fonctions prdfinies
Quelques fonctions mathmatiques disponibles dans Matlab :
Fonctions courantes

cosinus, sinus, tangente, cotangente de x; x en radians

cos(x), sin(x), tan(x), cot(x)

cos-1, sin-1, tan-1 de x; x en radians

acos(x), asin(x), atan(x), atan2(x)

Cosinus, sinus, tangente hyperboliques de x

cosh(x), sinh(x), tanh(x)

Logarithme en base e et exponentielle

log(x), exp(x)

Logarithme en base 10

log10(x)

Puissance xa, racine carre et racine nme

power(x,a), sqrt(x), x^(1/n)

Valeur absolue

abs(x)

Arrondis : entier le plus proche, suprieur, infrieur

round(x), ceil(x), floor(x)

Factorielle de n

factorial(n)

Fonction var1 "modulo" var2

mod(var1,var2)

Utilises avec des vecteurs ou matrices comme arguments, les fonctions sont
appliques tous les lments et retournent donc des vecteurs ou matrices
Fonctions trigonomtriques : angles en [radians].
26

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

8. Analyse de donnes
Extrema : maxima et minima dune fonction, dun vecteur ou dune matrice :
+ position de llment dans le vecteur V (pour une matrice, travail colonne par colonne)
>>[fmin, posmin]=min(V);
>>[fmax, posmax]=max(V);

Moyenne dune fonction=moyenne de lensemble des valeurs du vecteur :


>>mean(V);

Drive : % Approximation
>>diff(X)

X : vecteur de valeurs discrtes

dim(diff(X)) = dim(X)-1

Intgration numrique : % Approximation


>> quad(X,x1,x2)

X : vecteur de valeurs discrtes ou fonction


x1, x2 : bornes dintgration
27

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

Exemples de calcul matriciel :


fichier CoursMatlab_exemples.m

28

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
help graph2d % liste des fonctions graphiques 2D
Les tracs seffectuent dans une fentre graphique (figure, figure(n) pour la nme figure)

Graphiques 1D :
>> plot(x1, y1 {,linespec} {, x2, y2 {,linespec} ...} )
>> plot(vec)
>> plot(mat)

>> plot(var1,var2 ...)


>> fplot % function plot
les arguments de la fonction plot sont des vecteurs. Il sagit donc du trac dune
fonction discrtise (chantillonne)
Sauvegarder une figure en tant qu'objet : commande saveas
29

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
Exemple 1: Trait dans le script CoursMatlab_exemples.m
Outils ddition de graphique

30

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
Trac de fonctions : fplot
- Fonction prdfinie (built-in)
- Fonction quelconque
- Dfinition puis trac dune
fonction utilisateur

Exemple 2: CoursMatlab_exemples.m
Personnalisation du graphique:
xlabel( );
% axe horizontal
ylabel( );
% axe vertical
a = [0,18]; xlim(a); % limites de laxe x
b = [-5,4]; ylim(b); % limites de laxe y
title( );
% titre
legend( );
% lgende
31

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
Autres :
>> refresh ou refresh(n)

% redessine les graphiques,

>> clf ou clf(n)

% clear figure

>> close ou close(n)

% referme la fentre graphique

>> close all

% referme toutes les fentres graphiques

>> plotyy(x1, y1, x2, y2 {,'type1' {,'type2'}} ) % fonction pour des graphiques 2 axes Y
>> semilogx, semilogy et loglog % pour des graphiques avec axes logarithmiques

Exemple 3:

CoursMatlab_exemples.m

32

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
Graphiques 2D : imagesc, contour, contour3, contourf, surface
Exemple 4:
Z = rand(10,20);

% matrice de nombre alatoires pris sur [0;1]

contour(Z);

% isolignes de Z, Z interprte comme des lvations /


plan (x,y)

contourf(Z);

% isolignes avec remplissage

n=15;contour(Z,n);

% isolignes de Z, avec n contours

X=[1:0.5:10.5];
Y=[0.1:0.1:1];
contour(X,Y,Z);
contour(X,Y,Z,n);

% isolignes de Z, avec les limites des axes X et Y spcifies


% length(X) = m, length(Y) = p et [p,m] = size(Z)

imagesc(Z);

% reprsentation de Z sous forme dimage, chaque lment


% de Z reprsente une surface rectangulaire
33

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
Graphiques 3D :
help graph3d

% fonctions relatives aux graphiques 3D

Exemple 5 : Dtermination et visualisation, par un graphique 3D, de la surface


z = fct(x,y) = sin(x/3)*cos(y/3) en "chantillonnant" cette fonction selon une grille x-y
de dimension de maille 1 en x et 0.5 en y; 0 x 10 et 2 y 5.
Pour reprsenter graphiquement cette surface, il s'agit au pralable de calculer une
matrice z dont les lments sont les valeurs z correspondant aux points de la grille.

34

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
- Solution 1 : Mthode classique ne faisant pas intervenir les capacits de vectorisation
de MATLAB; 2 boucles for imbriques qui parcourent tous les points de la grille pour
calculer les lments de z
x=0:1:10; y=2:0.5:5;
for k=1:length(x)
for l=1:length(y)
z1(l,k)= sin(x(k)/3)*cos(y(l)/3);
end
end
surf(x,y,z1);

% domaine des valeurs de la grille en X et Y


% parcours de la grille, colonne aprs colonne
% parcours de la grille, ligne aprs ligne
% calcul de z, lment par lment

- Solution 2 : meshgrid
x=0:1:10; y=2:0.5:5;
[Xm,Ym]=meshgrid(x,y);
z2=sin(Xm/3).*cos(Ym/3); % calcul de z en une seule instruction vectorise
% notez bien que l'on fait le produit .* (lment par lment)
et
% non pas * (vectoriel)
surf(x,y,z2);
% visualisation de la surface
35

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
- meshgrid
sur la base des 2 vecteurs x et y (en ligne ou en colonne) dcrivant le domaine des
valeurs de la grille en x et y, la fonction meshgrid gnre 2 matrices Xm et Ym
Xm est constitue par recopie, en length(y) lignes, du vecteur x
Ym est constitue par recopie, en length(x) colonnes, du vecteur y
dim(Xm) = dim(Ym) = length(y) lignes * length(x) colonnes

z=fct(x,y) peut tre calcule par une seule instruction Matlab vectorise (donc sans
boucle for) en faisant usage des oprateurs "terme terme"
36

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
Graphiques 3D : mesh, griddata, plot3, contour3

Exemple 6:
x= 4*rand(1,50) -2;
% vecteur ligne de 50 valeurs alatoires [-2;+2]
y= 4*rand(1,50) -2;
z = sin(x/3).*cos(y/3);
xi= -2:0.2:2; yi= xi';
% grille rgulire en x et y
[XI,YI,ZI]= griddata(x,y,z,xi,yi,'cubic'); % interpolation sur grille rgulire
surfc(XI,YI,ZI);
% affichage surface interpole et contours
% pour superposer sur ce graphique le semis de points irrguliers z :
hold('on');
plot3(x,y,z,'.');
37

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

9. Graphiques
Graphiques 3D: Exemple 7:
x=0:1:10; y=2:0.5:5;
vx = sin(x./2);
vy = cos(y./2);
z = vy'*vx;
mesh(x,y,z);
meshc(x,y,z);
meshz(x,y,z);

% vx : 1 ligne x 11 colonnes
% vy : 1 ligne x 7 colonnes
% vx correspond aux colonnes et vy correspond aux lignes
% z a autant de lignes que vy et autant de colonnes que vx
length(x) = n, length(y) = m et [m,n] = size(Z)
% avec isocontours sous le trac

38

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

Exemples de tracs de graphiques :


fichier CoursMatlab_exemples.m

39

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

10. Programmation
M-file: fichier au format texte (donc lisible et ditable) qui contient des instructions
Matlab et qui porte l'extension *.m.
- Deux types de M-files : les scripts (ou programmes Matlab) et les fonctions.
Les scripts nont pas darguments dentre/sortie, travaillent dans le workspace, et
toutes les variables cres/modifies lors de l'excution d'un script sont ensuite visibles
dans le workspace (= variables globales, qui peuvent galement tre dclares par
global var).
Les fonctions, quant elles, n'interagissent avec le workspace qu' travers leurs
variables d'entre/sortie, les autres variables manipules restant internes (locales)
ces fonctions.
Un fichier *.m peut tre dit avec tout diteur de texte

Editeur Matlab: menu File/New/Script ou File/Open.., Edit/Find , ou icne


Intrt : dbugger intgr, coloriage syntaxique, indentation
40

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

10. Programmation
helpwin lang

% liste des fonctions orientes programmation

Fichier script
Suite de commandes Matlab sauvegardes
dans un M-file (*.m).

Fichier function
Fichier *.m qui permet denregistrer une
succession doprations en spcifiant des
arguments de sortie et des arguments dentre.
function [a,b] = ma_fonction (x,y)

Le script a accs toutes les variables


dfinies dans le workspace.
Les variables utilises dans le script sont
disponibles linvite MATLAB.
Habituellement, on utilise les fichiers script
pour :
programmer des oprations rptitives
initialiser le systme ;
dclarer les variables ;
effectuer les oprations algbriques ;
appeler les fonctions ;
tracer les figures.

Les variables dfinies dans le workspace ne


sont pas accessibles depuis la fonction.
Les variables internes ou locales ne sont
pas disponibles linvite MATLAB.
Habituellement, on utilise les fichiers function
pour :
programmer des oprations rptitives en
limitant le nombre de variables dans linvite ;
structurer le programme.
tendre des fonctions Matlab
Rq : il faut appeler une function

Le fichier *.m doit porter le


mme nom que la fonction

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

41

10. Programmation
Structures de contrle: boucles, excutions conditionnelles (tests)
Travail en "format libre" (<espace> et <tab> non significatifs) : penser bien "indenter"
le code lorsquon utilise des structures de contrle, afin de faciliter la lisibilit et la
maintenance du programme.
if-elseif-else

for

while

switch

if CONDITION 1
Action 1;
Action 2;

elseif CONDITION 2
Action j;
Action (j+1);

else
Action N;
end;

for i=val_init:incr:val_fin
Action 1;
Action 2;
.
.
ActionN;
end;

while CONDITION
Action 1;
Action 2;
.
.
ActionN;
end;

switch CAS
case {CAS1}
Action 1;
case {CAS2}
Action 2;
otherwise
Action3;
end;

bloc otherwise facultatif

blocs else et else if facultatifs

>> continue : sauter les instructions dans une boucle et passer la prochaine itration
>> break : sortie prmature de boucle
42

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

10. Programmation
Structures de contrle (suite):
Dans Matlab, il faut "penser instructions matricielles" (on dit parfois "vectoriser"
son algorithme) qui permettent dviter les manipulations lment par lment, avant
d'utiliser systmatiquement ces structures de contrle qui, parce que Matlab est un
langage interprt, sont moins rapides que les oprateurs et fonctions matriciels de
base.
Exemple : l'instruction y=sqrt(1:100000); est beaucoup plus efficace que la boucle

for n=1:100000,
y(n)=sqrt(n);
end
(bien que, dans les 2 cas, ce soit un vecteur de 100 000 lments qui soit cr,
contenant les valeurs de la racine de 1 jusqu' la racine de 100 000).
Temps coul = 0.0035 s (allocation vectorielle) vs 0.0436 s (boucle for)

43

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

10. Programmation
Interactions avec lutilisateur :
>> disp(variable)
>> disp('chane')

% affiche le contenu de la variable spcifie (et pas son nom)


% affiche le contenu de la chane de caractres spcifie

Exemple :
M=[1 2;3 5] ;
disp('La matrice M vaut :')
disp(M)
>> fprintf('format',variables)

% affiche "La matrice M vaut :" sur une ligne


% puis valeurs de la matrice M sur les lignes suivantes
% affiche de faon formate les variables spcifies

v=444; t='chane de car.';


fprintf('variable v= %6.1f et variable t= %s \n',v,t) % affiche sur une seule ligne :
% " variable v= 444.0 et variable t= chane de car. "
>> warning( {'id',} 'message' {,variable(s)...} )
>> error('message' {,variable(s)...} )

% avertissement (sans interruption


du programme)
% interruption de lexcution de la

% fonction ou du script, ne pas sortir avec exit ou quit, qui termine aussi Matlab
44

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

10. Programmation
Interactions avec lutilisateur :
variable=input('prompt') ;
% Affiche le prompt et attend la rponse puis
% nombre, un vecteur, une matrice, voire toute expression valide
% qui est alors interprte et affecte variable
variable_chane=input('prompt', 's') ;

% s : string, saisie interactive de texte

choix=menu('Titre','bouton1','bouton2',...) % menu de choix entre plusieurs options


echo on | off | on all | off all % Active (on) ou dsative (off) laffichage de toutes les
% commandes excutes par les scripts, et par les fonctions appeles
% depuis les scripts (all)
pause(secondes)

% se met en attente durant le nombre de secondes


spcifi

pause

% attend que l'utilisateur frappe n'importe quelle touche au


clavier.
45

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

10. Programmation
Interactions avec lutilisateur :
return ou end

nargin

% Termine lexcution de la fonction ou du script

% A l'intrieur d'une fonction, retourne le nombre d'arguments d'entre passs


% lors de l'appel cette fonction. Permet par exemple de donner des valeurs
% par dfaut aux paramtres d'entre manquants.

nargout % A l'intrieur d'une fonction, retourne le nombre de variables de sortie


% auxquelles la fonction est affecte lors de l'appel.
Exemple : A l'intrieur d'une fonction-utilisateur mafonction :
lorsqu'on l'appelle avec mafonction(...) : nargout vaudra 0
lorsqu'on l'appelle avec out1=mafonction(...) : nargout vaudra 1
lorsqu'on l'appelle avec [out1 out2]=mafonction(...) : nargout vaudra 2, etc...
inputname(k) % A l'intrieur d'une fonction, retourne le nom de variable du k-me
% argument pass la fonction

46

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

10. Programmation
Performances dun programme (temps de calcul):
tic

% fonction qui dmarre un compteur de temps

instructions MATLAB...
elapsed_time = toc

% arrte le compteur de temps en retournant le temps


coul en s

Exemple :

tic;
A=rand(1000,1000);
B=inv(A);
dt = toc
47

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne

Sur le net
Site de la socit The MathWorks (ditrice de Matlab) :
http://www.mathworks.com
Page officielle de Matlab avec des vidos et des cours :
http://www.mathworks.com/academia/student_center/tutorials/launchpad.html

Page mathtools qui offre des programmes dans diffrents domaines:


http://www.mathtools.net/Fortran/index.html
Fonctions/scripts libres dvelopps pour Matlab :
http://www.mathworks.com/matlabcentral/fileexchange/
Du fait de ses fonctionnalits leves, Matlab cote assez cher. Il existe une version
tudiant, plus abordable, et un clone, OCTAVE, qui est compatible avec Matlab, et
disponible en freeware ladresse suivante: http://www.octave.org/
48

UE optionnelle Atelier Logiciel (MSM24 S1) - Master SdI 1re anne