Vous êtes sur la page 1sur 42

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 1

UNIVERSITE HASSAN II MOHAMMEDIA- CASABLANCA



FACULTE DES SCIENCES & TECHNIQUES
Dpartement Gnie Electrique
Filire dIngnieurs dEtat: Gnie Electrique & Tlcommunications GET1


Introduction du logiciel

MATLAB est un environnement de programmation pour le dveloppement d'algorithmes,
l'analyse des donnes, la visualisation et le calcul numrique. Vous pouvez rsoudre les problmes
informatiques techniques plus rapidement qu'avec les langages de programmation traditionnels, tels
que C, C + + et Fortran. Vous pouvez utiliser MATLAB dans une large gamme d'applications, y
compris le traitement du signal et d'image, de communication, la conception du contrle, de test et
mesure, la modlisation et lanalyse financires et la biologie computationnelle. Pour les ingnieurs et
les universitaires, MATLAB est un langage de l'informatique technique.
MATLAB est un outil puissant et convivial qui vous permet deffectuer ces tches. Ce document a
pour but de vous faire dcouvrir ce logiciel en vous prsentant sa philosophie ainsi que ses principales
fonctionnalits.
Le nom de MATLAB est la combinaison de deux mots soit les mots Matrix (contrairement
Mathematics comme on pourrait le penser!) et Laboratory. la base, MATLAB a t conu pour faire
du calcul matriciel puisque chaque lment dentre constitue une matrice ou des lments dune
matrice. Le logiciel utilise en langage de fond du C++, mais utilise un langage beaucoup plus simplifi
du point de vue de lutilisateur linterface. Par exemple, contrairement aux langages de
programmation comme C++, il nest plus ncessaire de dclarer des variables avant de les utiliser.
Attention, MATLAB diffrencie les majuscules des minuscules.
Prsentation de linterface et modes de fonctionnement du logiciel

Il existe deux modes de fonctionnement :
Mode interactif: Excution des instructions entres par lutilisateur dans la fentre de commande de
MATLAB (le Workspace).
Mode excutif: Excution de programmes ou scripts en langage MATLAB, qui sont des fichiers
regroupant une suite dinstructions (fichiers .m).



L'interface principale se dcompose comme suit :
1. Command window : Permet dexcuter des commandes en dehors de programme et affiche
les rsultats.
Exemple : taper 1+1
2. Current folder (Directory) : Contenu du rpertoire courant o doit se situer vos
programmes.
3. Workspace : Affiche lensemble des variables utiliss.
4. Commande History : Permet de visualiser les dernires commandes excutes. Il est
possible de faire glisser ces commandes vers la fentre de commande. On peut aussi y
accder en appuyant sur flche haut ou pour des commandes plus anciennes en tapant la
premire lettre de lexpression puis flche haut
5. Choix du rpertoire courant. c'est le dossier o doit se situer vos programmes (fichiers
*.m). Vous pouvez mettre vos programmes dans un autre dossier mais dans ce cas il faut
l'inclure dans File >> SetPath

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 2



Les blocks de la figure prcdente sont prsents comme suit :
Toolboxes: Ce sont des collections de fichiers .m dvelopps pour des domaines d'application
spcifiques (Signal Processing Toolbox, System Identification Toolbox, Control System Toolbox,
Synthesis and Analysis Toolbox , Robust Control Toolbox, Optimization Toolbox, Neural Network
Toolbox, Spline Toolbox, Chemometrics Toolbox, Fuzzy Logic Toolbox, etc.)
Simulink: C'est l'extension graphique de MATLAB permettant de travailler avec des diagrammes en
blocs.
Blocksets: Ce sont des collections de blocs Simulink dvelopps pour des domaines d'application
spcifiques (DSP Blockset, Power System Blockset,.).
Premire utilisation de MATLAB
Une faon efficace de dcouvrir Matlab est d'utiliser son aide.
help : "help" tout seul donne la liste des aides gnrales possibles.
helpwin : ouvre une fentre et donne accs une aide dtaille.
help + nom dune commande : indique la syntaxe des graphes en 2D.
Exemple : >> help plot
demo : lance une dmo gnrale de Matlab.
help demos : donne une liste des dmos existantes.
Quelques commandes importantes:

lookfor + nom de commande : donne une liste de toutes les commandes qui ont un rapport avec
la nom de commande crite.
who et whos : donne les noms de variables prsentes dans lespace de travail.
clear : supprime les variables de lespace du travail.
clc : efface lcran (sans toucher aux variables de lespace de travail)
exit ou quit : permet de sortir de MATLAB
CTRL + C : (touches du clavier) permet dinterrompre un programme en excution.
1
2
3
4
5
5
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 3

Interaction avec le systme dexploitation

Les commandes et fonctions suivantes permettent MATLAB dinteragir avec le systme
dexploitation de la machine sur laquelle il est utilis :
addpath path : ajoute le chemin daccs (path) la liste des chemins daccs connus de
MATLAB (MATLABPATH) ;
cd ou pwd : affiche le chemin daccs au rpertoire de travail actuel ;
cd path : fixe le rpertoire de chemin daccs path comme rpertoire de travail ;
dir ou ls : affiche le contenu du rpertoire de travail actuel ;
delete : efface le fichier spcifie (peut tre utilise sous forme de fonction sous la forme : delete
(nomDeFichier)) ;
mkdir path : cre le rpertoire de chemin daccs path ;
rmpath path : supprime le chemin daccs (path) du (MATLABPATH) ;
isdir (path) : fonction boolenne qui retourne 1 si le chemin daccs (path) est celui dun
rpertoire, 0 sinon ;
filesep : variable dont la valeur est celle du symbole sparateur de lignes (dpend du systme
dexploitation de la machine utilise).


Objets et Classes de MATLAB

Un objet est une abstraction du monde rel (pour MATLAB celui du calcul matriciel), qui
contient des informations (pour une matrice, par exemple, le nombre de lignes, le nombre de colonnes,
la valeur des coefficients) et sur laquelle on peut appliquer un certain nombre doprations (pour les
matrices, la somme, le produit . . .). Un objet est caractris par des valeurs, mais pas uniquement ; un
objet possde en plus un certain comportement : un tableau Excel bien que structur en lignes et
colonnes comme une matrice, nest pas une matrice, ou encore un polynme de degr trois, nest pas
un vecteur de R
4
.
La famille des objets caractriss par le mme type de structure et les mmes fonctionnalits
constitue une classe.
La classe fondamentale de MATLAB est la classe double qui modlise les tableaux (double
array) de dimension un ou deux de nombres rels ou complexes (conformes la norme IEEE), Les
nombres rels ou complexes tant considrs eux-mmes comme des tableaux 1 1. Cette classe
permet galement de travailler mais de faon moins naturelle avec des tableaux de dimension
suprieure deux.
Les classes suivantes, sont moins frquemment utilises :
La classe char modlise les chanes de caractres (char array), un caractre unique tant une
chane de longueur 1.
La classe sparse modlise les matrices creuses (i.e. dont la plupart des lments sont nuls)
relles ou complexes.

A partir de la version 5, MATLAB a propos des structures complmentaires souvent utilises dans les
objets prdfinis de MATLAB, les objets graphiques en particulier.
- La classe cell modlise les tableaux de cellules ou cell array qui sont des sortes de tableaux
dont les lments ou cellules (cells) peuvent tre de nature diffrente, nombres, tableaux,
chanes de caractres de longueurs diffrentes, . . . .
- La classe structureMATLAB modlise les tableaux de structures. Ces structures sont des
structures de donnes assez semblables aux struct du C, dont les composants ou champs, sont
accessibles non pas par un ou plusieurs indices comme dans le cas des tableaux, mais par une
notation pointe comme dans client.name, permettant au programmeur de dfinir ces propres
objets et ses propres classes.
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 4

- Jusqu la version 7, MATLAB ne proposait ni valeurs prdfinies true ou false ni classe pour
modliser les boolens. A partir de la version 7 MATLAB possde une classe logical.
Comme dans les versions antrieures, false est reprsent par la valeur 0, true est reprsent par 1 et
par extension, par toute valeur non nulle.

Valeurs littrales

Le terme de valeur littrale dsigne les valeurs quon peut directement taper au clavier et qui peuvent
tre alors affectes une variable.

Nombres
Les nombres rels et entiers (MATLAB ne distingue pas entre rels et entiers) sont crits sous les
formes dcimales ou scientifiques usuelles:
2, 3.214, 1.21E3.
Les nombres complexes sont crits sous la forme a + bi, comme dans 1+2i.
Tableaux de nombres

Les tableaux de nombres rels ou complexes de dimension un ou deux suivent la syntaxe suivante:
- un tableau est dlimit par des crochets ;
- les lments sont entrs ligne par ligne ;
- les lments appartenant la mme ligne sont spars par des espaces (ou par des virgules) ;
- les diffrentes lignes doivent comporter le mme nombre dlments et sont spares par des
points-virgules.

Les tableaux:
( )
|
|
|
.
|

\
|
|
|
|
|
|
.
|

\
|
2 2 0 0
1 3 2 0
0 0 2 1

4
3
2
1
4 3 2 1
scrivent sous la forme [1 2 3 4] , [1; 2; 3; 4] et [1 2 0 0 ; 0 2 3 1 ; 0 0 2 2] :

>> [1 2 3 4]
ans =
1 2 3 4
>> [1;2;3;4]
ans =
1
2
3
4

>> [1 2 0 0 ; 0 2 3 1 ; 0 0 2 2]
ans =
1 2 0 0
0 2 3 1
0 0 2 2
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 5

Toutes les lignes doivent contenir le mme nombre dlments :
>> [1 2 ; 1 2 3]
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.

- Vecteur : un tableau de format (n, 1) i.e. ne comportant quune seule colonne ;
- liste ou encore vecteur-ligne : un tableau de format (1, n) i.e. ne comportant quune seule ligne ;
- tableau : un tableau au sens commun du terme, cest dire une structure organise en lignes et
colonnes.
Caractres et chanes de caractres
On crit les caractres et les chanes de caractres, entre apostrophes : a, jour. On considre les
caractres comme des chanes de caractres de longueur 1 et identifie chanes de caractres et liste de
caractres.
Exemple :
La liste de caractres [a b c d e] est identique la chanes de caractres [abcde] :

