Professional Documents
Culture Documents
3.1416
>> sin(pi/6)
ans =
0.5000
>> log(1.5)
ans =
0.4055
>> i^2
ans =
-1
Il peut parfois tre utile de stocker une valeur dans une variable pour lutiliser plus
tard. Laffectation dune variable en Matlab se fait au moyen du signe [=]. Le nom dune
variable doit commencer par une lettre (majuscule ou minuscule, sans accent) puis peut
contenir des lettres (mme remarque), des chiffres et des caractres souligns [_]. Le nom
peut contenir au maximum 31 caractres. La valeur dune variable peut tre un nombre,
une chane de caractres ou un tableau (voir la section 3). Contrairement au C++ ou au
fortran, Matlab nest pas typ . Autrement dit, une variable contenant un entier
peut contenir plus tard une chane de caractres ou un tableau. Prcisons que Matlab
est case-sensitive , cest--dire quil fait la distinction entre majuscules et minuscules.
>> A=23
A =
23
>> a=2.432
a =
2.4320
>> A=salut !
A =
salut !
On peut videment faire des calculs avec des variables. Le rsultat dun calcul est, par
dfaut, stock dans une variable nomme ans. Celle-ci peut tre change pour nimporte
quelle autre variable. Par dfaut, Matlab affiche le rsultat de la dernire opration. Cet
affichage peut tre supprim en terminant votre commande par la touche [ ;]. Plusieurs
commandes peuvent tre rentres sur une mme ligne en les sparant soit par [,] soit
par [ ;].
>> x=2;y=5;
>> z=x^2+y^2
z =
29
Pour une liste complte des oprations mathmatiques que lon peut faire dans Matlab voir le paragraphe 3.3.
3
2.3
>> whos
Name
A
a
ans
x
y
z
ans
Size
1x7
1x1
1x1
1x1
1x1
1x1
Bytes
Class
14
8
8
8
8
8
char array
double array
double array
double array
double array
double array
2.4
Matlab garde en mmoire les dernires commandes effectues. Elles sont visibles dans
longlet Command History. On peut galement y accder directement dans la Command
Window au moyen des touches [] et []. Ceci est particulirement utile pour rpter la
dernire commande.
2.5
Aide
programme et sont donc "faciles" localiser. Dautres erreurs sont plus difficiles corriger.
Il sagit des vraies erreurs de programmation. Le programme fait quelque chose, mais pas
ce que vous voulez. Pour se rendre compte de la prsence de telles erreurs, on teste son
programme sur des exemples faciles dont la rponse est connue.
Dans le cas o vous tes confronts une telle erreur, les outils de debuggage de
MatLab peuvent vous aider.
Par exemple, vous pouvez placer dans votre code (M-file) des "break point". Ceux-ci
interrompent lexcution lendroit choisi et vous pouvez accder aux valeurs des variables
internes cette instant via la fentre "Workspace". Vous pouvez excuter la suite du
programme jusquau break point suivant ou ligne aprs ligne. Ceci peut tre trs utile
pour comprendre son erreur de raisonnement.
2.6
Sauvegarde
cela, dans la fentre principale, File Save Workspace As, et vous choisissez
lemplacement 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 du menu Files Open vous retrouvez le Workspace dans ltat dans lequel
vous lavez laiss. Vous ne verrez cependant pas lhistorique des commandes.
(ii) Les m-files. Un peu plus loin, la section 5, on introduira la notion de m-files.
Il sagit dun fichier dans lequel on regroupe des commandes. Cest trs utile pour
aborder des problmes plus complexes et viter de retaper les mmes commandes
plusieurs fois.
(iii) Attention noubliez pas de sauvegarder vos fichiers sur votre espace mmoire tu-
diant ou sur un support personnel (clef USB par exemple). Ne sauvegarder pas
votre travail sur le disque local de lordinateur, sinon il sera perdu au prochain
redmarrage de lappareil.
Vecteurs et matrices
3.1
Cration
Un tableau est dlimit par des crochets. On spare les colonnes par des espaces et les
lignes par des points-virgules.
1
>> A=[1 1 1 ; 2 2 2]
A =
1
1
1
2
2
2
>> B=[1 ; 2 ; 3]
B =
1
2
3
>> C=[1.1 2.2 3.3]
C =
1.1000
2.2000
3.3000
Les tableaux qui nont quune seule ligne sont appels des vecteurs lignes ou des listes ;
ceux qui nont quune seule colonne sont appels des vecteurs colonnes ou simplement
des vecteurs. Si le nombre dlments dans chaque ligne (ou colonne) nest pas le mme,
Matlab signale une erreur.
>> A=[1 1 1; 1 2]
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.
Matlab propose des commandes pour crer certaines matrices particulires trs simplement. Pour plus dinformation, lire le help de chaque fonction.
Commande
Description
ones(n,m)
zeros(n,m)
eye(n,m)
diag(v)
rand(n,m)
Matlab dispose galement de moyens trs simples pour crer des listes. La commande
[a:h:b]2 cre une liste dont les lments sont
a, a + h, a + 2h, . . . , a + nh,
o n N, |a+nh| |b| et |a+(n+1)h| > |b|. Le cas particulier [a:b] est un raccourci pour
[a:1:b]. Si les conditions initiales sont errones, Matlab renvoie un message derreur.
>> x=[1:2:10]
x =
1
3
>> y=[-5:0]
y =
-5
-4
-3
-2
-1
>> z=[10:2:-10]
z =
Empty matrix: 1-by-0
Un autre cas particulier de [a:h:b] est la fonction linspace(a,b,n). Celle-ci cre une
liste de n lments uniformment rpartis entre a et b. Autrement dit, linspace(a,b,n)
ba
est la mme chose que [a: n1
:b].
Il est parfois utile de travailler avec des chelles logarithmiques ; pour cela, la commande logspace(x1,x2,n) cre une liste de n points rpartis logarithmiquement uniformment entre 10x1 et 10x2 .
Une dernire mthode pour crer des tableaux est la concatnation. Si A et B sont
deux tableaux, alors [A B], ou [A,B] est le tableau obtenu en collant B la droite de A,
et [A ;B] est le tableau obtenu en collant B au-dessous de A. Comme dhabitude, il faut
faire attention aux tailles de A et de B.
>> A=[1,3,5], B=[2,4,1], C=[1,1;1,2]
A =
1
3
5
B =
2
4
1
C =
1
1
1
2
>> [A,B],[A;B]
ans =
1
3
ans =
1
3
2
4
2
5
1
>> [A,C]
??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.
3.2
Accs et modifications
On prsente dans ce paragraphe diverses mthodes pour accder et modifier les lments dune matrice. Dans la table qui suit, A dsigne un tableau de taille quelconque, k
et l sont des nombres entiers, v est une liste et M une matrice.
Commande
Description
A(k,l)
A(k)
A(v)
A(M)
A(k,:)
A(:,l)
14
15
>> A(:,4)
ans =
4
15
>> A([1 1 1])
ans =
1
1
2
15
Pour modifier les lments dune matrice, on utilise les mmes commandes que ci-dessus.
On ajoute la commande le signe [=] et la nouvelle valeur.
>> A
A =
1
12
2
13
>> A(2,2)=999
A =
1
2
12
999
3
14
4
15
3
14
4
15
1
3
2
4
>> A(2,5) = 34
A =
1
2
3
4
3.3
0
0
0
0
0
34
Description
A+B
A+c = c+A
A-B
A-c
c-A
A*B
A*c = c*A
A.*B
10
Transposition et conjugaison.
A.
B/A
A\B
A./B
A.\B
A/c
Prcisons que Matlab ne renvoie pas un message derreur lors dune division par 0, mais
donne le rsultat Inf. Attention nanmoins ne pas travailler avec Inf comme avec un
nombre.
>> A=[1 2 3; 0 0 1; 1 0 0]
A =
1
2
3
0
0
1
1
0
0
>> B=[-1 -2 -3; 0 0 -1; -1 0 0]
B =
-1
-2
-3
0
0
-1
-1
0
0
>> A+B
ans =
0
0
0
0
0
0
0
0
0
>> A*B
ans =
-4
-1
-1
-2
0
-2
-5
0
-3
11
>> A^(-2)
ans =
0
-0.7500
0.5000
1.0000
1.7500
-1.5000
>> A.*B
ans =
-1
0
-1
-4
0
0
-9
-1
0
>> A/B
ans =
-1
0
0
0
-1
0
0
0
-1
0
1.2500
-0.5000
Important. Pour la rsolution de systmes dquations, utilisez toujours les commandes B/A et A\B. Ninversez JAMAIS une matrice !
Fonctions sur les matrices. tant donne une matrice A, il y a un certain nombre
de choses que lon peut calculer en rapport avec A. Au cours dalgbre on a vu deux
fonctions importantes dfinies sur lensemble des matrices carrs : le dterminant et la
trace ; dans le cas dun vecteur, vous avez galement vu la norme. Nous prsentons ici
quelques fonctions dfinies dans Matlab prenant comme paramtre des tableaux. Pour
plus dinformation, lire le help de chaque fonction.
Commande
Description
det(A)
trace(A)
Renvoie la trace de A.
rank(A)
null(A)
diag(A)
norm(v)
12
sum(A)
prod(A)
max(A)
min(A)
length(A)
Finalement, on prcise que toutes les fonctions mathmatiques classiques (cos, sin, log,
exp, etc) sappliquent galement aux tableaux. Le rsultat est un tableau o lon a appliqu
terme terme la fonction en question.
>> I=[0:0.2:1]
I =
0
0.2000
>> exp(I)
ans =
1.0000
4
4.1
0.4000
1.2214
0.6000
1.4918
0.8000
1.8221
1.0000
2.2255
2.7183
Graphisme
Courbes dans le plan
tant donn deux vecteurs de mme 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 coordonnes (x(k),y(k)) pour
1 k length(x). En prenant un grand nombre de points dans le vecteur x et en
dfinissant ensuite y = f(x) pour une certaine fonction f, la fonction plot(x,y) nous
donnera le graphe de la fonction f.
13
4.2
x=[0.5:0.1:5];y=log(x);
plot(x,y,co), axis equal
x=[0:0.05:1];y=exp(x);z=log(y);
plot(x,y,mo,y,z,g>),axis equal
Affichage de matrices
tant donne A une matrice n m, Matlab propose une mthode simple pour visualiser le contenu de A lcran. Plus prcisment, Matlab dessine un rectangle
partag en n m petits rectangles o la couleur du rectangle (i, j) dpend de la valeur
de llment aij de la matrice.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
a=ones(11,11)
a([1:2:121])=0
imagesc(a), axis equal
x=rand(10,10);y=rand(100,100);z=rand(1000,1000);
imagesc(x),axis off
figure
imagesc(y),axis off
figure
imagesc(z),axis off
15
5.1
Scripts
La premire tape est de crer un rpertoire (on en choisir un existant) o vous allez
ranger les fichiers. En utilisant longlet Current Directory, placez-vous dans votre rpertoire personnel (probablement sur le disque H:\). Crez ensuite un rpertoire pour vos
travaux Matlab, par exemple tps_matlab (dans longlet Current Directory, bouton
droit de la souris et New Folder). Dans ce rpertoire, vous pouvez, par exemple, crer
un sous-rpertoire pour le travail pratique en question : tp1. Crez ensuite un m-file
(menu principal, File New M-file). Apparat alors une nouvelle fentre ressemblant un diteur de texte, cest le M-file Editor. Dans cette fentre, on rentre toutes
les commandes quon dsire que Matlab excute. Remarquez que, contrairement la
Command Window, les commandes ne sexcutent pas directement. La touche [%] permet
dajouter des commentaires.
%Mon premier m-file
A=ones(4)
v=[1 2 3 4]
w=A*v
Quand vous avez fini de rentrer les commandes souhaites, il faut enregistrer le fichier dans
le rpertoire tp1 avec comme nom, par exemple, test1.m. Pour excuter les commandes
on rentre le nom du fichier (sans le .m) dans la Command Window.
>> test1
A =
1
1
1
1
v =
1
2
3
4
w =
10
10
10
10
1
1
1
1
1
1
1
1
1
1
1
1
Pour la suite des travaux pratiques, on utilisera essentiellement le systme des m-files
pour rentrer des commandes.
Remarquons que pour excuter un m-file, il faut tre dans le bon rpertoire . Autrement dit, vous devez voir vos fichiers dans longlet Current Directory. La prochaine
fois que vous relancez Matlab, noubliez pas de choisir de rpertoire o sont rangs vos
m-files avant dessayer de les excuter.
16
5.2
Fonctions
Une fonction est un m-file particulier : on lui passe des arguments et il retourne
une valeur. Il faut simplement commencer le m-file par le mot function, lui prciser les
valeurs de retour et les arguments comme dans lexemple ci-dessous. Cet exemple prend
comme paramtre un entier n et affiche les valeurs dune matrice de taille n n. Il renvoie
ensuite la valeur moyenne des lments du tableau. Si on fait tendre n vers linfini, vers
quoi devrait tendre cette moyenne ?
function m = moyenne(n)
A=rand(n);
imagesc(A);
axis equal off;
m=mean(mean(A));
La forme gnrale de la dclaration dune fonction est
function nom_variable_retour = nom_fonction ( nom_paramtres )
Quelques remarques :
(i) le m-file et la fonction doivent avoir le mme nom ;
(ii) il peut y avoir plusieurs paramtres (il suffit de les sparer par des virgules) ou
aucun ;
(iii) il peut y avoir plusieurs variables de retour (les mettre entre crochets et les sparer
function m = moyenne(n)
%MOYENNE - calcul de la valeur moyenne dune matrice
% cette fonction calcule...
A=rand(n);
imagesc(A);
axis equal off;
m=mean(mean(A));
La premire ligne est importante car elle est reconnue par la commande lookfor.
Cest--dire, si vous entrez la commande lookfor moyenne, Matlab renvoie MOYENNE
- calcul de la valeur moyenne dune matrice. De plus en tapant help moyenne,
vous aurez tout le descriptif.
Programmation
En plus des commandes vues jusqu maintenant, Matlab permet dinclure dans des
m-files des instructions de programmation classiques.
17
6.1
6.2
tmp=a;
a=fib;
fib=fib+tmp
or=fib/a
end
6.3
6.4
La rcursivit
Dans la dfinition dune fonction f , il arrive que lon dsire rappeler la mme fonction
f pour des valeurs diffrentes. Lexemple typique tant le cas de la dfinition de la fonction
factorielle sur les entiers.
1
si n = 0
factoriel(n) =
n factoriel(n 1) si n > 0
Ceci est possible en MatLab, comme dans bien des langages de programmation, mais il
faut tre attentif au fait que cet outil amne souvent des boucles sans fin, si la condition
darrt nest pas bien pense. Voil lexemple de la factorielle programme en MatLab.
function nn =factoriel(n)
%calcule le n factoriel en fonction de n.
reponse=1;
if n==0
nn=1;
else
reponse= n*factoriel(n-1);
end; %if
nn=reponse;
19