Académique Documents
Professionnel Documents
Culture Documents
=
5 4
3 3
A et le scalaire d=3.
Formation Matlab 12
1.3.6 Gestion des variables dans lespace de travail : commandes whos, clear, format
La commande whos donne la liste des variables avec leurs caractristiques dfinies dans
lespace mmoire. Les commandes clear et format permettent respectivement de dtruire une
variable de lespace de travail et donne la possibilit de modifier le format daffichage des
variables qui sont restitues lcran.
Application : Dtruire toutes les variables sauf la matrice A et le scalaire d. Puis, dfinir
une variable scalaire complexe b en entrant >> 10 * 1 i b + = ; et taper la
commande whos. Le rsultat est le suivant :
Figure n4 : utilisation de la commande whos
Si lon souhaite utiliser la valeur , on tape pi (en minuscules).
Application 2 : modifier le format daffichage de la valeur .
Figure n5 : utilisation de la commande format
Formation Matlab 13
1.4 Oprations directes sur les matrices
1.4.1 Oprations arithmtiques :
Les oprations sur les matrices se font en criture directe laide des oprateurs *, /, \, +, etc.
Application : une fois toutes les variables dj existantes dtruites, utiliser la fentre de
commandes pour dfinir :
(
=
5 4
3 3
A x =
(
5
2
y =
(
4
1
.
Calculer:
x A w * = (vecteur)
y w sd '* = (scalaire) . permet de calculer la transpose de la matrice.
y w h = (vecteur)
y w z * . = (vecteur) . .* permet deffectuer une multiplication terme
terme.
1.4.2 Oprations relationnelles et logiques
fonctions dfinition
< > diffrent de
<= >= infrieur (suprieur) ou gal
== gal
~= diffrent
& et logique
| ou
~ complment logique (not)
xor ou exclusif
1.5 Manipulations sur les lments matriciels
1.5.1 Manipulation des indices
- Lecture dun lment :
A(i,j) permet de voir llment la i
me
ligne et la j
me
colonne de A ;
- Modification dun lment :
A(i,j)=d
- Lecture dune ligne ou dune colonne :
A(i,:) renvoie la i
me
ligne de A.
A(:,j) renvoie la j
me
colonne de A
- Suppression de la i
me
ligne :
A(i,:)=[]
Attention: aprs la suppression, les numros de lignes seront dcals.
- Concatnation de deux matrices:
B=[A,C] ou B=[A C] : concatnation horizontale: la matrice C est ajoute droite de
la matrice A
B=[A;L] : concatnation verticale, la matrice L est ajoute au bas de la matrice A
Formation Matlab 14
Si lon dsire insrer une colonne (resp. une ligne) dans une matrice, cela revient en fait
concatner deux matrices dont l'une est un vecteur colonne (resp. ligne). On ne peut pas
insrer simplement une colonne ou une ligne l'intrieur d'une matrice.
Application : ajouter la matrice A une ligne dont les lments sont [10 -2]. Puis,
modifier la valeur de llment (3,2), en lui donnant une nouvelle valeur
gale -205.
1.5.2 Valeurs particulires
Deux valeurs informatiques non dfinies sont manipules par Matlab : NaN (Not a number)
reprsente llment non dfini et Inf est associ linfini.
Application : en posant [ ] 0 0 8 = x et [ ] 5 0 4 = y calculer x y d / . =
Remarque : les fonctions isnan et isinf permettent de savoir si dans une matrice les
lments NaN et inf sont prsents.
1.6 Matrices creuses (help sparfun)
Les matrices creuses (sparse matrix) sont des matrices caractrises par un nombre trs
important dlments nuls. Dun point de vue informatique, un traitement particulier de ces
matrices permet un gain en place mmoire et en cot calculatoire.
fonctions dfinition
sparse cration dune matrice creuse
full conversion dune matrice creuse
issparse retourne 1 si la matrice est creuse
speye matrice identit creuse
Application : Crer une matrice alatoire de taille 66, note A avec la fonction rand.
Gnrer la matrice B ne contenant que les lments suprieurs 0.92 et des
zros ailleurs (A>0,92).*A. Cette matrice est alors transforme en matrice
creuse en utilisant les fonctions adaptes. Vous vrifierez le rsultat avec la
commande whos.
Remarque : on verra dans la partie 2 que la fonction rand permet la gnration de
processus alatoire
1.7 Matrice et chane de caractres
Dans Matlab, les chanes de caractres sont des matrices. Elles sont dfinies par des
guillemets simples : 'entre guillemets simples' .
Remarque: Il ne s'agit pas des guillemets inverss : `pas de guillemets inverss`, ni de
guillemets doubles : "pas de guillemets doubles".
Formation Matlab 15
Figure n6 : exemple sur les chanes de caractres
Les fonctions associes se trouvent dans la toolbox strfun . (help strfun). On y trouve les
fonctions de conversion, de comparaison, de recherche, etc.
1.8 Bilan et exercice dapplication
1.8.1 Ce quil faut (au minimum) retenir !
Matlab est un logiciel qui dispose dune collection de bibliothques contenant des
fonctions/programmes extension .m. Comme un calculateur, Matlab peut effectuer des
oprations simples et peut stocker des variables de nature diffrentes (matrice, vecteur,
scalaire, rel, complexe, etc.).
Parmi les commandes connatre : path, help, lookfor, which, pwd, cd, ls, whos, clear,
format, etc.
On peut interrompre Matlab nimporte quel moment en appuyant sur Ctrl+C.
Formation Matlab 16
1.8.2 Exercice dapplication 1
- Crer la matrice suivante
(
(
(
(
=
4 1 12 8 13
17 14 7 11 2
2 15 6 10 3
1 4 9 5 16
A
- Crez une matrice { }
ij
b B = de la mme taille que
{ }
A a
ij
= , et pour laquelle
b
ij
=1 si 6 11 a
ij
, et b
ij
=0 sinon.
- Rechercher les lments de la matrice
{ }
A a
ij
= qui obissent la relation 6 11 a
ij
.
On utilisera pour cela la fonction find, qui permettra de dterminer les lments de la
matrice B gaux 1.
- Calculer la somme de la diagonale commenant par llment a
1 2 ,
. On utilisera pour cela
les fonctions diag et sum.
- Calculer le dterminant de la matrice A A
T
* *a
1 2 ,
. On utilisera pour cela la fonction det.
- Gnrer laide de la fonction rand une matrice D dont les lments sont alatoires de
taille (44). Crer une matrice binaire laide des oprateurs relationnels correspondant
aux lments de D qui sont suprieurs 0.2 et infrieurs 0.8. Crer alors la matrice G
qui ne contient que les lments de D donns par les ingalits et des zros ailleurs.
Formation Matlab 17
PARTIE N 2 SUR CERTAINES FONCTIONS DEDIEES
AU CALCUL
2.1 Initialisation et manipulation
Deux fonctions permettent de gnrer des matrices initialises zro ou une valeur
quelconque.
fonctions dfinition
zeros remplissage de zros
ones remplissage de 1
eye matrice identit
Application : Crer un vecteur ligne contenant successivement douze 0, puis huit 1 et
enfin douze 0.
Application 2 : Crer les matrices suivantes laide des fonctions zeros, ones et eye, et en
les concatnant horizontalement ou verticalement de faon approprie.
(
(
(
(
05 . 0 2 . 0 1 . 0 2 . 0
1 0 0 0
0 1 0 0
0 0 1 0
,
(
(
(
(
0 1 0 1
1 0 1 0
1 0 1 0
0 1 0 1
.
Diffrentes fonctions permettent de modifier lorganisation des lments dune matrice
partir de rotations ou de symtries.
fonctions dfinition
flipud symtrie horizontale (up-down)
fliplr symtrie verticale (left-rigth)
triu partie triangulaire suprieure
tril partie triangulaire infrieure
sort arrangement par ordre croissant
rot90 rotation de 90
Application : A partir dune matrice de taille 4*4, oprer successivement sur cette mme
matrice une rotation de 90 puis une symtrie verticale.
Formation Matlab 18
2.2 Algbre linaire
De nombreuses fonctions relatives lalgbre existent dans Matlab. Cet outil a t dvelopp
en effet dans le contexte de lalgbre dans ses versions prliminaires. Notre objectif nest pas
de fournir un descriptif exhaustif de toutes les fonctions. On se limite certain nombre afin de
proposer un point dentre lutilisateur.
2.2.1 Fonctions lmentaires
Les fonctions lmentaires regroupent les fonctions qui restituent une grandeur relative la
matrice tudie.
fonctions dfinition
trace trace de la matrice
det dterminant
norm normes 1, 2 etc. de la matrice
cond conditionnement
rank rang
Application : Calculer le rang de la matrice
(
4 2 4 2
2 1 2 1
.
2.2.2 Fonctions de dcomposition
De nombreuses techniques de dcomposition existent dans lalgbre linaire. Ces
dcompositions se retrouvent travers les fonctions suivantes :
fonctions dfinition
eig dcomposition en lments propres
svd dcomposition en lments singuliers
Application : Calculer les valeurs singulires associe la dcomposition SVD de la
matrice A donne par la relation
T
UDV A =
(
(
(
=
8 1 2 4
5 6 1 3
2 1 0 2
A
Vrifier que lon a les valeurs propres de la matrice
T
AA qui correspondent
aux valeurs singulires leves au carr.
Formation Matlab 19
2.3 Oprations sur les donnes
2.3.1 Gnration alatoire
La gnration de processus alatoires est possible sous Matlab avec les deux fonctions qui
suivent :
fonctions dfinition
rand remplissage de valeurs alatoires :
distribution uniforme
randn remplissage de valeurs alatoires :
distribution gaussienne
2.3.2 Analyse des donnes
Certaines de ces fonctions sont relatives la caractrisation dun processus alatoire. Elles
permettent toutes de caractriser le jeu de donnes qui est en entre.
fonctions dfinition
median valeur mdiane
max maximum
min minimum
std cart type (standard deviation)
Cf. cours de probabilits, processus
alatoires
mean moyenne
corrcoef coefficient de corrlation
Cf. cours de probabilits, processus
alatoires
prod produit des lments
sum somme des lments
Application : Gnrer laide de la fonction rand 15 chantillons dun processus
alatoire de distribution uniforme. Calculer sa moyenne et sa variance. En
outre, extraire la valeur max et min du jeu de donnes en incluant
linformation relative leur position dans le vecteur.
2.4 Oprations sur les Polynmes
Les diffrentes fonctions prsentes dans ce paragraphe sont relatives aux polynmes, ces
polynmes sont grs sous Matlab en suivant un ordre dcroissant pour lexposant et donc
pour la dclaration de leurs coefficients.
Formation Matlab 20
fonctions dfinition
roots Calcul des racines connaissant les
coefficients
poly Calcul des coefficients connaissant les
racines
polyval Calcul de P(x)
polyfit Identification des coefficients dun
polynme laide des moindres carrs
conv Produit de deux polynmes
deconv Division de deux polynmes
Application : Dterminer les coefficients du polynme caractris par les racines
[ ] 3 , 4 2 5 , 0 = A . Calculer la valeur prise par ( ) x P pour 2 = x .
Application 2 Evaluer les coefficients du polynme caractristique associ la matrice
(
=
7 3
1 2
A .
Formation Matlab 21
PARTIE N 3 LEMENTS DE PROGRAMMATION
3.1 Introduction
Aprs avoir vu un certain nombre de commandes utilises directement sous le prompt de
Matlab, on sintresse maintenant la construction de programmes contenant plusieurs
commandes. La programmation sous le logiciel Matlab conserve lesprit de simplicit
savoir une programmation directe sans pointeur ou autre. Pour dvelopper une application,
deux lments sont donc considrer :
1. le programme principal appel "script".
2. les lments de type fonction ou sous-fonction.
3.2 Script
3.2.1 Dfinition dun script
Un programme Matlab est un fichier texte contenant un certain nombre de commandes
Matlab. Sur le disque, il apparat toujours de la faon suivante :
nom_script.m
Ce programme scrit laide dun diteur de texte quelconque. Par dfaut, vous avez celui
propos par Matlab mais il peut tre modifi laide du menu prfrences.
3.2.2 Construction dun script
Leur construction est trs simple. En fait, il sagit dune succession de commandes dans un
fichier texte, celles-ci mme que lon entrait prcdemment sous le prompt. Pour raliser un
bon script, les trois points suivants doivent tre respects :
1. Pour plus de scurit, toujours dbuter un script par la commande clear pour que les
donnes contenues dans lespace de travail ninterfrent pas avec les variables utilises
dans le script.
2. Crer une zone de commentaires. En effet, pour raliser une bonne gestion de ses
programmes, il est utile de leur associer un commentaire dtaillant leur fonctionnement.
Pour chaque ligne de commentaire, le sigle % doit tre tap au dbut de chaque ligne. Il
est noter que ces commentaires sont accessibles avec la commande help.
Formation Matlab 22
3. Comme Matlab est un langage pr-compil, il faut tre rigoureux dans sa programmation
en vue dune conomie de temps de traitement.
Application :
calcul des sommes des lments de chacune des diagonales dune matrice.
Figure n7 : exemple de script
Une fois le script crit et enregistr, on peut lexcuter en tapant sur la fentre de
commande le nom du programme.
3.3 Fonctions
3.3.1 Introduction
Les fonctions ont un rle trs important dans Matlab puisque ce sont elles qui constituent un
de ses principaux atouts. Ces fonctions sont utilisables partir dun script ou directement de
lespace de travail.
3.3.2 Dfinition
Une fonction est dfinie par :
- son nom ;
- ses entres ;
- ses sorties.
Formation Matlab 23
syntaxe gnrale :
function [sortie_1,sortie_2, ...]=nom_fonc(entre_1,entre_2, ...)
3.3.3 Exemple de fonction
Pour illustrer le principe de construction d'une fonction, reprenons lexemple du calcul des
diagonales, mais en crant une fonction utilisable pour une matrice A quelconque. On
exploiter cette fonction sous le prompt de Matlab.
Figure n8 : exemple de fonction
3.4 Structures de programmation usuelles
On rappelle dans ce paragraphe les principales structures de programmation que lon
rencontre en gnral. Sous Matlab, le nombre de ces structures est trs rduit puisque lon en
a deux types :
for ( k = Val_Init : Pas : Val_fin)
end
while (condition)
end
Formation Matlab 24
3.4.1 Structure de type test
if (condition)
else
end
if (condition1)
elseif (condition2)
else
end
switch
case
otherwise
end
Remarque :
Comme Matlab est un logiciel interprt, il faut utiliser avec parcimonie les boucles for et
while. Il vaut mieux ds que possible utiliser la boucle interprte " : ".
Pour remplir un vecteur A des valeurs de 11 20, au lieu de :
A=zeros(1,10);
for ii=1:10
A(ii)=ii+10;
end
il vaut mieux
A=11:20;
ou bien
A=[1:10]+10;
Formation Matlab 25
Application :
A partir dune matrice A et dun vecteur vect, on veut calculer la matrice D telle que :
colonne D colonne A vect i
i i
( ) ( ) * ( ) =
Figure n9 : exemple dutilisation des boucles et leurs inconvnients
Formation Matlab 26
3.5 Bilan et Exercices dapplication : 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
Formation Matlab 27
PARTIE N 4 GRAPHISME
4.1 Prambule
Une des priorits des dveloppeurs de Matlab est aujourdhui doffrir aux utilisateurs un
maximum doutils graphiques. Lapproche "oriente objet" a permis de donner une trs
grande efficacit et souplesse ces outils. Laspect des graphes que lon manipule peut ainsi
tout moment tre modifi par exemple par un changement de format du graphe, des couleurs
ou du style de la reprsentation.
4.2 Notion de figure
Avant de dtailler les diffrentes fonctions de visualisation, il faut noter que lon peut gnrer
simultanment plusieurs graphes lcran. Pour cela, on utilise la commande figure qui
permet douvrir autant de fentres graphiques que dsir. Chaque figure porte un numro qui
permet de la rfrencer et ainsi de savoir o lon envoie les sorties graphiques. Les figures
sont indexes automatiquement, la commande close permet de les fermer partir de lespace
de travail. Il est noter que toutes les fentres se ferment laide de la commande close all.
Application :
Ouvrir deux figures et les refermer.
Figure n10 : ouverture et fermeture de fentre pour figure
ouvre la figure n1
ouvre la figure n2
rend active la figure n1
fermeture de la figure n1
Formation Matlab 28
4.3 Affichage des courbes 2D
Matlab possde un grand nombre de fonctions permettant de produire des courbes 2D.
Chacune accepte en entre des formes vectorielles ou matricielles automatiquement mises
lchelle suivant les axes dfinis par ces donnes.
Fonctions lmentaires dfinition
plot Affichage linaire
loglog Echelle log-log
semilogx Echelle semilog sur x
semilogy Echelle semilog sur y
line
Dfinition dune ligne
Outils dfinition
polar Affi. en coordonnes polaires
bar Affi. en mode escalier
hist Affi. dun histogramme
fplot Affi. dune fonction donne
Outils dfinition
title Cration dun titre
xlabel Commentaire sur x
ylabel Commentaire sur y
grid Cration dune grille
text Commentaire sur graphe
axis Gestion des axes (zoom)
subplot Multi-graphe sur mme figure
hold Mode surimpression
4.3.1 Commande plot
La commande plot gnre laffichage des lments dun vecteur ou des colonnes dune
matrice. Si y est un vecteur, plot(y) produit un affichage linaire des lments de y suivant
lindex du vecteur. Si on spcifie deux vecteurs en entre plot(x,y), on obtient laffichage des
lments de y suivant ceux de x. Les couleurs et les symboles associs aux donnes sont
paramtrables (voir help plot).
Application :
1. Raliser laffichage de la fonction Chirp dfinie par sin( ) t
2
sur lintervalle:0 < t < 5 avec
un pas de 0.1 en utilisant la commande plot. Ajoutez une lgende l'aide de title, xlabel et
ylabel.
2. Modifier le style de la courbe pour ne reprsenter que les points calculs, sans les lignes
entre points conscutifs. Choisir ensuite votre propre mode de reprsentation.
Formation Matlab 29
4.3.2 Commande fplot
Cette commande permet d'afficher une fonction sans l'effet de l'chantillonnage. Pour cela, on
doit en premier lieu crer une fonction Matlab reprsentant la fonction mathmatique
tudier.
function x=chirp(t);
% Cette fonction cre un signal chirp
x=sin(t.^2);
Puis, sous le prompt Matlab, on entre:
fplot('chirp',[0 5])
Cette fonction calcule plus finement la fonction sur les portions o la fonction prsente des
discontinuits graphiques.
4.3.3 Commande subplot
Cette commande est un outil qui permet de grer le nombre de graphes que lon cre sur une
mme figure. Elle partitionne la figure comme une matrice (n,p) dont les lments sont des
graphes.
subplot(n,p,r)
o: n est le nombre de lignes, p est le nombre de colonnes,
r est le numro de placement dans la matrice (colonne par colonne).
Figure n11 : utilisation du subplot
r=1
r=3
r=2
r=4
Formation Matlab 30
4.3.4 Commande axis
Lorsque lon veut ne visualiser qu'une portion d'un vecteur de donnes, on utilise la
commande axis. Elle peut tre utilise de la faon suivante :
2D axis([ xmin xmax ymin ymax])
3D axis([ xmin xmax ymin ymax zmin zmax])
Elle permet de grer les chelles sur les diffrents axes. Elle peut en outre tre utilise comme
un zoom statique. Il est noter que cette commande permet aussi de grer l'aspect gnral des
axes. En effet, on peut l'utiliser avec du texte comme entre, ainsi:
axis('square') l'espace graphique prend une forme carr.
axis('equal') indique que les marqueurs sur les axes seront les mmes.
axis('off') supprime les axes l'cran.
axis('on') restaure les axes l'cran.
4.4 Affichage des courbes 3D
Comme pour le cas 2D, on dispose d'un certain nombre de fonctions de visualisation des
donnes dfinies dans un domaine tridimensionnel.
Visualisation 2D des donnes 3D dfinition
contour Courbes de niveaux
image Visualisation par niveau de gris
imagesc Idem mais non normalis
mesh Dformation d'une grille 3D.
meshc Combinaison de mesh et de contour.
meshz Combinaison de mesh plus projection sur le
plan z=0.
surf Idem que mesh, mais avec surface colore.
plot3 Visualisation de type plot, mais avec 3
vecteurs
Outils dfinition
colormap Changement de palette de couleurs
view Orientation de la vue 3D
meshgrid Dfinition des matrices reprsentant la
grille
Certaines de ces fonctions attendent des arguments de type vectoriel ou matriciel.
4.4.1 plot3 : arguments vectoriels
Cette fonction est identique la commande plot, mais avec x, y et z comme arguments.
Application : Dfinir une variable dfinissant le segment [0,10] par pas de /50. Entrer
la commande plot3(sin(t),cos(t),t)
Formation Matlab 31
4.4.2 Fonctions arguments matriciels
Ces fonctions permettent de visualiser des donnes dfinies sur une grille reprsente par une
matrice. Diffrentes possibilits de visualisation existent :
- soit par niveau de gris (0-256) -->> image
- soit par niveau d'amplitude -->> contour
- soit par reprsentation de la grille -->> mesh,surf
Figure n12 : fonctions argument matriciel
4.4.3 meshgrid
Toutes ces fonctions ncessitent des matrices comme entres. Dans certains cas, on est oblig
de gnrer soi-mme la matrice visualiser. Pour cela, Matlab possde une fonction qui
permet d'obtenir les points de la grille reprsentant les x et y.
Application :
z x y x e
x
x y e e
x y x y x y
( , ) ( ) ( )
( ) ( )
=
+ +
3 1 10
5
1
3
2 1 3 3 1
2 2 2 2 2 2
On choisit pour cela la rgion:
3 3
3 3
x
y
Pour dfinir la grille de visualisation partir des vecteurs dfinis plus haut, on utilise la
commande meshgrid :
[X,Y]=meshgrid(-3:1/8:3);
La matrice Z contient tous les points calculs partir de la grille gnre par les matrices X et
Y.
Grille de la
matrice
Amplitude des
lments de la
matrice
Formation Matlab 32
X
x x x x x x
x x x x x x
x x x x x x
x x x x x x
x x x x x x
=
(
(
(
(
(
(
(
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
Y
y y y y y y
y y y y y y
y y y y y y
y y y y y y
y y y y y y
=
(
(
(
(
(
(
(
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Il suffit alors d'utiliser l'oprateur "lment par lment" pour les oprations sur les matrices
ainsi dfinies. Le dbut du programme s'crit donc :
% Visualisation 3D
[x,y]=meshgrid(-3:1/8:3);
z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...
- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...
- 1/3*exp(-(x+1).^2 - y.^2);
On tudie maintenant les diffrents outils pour visualiser la matrice Z.
4.4.4 plot
Cette fonction, la plus simple, permet de tracer une ligne pour chaque colonne de la matrice Z.
y(3) x(4)
y(1) y(2) y(3) y(4) y(5) y(6) y(7)
x(1)
x(2)
x(4)
x(3)
x(6)
x(5)
Formation Matlab 33
4.4.5 contour et contour3
Avec la fonction contour, on visualise les donnes contenues dans la matrice Z par courbes de
niveau. Matlab trace les courbes joignant les mmes niveaux d'amplitude de la matrice Z sur
un plan 2D. Contour3 ralise la mme fonction, mais dans un plan 3D, le nombre de niveaux
tant paramtrable.
contour(x,y,z,M)
o x, y sont les matrices ou vecteurs des axes, z la matrice des amplitudes et M le nombre de
niveaux.
Exemple :
figure(1); contour(Z,20)
figure(2); contour3(Z,20)
4.4.6 mesh et surf
Les commandes mesh et surf affichent une surface en 3 dimensions en perspective. La
commande mesh associe les couleurs aux lments de la grille tandis que surf colore les
facettes de la grille. (idem pour surfc, meshc, meshz)
mesh(x,y,z,C) ; surf(x,y,z,C)
o x, y sont les matrices ou vecteurs des axes, z la matrice des amplitudes et C reprsente le
mode dvolution de la couleur.
Figure n13 : fonctions argument matriciel
Formation Matlab 34
4.4.7 image
fonctions dfinition
image Affichage dune image
imagesc Affichage dune image avec son intensit
imread Lecture dun fichier image un format
donn
imwrite Ecriture dun fichier image un format
donn
iminfo lecture des informations dun fichier image
La commande image restitue la matrice d'entre sous forme d'une carte 2D avec des niveaux
de gris correspondants. La matrice d'entre doit donc tre normalise par rapport aux m
niveaux de couleurs de la carte slectionne. En ralit, cette fonction est un cas particulier de
la commande pcolor qui peut tre totalement paramtrable dans la dfinition de ces axes, la
gestion des couleurs, etc.
Si on dsire utiliser une matrice non normalise par rapport la palette de couleurs, il faut
travailler avec la commande imagesc.
4.4.8 colormap et colorbar
La fonction colormap permet de slectionner une palette de couleurs prdfinie. Une palette
de couleurs est un tableau de taille (m,3) dont les lignes spcifient l'intensit en code RGB
(Red, Green, Blue) de la faon suivante:
[ ] map k r k g k b k ( ,:) ( ) ( ) ( ) =
avec 0 1 r k g k b k ( ), ( ), ( )
Exemple de codes :
[0 0 0] noir
[1 1 1] blanc
[1 0 0] rouge
[.5 1 .83] bleu marine
Par dfaut, m vaut 64. Il peut aller jusqu' la valeur 256. Matlab propose plusieurs palettes de
couleurs: hsv, hot, cool, jt, pink, copper, gray.
Pour associer les couleurs aux donnes, Matlab segmente l'axe des z, en utilisant
[zmin,zmax], en un nombre d'intervalles correspondant aux nombres de lignes de la palette de
couleurs. Pour visualiser la palette avec les segments, on peut utiliser la commande colorbar.
Formation Matlab 35
4.4.9 view
Lorsque l'on utilise une commande de visualisation 3D, la courbe apparat sous un angle de
vue donn. Grce la commande view, on peut faire varier les angles de point de vue. Le
repre utilis est le suivant:
view(az,ae)
view([xe ye ze])
Par dfaut, les arguments ont comme valeurs (0,90) pour des graphiques 2D et (-37.5,30) pour
des graphiques 3D.
Matlab permet aussi de gnrer des graphiques de trs haute qualit avec des effets
d'clairage, de texture etc. La commande shading offre la possibilit de faire disparatre la
grille et interp permet de raliser une interpolation afin de crer un effet de texture. La
commande light permet de grer la position dclairage de la figure. La commande material
offre la possibilit de modifier le type de reflet de la courbe.
Exemple : un effet d'clairage
az
ez
x
z
y
Formation Matlab 36
4.5 Graphes spcialiss
4.5.1 Barres et surfaces
fonctions dfinition
bar Barres verticales
barh Barres horizontales
bar3 Barres verticales 3d
bar3h Barres horizontales 3d
area Surfaces
Exemple :
Figure n14 : exemple dutilisation de graphes spcialiss
4.5.2 Camemberts
fonctions dfinition
pie Camembert
pie3 Camembert 3d
Formation Matlab 37
Exemple :
Figure n15 : autre exemple dutilisation de graphes spcialiss
4.6 Exercice : graphisme et fonctions
On propose de raliser l'tude du polynme suivant :
p x x x ( ) = +
3
30 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.
Formation Matlab 38
5) Evaluer l'aire forme par la courbe entre les deux premires racines.
quad
6) Visualiser graphiquement l'aire calcule
fill
4.7 Autre exercice
On se propose didentifier le polynme dordre n qui va modliser la courbe suivante :
) 2 . 3 sin( ) sin( ) ( x x x y + = pour [ ] x 0,
Gnrer un jeu de donnes avec un pas=pi/256.
A laide de commande polyfit, calculer les coefficients du polynme qui modlise la fonction
y(x) au sens des moindres carrs. Calculer laide de polyval la courbe obtenue et visualiser la
ainsi que y(x).
Calculer la norme de lerreur de modlisation pour toutes les valeurs de lordre comprises
entre 1 et 10. Visualiser la courbe obtenue.
) ( ) ( ) ( x p x y x E = avec p x a x a x a x a
n n
n n
( ) = + + + +
+ 1 2
1 1
1
4.8 Exercice images
La manipulation et l'affichage des images est pris en charge par l'Image Processing Toolbox
sous Matlab. Une description assez complte peut tre visualise en tapant "doc images".
Le but de cet exercice est d'afficher une image charge depuis un fichier, et de lui superposer
un graphique vectoriel dpendant du clic de l'utilisateur.
1) Chargez l'image 'peppers.png' en mmoire (imread), et affichez la (imshow).
Testez les outils de visualisation d'une image (zoom, curseur).
2) Dfinissez une courbe paramtrise par t qui chantillonne un cercle de rayon r=20 centr
en (x0,y0) arbitraire, selon les quations suivantes:
x = x0 + cos(t) * r
y = y0 + sin(t) * r
Evaluez cette courbe pour t allant de 0 2*pi par pas de pi/10, et affichez la (plot).
3) Rcuprez la position [x0,y0] d'un clic de souris sur l'image (ginput), afin de dfinir un
cercle centr sur cette position.
A l'aide de hold on, affichez l'image, puis superposez le cercle l'image.
Formation Matlab 39
PARTIE N 5 FICHIERS DE DONNEES
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.
5.1 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.
5.1.1 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
5.1.2 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
Formation Matlab 40
5.2 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 sprintf
fread ferror fscanf
fwrite ftell sscanf
fclose fprintf
5.2.1 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.
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.
Formation Matlab 41
5.2.2 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 Langage C et Fortran
'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
Formation Matlab 42
5.2.3 Commande fwrite
fwrite permet l'criture de donnes contenues dans une matrice. Sa syntaxe est la suivante:
count = fwrite(fid,A,'precision')
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.
5.2.4 Commande fclose
Cette commande correspond la fermeture d'un ou de plusieurs fichiers. Sa syntaxe est:
status = fclose(fid)
status = fclose('all')
5.2.5 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);
5.3 Exercice
1) Dfinissez une matrice A:
1.1 1.2 1.3
2.1 2.2 2.3
3.1 3.2 3.3
4.1 4.2 4.3
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 ?
Formation Matlab 43
PARTIE N 6 APPLICATIONS
6.1 Rappels sur le dveloppement en srie de Fourier et Transforme de
Fourier
Tout signal ) (t v priodique et de priode T peut se dcomposer en srie de Fourier. Ainsi, en
prenant
( ) dt t
T
k
t v
T
a
T
T
s k
|
\
|
=
2
cos
2
2 /
2 /
( ) dt t
T
k
t v
T
b
T
T
s k
|
\
|
=
2
sin
2
2 /
2 /
la dcomposition en sries de Fourier de ) (t v est alors
( )
|
\
|
+ |
\
|
+ =
=
t
T
k
b t
T
k
a
a
t v
k
k
k
2
sin
2
cos
2 1
0
.
Une autre criture est souvent utilise, surtout en traitement du signal : il sagit du
dveloppement en srie de Fourier en termes complexes.
( )
=
|
\
|
=
k
k
t
T
jk c t v
2
exp
avec ( ) dt t
T
jk t v
T
c
T
T
s k
|
\
|
=
2
exp
1
2 /
2 /
.
Les coefficients
k
c et
k
c
2
1
Il est noter que
k k
c c
= et que ( )
k k k
j c c exp = avec
|
|
\
|
=
k
k
k
a
b
Arc tan .
Formation Matlab 44
On peut aussi exprimer le signal ) (t v partir de
k
. On a
( )
=
|
\
|
+ + =
1
0
2
cos 2
k
k k
t
T
k
c c t v
.
Remarque : Le signal priodique nest pas nergie finie sur lintervalle ] [ + ; .
Cela revient dire que la quantit
( )dt t v
+
2
na pas une valeur finie. ) (t v nest donc pas de carr intgrable.
Remarque 2 : On constate en outre que daprs lgalit de Parseval,
( )
=
=
1
2 2 1
k
T
k
dt t v
T
c
Si ) (t v est rel, ( )
=
=
1
2
2 1
k
T
k
dt t v
T
c . La puissance moyenne totale du
signal est donc gale la somme des puissances moyennes des diffrents
harmoniques et de la composante continue.
Remarque 3 : On rappelle que la valeur moyenne dun signal priodique est donne par
( )
=
T
dt t v
T
0
1
.
Figure n16 : spectre damplitude du signal priodique
Le spectre du signal priodique ) (t v a une reprsentation spectrale discrte.
t (s)
|V(f)|
f 2f 3f
-3f -2f -f
|c
1
|
|c
2
|
|c
3
|
|c-
1
|
|c-
2
|
|c
3-
|
Formation Matlab 45
6.2 Exercice
6.2.1 Dcomposition en srie de Fourier, reprsentation spectrale et somme de srie
Soit ( ) t y la fonction de priode 2 dfinie sur [ ] ; par :
( )
( )
t t
t
t y
0 si sin
0 si 0
Dvelopper cette fonction en srie de Fourier partir des fonctions sinus et cosinus ;
Reprsenter la somme du fondamental avec les 5, puis 10 puis 30 premiers harmoniques.
On crera pour cela une fonction.
Vrifier la formule
+
=
=
1
2
2
1
1 4
1
p p
. On utilisera Matlab pour visualiser lvolution de la
fonction ( )
=
=
x
p p
x g
1
2
1 4
1
.