>> ['a' 'b' 'c' 'd' 'e']
ans =
abcde
Mieux encore, abcde ; [abc de] est identique `a abcde :
>> ['abc' 'de']
ans =
abcde
Cet exemple donne un ide du rle des crochets [ ]. Les crochets sont le symbole de loprateur de
concatnation :
- concatnation en ligne lorsque le sparateur est un espace ou une virgule ;
- concatnation en colonne lorsque le sparateur est un point-virgule comme dans les tableaux
de nombres (il est alors ncessaire que les listes de nombres ou de caractres ainsi concatnes
possdent le mme nombre dlments).

Exemple :
La liste de caractres [a b c d e] est identique la chanes de caractres [abcde] :

>> ['abc' ; 'abcd']
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.

Cellules et tableaux de cellules - cell array
Une cellule est un conteneur dans le quel on peut placer toute sorte dobjets : nombre, chane de
caractres, tableau et mme tableau de cellules. Les tableaux de cellules permettent dassocier dans
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 6

une mme structure des lments de nature trs diffrente. La syntaxe des tableaux de cellules est
voisine de celle des tableaux usuels, les crochets tant remplacs par des accolades.
Exemple :
>> {'maria' 4 ; 'rachid' 7;'sami' 0}
ans =
'maria' [4]
'rachid' [7]
'sami' [0]
La manipulation des ces objets (sauf lorsquon on se limite des composants qui sont des nombres ou
des chanes de caractres) est un peu plus dlicate que celle des tableaux usuels et sera examine
ultrieurement.
Variables
Une caractristique de MATLAB est que les variables nont pas tre dclares, leur nature se
dduisant automatiquement de lobjet qui leur est affect. Par abus de langage on dira valeur dune
variable alors quil faudrait parler de lobjet associ la variable.
Identificateurs
Les rgles de dnomination des variables sont trs classiques :
un identificateur dbute par une lettre, suivie de lettres, de chiffres ou du caractre soulign (_)
sa longueur est infrieure ou gale 31 caractres ;
les majuscules sont distinctes des minuscules.
Voici quelques identificateurs prdfinis :
ans : Rsultat de la dernire valuation
pi : 3,1416
eps : 2.2204e-016
inf: Infini (1/0)
NaN: Not a Number (0/0)
i,j : i et j reprsentent tous deux le nombre imaginaire unit (0 + 1.0000i)
realmin: plus petit nombre rel positif (2.2251e-308)
realmax: plus grand nombre rel positif (1.7977e+308)
Exemple :
>> a = [1 2 3 4]
a =
1 2 3 4
>> a = 'abc'
a =
abc
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 7

Affectation
Le symbole daffectation de valeur une variable est le caractre =.
Exemple
>> a = [1 2 3 4]
a =
1 2 3 4
>> a = 'abc'
a =
abc
Espace de travail
Les commande who et whos
Lensemble des variables et les objets qui leur sont associes constitue lespace de travail ou
workspace de la session en cours. Le contenu de cet espace de travail va se modifier tout au long du
droulement de la session et plusieurs commandes ou fonctions permettent de le grer de faon
efficace.
Exemple :
>> a = 2 ; b = azerty; c = [1 2 3 ; 5 3 4] ;
% la partie de la ligne qui suit le symbole % est un commentaire
% les points-virgules inhibent laffichage de la valeur des variables
>> clear
>> a = 2 ; b = 'azerty'; c = [1 2 3 ; 5 3 4] ;
>> who
Your variables are:
a b c
La commande whos donne linformation plus complte suivante :
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
b 1x6 12 char
c 2x3 48 double
On peut galement appliquer whos avec pour argument une ou plusieurs variables :
>> whos b c
Name Size Bytes Class Attributes
b 1x6 12 char
c 2x3 48 double
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 8

Les fonctions size, size( ,1) et size( ,2) : La fonction size retourne le couple (nl,nc) form du
nombre de lignes nl et du nombre de colonnes nc du tableau associ la variable donne comme
argument.
Exemple:
>> clear
>> a = 2 ; b = 'azerty'; c = [1 2 3 ; 5 3 4] ;
>> size(a)
ans =
1 1
>> size(b)
ans =
1 6

Pour accder plus facilement au nombre de lignes et au nombre de colonnes, on peut affecter la
valeur retourne par size un tableau deux lments [nl, nc] :

>> size(c)
ans =
2 3

>> [nl, nc] = size(c)
nl =
2

nc =
3
Enfin size( ,1) et size( ,2) permettent laccs direct au nombre de lignes et au nombre de colonnes dun
tableau :

>> size(c,1)
ans =
2

>> size(c,2)
ans =
3

La fonction class : retourne le nom de la classe laquelle appartient la variable donn comme
argument.

Exemple:
>> ca=class(a)
ca =
double

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 9

>> cb=class(b)
cb =
char

Les commandes save, load et clear - fichiers.mat
Ces commandes permettent dintervenir directement sur lenvironnement de travail.
- save permet de sauver tout ou partie de lespace de travail sous forme de fichiers binaires
appels mat-files ou fichiers .mat :
- save : enregistre la totalit de lespace de travail dans le fichier matlab.mat ;
- save nom de fichier : lespace de travail est enregistr dans le fichier nom de fichier ;
- save nom de variable . . . nom de variable : enregistre les variables indiques (et les objets
qui leurs sont associs) dans un fichier .mat qui porte le nom de la premire variable ;
- save nom de fichier nom de variable . . . nom de variable : enregistre les variables dans le
fichier dont le nom a t indiqu.
- load permet dajouter le contenu dun fichier .mat lespace de travail actuel ;
- clear supprime une ou plusieurs variables (et les objets aux quelles elles font rfrence) de
lenvironnement de travail :
- clear sans argument, supprime toutes les variables de lespace de travail actuel ;
- clear nom de variable . . . nom de variable : supprime les variables indiques de lespace de
travail.

Exemple:
>> a = 1 ; b = 2.5 ; t = eye(3) % la fonction eye(3) cre la matrice identit d'ordre 3.
t =
1 0 0
0 1 0
0 0 1
>> save a b % Les variables a et b sont enregistres dans le fichier a.mat

>> clear a b % Les variables a et b sont supprimes comme le montre la ligne
suivante :

>> a
??? Undefined function or variable 'a'.

>> a=1;
>> load a % On ajoute le contenu de a.mat l'espace de travail actuel :
>> x = a + b
x =
3.5000

>> save EsTr % L'espace de travail est enregistr dans le fichier EsTr.mat
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 10

>> clear % Toutes les variables de l'espace de travail sont supprimes
>> t
??? Undefined function or variable 't'.

Listes et vecteurs

Les listes et les vecteurs sont des tableaux au format particulier : un vecteur est un tableau qui ne
comporte quune seule colonne ; une liste (ou vecteur-ligne) est un tableau qui ne comporte quune
seule ligne. MATLAB propose un certain nombre de fonctions qui en simplifient lusage.

Constructions de listes

- On peut dfinir la valeur dune liste en donnant la suite de ses lments spars par des espaces,
la liste tant dlimite par des crochets :

>> liste1 = [1 3 5 10]
liste1 =
1 3 5 10

- Lexpression Vi : pas : Vf cre une liste dont les lments constituent une progression
arithmtique de valeur initiale Vi, de pas pas et dont tous les termes sont infrieurs ou
gaux Vf. Lorsque la valeur du pas est omise (Vi:Vf), la valeur du pas est fixe par dfaut 1.

>> liste2 = 1 : 4
liste2 =
1 2 3 4

>> liste3 = 1 : 5.6
liste3 =
1 2 3 4 5

>> liste4 = 1.5 : 0.3 : 2.5
liste4 =
1.5000 1.8000 2.1000 2.4000

- La fonction linspace(Vi,Vf, n) cre une liste de n lments uniformment rpartis entre Vi et Vf.

>> liste4 = linspace(0.5, 2, 4)
liste4 =
0.5000 1.0000 1.5000 2.0000

Constructions de vecteurs

- On peut dfinir la valeur dun vecteur en tapant entre deux crochets la suite de ses lments
spares par des points-virgules:

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 11

>> v1 = [1 ; 3 ; 5 ; 10]
v1 =
1
3
5
10

Les matrices ou tableaux

Les matrices suivent la mme syntaxe que les vecteurs. Les composantes des lignes sont spares
par des virgules et chaque ligne est spare de l'autre par un point virgule.

Manipulation des matrices
La manipulation de matrice est particulirement bien pense sous Matlab. Voici quelques
exemples de commandes pour crer des matrices :
a=[1 2 3;4 5 6] : cr une matrice de 2 lignes et 3 colonnes contenant les lments 1 2 3 sur
la premire ligne et 4 5 6 sur la deuxime.
b=[1 ;2 ;3] :Cr un vecteur colonne valant 1 2 3.
a=[1,2,3] (identique a =[1 2 3]) : cr le vecteur ligne 1 2 3 .
b=[a;1 2 3] : Cr une matrice dont la premire ligne vaut a et la deuxime ligne vaut 1 2 3.
a=1:5 : Cr un vecteur valant 1 2 3 4 5.
a=1:2:10 : Cr un vecteur valant 1 3 5 7 9.
a=[1 3:5] : Cr un vecteur valant 1 3 4 5.
a=(1:3) : donc ralise un vecteur colonne valant 1 2 3 (' permet de faire la transpose).
a=zeros(3) : Cr une matrice de 0 de taille 3x3.
a=ones(2,4) : Cr une matrice de 1 de taille 2x4.
a=zeros(2,3,4) : Cr une matrice de 0 de taille 2x3x4.
a=linspace(1,10,5) Cr un vecteur de 5 lments linairement rparti entre 1 et 10.
a=logspace(1,10,5) Cr un vecteur de 5 lments logarithmiques rparti entre 1 et 10.
Petit exemple : Crer avec la ligne de commande la plus courte possible la matrice A valant :
1 2 3 4 5 6 7 8 9
2 4 6 8 0 1 2 3 4
2 2 2 2 2 2 2 2 2
Note: La commande zeros est trs souvent utilise pour dclarer une matrice. En Matlab, les
variables ne sont pas dclares. Cependant lorsqu'on affecte des valeurs un vecteur ou une matrice,
celui ci s'agrandit au fur et mesure et le temps d'excution de la fonction peut alors tre fortement
augment. Il est donc recommand d'utiliser la commande zeros pour initialiser la matrice la bonne
dimension.

Concatnation des tableaux (matrices)
>> T1 = [1 2 ; 2 3]
T1 =
1 2
2 3

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 12

>> T2 = [3 4 ; 6 7]
T2 =
3 4
6 7
>> T = [T1 , T2] % ou [T1 T2]
T =
1 2 3 4
2 3 6 7
>> T = [T1 ; T2]
T =
1 2
2 3
3 4
6 7
Accs aux lments et sous-matrices
Soit la matrice a=[1 2 3;4 5 6] et le vecteur b=[1 2 3].
Noter que les indices des matrices Matlab commence 1 (et non 0 comme en C).

a(1,2)=4 : Affecte 4 l'lment de la premire ligne et deuxime colonne de la matrice a.
b(3)=4 : Affecte 4 au troisime lment du vecteur b.
a(1,:) : Sous matrice correspondant la premire ligne.
a(:,2) : Sous matrice correspondant la deuxime colonne.
a(2,2:end) : Sous matrice correspondant la deuxime ligne, colonne 2 fin(soit 5 et 6).
a(2,[1 end-1]) : Sous matrice correspondant la 2
me
ligne, colonne 1 et fin-1(soit 4 et 5).
a([2 3],[1 2])=[1 2;3 4] : Affecte [1 2;3 4] la sous matrice form par les lignes 2 et 3,
colonne 1 et 2.
a(:) : Vecteur colonne form par tous les lments de a.

Exemple : Reprendre A =
1 2 3 4 5 6 7 8 9
2 4 6 8 0 1 2 3 4
2 2 2 2 2 2 2 2 2
et inverser l'ordre des colonnes sur les lments en gras (toujours en une seule ligne de
commande). C'est dire que l'on doit avoir A=
8 7 6 5 4 3 2 1 9
3 2 1 0 8 6 4 2 4
2 2 2 2 2 2 2 2 2

Solution A=[1:9;2:2:8 0:4;2*ones(1,9)]
A([1,2],1:end-1)=A([1,2],end-1:-1:1)


Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 13

Logical indexing : Il est possible de construire une sous matrice en appliquant un masque
la matrice principale. Exemple :
v=[1 2 3 4];
v(logical([1 0 1 0])) retourne [1 3]
v(v>2) retourne [3 4] (Equivalent v(find(v>2)) mais plus rapide)

Oprations sur les matrices

Prenons A=[1+i 2+i 0;1 2 3;1 i 0] une matrice complexe et B=[1 2 3;4 5 6;7 8 9].
A' : Adjoint de A (Conjugu de la transpose).
A.' : transpose de A.
C=B^-1; : Inverse de B.
C*B : Produit matriciel.
C.*B : Produit terme terme.
C+B : Somme.
C^2 : C*C (puissance matricielle).
C.^B : Puissance terme terme.
C./B : division terme terme.
C\B : quivalent B^-1*C mais plus rapide car ne calcul pas l'inverse de B.
B/C : Equivalent (C'\B')'.
Note : On peut remplacer une des oprandes par un scalaire. Par exemple B+2 ajoute 2 chacun
des termes de B.

Fonctions usuelles sur les matrices

Prenons B=[1 2 3;4 5 6;7 8 9], v=[1 0 1];
size(B) : Vecteur correspond la taille de chacune des dimensions de B (ici [3 3]).
size(B,1) : Vecteur correspond la taille de la premire dimension de B.
length(v) : Nombre d'lment dans v (Souvent utiliser quand v peut tre un vecteur ligne ou
colonne).
length(B) : maximum entre le nombre de lignes et le nombre de colonne (ici 3)
f=diag(B) : Vecteur colonne contenant la diagonal de B.
diag(f) : Matrice diagonal dont la diagonal correspond f.
det(B) : Dterminant.
norm(B) : Norme.
rank(B) : Rang.
trace(B) : Rang.

Fonctions d'analyse

Chacune de ses fonctions peuvent tre applique sur un vecteur ligne ou colonne. Si elles sont
appliques sur des matrices chacune des colonnes est traite indpendamment formant ainsi un
vecteur ligne.
sum(B) : Somme ; voir mum(mum(M)) % M : matrice
prod(B) : Produit ; voir prod(prod(M)) % M : matrice
mean(B) : Moyenne
std(B) : Ecart type
var(B) : Variance (sans biais (/(N-1)))
var(B,1) : Variance statistique (/N)
max(B) : maximum; voir max(max(M)) % M : matrice ; voir aussi [max,ind]=max(M)
min(B) : minimum; voir min(min(M)) % M : matrice
voir les fonctions : vander(), exp(), expm(), sqrt(), sqrtm().
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 14

Autres diverses

cumsum(v) : Somme cumul.
cumprod(v) : Produit cumul.
eye(5) : Renvoie la matrice identit de dimension 5x5.
randn(3,4) : Renvoie 3x4 dont chaque terme suit une variable alatoire gaussienne ; voir la
fonction rand().
[P,D]=eig(C) : Diagonalisation de C : P*D*P^-1
null(h) : Matrice orthogonal. (h*null(h)=0)
pinv(h) : Pseudo inverse.
sort(R) : Trie les lments de chacune des colonnes indpendamment.
sortrows(R,3) : Trie les lignes par rapport aux lments de la troisime colonne.
find(g==5) : Donne les positions des lments de g qui sont gaux 5 (find est une fonction qui
renvoie les positions des lments non nulles. Dans le cas ou l'on cherche obtenir
g(find(g==5)) le "logical indexing" est gnralement plus rapide).

Fonctions avancs

Fonctions d'analyse numrique

lu : Dcomposition LU.
chol : Cholesky.
qr : Dcomposition QR.
qzhess : Hessenberg.
schur : Schur.
housh : Householder.
krylov : Krylov.

Matrices et boolens

b=(g>=5) : renvoie un vecteur b(ou une matrice) tel que b(i)=g(i)>=5
mat3=(mat1==mat2) : Renvoie une matrice mat3 de mme dimension que mat1 et mat2 avec
mat3(i,j)=mat1(i,j)==mat2(i,j)
b=(g==5 | g==3) : b(i)=(g(i)==5 | g(i)==3) (mme principe pour &)
find(g==5) : Donne les positions des lments de g qui sont gaux 5 (find est une fonction qui
renvoie les positions des lments non nulles)
isequal(mat1,mat2) : Renvoie 1 si tous les membres de mat1 sont gaux ceux de mat2 sinon 0
mat3 = ismember(mat1,mat2) : mat3(i,j)=1 si mat1(i,j) est dans mat2 (sinon 0)
any(vec) : Renvoie 1 si un ou plusieurs lments de vec sont 1 (sinon 0)
all(vec) : Renvoie 1 si tous les lments de vec sont 1 (sinon 0)

Fonctions de transformation de matrices :

reshape([1 2 3 4 5 6],2,3) : renvoie [1 2 3;4 5 6] (Recr une matrice partir d'un vecteur).
fliplr([1 2 3;4 5 6]) : renvoie [3 2 1;6 5 4] (replace les lments de droite gauche).
flipud([1 2 3;4 5 6]) : renvoie [4 5 6;1 2 3] (replace les lments de bas en haut).
flipdim : Replace les lments dans l'ordre invers suivant la dimension spcifie.
permute : Permet de permuter les dimensions d'une matrice (gnralisation de la transpose en
dimension >2)
ipermute : Permet de faire l'opration inverse de permute
tril : Extrait la matrice triangulaire infrieure
triu : Extrait la matrice triangulaire suprieure
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 15

Gestion des ensembles:

E=unique(mat) : Renvoie un vecteur colonne contenant tous les lment tris de mat mais une
et une seule fois (Ce qui permet de considerer aprs E comme un ensemble d'lment)
intersect(var1,var2) : Intersection (tri)
setdiff(var1,var2) : Diffrence
union(var1,var2) : Union

TDs

Exercice 1 : On note , et les vecteurs suivants :


Calculer
3 1 2
5 2 , 5 2 , 5 2 , u 3u, w v u w v u w v u + + +

Exercice2 : On note et les nombres complexes

Calculer les modules de et de , les produits u v , v u , la partie relle et la partie imaginaire de
2 3
u v + .
Exercice3 : On note , et les matrices suivantes

1. Calculer les matrices
T
AB et BA AB, .
2. Calculer les matrices
T
2
BB - I D = .
3. Calculer les dterminants des matrices , , , et .
4. Calculer les inverses des matrices , , , et .
5. Calculer les valeurs propres de la matrice . Quel est le rayon spectral de ?
6. Dterminer les vecteurs propres de la matrice .
Exercice4 : On pose


Que font les instructions suivantes : 3*A; A.*B; A./B; cos(A); exp(B);

Exercice5 : Pour chacune des matrices



Calculer
A
n
i
, pour 1,2,3,... n = Que vaut
A
n
n
lim
+
?.
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 16

Exercice6 : On pose


Que font les instructions suivantes
v=[1, 2, 4, 7];
A(v)=A(v) + 0.01;
B(v)=abs(B(v));
Exercice7 :
1. Crer un vecteur de coordonnes contenant les nombres : -5, -4,, 4, 5.
2. Crer un vecteur de coordonnes contenant les nombres : -500, -499, -498,, 499, 500.
3. Crer un vecteur contenant valeurs entre et spares par un incrment constant.
Variables et fonctions

Les variables

On dfinit une variable en lui donnant : un nom et une valeur numrique ou une expression
mathmatique :
a =1.25;
x = 0:0.5:10;
y = a*x;
z = y.^2;


Expressions mathmatiques

On crit les expressions mathmatiques de la faon habituelle:
z = 5*exp(-0.4*x).*sin(7.5*y);

Fonctions mathmatiques

Les fonctions mathmatiques de base sont donnes dans le tableau suivant:

Abs valeur absolue
module (nb. cmplx)
angle
argument (nb. cmplx)
sqrt
racine carre

real
partie relle

imag
partie imaginaire

conj
conjugue (nb.cmplx
round
arrondir

fix
arrondir (vers 0)
floor
arrondir (vers -)

ceil
arrondir (vers )

sign
signe
rem
reste

exp
exponentielle

log
logarithme base e

log10
logarithme base 10

Les fonctions trigonomtriques sont donnes dans le tableau suivant:

Sin cos tan asin Acos atan atan2

Sinh cosh tanh asinh Acosh atanh



Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 17

Exemple:

>> x=-2+5i
x =
-2.0000 + 5.0000i
>> a=real(x)
a =
-2
>> b=imag(x)
b =
5
>> X=abs(x)
X =
5.3852
>> alfa=angle(x)
alfa =
1.9513

Exemple :

>> w=50;
>> t=0.5e-3;
>> y=25*exp(-4*t)*cos(w*t)
y =
24.9423

Reprsentation graphique sous MATLAB

Dans toutes les reprsentations graphiques, le logiciel se base sur des donnes discrtes ranges dans
des matrices ou des vecteurs colonnes. Par exemple, pour reprsenter des courbes du
type ) (x f y = ou des surfaces ) , ( y x f z = , les donnes x, y, z doivent tre des vecteurs colonnes (x
et y) ou des matrices (z) aux dimensions compatibles. L'instruction de dessin correspondante (par
exemple plot(x,y) pour tracer des courbes planes) est alors utilise et ventuellement complte par
des arguments optionnels (couleur, type de trait, chelle sur les axes, etc...). La visualisation du rsultat
s'effectue dans une fentre graphique (avec possibilit de zoom, de rotation, d'impression).
Exemple de reprsentation graphique en dimension deux (en 2D)
En excutant le script suivant:
x=linspace(0,pi,30); % cre un tableau de 30 composantes
uniformment
% rparties entre 0 et pi
y=sin(x);
plot(x,y) % relie les points (xi,yi) par un trait continu
noir
plot(x,y,'p-b') % relie les points (xi,yi) par un trait continu
de couleur et
% matrialise les points avec un symbole
plot(x,y,'pb') % matrialise les points (xi,yi) avec un
symbole de couleur

- Les points peuvent tre matrialiss par le symbole p prenant les valeurs suivants: + x
- Les couleurs sont repres par leur initiale en anglais: r(ed), b(lue), blac(k), w(hite), y(ellow),
m(agenta), g(reen)
- On peut rajouter un titre la figure avec la commande title
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 18

title('sin(x) sur l''intervalle [0,pi]')
(Remarquer l'emploi d'une double apostrophe pour en faire figurer une dans une chane de caractres
dlimite justement par deux apostrophes.)
- On peut reprsenter plusieurs courbes sur la mme figure de plusieurs manires: d'abord par un
seul appel la fonction plot
plot(x,cos(x),x,sin(x),x,exp(-x)) % Matlab va
automatiquement utiliser des couleurs
% diffrentes
pour chaque courbe
plot(x,cos(x),'o-r',x,sin(x),'x-b',x,exp(-x),'*-g') % pour spcifier
le type
% de symbole et la couleur
utiliser pour chaque courbe
legend('cos(x)','sin(x)','exp(-x)') % pour rajouter une lgende.

Par dfaut la fentre graphique est efface avant chaque commande plot. Pour superposer des
courbes par des appels successifs cette fonction, il faut utiliser auparavant la commande hold on.

hold on
plot(x,cos(x),'o-r')
plot(x,sin(x),'x-b')
plot(x,exp(-x),'*-g')
legend('cos(x)','sin(x)','exp(-x)')

Principales instructions graphiques.

Instruction Description
plot(x,y)
trac de la courbe passant par les points (x,y)
loglog(x,y)
idem avec chelle logarithmique sur les deux axes
semilogx(x,y) idem avec chelle logarithmique sur l'axe Ox
semilogy(x,y)
idem avec chelle logarithmique sur l'axe Oy
plotyy(x,y,x,z)
courbe (x,y) avec l'axe 0y gauche et courbe (x,z)
avec l'axe 0z droite
xlabel('label')
lgende pour l'axe 0x
ylabel('label') lgende pour l'axe 0y
title('label')
titre au dessus du graphique
legend('lab1','lab2','lab3',...)
lgende avec une chane de caractres pour chaque
courbe
text(x,y,'label')
chane de caractres la position x,y
plot3(x,y,z)
trac de la surface passant par les points (x,y,z)
hold on, hold off
active/dsactive la conservation de la fentre
graphique l'appel de la fonction plot


Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 19

Exemple2:
>> t=0:0.01e-3:0.06;
>> y=10*exp(-60*t).*cos(120*pi*t);
>> z=10*exp(-60*t).*sin(120*pi*t);
>> plot(t,y,'r',t,z,'g'),grid
>> a=10*exp(-60*t);
>> hold
Current plot held
>> plot(t,a,'b--')
>> plot(t,-a,'b--')
>> title('Fonctions sinusoidales amorties')
>> xlabel('Temps , s'),ylabel('Tension , V')
>> hold off
>> plot(y,z),grid
>> axis equal
>> xlabel('y'),ylabel('z')

Graphique multiple

On peut tracer plusieurs graphiques dans la mme fentre en utilisant linstruction subplot pour
diviser la fentre en plusieurs parties.

Syntaxe: subplot(nl,nc,position).
Exemple:

>> w=logspace(0,3,1000);
>> s=j*w;
>> H=225./(s.*s+3*s+225);
>> AdB=20*log10(abs(H));
>> phase=angle(H)*(180/pi);
>> subplot(2,1,1),semilogx(w,AdB),grid
>> xlabel('w , rad/s'),ylabel('Amplitude , dB')
>> subplot(2,1,2),semilogx(w,phase),grid
>> xlabel('w , rad/s'),ylabel('Phase , degre')

Autres types de reprsentation
Outre la reprsentation cartsienne de courbes ou de surfaces, il existe d'autres possibilits pour
illustrer graphiquement un rsultat. On peut citer parmi les plus utiles, les instructions
contour,ezmesh (pour tracer les courbes de niveau d'une surface paramtrique), mesh,ezplot3
(courbes paramtriques dans l'espace), hist, rose (histogramme d'un chantillon de donnes
statistiques), stem, stairs, bar, pie, compass, etc...
Programmation sous MATLAB : Expressions, scripts et m-files
Introduction
Un des avantages de MATLAB est de proposer une syntaxe tr`es simple pour traduire les calculs
matriciels. Les oprateurs sont reprsents par les mmes symboles ( une ou deux exceptions prs)
que ceux utiliss communment en algbre linaire. Mieux, ils oprent directement sur les tableaux
(par exemple, il nest pas ncessaire decrire des boucles pour effectuer la somme ou le produit de
deux matrices).
Oprations de MATLAB
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 20

