Académique Documents
Professionnel Documents
Culture Documents
Exemple Simple Matlab
Exemple Simple Matlab
1
1. Premires oprations : Les commande au clavier
4. Oprations en matlab
2
1 Premires oprations : Les commande au clavier (pour faire des calculs simples, des
affichages de graphes, ...) dans la fentre de commande ( command window )
Entre au
clavier
Le rsultat
saffiche
Entre au
clavier
Le rsultat est
calcul et affich
saffiche
Commande pour tracer la squence b
Le graphique va apparatre dans une autre fentre
grid on indique que les units apparaissent
dans le trac sous la forme dune grille
e
Dans cet exemple a est un vecteur ligne ; en frappant b=a+2 on cre un second vecteur
ligne b en ajoutant 2 chacun des lments de a
3
Affichage dans la
nouvelle fentre des
valeurs des lments de
la squence b
>>b=a+2;
et non
>>b=a+2
Si on veut entrer une squence longue dintervalles rguliers sans entrer toutes les valeurs on
utilise les deux points :
4
affiche le sinus de la squence :
En abscisse il y a un simple numro : la position de llment a dans le calcul (on notera que
matlab commence les numros dindice 1 et non zro)
Pour se dplacer dans la liste des instructions, on peut utiliser es flches du clavier
On se rend compte que la frappe directe dinstructions permet difficilement de gnrer sans
erreur des squences doprations trs complexes ; pour y arriver il faut enregistrer les
programmes dans un fichier dont on lancera lexcution quand il sera prt
On clicke sur File et (en gardant lindex appuy, click gauche) dans le menu droulant
New M-File . Ceci fait apparatre une nouvelle fentre (Editor) dans laquelle on
ditera le texte du programme
5
Rangement des
fichiers dans
les dossiers
Attention : Il est important de shabituer la gestion des fichiers : il faut savoir dans quel
dossier on range les fichiers pour pouvoir les retrouver, les modifier ventuellement et les
excuter par la suite . Une fois quon a crit un programme il faut le sauvegarder : on choisit
par exemple save as et le nom du fichier qui doit ncessairement avoir lextension .m :
matlab reconnaitra par la suite cette extension lorsquon lui demandera lexcution dans la
fentre de commande ; par exemple pour excut le programme enregistr dans le fichier
premierpas.m il faudra frapper dans la fentre Command Window
>> premierpas
6
Voici le contenu du fichier premierspas.m
7
8
2.1 Retrouver et excuter des programmes matlab crits dans des fichiers .m et
rangs dans un dossier
Lorsquon range les fichiers o sont crits les programmes matlab dans un dossier cr dans
ce but, par exemple C:\programmatlab , il faut donner matlab les informations pour
quil puisse trouver le dossier en question ; ceci se fait en dfinissant le chemin daccs
(commande File/Set Path)
Commande
permettant de
dfinir le
chemin
daccs au
nouveau
9
Slection du
dossier
Une fois quon a click save matlab ira chercher si ncessaire les fichiers contenus dans le
dossier programmatlab
10
3 Ralisation et modification dun programme
>>edit
une nouvelle fentre souvre on y crit le texte du programme (voir par exemple
exemplematlab.m)
( Dans un programme enregistr dans un fichier, on terminera une instruction par un point-
virgule afin dviter dafficher le rsultat de linstruction dans la fentre de commande.)
et on lenregistre (save) sous la forme dun fichier fichier.m ; lextension .m indique que
cest un programme excutable par matlab (ne pas oublier de lenregistrer nouveau
lorsquon modifie le fichier)
dans la ligne de commande de matlab, on choisit le current directory o on enregistre le
fichier (on peut choisir un autre dossier que le current directory)
>>exemplematlab
Qui en engendre (fonction rand) une squence pseudo alatoire a dont la longueur est celle
de la squence t (soit ici 1024) et qui la trace
11
produit laffichage
Il est utile de bien jongler avec les fentres daffichage des graphiques ; voici quelques
oprations courantes (des possibilits supplmentaires seront dcrites dans un paragraphe
ultrieur ; une fois les bases acquises, il faudra se rfrer la documentation matlab pour
utiliser les nombreuses possibilits offertes) ;
12
Si on excute le premier programme, puis la commande hold et le deuxime programme
(exercez vous en appliquant les commandes du type hold, hold on et hold off)
13
Conseil : Si vous envisagez dcrire des programmes compliqus, commencez par un cas
simple que vous enrichirez petit petit en prenant soin de vrifier avant une nouvelle
modification que votre programme fonctionne correctement.
4 Oprations en matlab
Il arrive souvent quon applique la mme opration tous les lments dun tableau. On peut
le faire en effectuant une boucle for ... end sur lopration
On peut aussi crire de manire non seulement condense (et parfois plus difficile lire) mais
aussi optimise pour acclrer les calculs le code point avant le code du produit
(.* la place de *)
et ainsi on effectuera le mme produit sur tous les couples dlments ayant la mme position
(le mme indice) dans les deux squences
14
5 Gestion des graphiques
>>x=[0:0.01:2*pi];
>>plot(x,cos(x),x,sin(x))
clearall
closeall%fermelesanciennesfigures
figure(1);%pourcrerunenouvellefentredefigure
x=[0:0.01:2*pi];
plot(x,cos(x),'.',x,sin(x),'+')%cos(x)enpoints,sin(x)en+
15
Pour rajouter un titre et une lgende
title('sinusetcosinus');xlabel('x');ylabel('f(x)')
legend('cos(x)','sin(x)',0)%le0placelalgendectdescourbes
Il est courant de vouloir afficher plusieurs figures sur le mme cran ce qui se fait avec la
fonction subplot
16
Exemples de commandes expliques dans le manuel matlab
stem grid
xlabel ylabel
title bar
figure step
disp input
17
6 Conception de programmes un peu complexes
Un programme est une squence dinstruction qui modifie des donnes, il est la plupart du
temps ncessaire de modifier la squence effectuer en fonction dun rsultat de calcul ; on
effectue alors un test sur le rsultat
Oprateur Description
Inversion (NOT a) : ~a retourne 1 si a est gal 0, 0 si a est gal 1
Identit (double =) : a = = b retourne 1 si a gale b, 0 autrement
a<b retourne 1 si a est plus petit que b, 0 autrement
a>b retourne 1 si a est plus grand que b, 0 autrement
a <= b retourne 1 si a est plus petit ou gal b, 0 autrement
a >= b retourne 1 si a est plus grand ou gal b, 0 autrement
a ~=b retourne 1 si a est diffrent de b, 0 autrement
On utilise couramment les tests logiques ci-dessus pour modifier la squence dinstructions
excuter : aprs le if on a la squence dinstructions excuter si le rsultat du test est
vrai ; et aprs le else la squence dinstructions excuter si le rsultat du test est
faux ; (attention viter le ; avant le end
(la notion de fonction qui apparat ici sera explique ultrieurement)
18
>>test_de_y(1)
ans=
negatif
>>test_de_y(1)
ans=
positif
>>test_de_y(0)
ans=
On peut effectuer des tests plus labors de ce type en utilisant linstruction switch que
nous ne dvelopperons pas dans cette introduction
Par exemple on rpte le mme calcul pour des valeurs successives dun indice
19
Le a entre crochets indique la variable (ou les variables spares par une virgule quon veut
voir renvoye par la fonction)
Lorsquon appelle cette fonction pour une valeur de la variable on obtient
>>somme(2)
ans=
2248
Sur le mme principe, on peut rpter une squence tant quune condition est vrifie avec
linstruction de boucle while
20
10 Gestion des squences (vecteurs, matrices) :
Matlab, comme son nom lindique a dabord t conu pour optimiser et faciliter le calcul sur
les matrices, dont les vecteurs sont un cas particulier ; pour donner les valeurs des
composantes dun vecteur ligne on crit entre crochets (on peut sparer les lments par des
virgules ou par des blancs)
>>vligne=[2,4,7];
>>vligne
vligne=
247
On utilise les deux points pour donner des intervalles sous la forme suivante :
[premier lment : pas dincrmentation : dernier lment]
>>w=[0:0.5:4]; Par
>>w
w=
Columns1through7
00.50001.00001.50002.00002.5000
3.0000
Columns8through9
exemple si le premier lment est 2, on obtient
21
>>v=[2:0.5:4];
>>v
v=
2.00002.50003.0000
3.50004.0000
>>
Si le pas dincrmentation est positif et que le premier lment est plus grand que le dernier,
matlab cre un vecteur vide.
>>v=[5:0.5:4];
>>v
v=
Emptymatrix:1by0
On cre des vecteurs colonnes ou des matrices en sparant les lignes par des points virgules
;
>>
matrice=[1,2,3;4,5,6;7
,8,9]
matrice=
123
456
Les oprations applicables aux matrices scrivent simplement : par exemple on pourra faire
le produit de deux matrices
>>matrice1=[1,2;3,4];
>>matrice2=[5,6;7,8];
>>matrice1*matrice2
ans=
1922
4350
On peut encore utiliser la notation condense .* qui effectue ici encore un produit terme
terme :
>>matrice1.*matrice2
ans=
22
512
2132
On accde un lment du vecteur ou de la matrice en frappant
>>matrice1(2,1)
ans=
On peut aussi slectionner un sous-ensemble par exemple une ligne ou une colonne de la
matrice en replaant un des indices par :
>>matrice1(2,:) >>matrice1(:,2)
ans= ans=
34 2
4
23
11 Les fonctions
Pour viter de rdiger des programmes trop longs et rptitifs, on peut crire des squences de
lignes de programmation sous la forme de fonctions
Donne calculer = nom de la fonction ( suite des variables auxquelles sapplique le calcul)
Pour effectuer le calcul on frappe le nom de la fonction avec comme arguments les valeurs
des variables pour lesquelles on veut faire le calcul
Dans lexemple
Dfinition de Appel de la
la fonction fonction
Remarque : il faut grer correctement les dossiers o sont rangs les fichiers contenant le texte
des fonctions
Une fonction peut renvoyer plusieurs donnes : dans ce cas la liste des noms de variables o
ces donnes seront ranges est donne entre crochets
function[sorti1,sorti2,...]=nom_de_fonction(entr1,entr2,...)
Matlab intgre un grand nombre de fonctions dont la description est donne dans laide ; voici
quelques fonctions utiles Sur les matrices
>>V=[0:0.1:10];%utilisationdelength
vecteur1x101
>>n=length(V)
n= 24
101
>>M=[123;456];%utilisationdesize
matrice2x3
>>[n,m]=size(M)
n=
m=
Noter que lappel dune fonction permet de renvoyer plusieurs rsultats (arguments) dont la
liste est donne entre crochets
: [n,m]
Ici la fonction size donne le nombre de lignes et de colonnes de la matrice
il existe aussi des fonctions crites par dautres programmeurs quon peut rutiliser en
sassurant tout de mme que la fonction ralise bien ce quelle est cense faire ... Une des
richesses de matlab provient de ce quil est un outil utililis par de trs nombreux ingnieurs
et est ainsi un outil permettant des changes de programmes adapts diffrents types
dapplication des mathmatiques dans le monde industriel ou de la recherche.
(Revoir lexemple de setpath matlab o on utilise des fichiers rangs ailleurs que dans le
rpertoire matlab)
Il existe aussi des fonctions crites par dautres programmeurs quon peut rutiliser en
sassurant tout de mme que la fonction ralise bien ce quelle est cense faire ...
Et un exemple de include
25
LoadS=load('arg1','arg2','arg3',...)
Save save('filename','var1','var2',...)
26
12. Entres Sorties de sons et dimages :
exemple de lecture dun signal enregistr (une sinusode amortie) suivie de son trac :
>>signal=wavread('sinusamorti.wav');
>>plot(signal);
wavwrite(y,Fs,N,'filename')
lire des fichiers dimages : voir la fonction imread dans laide matlab
gnrer des fichiers dimages : voir la fonction imwrite dans laide matlab
27