Oprateurs
Classs par ordre de priorit dcroissante, les oprateurs utiliss par MATLAB sont les suivants :
Exponentiation et transposition
o lexponentiation ^ et .^
o la conjugaison et la transposition .
Oprateurs multiplicatifs
o les produits * et .*,
o les divisions droite /, ./ et gauche \, .\
Oprateurs additifs et de ngation
o les oprateurs additifs unaire et binaires + et -
o la ngation ~
o oprateurs boolens avec par ordre de priorit :
Oprateurs de comparaison
o <, >, <= et >=
o galit ==, non galit ~=
Oprateurs logiques
o et logique &
o ou logique |
o et logique court-circuit &&
o ou logique court-circuit ||

Les oprateurs logiques court-circuits sont des oprateurs pour lesquels le rsultat est acquis ds que
lvaluation du premier oprande permet daffirmer le rsultat global sans valuer le second oprande.
Si a et b sont des variables boolennes :
o a && b vaut false ds que a vaut false
o a || b vaut true ds que a vaut true.

Dautre part on rappelle quil nexiste pas dans MATLAB de vrai type boolen : false est reprsent
par la valeur 0 et que true est reprsente par la valeur 1 et par extension par toute valeur non nulle, ce
qui est confirm par lvaluation des expressions suivantes :

>> 2&3
ans =
1 % true ET true vaut true

>> 2&0
ans =
0 % true ET false vaut false

>> 2|3
ans =
1 % true OU true vaut true
>> ~3
ans =
0 % le contraire de true (= 3) est false
>> 2==3
ans =
0 % lgalit est bien celle des nombres et non celle des prdicats !
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 21

Oprations boolennes - Tableaux boolens

Dans la suite, tableau boolen ou logical array dsignera un tableau dont les lments ont
pour valeur 0 ou 1, 0 reprsentant false et 1, reprsentant true. La fonction islogical teste le caractre
boolen dun tableau.

Oprateurs de comparaison : sont peut-tre ceux dont le comportement peut apparaitre le plus
droutant parce quils fonctionnent terme terme et que le rsultat est un tableau boolen.

Exemple:
Avec les variables A et B dfinies dans lexemple prcdent on obtient :
>> A , B
A =
1 2
1 0
B =
2 1
1 2
2
>> C =(A == B)
C = % C est le tableau rsultant dune opration boolenne
0 0
1 0
>> islogical(C)
ans =
1 % C est bien un tableau boolen

Dans lexpression a == b la comparaison porte sur les lments homologues de A et B :
1 == 3 false 0, 2 == 1 false 0
1 == 1 true 1, 0 == 2 false 0

Il en est de mme pour A > B :
>> A > B
ans =
0 1
1 0
En rsum, si A et B sont des tableaux de mme format et si op dsigne un des oprateurs
boolens <, >, <=, >=, ==, = le rsultat de A op B est dfini par la rgle suivante : A op B
produit comme rsultat un tableau boolen de mme format, dont les lments sont dfinis
par Aij op Bij.

Ainsi que le montre lexemple ci-dessous, un tableau form de 0 et de 1 nest pas ncessairement un
tableau boolen :
>> A = eye(2)
A =
1 0
0 1
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 22

>> islogical(A)
ans =
0 % A nest pas un tableau boolen
>> class(A)
ans =
double

Seuls les tableaux
o rsultant dune opration boolenne ;
o forms de 0 et de 1 et transforms en tableaux boolens par la fonction logical ;
sont des tableaux boolens.

Avec le mme tableau A que prcdemment :
>> B = logical(A)
B =
1 0
0 1

>> test = islogical(B)
test =
1 % B est un tableau boolen

Oprateurs logiques

Soient A et B deux tableaux de mme format, valuons A & B :

>> A = [1 2 ; 1 0] , B = [2 1 ; 1 0]
A =
1 2
1 0

B =
2 1
1 2

>> A & B
ans =
1 1
1 0

>> islogical(ans)
ans =
1

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 23

MATLAB value sans problme A & B bien que les tableaux A et B ne soient pas des tableaux
boolens. Le rsultat de lvaluation ans, est un tableau boolen : avant lvaluation MATLAB a
transform les deux tableaux en tableaux boolens en suivant la rgle usuelle, puis a effectu
lopration logique terme terme. Il en est de mme pour les autres oprateurs logiques |, ||, &&.

Scripts et m-files

Scripts

Un script est une squence dexpressions ou de commandes. Un script peut se dvelopper sur
une ou plusieurs lignes. Les diffrentes expressions ou commandes doivent tre spares par une
virgule, un point-virgule ou par le symbole de saut de ligne constitu de trois points . . . suivis de
<entrer> (le rle des trois points et dinhiber le mcanisme dvaluation lors dun passage la ligne).
Comme pour une expression unique, la frappe de <entrer> dclenche le processus dvaluation. Les
expressions sont values dans leur ordre decriture. Seule la valeur des expressions suivie dune
virgule ou dun saut de ligne est affiche, celle des expressions suivies dun point-virgule, ne lest pas.

>> a = .5, 2*a, save a, b = pi; 2*b, c = a*b
a =
0.5000
c =
1.5708
ans =
6.2832
c =1
.5708
>> ans
ans =
6.2832
Ecrire un script est assez fastidieux, aussi MATLAB permet denregistrer le texte dun script
sous forme de fichier de texte appels m-files, en raison de leur extension.

Cration de m-files

Les m-files permettent denregistrer les scripts sous forme de fichiers-texte et servent en
particulier dfinir de nouvelles fonctions (une grande partie des fonctions prdfinies de MATLAB
sont stockes sous forme de m-files dans la toolbox matlab. Les m-files peuvent tre cres par
nimporte quel diteur. Dans les versions rcentes de MATLAB il existe un petit diteur intgr que
lon peut appeler partir du menu file ou partir de la barre de menu de la fentre de commande.

Exemple:
Dans la fentre de lditeur tapez les lignes suivantes :
% script - essai . m
a = .5;
b = pi;
c = a * b
Sauvez le fichier dans le rpertoire de travail sous le nom de essai.m.


Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 24

Excution dun m-file

Pour excuter le script contenu dans un m-file et Il suffit de taper le nom de ce m file dans la fentre de
commande suivi de < entrer >

Pour excuter le script prcdent, on tape essai et on obtient :
>> essai
c =
1.5708
La prsence dun point-virgule ; la fin des deux premires lignes du script a neutralis laffichage des
valeurs de a et b.

Elments dcriture de m-files

Commentaires : Les lignes de commentaires sont prcdes du caractre %.
Entres - input et menu : La fonction input permet la saisie dune valeur depuis le clavier. Plus
prcisment :
- Pour les valeurs numriques, n = input(message) affiche message et affecte la variable n la
valeur numrique entre au clavier.
- Pour les chanes de caractres, str = input(message,s) affiche message et affecte la variable
str la valeur entre au clavier considre alors comme une chane de caractres.

>> n = input(Entrez la valeur de n )
>> nom = input(Entrez votre nom ,s)
- La fonction menu gnre un menu dans lequel lutilisateur doit choisir une option :
result = menu(titre, opt1, opt2, ..., optn)
La valeur retourne dans la variable result est gale au numro de loption choisie. menu est souvent
utilis en relation avec la structure algorithmique switch-case.

result = menu(Traitement, Dterminant, Inversion, Quitter)

Si lutilisateur slectionne Dterminant la variable result prend la valeur 1, la valeur 2 sil
slectionne Inversion et la valeur 3 pour Quitter.

Affichages - disp - num2str format : La valeur dune variable est affiche en faisant valuer une
expression rduite la variable elle-mme.

>> a = [1 2] ;
>> a
a =
1 2
- La fonction num2str(x) o x est un nombre, retourne la valeur littrale de ce nombre.

>> s = [la valeur de pi est : num2str(pi)] ;
>> s
s =
la valeur de pi est : 3.1416

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 25

- La commande disp(t) o t est une chane de caractres ou un tableau, affiche la valeur de cette
chane de caractre ou de ce tableau sans faire rfrence au nom de la variable. Cette
commande sera souvent utilise avec num2str pour afficher les valeurs des expressions
numriques.

>> a = [1 2;3 4] ;
>> disp(a)
1 2
3 4
>> disp([ ordre de la matrice a : num2str(size(a,1)) ] );
ordre de la matrice a : 2

- La commande format permet de choisir entre plusieurs modes daffichage (sans interfrer avec le
type des valeurs numriques affiches qui est toujours le type double) :

Commande Affichage Exemple
format short
format short e
format long
format long e
format hex
format bank
format rat
format +
dcimal 5 chiffres
scientifique 5 chiffres
dcimal 16 chiffres
scientifique 16 chiffres
hexadcimal
virgule fixe deux dcimales
fractionnaire
utilise les symboles +, - et espace pour + afficher
les nombres positifs ngatifs et nuls
31.416
31.416e+01
31.4159265358979
314159265358979e+01

31.41
3550/113
+

Pause : La commande pause permet de mnager une pause dans lexcution dun m-file :
- sans argument pause suspend lexcution jusqu ce que lutilisateur presse sur une touche.
- pause(n) suspend lexcution pendant n secondes.
Interaction avec le systme dexploitation : MATLAB possde des fonctions et des commandes
qui permettent dobtenir la liste des rpertoires accessibles ou matlabpath, la liste des fichiers dun
rpertoire donn, les diter et ventuellement les effacer :

- addpath path : ajoute path la liste matlabpath des rpertoires accessibles par MATLAB ;
- p = pwd : retourne dans p le chemin daccs au rpertoire de travail actuel ;
- cd path : change le rpertoire de travail pour celui spcifi par path ;
- d = dir ou d = ls : retourne dans d la liste des fichiers du rpertoire de travail ;
- what : retourne la liste des m-files et des mat-files du rpertoire de travail ;
- edit test : dite le m-file test.m, identique Open dans le menu File ;
- delete test.m : efface le m-file test.m ;
- type test : affiche le m-file test.m dans la fentre de commande.

Instructions de contrle
Les instructions de contrle sous MATLAB sont trs proches de celles existant dans d'autres
langages de programmation.
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 26

Boucle FOR : parcours d'un intervalle
Une premire possibilit pour excuter une squence d'instructions de manire rpte consiste
effectuer une boucle pour les valeurs d'un indice, incrment chaque itration, variant entre deux
bornes donnes. Ce processus est mis en uvre par la boucle for.

Syntaxe :
for indice = borne_inf : borne_sup
squence d'instructions
end
O :
- indice est une variable appele l'indice de la boucle;
- borne_inf et borne_sup sont deux constantes relles (appeles paramtres de la boucle);
- squence d'instructions est le traitement effectuer pour les valeurs d'indices variant entre
borne_inf et borne_sup avec un incrment de 1. On parle du corps de la boucle.

Remarque
L'indice de boucle ne prend pas ncessairement des valeurs entires. D'autre part il n'est pas
ncessaire que l'indice de la boucle apparaisse dans le corps de la boucle; par contre il est interdit de
modifier sa valeur s'il apparat. Il est possible d'imbriquer des boucles mais elles ne doivent pas se
recouvrir. On peut utiliser un incrment (pas) autre que 1 (valeur par dfaut). La syntaxe est alors
borne_inf: pas : borne_sup. Le pas peut tre ngatif.

>> x = [ ] ;
>> for (k = 1 : 5), x = [x, sqrt(k)], end

>> for r=1.1:-0.1:0.75
disp(['r = ', num2str(r)]);
end
r = 1.1
r = 1
r = 0.9
r = 0.8

Voici un exemple d'utilisation d'une boucle pour calculer n! (vrifier prod([1:n])).
>> n = 4;
>> nfac = 1;
>> for k = 1:n
nfac = nfac*k;
end
>> nfac
nfac =
24

Boucle WHILE : tant que . . . faire

Consiste effectuer une boucle tant qu'une condition reste vrifie. On arrte de boucler ds que cette
condition n'est plus satisfaite. Ce processus est mis en uvre par la boucle while.
Syntaxe :
while expression logique
squence d'instructions
end
o
- expression logique : est une expression dont le rsultat peut tre vrai ou faux;
- squence d'instructions: est le traitement effectuer tant que expression logique est vraie.

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 27

Remarque
expression logique est en gnral le rsultat d'un test (par exemple i < Imax) ou le rsultat d'une
fonction logique (par exemple all(x)). Il est impratif que le traitement de la squence
d'instructions agisse sur le rsultat de expression logique sans quoi on boucle indfiniment.

Voici comment calculer n! avec une boucle while:
>> n = 4;
>> k = 1; nfac = 1;
>> while k <= n
nfac = nfac*k;
k = k+1;
end
>> nfac
nfac =
24

L'instruction conditionne IF

Excuter une squence d'instructions seulement dans le cas o une condition donne est vrifie
au pralable. Diffrentes formes d'instruction conditionne existent sous MATLAB.
L'instruction conditionne la plus simple a la forme suivante:
Syntaxe :
if expression logique
squence d'instructions
end
o
- expression logique : est une expression dont le rsultat peut tre vrai ou faux;
- squence d'instructions : est le traitement effectuer si expression logique est vraie.


Remarque
Contrairement certains langages de programmation, il n'y a pas de mot cl << then >> dans cette
instruction conditionne. Notez galement que la marque de fin de bloc conditionn est le mot cl end
et non pas<< endif >>.

Il existe une squence conditionne sous forme d'alternatives:
Syntaxe :
if expression logique
squence d'instructions1
else
squence d'instructions2
end
o
- expression logique : est une expression dont le rsultat peut tre vrai ou faux;
- squence d'instructions1 : est la squence d'instructions excuter dans le cas o expression
logique est vraie et squence d'instructions2 est la squence d'instructions excuter dans le
cas o expression logique est faux.

Il est possible d'effectuer un choix en cascade:
Syntaxe :
if expression logique 1
squence d'instructions 1
elseif expression logique 2
squence d'instructions 2
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 28

...
elseif expression logique N
squence d'instructions N
else
squence d'instructions par dfaut
end

Remarque
Attention ne pas laisser d'espace entre else et if; le mot cl est elseif.
On utilise frquemment un choix en cascade lors d'initialisation de donnes. Par exemple, on initialise
une matrice A en fonction de la valeur d'une variable numex (numro d'exemple) de la manire
suivante:

if numex == 1
A = ones(n);
elseif numex == 2
A = magic(n);
elseif numex == 3 | numex == 4
A = rand(n);
else
error('numero d''exemple non prevu ...');
end

Choix ventil, l'instruction switch

Une alternative l'utilisation d'une squence d'instructions conditionnes pour effectuer un choix en
cascade existe. Il s'agit de l'instruction switch.



Syntaxe :
switch var
case cst
1
,
squence d'instructions 1
case cst
2
,
squence d'instructions 2
...
Case cst
N
,
squence d'instructions N
otherwise
squence d'instructions par dfaut
end
o
- var : est une variable numrique ou une variable chane de caractres;
- cst
1
, ..., cst
N
: sont des constantes numrique ou des constantes chane de caractres;
- squence d'instructions i : est la squence d'instructions excuter si le contenu de la variable
var est gal la constante cst
i
(var==cst
i
).

Remarque
La variable var doit bien entendu tre du mme type que les constantes cst
1
, ..., cst
N
.
Il n'est pas ncessaire de prvoir un cas par dfaut (bien que cela soit prfrable). S'il n'y a pas de cas
par dfaut et si la variable var n'est gale aucune des constantes, alors le programme continue la
premire instruction suivant le mot-cl end.
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 29

Il est possible de regrouper plusieurs << cas >> si la squence d'instructions excuter est la mme pour
ces diffrents cas. La syntaxe est alors,
case{ cst
k
, cst
l
, ...}
squence d'instructions commune

Reprenons l'exemple o l'on souhaite initialiser une matrice A en fonction de la valeur prise par une
variable numrique numex (numro d'exemple).

n =input(entrer un entier) ;

switch rem(n,3) % reste de la division de n par 3
case 0,
disp(Multiple de 3)
case 1,
disp(1 modulo 3)
case 2,
disp(2 modulo 3)
otherwise,
disp(Nombre negatif)
end

function A = initA(n,numex)

switch numex
case 1,
A = ones(n)
case 2,
A = magic(n);
case {3,4},
A = rand(n);
otherwise
error('numero d''exemple non prevu ...');
end

Voici un exemple de choix ventil portant sur une variable de type chane de caractres.

rep = input('Votre rponse (oui, non, chepas) :');

switch rep
case {'oui','o'},
disp('bravo ...');
case {'non','n'}
disp('perdu ...');
case 'chepas'
disp('c''est pourtant facile ...');
end
Interruption d'une boucle de contrle

- Il est possible de provoquer une sortie prmature d'une boucle de contrle. L'instruction break
permet de sortir d'une boucle for ou d'une boucle while. L'excution se poursuit alors squentiellement
partir de l'instruction suivant le mot cl end fermant la boucle. En cas de boucles imbriques, on
interrompt seulement l'excution de la boucle intrieure contenant l'instruction break. L'instruction
return provoque un retour au programme appelant (ou au clavier). Les instructions suivant le return
ne sont donc pas excutes. L'instruction return est souvent utilise conjointement avec une
instruction conditionne par exemple pour tester dans le corps d'une fonction si les paramtres d'entre
ont les valeurs attendues.
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 30

- La commande pause permet d'interrompre l'excution du programme. L'excution normale
reprend ds que l'utilisateur enfonce une touche du clavier. L'instruction pause(n) suspend l'excution
du programme pendant n secondes.

Fonctions et m-files sous MATLAB

Les m-files sont aussi le moyen pour lutilisateur de MATLAB de dfinir ses propres fonctions.

Exemple
La fonction moyenne dfinie ci-dessous calcule la moyenne des lments dune liste ou dun vecteur.
Le texte de cette fonction est saisi dans un diteur (lditeur intgr pour les versions MacOs ou
Windows).
1 function m = moyenne(x)
2 % MOYENNE(X) : moyenne des lments dune liste ou dun vecteur
3 % Un argument autre quune liste ou un vecteur conduit a une erreur
4 [K,l] = size(x);
5 if ( (k~=1) & (l~=1) )
6 error(largument doit tre une liste ou un vecteur)
7 end
8 m = sum(x)/length(x);
La fonction est enregistre sous le nom moyenne.m. Elle est ensuite appele depuis la fentre de
commande:

>> x = 1 : 9
x =
1 2 3 4 5 6 7 8 9
>> y = moyenne(x)
y =
5

>> A = [ 1 2 ; 3 4] ;
>> moyenne(A)
??? Error using ==> moyenne
Largument doit tre une liste ou un vecteur

Le traitement de lerreur sur le type de largument est ralis aux lignes 5 7, plus particulirement par
la commande error. MATLAB utilise la section de commentaires en conjonction avec la commande
help pour fournir la dfinition de la fonction :

>> help moyenne
MOYENNE(X) : moyenne des lments dune liste ou dun vecteur
Un argument autre quune liste ou un vecteur conduit a une erreur

Syntaxe
Une fonction est constitue par :
un en-tte : function rsultat = nom de la fonction (liste de paramtres)
une section de commentaires : dont chaque ligne commence par le symbole % ;
le corps de la fonction dfini par un script.

Rgles et proprits
Le nom de la fonction et celui du fichier m-file qui en contient la dfinition doivent tre identiques.
Ce fichier est le fichier m-file associ la fonction.
La commande help affiche les neuf premires lignes de la section de commentaires ; la premire
ligne est utilise par la commande lookfor pour effectuer des recherches parmi les fonctions
MATLAB accessibles.
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 31

Chaque fonction possde son propre espace de travail et toute variable apparaissant dans le corps
dune fonction est locale celle-ci, moins quelle ait t dclare comme globale au moyen du
qualificateur global prcdant le nom de la variable dans tous les espaces de travail o cette variable
est utilise.
Un fichier m-file associ une fonction (i.e. qui porte le nom dune fonction et contient sa dfinition)
peut contenir dautres dfinitions de fonctions. La fonction qui partage son nom avec le fichier ou
fonction principale doit apparaitre en premier. Les autres fonctions ou fonctions internes
peuvent tre appeles par la fonction principale, mais pas par dautres fonctions ou depuis la fentre de
commande.

Exemple

1 function [m, v] = myStat(x)
2 % MYSTAT(X) : moyenne et variance des lments dune liste ou dun vecteur
3 % un argument autre quune liste ou un vecteur conduit a une erreur
4 [k,l] = size(x) ;
5 if ( (k~=1) & (l~=1) )
6 error(largument doit tre une liste ou un vecteur)
7 end
8 m = moyenne(x);
9 v = variance(x);
10 function a = moyenne(u)
11 % Calcul de la moyenne
12 a = sum(u)/length(u);
13 function b = variance(u)
14 % Calcul de la variance
15 c = sum(u)/length(u);
16 u2 = (u - c).^2;
17 b = sum(u2)/length(u);

Lensemble des trois fonctions est enregistr dans un seul fichier m-file portant le nom de la fonction
principale myStat.m.
Lexcution dune fonction sachve :
lorsque la fin du script dfinissant la fonction a t atteinte ;
lorsque une commande return ou un appel de la fonction error a t rencontr :
return termine immdiatement lexcution de la fonction sans que la fin du script dfinissant celle-
ci ait t atteinte,
error(message) procde de mme, mais en plus, affiche le contenu de message. Le contrle est
alors renvoy au point dappel de la fonction, fentre de commande ou autre fonction.

Optimisation des calculs

Les calculs sont acclrs de faon spectaculaire en utilisant des oprations vectorielles en lieu et place
de boucles. Comparons les deux fonctions suivantes (la commande tic dclenche un chronomtre ;
toc arrte le chronomtre et retourne le temps coul depuis tic) :

Exemple

1 function [t,b] = test1(n)
2 % dtermine le temps mis pour crer la liste
3 % des racines carres des entiers compris entre 1 et n
4 m = 0 ;
5 tic ;
6 for k = 1 : 1 : n
7 b(k) = m+sqrt(k) ;
8 end
9 t = toc ;
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 32


1 function [t,b] = test2(n)
2 % dtermine le temps mis pour crer la liste
3 % des racines carres des entiers compris entre 1 et n
4 tic ;
5 a = 1 : 1 : n ;
6 b = sqrt(a) ;
7 t = toc ;

Les rsultats obtenus montrent que test2 est plus efficace que test1.

>>test1(1000)
ans =
0.1040

>>test2(1000)
ans =
0.0023

MATLAB dispose dun utilitaire appel profiler qui est prcieux pour tudier les performances dune
ou plusieurs fonctions. Les modalits dutilisation du profiler ont volu en fonction des versions de
MATLAB. On les trouvera dans laide en ligne help profile.

Fonctions pour Sries et Transformes de Fourier

Les fonctions Matlab les plus utilises pour l'analyse de Fourier sont les suivantes, o x est un vecteur
ou une matrice sur lequel les oprations de Fourier sont appliques:

Fonctions Description Dans Matlab
fft
"Fast Fourier Transform", (similaire la srie de Fourier en temps
discret, aussi utilise pour valuer la transforme de Fourier en temps
discret)
X = fft(x)
ifft
"Inverse Fast Fourier Transform"
x = ifft(X)
fftshift
Dplace les composantes frquence nulle au milieu du spectre. S'il
s'agit d'un vecteur, la fonction interchange la moiti droite avec la
moiti gauche de X. Pour les matrices, la fonction interchange le 1
er

et le 3
me
quadrants avec le 2
me
et 4
me
.
fftshift(X)

Exemple:
Pour trouver des chantillons de la transforme de Fourier d'un signal, il faut utiliser la fonction "fft".

figure(1)
T=0.01;
Fs=1/T; % frquence d'chantillonnage de 100 Hz
t = 0:T:1;
x = sin(2*pi*10*t); % signal frquence de 10 Hz
plot(t,x)
title('Signal')
xlabel('temps (ms)')

Maintenant tapez:

figure(2)
FFT_size=2048;
X=fft(x,FFT_size);
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 33

f=(0:FFT_size/2)/(FFT_size/2)*Fs/2;
plot(f,abs(X(1:FFT_size/2+1))); %on voit que le signal est 10 Hz
title('Signal en frquence');
xlabel('Frquence(Hz)');
ylabel('Amplitude');

Polynmes :

Les polynmes sont traits comme des vecteurs de coefficients dans Matlab. Par exemple, l'quation
polynomiale y(x) = 2x3 + 6x2 + 5x + 12 sera reprsente par le vecteur y = [2 6 5 12]. Une fois que le
vecteur est bien pos, il est possible de trouver avec Matlab les racines du polynme, tant donn qu'on
connat l'quation, ou encore de trouver l'quation polynomiale en connaissant les racines. Voici le
tableau dcrivant les commandes Matlab :

Fonctions pour Polynmes Description
poly Construction de polynmes partir des racines
roots Calcul des racines
polyval value un point
polyvalm valuation en une matrice de points
deconv Division de polynmes
conv Multiplication de polynmes
residue Dcomposition en rsidus
polyfit Approximation du polynme
polyder Diffrentiation

clear
clc
%vecteur reprsentant les coefficients du polynme y(x) = 2x
3
+ 6x
2
+ 5x + 12
y = [2 6 5 12];
%Racines
racines=roots(y);
disp(racines)
%A partir des racines, trouvons l'quation
approx_equation=poly(racines);
disp(approx_equation)
%Evaluons le polynme pour diffrents points dans un intervalle
%Construction du vecteur de points
points=0:0.1:2;
%value le polynme ces points
y_evalue=polyval(y,points);
disp(y_evalue)
%Affichage du polynme approxim pour les valeurs entre 0 et 2
plot(points,y_evalue)

Pour multiplier deux polynmes y(x) et z(x), il faut utiliser la commande "conv". Pour la division ,
utilisez "deconv".

Exemple:

clc
clear
%Premier polynme y(x) = 2x
3
+ 6x
2
+ 5x + 12
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 34

y = [2 6 5 12];
%Deuxime polynme z(x) = 6x
2
+ 87x + 20
z=[0 6 87 20];
multiplication=conv(y,z);
disp(multiplication)
%Le rsultat de la multiplication donne la rponse en forme de vecteur
%multiplication = 12x
5
+ 210x
4
+ 592x
3
+ 627x
2
+ 1144x + 240

Pour la division, si y(x) n'est pas un facteur de z(x), on obtiendra un "reste" aprs la division.

Exemple:

[quotient,restant]=deconv(z,y);
disp(quotient)
disp(restant)

Fonctions d'optimisation

Fonctions dOptimoisation Description
fsolve Rsolution d'un systme d'quations non-linaires
fzero Trouve les zros d'une fonction une variable
fmin Minimisation d'une fonction une variable
fmins Minimisation d'une fonction plusieurs variables

Analyse de systmes temps continu

Soit la fonction de transfert suivante:
0
1
1
0
1
1
...
...
) (
) (
) (
a s a s a
b s b s b
s A
s B
s H
n
n
n
n
m
m
m
m
+ + +
+ + +
= =


Dans Matlab, mettez les coefficients sous une forme de vecteurs:
] ,..., , [ et ] ,..., , [
0 1 0 1
a a a den b b b num
n n m m
= =
Aussi, une fonction de transfert peut tre crite en fonction de ses ples et de ses zros, qui peuvent
tre trouvs par la commande "tf2zp":
) )...( )( (
) )...( )( (
) (
1 1
1 1
p s p s p s
z s z s z s
K s H
n n
m m


=


o z
i
: zros; p
j
: ples; K: gain statique.

Tableau des commandes pour l'analyse de fonctions de transfert en temps continu:

Fonctions Description Matlab
tf2zp
Donne les zros et les ples de la fonction
de transfert H(s)
[z,p,k] = tf2zp(num,den)
zp2tf
partir des zros et des ples, trouve la
fonction de transfert
[num,den] = zp2tf(z,p,k)
feedback
Calcule un modle LTI pour un systme
boucle-ferme. y = sys * u
sys1
sys2
+ U Y

sys = feedback(sys1,sys2)
series
Connecte deux modles LTI en srie d'une sys=series(sys1,sys2,outputs1,inputs2)
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 35

manire que la sortie du 1er systme est
relie l'entre du deuxime.
parallel
Connecte deux systmes LTI en parallle sys=parallel(sys1,sys2,in1,in2,out1,out2)
freqs
Calcule la CTFT (transforme de Fourier)
du systme connaissant sa fonction de
transfert.
w:vecteur de frquences dsires
num: numrateur
den: dnominateur
[H,w] = freqs(num,den,w)

De plus, l'utilisation des fonctions "step", "impulse, "lsim", et "bode" sera dcrite dans les sections qui
suivent.

Exemple:
Pour la fonction de transfert suivante:
6 5 4 3
4
) (
2 3
+ + +
=
s s s
s H

clc
clear
num=[4];
den=[3 4 5 6];
%Pour trouver les ples et zros
[z,p,k] = tf2zp(num,den);
disp('poles:')
disp(p)
disp('zeros:')
disp(z)
%Maintenant partir des ples et zros, trouvons la fonction de transfert:
[num2,den2] = zp2tf(z,p,k);
disp(num2)
disp(den2)

Rponse l'chelon

Pour trouver la rponse l'chelon ("step response") d'un systme, utilisez la commande "step" dans
Matlab.

Exemple:

clc
clear
%Fonction de transfert H(s)=4/(3s
2
+2s+4)
num=[4];
den=[3 2 4];
%Step Response
step(num,den)

Rponse impulsionnelle

Pour dessiner la rponse l'impulsion (rponse impulsionnelle, "impulse response") du systme,
utilisez la commande "impulse":
impulse(num,den)
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 36

Pour trouver la rponse une entre arbitraire spcifie par l'utilisateur, il faut utiliser la commande
"lsim":

Exemple:

clc
clear
t=0:0.01:10;
%Fonction de transfert H(s)=4/(3s
2
+2s+4)
num=[4];
den=[3 2 4];
%Entre du systme
x=3*t;
lsim(num,den,x,t);

Bode plot

On peut galement tracer le diagramme de Bode de cette fonction de transfert en utilisant la commande
"bode":

Exemple:

clc
clear
%Fonction de transfert H(s)=2/(3s+4)
num=[2];
den=[3 4];
bode(num,den)

Le diagramme de Bode donne deux graphiques, la rponse en amplitude/magnitude (en dB) et la
rponse en phase. Pour prdterminer l'chelle sur laquelle le diagramme "bode" est dessin, utilisez la
commande suivante: w=logspace(d1,d2)
Note: si d1= -1 et d2=4, ceci veut dire que le vecteur commence 10
-1
et se termine 10
4
.

Rponse en frquence

Pour calculer la rponse en frquence H (similaire au diagramme de Bode ...) d'une fonction de
transfert, il faut utiliser la commande "freqs". De plus, il faut dfinir un vecteur de frquences "w" sur
lequel la rponse H est calcule.

Exemple:

clc
clear
%vecteur de frquences
w=0:0.1:10;
%Fonction de transfert H(s)=2/(3s+4)
num=[2];
den=[3 4];
H=freqs(num,den,w);



Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 37

Analyse de systme temps discret

Voici un tableau des commandes principales:

Tableau des commandes:

Commandes Description Matlab
conv
Convolution de deux signaux en temps discret
x[n]*h[n]
y=conv(x,h)
dstep
"Step response", rponse l'chelon pour un systme
en temps discret, pour N points
dstep(num,den,N)
dimpulse
"Impulse Response", rponse impulsionnelle d'un
systme en temps discret, pour N points
dimpulse(num,den,N)
filter
Filtre digital dcrit par les vecteurs A (den) et B
(num). Filtre les donnes dans le vecteur X.
Y=filter(B,A,X)
freqz
Retourne la rponse en frquence aux frquences "w" [H,omega]=freqz(num,den,w)

Exemple:
%Step Response, rponse l'chelon
n=0:10;
num=[1 0];
den=[0.9 0.1 0.001];
y=dstep(num,den,length(n));
%Graphique
stem(n,y)

TDs :

EX1
Dterminer les coefficients du polynme caractris par les racines A = [0.5 2 4.3]. Calculer
la valeur prise par P(x) pour x = 2.

EX2
Calculer les sommes des lments de chacune des diagonales dune matrice.

EX3 Cration d'une fonction
1) Gnrer un vecteur complexe dfini par A=[ 0.22+0.5*i ; 0.4-0.2*i]
2) Extraire les parties relles, imaginaires, modules et phases des lments du vecteur A.
3) Crer une fonction farg_A permettant de calculer la phase des lments complexes d'une matrice A.
Deux arguments en entre pour la fonction sont imposs: le premier reprsente la matrice A et le
second est une variable texte qui permet de sortir le rsultat, soit en radian, soit en degr. Strcmp

EX4 graphisme et fonctions
On propose de raliser l'tude du polynme suivant : p(x) = x3 30x + 30
1) Evaluer le polynme sur le segment [-8,8] pour un pas de calcul de 0.1. polyval
2) Visualiser la courbe ainsi dfinie (Utiliser la notion de boucle interprte). Plot, grid
3) Calculer les racines et les afficher sur le mme graphique que prcdemment. roots, hold,
zeros, length
4) Crer une fonction mypoly.m reprsentant le calcul du polynme pour un x donn.
5) Evaluer l'aire forme par la courbe entre les deux premires racines. quad
6) Visualiser graphiquement l'aire calcule. fill
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 38

Fichiers de donnes

Matlab possde deux types de fichiers. Le premier type est constitu par les fichiers crs un format
propritaire Matlab. Ces fichiers sont reconnaissables par leur extension en .mat. Ce format
spcifique permet de sauvegarder des variables au format numrique ou texte, des variables relles ou
complexes trs simplement. Le second type regroupe les fichiers binaires et ASCII communs tous les
langages de programmation. Ces derniers permettent donc de communiquer avec l'extrieur et en
particulier de rapatrier des donnes collectes par d'autres logiciels.

Fichiers Matlab

Les fichiers nom_fic.mat constituent donc le systme de fichiers propres Matlab. Leur manipulation
est trs facile, quel que soit le type ou la taille des matrices que l'on dsire sauvegarder.

Commande save

Cette commande permet de crer ce premier type de fichier. La syntaxe est la suivante :
save nom_fich var1 var2 ...
Les variables sont sauvegardes comme des matrices et donc se retrouvent au mme format lorsquon
les recharge afin de rutiliser.
Remarque: on peut sauvegarder une matrice var au format ASCII (8 ou 16 bits)
save PATH/nom_fich var ...-ascii

Commande load

Cette commande permet la relecture des variables sauvegardes avec la commande save.
load PATH/nom_fich
Remarque: La commande load offre aussi la lecture de fichier ASCII sous forme d'une matrice var
var =load PATH/nom_fich.txt

Fichiers binaires et ASCII: le format standard

Ce type de fichier permet d'importer et d'exporter des donnes vers l'extrieur dans le format de son
choix. Les commandes ncessaires leur manipulation sont les suivantes :
fopen, fseek, sprint, fread, ferror, fscanf, fwrite, ftell, sscanf, fclose, fprintf

Commande fopen

Cette commande ouvre et donne des informations sur le fichier que l'on dsire manipuler. Il y a deux
types de syntaxes :
fid =fopen('filename')
fid =fopen('filename','permission')
[fid,message] =fopen('filename','permission','architecture')
[filename,permission,architecture] =fopen(fid)
Ces trois premires commandes correspondent toutes l'ouverture d'un fichier dans le mode spcifi
par l'argument permission.
r : Ouverture en lecture.
r+: Ouverture en lecture et en criture.
w: Efface le contenu ou cre un nouveau fichier et le place en mode criture.
w+: Efface le contenu ou cre un nouveau fichier et le place en mode criture/lecture.
a: Cre un nouveau fichier ou ouvre un fichier existant pour l'criture la suite des donnes dj
prsentes.
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 39


a+: idem mais en lecture/criture.
Si la commande a russi, la variable fid devient un entier > 2 et la variable message est vide.
Si la commande n'a pas russi, la variable fid prend la valeur -1. Dans ce cas, un texte a t associ la
variable message qui peut vous aider dfinir l'erreur de manipulation.

Commande fread

Elle permet la lecture d'un fichier de donnes binaires. Sa syntaxe est la suivante:
[A,count] =fread (fid,size,'precision')
La commande fread permet donc la lecture d'un fichier binaire spcifi par fid et crit les donnes dans
une matrice A. fread ralise la lecture d'un nombre d'lments spcifi par size suivant une prcision
donne.
Si l'argument size est donn, les entres possibles sont:
n : lit n lments vers un vecteur colonne.
inf : lit toutes les donnes et cre un vecteur de mme taille (par dfaut).
[m,n] lit (m*n) lments et cre une matrice de taille [m,n] suivant l'ordre des colonnes.
Si la taille du fichier est infrieure, le reste se trouve combler par des zros.
L'argument prcision correspond la prcision numrique utilise pour sauvegarder les donnes. Il
correspond au nombre d'octets allou la variable pour coder sa valeur. Un standard de prcision
indpendant de la machine source est le float32 et float64. Ce format permet une bonne portabilit.

Matlab et Langage C
'schar' 'signed char' Signed character; 8 bits
'uchar' 'unsigned char' Unsigned character; 8 bits
'int8' 'integer*1' Integer; 8 bits
'int16' 'integer*2' Integer; 16 bits
'int32' 'integer*4' Integer; 32 bits
'int64' 'integer*8' Integer; 64 bits
'uint8' 'integer*1' Unsigned integer; 8 bits
'uint16' 'integer*2' Unsigned integer; 16 bits
'uint32' 'integer*4' Unsigned integer; 32 bits
'uint64' 'integer*8 Unsigned integer; 64 bits
'float32' 'real*4' Floating-point; 32 bits
'float64' 'real*8' Floating-point; 64 bits
'double' 'real*8' Floating-point; 64 bits

Formats portables
'char' 'char*1' Character; 8 bits
'short' 'short' Integer; 16 bits
'int' 'int' Integer; 32 bits
'long' 'long' Integer; 32 or 64 bits
'ushort' 'unsigned short' Unsigned integer; 16 bits
'uint' 'unsigned int' Unsigned integer; 32 bits
'ulong' 'unsigned long' Unsigned integer; 32 or 64 bits
'float' 'float' Floating-point; 32 bits

Commande fwrite

fwrite permet l'criture de donnes contenues dans une matrice. Sa syntaxe est la suivante:
count =fwrite(fid,A,'precision')
Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 40

Elle permet donc de passer des donnes contenues dans la matrice A (sauvegarde dans le sens des
colonnes) vers un fichier dfini par fid suivant une prcision donne. Count correspond au nombre de
donnes effectivement translates.

Commande fclose

Cette commande correspond la fermeture d'un ou de plusieurs fichiers. Sa syntaxe est:
status =fclose(fid)
status =fclose('all')

Commande fprintf

Cette commande est l'analogue de la commande fprintf en C: elle permet d'crire une chane de
caractre ASCII dans le fichier. Cette chane de caractres peut contenir des caractres de formatage,
qui seront alors remplacs par les donnes numriques passes en argument.
Par exemple, la commande suivante crira "x=2" dans le fichier associ fid:
x=2;
fprintf(fid, 'x=%d', x);


TD
1) Dfinissez une matrice :
|
|
|
|
|
.
|

\
|
=
4.3 4.2 4.1
3.3 3.2 3.1
2.3 2.2 2.1
1.3 1.2 1.1
A
Enregistrez cette matrice A dans un fichier 'test.mat' au format Matlab (save)
Effacez l'ensemble des variables (clear all)
Chargez le fichier (load)
Vrifiez que la matrice A a bien t lue partir du fichier.
2) Mme question en enregistrant la matrice dans un fichier 'test.txt' au format ASCII l'aide de save
et load.
Vrifiez l'aide du bloc note que le fichier contient bien les valeurs de la matrice A de faon lisible.
3) Mme question en enregistrant la matrice dans un fichier 'test.raw' au format binaire, en utilisant
fopen, fwrite, fread et fclose. On utilisera par exemple une prcision 'double'.
La fonction fread ne renvoie pas une matrice, mais un vecteur; pourquoi ?
Quelle fonction matlab utiliser pour redonner sa "forme" 4x3 la matrice ?















Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 41

Cration dune interface graphique avec MATLAB GUIDE

L'environnement GUIDE de Matlab permet de dvelopper des GUI, des interfaces graphiques. Un GUI
est dfini dans Matlab par deux fichiers dpendants, respectivement une figure et un script. La
programmation d'un GUI utilise des callbacks, et les changes de donnes s'oprent avec des handlers.

lments de base
- Fiche et composants visuels (aspect visuel).
- Code dfinissant fonctionnement de linterface (aspect fonctionnement).

Cration dune nouvelle interface
Ligne de commande MATLAB : tapez guide
Dans la fentre GUIDE Quick Start , choisissez longlet Create New GUI .
Une fiche vierge quadrille apparat lcran sur laquelle vous placerez les composants visuels de
linterface graphique.

Palette des composants visuels :
Push buttons : (boutons poussoirs)
Un seul tat (stable).
Identifi avec un court texte (paramtre String).
vnement traiter: clic ou relchement du bouton gauche de la souris.

Checkboxes : (cases cocher)
Deux tats possibles.
Boutons dun mme groupe sont indpendants (plusieurs options peuvent tre slectionnes
simultanment).

Radio buttons : (boutons radio)
Deux tats (comme case cocher).
Boutons dun mme groupe sont mutuellement exclusifs (une seule option peut tre slectionne
la fois).

Frames : (cadres)
Bordure rectangulaire dlimitant un groupe de contrles.

Static text : (champ de texte fixe)
Affichage de texte.

Edit text : (champ de texte ditable)
Saisie de texte.
Pas pour affichage.

Pop-up menus : (menus droulants)
Choix dun item parmi une liste.
Seul litem slectionn est affich.
vnement traiter : item cliqu par la souris.

Sliders : (barres de dfilement)
Choix dune valeur numrique lintrieur dun intervalle.
Peuvent tre orientes horizontalement ou verticalement.
vnement traiter : dplacement de la barre.

Cours de MATLAB Gnie Electrique & Tlcommunications GET1 Page 42

Listboxes : (listes)
Choix dun item parmi une liste.
Un groupe ditems, dont litem slectionn, est affich.
vnement traiter: item choisi par clic de la souris.

Menus : ( partir du MenuEditor)
Choix dun item parmi une liste doptions permises ou non.
Possibilit de cl de raccourcis.
Possibilit de sous-menus.
vnement traiter: item de menu choisi par clic de souris.

Axes :
Permet dafficher un graphique trac par MATLAB
Permet dafficher des fichiers image
vnement traiter: lutilisateur clique sur la souris lorsque le curseur se trouve lintrieur des
bornes du composant.

Accs aux donnes associes aux composants visuels
tout objet d'interface, Matlab associe un pointeur qui permet d'accder aux proprits, le handler.

Certains handlers sont dj dfinis par dfaut :
gcf : handler de la figure courante (get current figure).
gca : axes courants de trac (get current axes).
gcbf : la figure clique (get callback figure).
gcbo : l'objet qui appelle (celui sur lequel on a cliqu).
0 : la fentre interprteur Matlab, ou racine.

Certaines instructions ncessitent un handler :
get et set : respectivement pour lire et pour changer les valeurs des proprits.
findobj : pour retrouver le handler d'un objet.
propedit : pour diter les proprits d'un objet.
delete : pour effacer un objet.

Exemple de GUI : construire sous GUIDE la fentre suivante: second degre2.m

Vous aimerez peut-être aussi