Vous êtes sur la page 1sur 116

Matlab à la carte 02/09/2008

MATLAB à la carte

Module 2:
Programmation de base
Eric ANTERRIEU
Observatoire Midi-Pyrénées
Laboratoire d’Astrophysique de Toulouse-Tarbes

CNRS — UMR5572
Eric.Anterrieu@ast.obs-mip.fr

MATLAB à la carte

 Scripts & fonctions


 Structures de contrôle
 Les polynômes
 L’interpolation de données
 L’analyse de données
 Les échanges de données

MATLAB à la carte — module 2: « Programmation de base » 1 / 115

1
Matlab à la carte 02/09/2008

MATLAB à la carte

Module 2:
Programmation de base
Eric ANTERRIEU
Observatoire Midi-Pyrénées
Laboratoire d’Astrophysique de Toulouse-Tarbes

CNRS — UMR5572
Eric.Anterrieu@ast.obs-mip.fr

MATLAB à la carte

 Scripts & fonctions


 Structures de contrôle
 Les polynômes
 L’interpolation de données
 L’analyse de données
 Les échanges de données

MATLAB à la carte — module 2: « Programmation de base » 1 / 115

1
Matlab à la carte 02/09/2008

 Scripts & Fonctions


Fichiers MATLAB
Bien que de nombreux calculs puissent être faits au
niveau de la ligne de commande, tôt ou tard il faudra
écrire des programmes…

MATLAB à la carte — module 2: « Programmation de base » 2 / 115

 Scripts & Fonctions


Fichiers MATLAB
Les fichiers qui contiennent du code MATLAB ont
l’extension .m. Ils peuvent être crées avec n’importe
quel éditeur de texte puis utilisé dans l’environnement
de travail de MATLAB comme n’importe quel autre
fonction ou commande.
Il y a deux type de fichiers .m:
 les scripts;
 et les fonctions.

MATLAB à la carte — module 2: « Programmation de base » 3 / 115

2
Matlab à la carte 02/09/2008

 Scripts & Fonctions


Fichiers MATLAB
Bien que de nombreux calculs puissent être faits au
niveau de la ligne de commande, tôt ou tard il faudra
écrire des programmes…

MATLAB à la carte — module 2: « Programmation de base » 2 / 115

 Scripts & Fonctions


Fichiers MATLAB
Les fichiers qui contiennent du code MATLAB ont
l’extension .m. Ils peuvent être crées avec n’importe
quel éditeur de texte puis utilisé dans l’environnement
de travail de MATLAB comme n’importe quel autre
fonction ou commande.
Il y a deux type de fichiers .m:
 les scripts;
 et les fonctions.

MATLAB à la carte — module 2: « Programmation de base » 3 / 115

2
Matlab à la carte 02/09/2008

 Scripts & Fonctions


Les scripts
Les scripts sont des collections de commandes et
d’instructions mises les unes à la suite des autres. Ils
n’acceptent aucun argument en entrée et ne retourne
aucun argument. Ils agissent sur les variables de
l’espace de travail global (accessible depuis le prompt
>> de la fenêtre de commande): ils peuvent modifier,
effacer, créer des variables.
Lorsqu’un script est invoqué (en tapant le nom du
fichier sans l’extension .m), MATLAB exécute les
commandes les unes à la suite des autres.
MATLAB à la carte — module 2: « Programmation de base » 4 / 115

 Scripts & Fonctions


MATLAB
< M A T L A B >
Copyright 1984-2005 The MathWorks, Inc.
Version 7.0.4.352 (R14) Service Pack 2
sinc.m
January 29, 2005
%SINC Cardinal sine.
% SINC(X) is the sinc of the elements of X:
To get started, type %one Y of
= 1these: helpwin, helpdesk,
if X == 0 or demo.
%
For product information, = sin(pi*X)/(pi*X)
visit otherwise
www.mathworks.com.
%
» X = input('X = '); % See also: SIN.
X = 0:0.1:1
» whos % Written by: E. ANTERRIEU
Name Size Y=ones(size(X));
Bytes
Class
X 1x11 88k=find(X);
double array
Y(k)=sin(pi*X(k))./(pi*X(k));
Grand total is 11 elements using 88 bytes
»

MATLAB à la carte — module 2: « Programmation de base » 5 / 115

3
Matlab à la carte 02/09/2008

 Scripts & Fonctions


Les scripts
Les scripts sont des collections de commandes et
d’instructions mises les unes à la suite des autres. Ils
n’acceptent aucun argument en entrée et ne retourne
aucun argument. Ils agissent sur les variables de
l’espace de travail global (accessible depuis le prompt
>> de la fenêtre de commande): ils peuvent modifier,
effacer, créer des variables.
Lorsqu’un script est invoqué (en tapant le nom du
fichier sans l’extension .m), MATLAB exécute les
commandes les unes à la suite des autres.
MATLAB à la carte — module 2: « Programmation de base » 4 / 115

 Scripts & Fonctions


MATLAB
< M A T L A B >
Copyright 1984-2005 The MathWorks, Inc.
Version 7.0.4.352 (R14) Service Pack 2
sinc.m
January 29, 2005
%SINC Cardinal sine.
% SINC(X) is the sinc of the elements of X:
To get started, type %one Y of
= 1these: helpwin, helpdesk,
if X == 0 or demo.
%
For product information, = sin(pi*X)/(pi*X)
visit otherwise
www.mathworks.com.
%
» X = input('X = '); % See also: SIN.
X = 0:0.1:1
» whos % Written by: E. ANTERRIEU
Name Size Y=ones(size(X));
Bytes
Class
X 1x11 88k=find(X);
double array
Y(k)=sin(pi*X(k))./(pi*X(k));
Grand total is 11 elements using 88 bytes
»

MATLAB à la carte — module 2: « Programmation de base » 5 / 115

3
Matlab à la carte 02/09/2008

 Scripts & Fonctions


MATLAB
» X = input('X = ');
X = 0:0.1:1
» whos
sinc.m
Name Size %SINC Cardinal sine.
Bytes
Class
X 1x11 88% SINC(X)
double arrayis the sinc of the elements of X:
% Y = 1 if X == 0
%
Grand total is 11 elements= using
sin(pi*X)/(pi*X)
88 bytes otherwise
%
» sinc % See also: SIN.
» whos
% Written by: E. ANTERRIEU
Name Size Bytes Class
X 1x11 88 Y=ones(size(X));
double array
Y 1x11 88 k=find(X);
double array
k 1x10 80 Y(k)=sin(pi*X(k))./(pi*X(k));
double array
Grand total is 32 elements using 256 bytes
» disp(Y)
Columns 1 through 7
1.0000 0.9836 0.9355 0.8584 0.7568 0.6366 0.5046
Columns 8 through 11
0.3679 0.2339 0.1093 0.0000
»

MATLAB à la carte — module 2: « Programmation de base » 6 / 115

 Scripts & Fonctions


MATLAB
» X = input('X = ');
X = 0:0.1:1
» whos
Name Size Bytes Class
X 1x11 88 double array
Grand total is 11 elements using 88 bytes
» sinc
» whos
Name Size Bytes Class
X 1x11 88 double array
Y 1x11 88 double array
k 1x10 80 double array
Grand total is 32 elements using 256 bytes
» disp(Y)
Columns 1 through 7
1.0000 0.9836 0.9355 0.8584 0.7568 0.6366 0.5046
Columns 8 through 11
0.3679 0.2339 0.1093 0.0000
»

MATLAB à la carte — module 2: « Programmation de base » 7 / 115

4
Matlab à la carte 02/09/2008

 Scripts & Fonctions


MATLAB
» X = input('X = ');
X = 0:0.1:1
» whos
sinc.m
Name Size %SINC Cardinal sine.
Bytes
Class
X 1x11 88% SINC(X)
double arrayis the sinc of the elements of X:
% Y = 1 if X == 0
%
Grand total is 11 elements= using
sin(pi*X)/(pi*X)
88 bytes otherwise
%
» sinc % See also: SIN.
» whos
% Written by: E. ANTERRIEU
Name Size Bytes Class
X 1x11 88 Y=ones(size(X));
double array
Y 1x11 88 k=find(X);
double array
k 1x10 80 Y(k)=sin(pi*X(k))./(pi*X(k));
double array
Grand total is 32 elements using 256 bytes
» disp(Y)
Columns 1 through 7
1.0000 0.9836 0.9355 0.8584 0.7568 0.6366 0.5046
Columns 8 through 11
0.3679 0.2339 0.1093 0.0000
»

MATLAB à la carte — module 2: « Programmation de base » 6 / 115

 Scripts & Fonctions


MATLAB
» X = input('X = ');
X = 0:0.1:1
» whos
Name Size Bytes Class
X 1x11 88 double array
Grand total is 11 elements using 88 bytes
» sinc
» whos
Name Size Bytes Class
X 1x11 88 double array
Y 1x11 88 double array
k 1x10 80 double array
Grand total is 32 elements using 256 bytes
» disp(Y)
Columns 1 through 7
1.0000 0.9836 0.9355 0.8584 0.7568 0.6366 0.5046
Columns 8 through 11
0.3679 0.2339 0.1093 0.0000
»

MATLAB à la carte — module 2: « Programmation de base » 7 / 115

4
Matlab à la carte 02/09/2008

 Scripts & Fonctions


Les fonctions
Les fonctions sont aussi des collections de commandes
et d’instructions mises les unes à la suite des autres,
mais elles acceptent des arguments en entrée et en
sortie. Les fonctions agissent sur les variables de leur
propre espace de travail, séparé de l’espace de travail
global accessible depuis le prompt >> de la fenêtre de
commande. Ceci veut dire, que les arguments sont
passés par valeur, et non pas par adresse!
Le nom de la fonction et du fichier qui la contient
doivent être identiques (sans l’extension .m).
MATLAB à la carte — module 2: « Programmation de base » 8 / 115

 Scripts & Fonctions


MATLAB
< M A T L A B >
Copyright 1984-2005 The MathWorks, Inc.
Version 7.0.4.352 (R14) Service Pack 2
sinc.m
January 29, 2005
function Y=sinc(X)
%SINC Cardinal sine.
To get started, type %one SINC(X) is the
of these: sinc of
helpwin, the elements
helpdesk, of X:
or demo.
% Y visit
For product information, = 1 if X == 0
www.mathworks.com.
% = sin(pi*X)/(pi*X) otherwise
» X = input('X = '); %
X = 0:0.1:1 % See also: SIN.
» whos
% Written by: E. ANTERRIEU
Name Size Bytes Class
X 1x11 88 Y=ones(size(X));
double array
k=find(X);
Y(k)=sin(pi*X(k))./(pi*X(k));
Grand total is 11 elements using 88 bytes
»

MATLAB à la carte — module 2: « Programmation de base » 9 / 115

5
Matlab à la carte 02/09/2008

 Scripts & Fonctions


Les fonctions
Les fonctions sont aussi des collections de commandes
et d’instructions mises les unes à la suite des autres,
mais elles acceptent des arguments en entrée et en
sortie. Les fonctions agissent sur les variables de leur
propre espace de travail, séparé de l’espace de travail
global accessible depuis le prompt >> de la fenêtre de
commande. Ceci veut dire, que les arguments sont
passés par valeur, et non pas par adresse!
Le nom de la fonction et du fichier qui la contient
doivent être identiques (sans l’extension .m).
MATLAB à la carte — module 2: « Programmation de base » 8 / 115

 Scripts & Fonctions


MATLAB
< M A T L A B >
Copyright 1984-2005 The MathWorks, Inc.
Version 7.0.4.352 (R14) Service Pack 2
sinc.m
January 29, 2005
function Y=sinc(X)
%SINC Cardinal sine.
To get started, type %one SINC(X) is the
of these: sinc of
helpwin, the elements
helpdesk, of X:
or demo.
% Y visit
For product information, = 1 if X == 0
www.mathworks.com.
% = sin(pi*X)/(pi*X) otherwise
» X = input('X = '); %
X = 0:0.1:1 % See also: SIN.
» whos
% Written by: E. ANTERRIEU
Name Size Bytes Class
X 1x11 88 Y=ones(size(X));
double array
k=find(X);
Y(k)=sin(pi*X(k))./(pi*X(k));
Grand total is 11 elements using 88 bytes
»

MATLAB à la carte — module 2: « Programmation de base » 9 / 115

5
Matlab à la carte 02/09/2008

 Scripts & Fonctions


MATLAB
» X = input('X = ');
X = 0:0.1:1
» whos
sinc.m
Name Size function Y=sinc(X)
Bytes
Class
X 1x11 88%SINC array
double Cardinal sine.
% SINC(X) is the sinc of the elements of X:
% Y = using
Grand total is 11 elements 1 88 bytes if X == 0
% = sin(pi*X)/(pi*X) otherwise
» Y=sinc(X); %
» whos % See also: SIN.
Name Size % Written by: E. ANTERRIEU
Bytes
Class
X 1x11 88
double array
Y 1x11 88Y=ones(size(X));
double array
k=find(X);
Y(k)=sin(pi*X(k))./(pi*X(k));
Grand total is 22 elements using 176 bytes
» disp(Y)
Columns 1 through 7
1.0000 0.9836 0.9355 0.8584 0.7568 0.6366 0.5046
Columns 8 through 11
0.3679 0.2339 0.1093 0.0000
»

MATLAB à la carte — module 2: « Programmation de base » 10 / 115

 Scripts & Fonctions


MATLAB
» X = input('X = ');
X = 0:0.1:1
» whos
Name Size Bytes Class
X 1x11 88 double array
Grand total is 11 elements using 88 bytes
» Y=sinc(X);
» whos
Name Size Bytes Class
X 1x11 88 double array
Y 1x11 88 double array
Grand total is 22 elements using 176 bytes
» disp(Y)
Columns 1 through 7
1.0000 0.9836 0.9355 0.8584 0.7568 0.6366 0.5046
Columns 8 through 11
0.3679 0.2339 0.1093 0.0000
»

MATLAB à la carte — module 2: « Programmation de base » 11 / 115

6
Matlab à la carte 02/09/2008

 Scripts & Fonctions


MATLAB
» X = input('X = ');
X = 0:0.1:1
» whos
sinc.m
Name Size function Y=sinc(X)
Bytes
Class
X 1x11 88%SINC array
double Cardinal sine.
% SINC(X) is the sinc of the elements of X:
% Y = using
Grand total is 11 elements 1 88 bytes if X == 0
% = sin(pi*X)/(pi*X) otherwise
» Y=sinc(X); %
» whos % See also: SIN.
Name Size % Written by: E. ANTERRIEU
Bytes
Class
X 1x11 88
double array
Y 1x11 88Y=ones(size(X));
double array
k=find(X);
Y(k)=sin(pi*X(k))./(pi*X(k));
Grand total is 22 elements using 176 bytes
» disp(Y)
Columns 1 through 7
1.0000 0.9836 0.9355 0.8584 0.7568 0.6366 0.5046
Columns 8 through 11
0.3679 0.2339 0.1093 0.0000
»

MATLAB à la carte — module 2: « Programmation de base » 10 / 115

 Scripts & Fonctions


MATLAB
» X = input('X = ');
X = 0:0.1:1
» whos
Name Size Bytes Class
X 1x11 88 double array
Grand total is 11 elements using 88 bytes
» Y=sinc(X);
» whos
Name Size Bytes Class
X 1x11 88 double array
Y 1x11 88 double array
Grand total is 22 elements using 176 bytes
» disp(Y)
Columns 1 through 7
1.0000 0.9836 0.9355 0.8584 0.7568 0.6366 0.5046
Columns 8 through 11
0.3679 0.2339 0.1093 0.0000
»

MATLAB à la carte — module 2: « Programmation de base » 11 / 115

6
Matlab à la carte 02/09/2008

 Scripts & Fonctions


Les fonctions
La première ligne d’une fonction commence toujours
par le mot clef function. C’est cette première ligne
qui fait office de « déclaration » ou de « prototype »
de la fonction puisqu’on y trouve, en plus du nom de
la fonction, les arguments d’entrée et de sortie dans
l’ordre dans lequel il doivent être utilisés.

MATLAB à la carte — module 2: « Programmation de base » 12 / 115

 Scripts & Fonctions


Les fonctions
Les lignes qui suivent la première ligne et qui
commence par le caractère %, jusqu’à rencontrer une
ligne vide ou ne commençant pas par le caractère %,
sont des ligne de commentaires qui servent d’aide en
ligne. Ces lignes sont affichées avec la commande
help suivie du nom de la fonction. La première de
ces lignes est affichée avec la commande lookfor.

MATLAB à la carte — module 2: « Programmation de base » 13 / 115

7
Matlab à la carte 02/09/2008

 Scripts & Fonctions


Les fonctions
La première ligne d’une fonction commence toujours
par le mot clef function. C’est cette première ligne
qui fait office de « déclaration » ou de « prototype »
de la fonction puisqu’on y trouve, en plus du nom de
la fonction, les arguments d’entrée et de sortie dans
l’ordre dans lequel il doivent être utilisés.

MATLAB à la carte — module 2: « Programmation de base » 12 / 115

 Scripts & Fonctions


Les fonctions
Les lignes qui suivent la première ligne et qui
commence par le caractère %, jusqu’à rencontrer une
ligne vide ou ne commençant pas par le caractère %,
sont des ligne de commentaires qui servent d’aide en
ligne. Ces lignes sont affichées avec la commande
help suivie du nom de la fonction. La première de
ces lignes est affichée avec la commande lookfor.

MATLAB à la carte — module 2: « Programmation de base » 13 / 115

7
Matlab à la carte 02/09/2008

 Scripts & Fonctions lookfor


help

MATLAB
» lookfor sin
SIN Sine.
ASIN Inverse sine.
SINH Hyperbolic sine.sinc.m
function
ASINH Inverse hyperbolic Y=sinc(X)
sine.
SINC Cardinal sine. %SINC Cardinal sine.
» help sinc % SINC(X) is the sinc of the elements of X:
SINC Cardinal sine. % Y = 1 if X == 0
% of the
SINC(X) is the sinc = sin(pi*X)/(pi*X)
elements of X: otherwise
Y = 1 % if X == 0
% otherwise
= sin(pi*X)/(pi*X) See also: SIN.
See also: SIN. % Written by: E. ANTERRIEU
»
Y=ones(size(X));
k=find(X);
Y(k)=sin(pi*X(k))./(pi*X(k));

MATLAB à la carte — module 2: « Programmation de base » 14 / 115

 Structures de contrôle

MATLAB a 4 structures de contrôles:


 l’instruction sélective if;
 l’instruction sélective switch;
 l’instruction répétitive (boucle) for;
 l’instruction répétitive (boucle) while.

MATLAB à la carte — module 2: « Programmation de base » 15 / 115

8
Matlab à la carte 02/09/2008

 Scripts & Fonctions lookfor


help

MATLAB
» lookfor sin
SIN Sine.
ASIN Inverse sine.
SINH Hyperbolic sine.sinc.m
function
ASINH Inverse hyperbolic Y=sinc(X)
sine.
SINC Cardinal sine. %SINC Cardinal sine.
» help sinc % SINC(X) is the sinc of the elements of X:
SINC Cardinal sine. % Y = 1 if X == 0
% of the
SINC(X) is the sinc = sin(pi*X)/(pi*X)
elements of X: otherwise
Y = 1 % if X == 0
% otherwise
= sin(pi*X)/(pi*X) See also: SIN.
See also: SIN. % Written by: E. ANTERRIEU
»
Y=ones(size(X));
k=find(X);
Y(k)=sin(pi*X(k))./(pi*X(k));

MATLAB à la carte — module 2: « Programmation de base » 14 / 115

 Structures de contrôle

MATLAB a 4 structures de contrôles:


 l’instruction sélective if;
 l’instruction sélective switch;
 l’instruction répétitive (boucle) for;
 l’instruction répétitive (boucle) while.

MATLAB à la carte — module 2: « Programmation de base » 15 / 115

8
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction if
L’instruction if évalue une expression logique et
exécute un groupe d’instructions lorsque le résultat de
l’évaluation est vrai.
Les mots clefs optionnels elseif et else
permettent d’exécuter d’autres groupe d’instructions.
Le mot clef end termine toujours le dernier groupe
d’instructions.

MATLAB à la carte — module 2: « Programmation de base » 16 / 115

 Structures de contrôle if

MATLAB
» exemple
x = 10
y = 5
exemple.m
x =
5 x = input('x = ');
y = y = input('y = ');
10 %
» if (x > y)
tmp = y;
y = x;
x = tmp;
end
%
disp('x = '); disp(x);
disp('y = '); disp(y);

MATLAB à la carte — module 2: « Programmation de base » 17 / 115

9
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction if
L’instruction if évalue une expression logique et
exécute un groupe d’instructions lorsque le résultat de
l’évaluation est vrai.
Les mots clefs optionnels elseif et else
permettent d’exécuter d’autres groupe d’instructions.
Le mot clef end termine toujours le dernier groupe
d’instructions.

MATLAB à la carte — module 2: « Programmation de base » 16 / 115

 Structures de contrôle if

MATLAB
» exemple
x = 10
y = 5
exemple.m
x =
5 x = input('x = ');
y = y = input('y = ');
10 %
» if (x > y)
tmp = y;
y = x;
x = tmp;
end
%
disp('x = '); disp(x);
disp('y = '); disp(y);

MATLAB à la carte — module 2: « Programmation de base » 17 / 115

9
Matlab à la carte 02/09/2008

 Structures de contrôle if

MATLAB
» exemple
x = 10
y = 5
exemple.m
x =
5 x = input('x = ');
y = y = input('y = ');
10 %
» if (x > y), tmp = y; y = x; x = tmp; end
%
disp('x = '); disp(x);
disp('y = '); disp(y);

MATLAB à la carte — module 2: « Programmation de base » 18 / 115

 Structures de contrôle if

MATLAB
» exemple
x = 9
y =
exemple.m
3
» x = input('x = ');
» exemple %
x = -9 if (x >= 0)
y = y = sqrt(x);
NaN else
» y = NaN;
end
%
disp('y = '); disp(y);

MATLAB à la carte — module 2: « Programmation de base » 19 / 115

10
Matlab à la carte 02/09/2008

 Structures de contrôle if

MATLAB
» exemple
x = 10
y = 5
exemple.m
x =
5 x = input('x = ');
y = y = input('y = ');
10 %
» if (x > y), tmp = y; y = x; x = tmp; end
%
disp('x = '); disp(x);
disp('y = '); disp(y);

MATLAB à la carte — module 2: « Programmation de base » 18 / 115

 Structures de contrôle if

MATLAB
» exemple
x = 9
y =
exemple.m
3
» x = input('x = ');
» exemple %
x = -9 if (x >= 0)
y = y = sqrt(x);
NaN else
» y = NaN;
end
%
disp('y = '); disp(y);

MATLAB à la carte — module 2: « Programmation de base » 19 / 115

10
Matlab à la carte 02/09/2008

 Structures de contrôle if

MATLAB
» exemple
x = 10
y =
exemple.m
2.3026
» x = input('x = ');
» exemple %
x = 0 if (x > 0)
y = y = log(x);
-Inf elseif (x < 0)
» y = NaN;
» exemple else
x = -10 y = -Inf;
y = end
NaN %
» disp('y = '); disp(y);

MATLAB à la carte — module 2: « Programmation de base » 20 / 115

 Structures de contrôle
L’instruction switch
L’instruction switch exécute conditionnellement des
groupes d’instructions en se basant sur la valeur d’une
variable ou d’une expression.
Les mots clefs case et otherwise délimitent les
groupes d’instructions, seul le premier groupe qui
satisfait la condition est exécuté.
L’instruction switch doit toujours se terminer par le
mot clef end.

MATLAB à la carte — module 2: « Programmation de base » 21 / 115

11
Matlab à la carte 02/09/2008

 Structures de contrôle if

MATLAB
» exemple
x = 10
y =
exemple.m
2.3026
» x = input('x = ');
» exemple %
x = 0 if (x > 0)
y = y = log(x);
-Inf elseif (x < 0)
» y = NaN;
» exemple else
x = -10 y = -Inf;
y = end
NaN %
» disp('y = '); disp(y);

MATLAB à la carte — module 2: « Programmation de base » 20 / 115

 Structures de contrôle
L’instruction switch
L’instruction switch exécute conditionnellement des
groupes d’instructions en se basant sur la valeur d’une
variable ou d’une expression.
Les mots clefs case et otherwise délimitent les
groupes d’instructions, seul le premier groupe qui
satisfait la condition est exécuté.
L’instruction switch doit toujours se terminer par le
mot clef end.

MATLAB à la carte — module 2: « Programmation de base » 21 / 115

11
Matlab à la carte 02/09/2008

 Structures de contrôle switch

MATLAB
» exemple
n = 1
x =
exemple.m
-3 0 4
y = x = [-3 0 4];
7 n = input('n = ');
» %
» exemple switch n
n = 2 case 1
x = y = sum(abs(x));
-3 0 4 case 2
y = y = sqrt(x*x');
5 case Inf
» y = max(abs(x));
» exemple otherwise
n = Inf error('n must be 1, 2 or Inf.');
x = end
-3 0 4 %
y = disp('x = '); disp(x);
4 disp('y = '); disp(y);
»
» exemple
n = 0
??? Error using exemple
n must be 1, 2 or Inf.
»

MATLAB à la carte — module 2: « Programmation de base » 22 / 115

 Structures de contrôle switch

MATLAB
» exemple
x = 2
y =
exemple.m
0.5
» x = input('x = ');
» exemple %
x = 0 switch x
y = case 0
Inf y = Inf;
» case {Inf,-Inf}
» exemple y = 0;
x = Inf otherwise
y = y = 1/x;
0 end
» %
» exemple disp('y = '); disp(y);
x = -Inf
y =
0
»

MATLAB à la carte — module 2: « Programmation de base » 23 / 115

12
Matlab à la carte 02/09/2008

 Structures de contrôle switch

MATLAB
» exemple
n = 1
x =
exemple.m
-3 0 4
y = x = [-3 0 4];
7 n = input('n = ');
» %
» exemple switch n
n = 2 case 1
x = y = sum(abs(x));
-3 0 4 case 2
y = y = sqrt(x*x');
5 case Inf
» y = max(abs(x));
» exemple otherwise
n = Inf error('n must be 1, 2 or Inf.');
x = end
-3 0 4 %
y = disp('x = '); disp(x);
4 disp('y = '); disp(y);
»
» exemple
n = 0
??? Error using exemple
n must be 1, 2 or Inf.
»

MATLAB à la carte — module 2: « Programmation de base » 22 / 115

 Structures de contrôle switch

MATLAB
» exemple
x = 2
y =
exemple.m
0.5
» x = input('x = ');
» exemple %
x = 0 switch x
y = case 0
Inf y = Inf;
» case {Inf,-Inf}
» exemple y = 0;
x = Inf otherwise
y = y = 1/x;
0 end
» %
» exemple disp('y = '); disp(y);
x = -Inf
y =
0
»

MATLAB à la carte — module 2: « Programmation de base » 23 / 115

12
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction for
L’instruction for répète un groupe d’instructions un
nombre fini de fois.
Elle doit toujours se terminer par le mot clef end.
Le mot clef break permet de terminer prématurément
la boucle.

MATLAB à la carte — module 2: « Programmation de base » 24 / 115

 Structures de contrôle for

MATLAB
» exemple
n = 100
s =
1.6350 exemple.m
e = n = input('n = ');
0.0100 %
» s = 0;
» exemple for k=1:n
n = 500 s = s + 1/k^2;
s = end
1.6429 %
e = disp('s = '); disp(s);
0.0020 disp('e = '); disp(abs(pi^2/6 - s));
»
» exemple
n = 1000
s =
1.6439
e =
9.9950e-004
» exemple
n = 10000
s =
1.6448
e =
9.9995e-005
»

MATLAB à la carte — module 2: « Programmation de base » 25 / 115

13
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction for
L’instruction for répète un groupe d’instructions un
nombre fini de fois.
Elle doit toujours se terminer par le mot clef end.
Le mot clef break permet de terminer prématurément
la boucle.

MATLAB à la carte — module 2: « Programmation de base » 24 / 115

 Structures de contrôle for

MATLAB
» exemple
n = 100
s =
1.6350 exemple.m
e = n = input('n = ');
0.0100 %
» s = 0;
» exemple for k=1:n
n = 500 s = s + 1/k^2;
s = end
1.6429 %
e = disp('s = '); disp(s);
0.0020 disp('e = '); disp(abs(pi^2/6 - s));
»
» exemple
n = 1000
s =
1.6439
e =
9.9950e-004
» exemple
n = 10000
s =
1.6448
e =
9.9995e-005
»

MATLAB à la carte — module 2: « Programmation de base » 25 / 115

13
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction while
L’instruction while répète un groupe d’instructions
un nombre indéfini de fois sous le contrôle d’une
condition logique.
Elle doit toujours se terminer par le mot clef end.
Le mot clef break permet de terminer prématurément
la boucle.

MATLAB à la carte — module 2: « Programmation de base » 26 / 115

 Structures de contrôle while

MATLAB
» exemple
e = 0.01
s =
exemple.m
1.6350
n = e = input('e = ');
100 %
» s = 0;
» exemple k = 0;
e = 0.001 while abs(pi^2/6 - s) > e
s = k = k + 1;
1.6439 s = s + 1/k^2;
n = end
1000 %
» disp('s = '); disp(s);
» exemple disp('n = '); disp(k);
e = 0.0005
s =
1.6444
n =
2000
» exemple
e = 0.0001
s =
1.6448
n =
10000
»

MATLAB à la carte — module 2: « Programmation de base » 27 / 115

14
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction while
L’instruction while répète un groupe d’instructions
un nombre indéfini de fois sous le contrôle d’une
condition logique.
Elle doit toujours se terminer par le mot clef end.
Le mot clef break permet de terminer prématurément
la boucle.

MATLAB à la carte — module 2: « Programmation de base » 26 / 115

 Structures de contrôle while

MATLAB
» exemple
e = 0.01
s =
exemple.m
1.6350
n = e = input('e = ');
100 %
» s = 0;
» exemple k = 0;
e = 0.001 while abs(pi^2/6 - s) > e
s = k = k + 1;
1.6439 s = s + 1/k^2;
n = end
1000 %
» disp('s = '); disp(s);
» exemple disp('n = '); disp(k);
e = 0.0005
s =
1.6444
n =
2000
» exemple
e = 0.0001
s =
1.6448
n =
10000
»

MATLAB à la carte — module 2: « Programmation de base » 27 / 115

14
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction break
L’instruction break permet de terminer l’exécution
d’une boucle for ou while prématurément.

 Les instructions qui suivent le corps de la boucle,


jusqu’au end de cette boucle, sont ignorées.
 Dans les boucles imbriquées, break termine
seulement la boucle dans laquelle il se trouve et passe
le contrôle à l’instruction qui suit le end de cette
boucle.
MATLAB à la carte — module 2: « Programmation de base » 28 / 115

 Structures de contrôle break

MATLAB
» exemple
n = 10
1
exemple.m
2
3 n = input('n = ');
4 %
» for k=1:n
if (k == 5), break, end
disp(k);
end

MATLAB à la carte — module 2: « Programmation de base » 29 / 115

15
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction break
L’instruction break permet de terminer l’exécution
d’une boucle for ou while prématurément.

 Les instructions qui suivent le corps de la boucle,


jusqu’au end de cette boucle, sont ignorées.
 Dans les boucles imbriquées, break termine
seulement la boucle dans laquelle il se trouve et passe
le contrôle à l’instruction qui suit le end de cette
boucle.
MATLAB à la carte — module 2: « Programmation de base » 28 / 115

 Structures de contrôle break

MATLAB
» exemple
n = 10
1
exemple.m
2
3 n = input('n = ');
4 %
» for k=1:n
if (k == 5), break, end
disp(k);
end

MATLAB à la carte — module 2: « Programmation de base » 29 / 115

15
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction continue
L’instruction continue permet de sauter à l’itération
suivante dans une boucle for ou while.

 Les instructions qui suivent le corps de la boucle,


jusqu’au end de cette boucle, sont ignorées.
 Dans les boucles imbriquées, continue donne le
contrôle à l’itération suivante de la boucle dans
laquelle il se trouve.

MATLAB à la carte — module 2: « Programmation de base » 30 / 115

 Structures de contrôle continue

MATLAB
» exemple
n = 10
1
exemple.m
2
3 n = input('n = ');
4 %
6 for k=1:n
7 if (k == 5), continue, end
8 disp(k);
9 end
10
»

MATLAB à la carte — module 2: « Programmation de base » 31 / 115

16
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction continue
L’instruction continue permet de sauter à l’itération
suivante dans une boucle for ou while.

 Les instructions qui suivent le corps de la boucle,


jusqu’au end de cette boucle, sont ignorées.
 Dans les boucles imbriquées, continue donne le
contrôle à l’itération suivante de la boucle dans
laquelle il se trouve.

MATLAB à la carte — module 2: « Programmation de base » 30 / 115

 Structures de contrôle continue

MATLAB
» exemple
n = 10
1
exemple.m
2
3 n = input('n = ');
4 %
6 for k=1:n
7 if (k == 5), continue, end
8 disp(k);
9 end
10
»

MATLAB à la carte — module 2: « Programmation de base » 31 / 115

16
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction return
L’instruction return provoque le retour à la fonction
appelante.

 Les instructions qui suivent l’instruction return


sont ignorées.

MATLAB à la carte — module 2: « Programmation de base » 32 / 115

 Les polynômes
La représentation
MATLAB représente un polynôme de degré n
P(x) = p1 xn + p2 xn-1 + … + pn x + pn+1
par un vecteur p=[p(1) p(2)… p(n+1)] où sont
stockés les n+1 coefficients p1, p2 … pn+1.
Les principaux problèmes liés aux polynômes sont:
 l’évaluation;
 la recherche de racines;
 l’adaptation à des données.

MATLAB à la carte — module 2: « Programmation de base » 33 / 115

17
Matlab à la carte 02/09/2008

 Structures de contrôle
L’instruction return
L’instruction return provoque le retour à la fonction
appelante.

 Les instructions qui suivent l’instruction return


sont ignorées.

MATLAB à la carte — module 2: « Programmation de base » 32 / 115

 Les polynômes
La représentation
MATLAB représente un polynôme de degré n
P(x) = p1 xn + p2 xn-1 + … + pn x + pn+1
par un vecteur p=[p(1) p(2)… p(n+1)] où sont
stockés les n+1 coefficients p1, p2 … pn+1.
Les principaux problèmes liés aux polynômes sont:
 l’évaluation;
 la recherche de racines;
 l’adaptation à des données.

MATLAB à la carte — module 2: « Programmation de base » 33 / 115

17
Matlab à la carte 02/09/2008

 Les polynômes
L’évaluation
La fonction polyval évalue un polynôme P en un
point (ou un ensemble de points) x:
>> y = polyval(p,x);
où x (et donc y) peuvent être des tableaux.
La fonction polyvalm effectue la même évaluation
mais au sens matriciel:
>> Y = polyvalm(p,X);
où X et Y sont des matrices carrées.

MATLAB à la carte — module 2: « Programmation de base » 34 / 115

 Les polynômes polyval

MATLAB
» p=[1 -1 -4 4]
p =
P(x)=x3-x2-4x+4
1 -1 -4 4
Figure No. 1
» x=-3:0.1:3;
» y=polyval(p,x);
» plot(x,y,'b-');
» grid('on');
» title('P(x)=x^3-x^2-4x+4');
»

MATLAB à la carte — module 2: « Programmation de base » 35 / 115

18
Matlab à la carte 02/09/2008

 Les polynômes
L’évaluation
La fonction polyval évalue un polynôme P en un
point (ou un ensemble de points) x:
>> y = polyval(p,x);
où x (et donc y) peuvent être des tableaux.
La fonction polyvalm effectue la même évaluation
mais au sens matriciel:
>> Y = polyvalm(p,X);
où X et Y sont des matrices carrées.

MATLAB à la carte — module 2: « Programmation de base » 34 / 115

 Les polynômes polyval

MATLAB
» p=[1 -1 -4 4]
p =
P(x)=x3-x2-4x+4
1 -1 -4 4
Figure No. 1
» x=-3:0.1:3;
» y=polyval(p,x);
» plot(x,y,'b-');
» grid('on');
» title('P(x)=x^3-x^2-4x+4');
»

MATLAB à la carte — module 2: « Programmation de base » 35 / 115

18
Matlab à la carte 02/09/2008

 Les polynômes polyvalm

MATLAB
» A=[0 1; 1 1]
A =
0 1
1 1
» q=[1 2 3]
q =
Q(x)=x2+2x+3
1 2 3
» polyvalm(q,A)
ans =
4 3
3 7
» p=[1 -1 -1]
p = P(x)=x2-x-1
1 -1 -1
» polyvalm(p,A)
ans =
0 0
0 0 P(x) est le polynôme caractéristique de A
»

MATLAB à la carte — module 2: « Programmation de base » 36 / 115

 Les polynômes
La recherche des racines
Les racines (ou zéros) de P(x) sont obtenues avec
l’aide de la fonction roots :
>> z = roots(p);
La fonction poly effectue l’opération inverse:
>> p = poly(z);
avec la normalisation p(1)=1:
p1 xn + p2 xn-1 + … + pn x + pn+1 = (x-z1)(x-z2)…(x-zn).

MATLAB à la carte — module 2: « Programmation de base » 37 / 115

19
Matlab à la carte 02/09/2008

 Les polynômes polyvalm

MATLAB
» A=[0 1; 1 1]
A =
0 1
1 1
» q=[1 2 3]
q =
Q(x)=x2+2x+3
1 2 3
» polyvalm(q,A)
ans =
4 3
3 7
» p=[1 -1 -1]
p = P(x)=x2-x-1
1 -1 -1
» polyvalm(p,A)
ans =
0 0
0 0 P(x) est le polynôme caractéristique de A
»

MATLAB à la carte — module 2: « Programmation de base » 36 / 115

 Les polynômes
La recherche des racines
Les racines (ou zéros) de P(x) sont obtenues avec
l’aide de la fonction roots :
>> z = roots(p);
La fonction poly effectue l’opération inverse:
>> p = poly(z);
avec la normalisation p(1)=1:
p1 xn + p2 xn-1 + … + pn x + pn+1 = (x-z1)(x-z2)…(x-zn).

MATLAB à la carte — module 2: « Programmation de base » 37 / 115

19
Matlab à la carte 02/09/2008

 Les polynômes roots


poly

MATLAB
» p=[1 -1 -4 4];
» z=roots(p)
z =
2.0000
Figure No. 1
-2.0000
1.0000
» t=polyval(p,z)
t =
0
0
0
» p=poly(z)
p =
1 -1 -4 4
» x=-3:0.1:3;
» y=polyval(p,x);
» plot(x,y,'b-',z,t,'r*');
» grid('on');
» title('P(x)=x^3-x^2-4x+4');
»

MATLAB à la carte — module 2: « Programmation de base » 38 / 115

 Les polynômes roots


poly

MATLAB
» p=[1 -3 4 -2];
» z=roots(p)
z =
1.0000 + 1.0000i
1.0000 - 1.0000i
1.0000
» p=poly(z)
p =
1.0000 -3.0000 4.0000 -2.0000
»

MATLAB à la carte — module 2: « Programmation de base » 39 / 115

20
Matlab à la carte 02/09/2008

 Les polynômes roots


poly

MATLAB
» p=[1 -1 -4 4];
» z=roots(p)
z =
2.0000
Figure No. 1
-2.0000
1.0000
» t=polyval(p,z)
t =
0
0
0
» p=poly(z)
p =
1 -1 -4 4
» x=-3:0.1:3;
» y=polyval(p,x);
» plot(x,y,'b-',z,t,'r*');
» grid('on');
» title('P(x)=x^3-x^2-4x+4');
»

MATLAB à la carte — module 2: « Programmation de base » 38 / 115

 Les polynômes roots


poly

MATLAB
» p=[1 -3 4 -2];
» z=roots(p)
z =
1.0000 + 1.0000i
1.0000 - 1.0000i
1.0000
» p=poly(z)
p =
1.0000 -3.0000 4.0000 -2.0000
»

MATLAB à la carte — module 2: « Programmation de base » 39 / 115

20
Matlab à la carte 02/09/2008

 Les polynômes
Les opérations
La multiplication et la division polynomiales sont
effectuées par les fonctions conv et deconv:
>> [q,r] = deconv(g,h);
>> g = conv(h,q)+r;
où q et r sont les coefficients des polynômes quotient
Q et reste R:
G(x)=H(x)Q(x)+R(x).

MATLAB à la carte — module 2: « Programmation de base » 40 / 115

 Les polynômes conv


deconv

MATLAB
» g=[1 -3 -5 15 4 -12];
» h=[1 -2 -1 2];
» roots(g)
ans =
3.0000
2.0000
-2.0000
1.0000
-1.0000
» roots(h)
ans =
2.0000
1.0000
-1.0000
» [q,r]=deconv(g,h)
q =
1 -1 -6
r =
0 0 0 0 0 0
» g=conv(q,h)
g =
1 -3 -5 15 4 -12
»

MATLAB à la carte — module 2: « Programmation de base » 41 / 115

21
Matlab à la carte 02/09/2008

 Les polynômes
Les opérations
La multiplication et la division polynomiales sont
effectuées par les fonctions conv et deconv:
>> [q,r] = deconv(g,h);
>> g = conv(h,q)+r;
où q et r sont les coefficients des polynômes quotient
Q et reste R:
G(x)=H(x)Q(x)+R(x).

MATLAB à la carte — module 2: « Programmation de base » 40 / 115

 Les polynômes conv


deconv

MATLAB
» g=[1 -3 -5 15 4 -12];
» h=[1 -2 -1 2];
» roots(g)
ans =
3.0000
2.0000
-2.0000
1.0000
-1.0000
» roots(h)
ans =
2.0000
1.0000
-1.0000
» [q,r]=deconv(g,h)
q =
1 -1 -6
r =
0 0 0 0 0 0
» g=conv(q,h)
g =
1 -3 -5 15 4 -12
»

MATLAB à la carte — module 2: « Programmation de base » 41 / 115

21
Matlab à la carte 02/09/2008

 Les polynômes
La dérivation
La fonction polyder retourne les coefficients q du
polynôme Q(x) dérivé de P(x):
>> q = polyder(p);

MATLAB à la carte — module 2: « Programmation de base » 42 / 115

 Les polynômes
La dérivation
Avec deux arguments en entrée U(x) et V(x)
>> q = polyder(u,v);
le vecteur q contient les coefficients de la dérivée
U’(x)V(x)+U(x)V’(x) du produit U(x)V(x).
Avec deux arguments en sortie P(x) et Q(x)
>> [p,q] = polyder(u,v);
le vecteur q contient les coefficients de la dérivée
[U’(x)V(x)-U(x)V’(x)]/V 2(x) du quotient U(x)/V(x).

MATLAB à la carte — module 2: « Programmation de base » 43 / 115

22
Matlab à la carte 02/09/2008

 Les polynômes
La dérivation
La fonction polyder retourne les coefficients q du
polynôme Q(x) dérivé de P(x):
>> q = polyder(p);

MATLAB à la carte — module 2: « Programmation de base » 42 / 115

 Les polynômes
La dérivation
Avec deux arguments en entrée U(x) et V(x)
>> q = polyder(u,v);
le vecteur q contient les coefficients de la dérivée
U’(x)V(x)+U(x)V’(x) du produit U(x)V(x).
Avec deux arguments en sortie P(x) et Q(x)
>> [p,q] = polyder(u,v);
le vecteur q contient les coefficients de la dérivée
[U’(x)V(x)-U(x)V’(x)]/V 2(x) du quotient U(x)/V(x).

MATLAB à la carte — module 2: « Programmation de base » 43 / 115

22
Matlab à la carte 02/09/2008

 Les polynômes polyder

MATLAB
» u=[1 0 -5 0 4 0];
» v=[1 -2 -1 2];
» du=polyder(u)
du =
5 0 -15 0 4
» dv=polyder(v)
dv =
3 -4 -1
» q=polyder(u,v)
q =
8 -14 -36 60 36 -54 -8 8
» % (u’v+uv’)
» q=conv(du,v)+conv(u,dv)
q =
8 -14 -36 60 36 -54 -8 8
»

MATLAB à la carte — module 2: « Programmation de base » 44 / 115

 Les polynômes polyder

MATLAB
» u=[1 0 -5 0 4 0];
» v=[1 -2 -1 2];
» du=polyder(u)
du =
5 0 -15 0 4
» dv=polyder(v)
dv =
3 -4 -1
» [p,q]=polyder(u,v)
p =
2 -6 -4 20 2 -22 0 8
q =
1 -4 2 8 -7 -4 4
» [p,q]=deconv(p,q)
p =
2 2
q =
0 0 0 0 0 0 0 0
» % (u’v-uv’)/v²
» deconv(conv(du,v)-conv(u,dv),conv(v,v))
p =
2 2
q =
0 0 0 0 0 0 0 0
»
MATLAB à la carte — module 2: « Programmation de base » 45 / 115

23
Matlab à la carte 02/09/2008

 Les polynômes polyder

MATLAB
» u=[1 0 -5 0 4 0];
» v=[1 -2 -1 2];
» du=polyder(u)
du =
5 0 -15 0 4
» dv=polyder(v)
dv =
3 -4 -1
» q=polyder(u,v)
q =
8 -14 -36 60 36 -54 -8 8
» % (u’v+uv’)
» q=conv(du,v)+conv(u,dv)
q =
8 -14 -36 60 36 -54 -8 8
»

MATLAB à la carte — module 2: « Programmation de base » 44 / 115

 Les polynômes polyder

MATLAB
» u=[1 0 -5 0 4 0];
» v=[1 -2 -1 2];
» du=polyder(u)
du =
5 0 -15 0 4
» dv=polyder(v)
dv =
3 -4 -1
» [p,q]=polyder(u,v)
p =
2 -6 -4 20 2 -22 0 8
q =
1 -4 2 8 -7 -4 4
» [p,q]=deconv(p,q)
p =
2 2
q =
0 0 0 0 0 0 0 0
» % (u’v-uv’)/v²
» deconv(conv(du,v)-conv(u,dv),conv(v,v))
p =
2 2
q =
0 0 0 0 0 0 0 0
»
MATLAB à la carte — module 2: « Programmation de base » 45 / 115

23
Matlab à la carte 02/09/2008

 Les polynômes
L’adaptation à des données
Le problème de l’adaptation à des données est résolu
avec l’aide de la fonction polyfit :
>> p = polyfit(xi,yi,n);
qui, pour un jeu de m paires (xi , yi)i1, calcule les
coefficients du polynôme P(x) de degré n qui
minimise le critère quadratique i1 | P(xi) - yi |2.

MATLAB à la carte — module 2: « Programmation de base » 46 / 115

 Les polynômes polyfit

MATLAB
» xi=-5:5;
» yi=12./polyval([1 2 5],xi);
» x=-5:0.01:5;
» y=12./polyval([1 2 5],x);
» plot(x,y,'k-',xi,yi,'b*'); Figure No. 1
» hold('on');
» grid('on');
» p=polyfit(xi,yi,10);
» y=polyval(p,x);
» plot(x,y,'r-');
» p=polyfit(xi,yi,8);
» y=polyval(p,x);
» plot(x,y,'g-');
» p=polyfit(xi,yi,5);
» y=polyval(p,x);
» plot(x,y,'m-');
» p=polyfit(xi,yi,3);
» y=polyval(p,x);
» plot(x,y,'c-');
» legend('y=f(x)','(x_i,y_i)','n=10','n=8','n=5','n=3');
»

MATLAB à la carte — module 2: « Programmation de base » 47 / 115

24
Matlab à la carte 02/09/2008

 Les polynômes
L’adaptation à des données
Le problème de l’adaptation à des données est résolu
avec l’aide de la fonction polyfit :
>> p = polyfit(xi,yi,n);
qui, pour un jeu de m paires (xi , yi)i1, calcule les
coefficients du polynôme P(x) de degré n qui
minimise le critère quadratique i1 | P(xi) - yi |2.

MATLAB à la carte — module 2: « Programmation de base » 46 / 115

 Les polynômes polyfit

MATLAB
» xi=-5:5;
» yi=12./polyval([1 2 5],xi);
» x=-5:0.01:5;
» y=12./polyval([1 2 5],x);
» plot(x,y,'k-',xi,yi,'b*'); Figure No. 1
» hold('on');
» grid('on');
» p=polyfit(xi,yi,10);
» y=polyval(p,x);
» plot(x,y,'r-');
» p=polyfit(xi,yi,8);
» y=polyval(p,x);
» plot(x,y,'g-');
» p=polyfit(xi,yi,5);
» y=polyval(p,x);
» plot(x,y,'m-');
» p=polyfit(xi,yi,3);
» y=polyval(p,x);
» plot(x,y,'c-');
» legend('y=f(x)','(x_i,y_i)','n=10','n=8','n=5','n=3');
»

MATLAB à la carte — module 2: « Programmation de base » 47 / 115

24
Matlab à la carte 02/09/2008

 Les polynômes
L’adaptation à des données
Une autre approche est possible avec la fonction
spline:
>> y = spline(xi,yi,x);
qui, pour un jeu de m paires (xi , yi)i1, cherche la
spline (x) qui s’adapte le mieux aux données:
 (x) est cubique entre deux points successifs,
 et satisfait les m conditions de collocation (xi)=yi.

MATLAB à la carte — module 2: « Programmation de base » 48 / 115

 Les polynômes spline

MATLAB
» xi=-5:5;
» yi=12./polyval([1 2 5],xi);
» x=-5:0.01:5;
» y=12./polyval([1 2 5],x);
» plot(x,y,'k-',xi,yi,'b*'); Figure No. 1
» hold('on');
» grid('on');
» p=polyfit(xi,yi,10);
» y=polyval(p,x);
» plot(x,y,'r-');
» y=spline(xi,yi,x);
» plot(x,y,'g-');
» legend('y=f(x)','(x_i,y_i)','n=10','spline');
»

MATLAB à la carte — module 2: « Programmation de base » 49 / 115

25
Matlab à la carte 02/09/2008

 Les polynômes
L’adaptation à des données
Une autre approche est possible avec la fonction
spline:
>> y = spline(xi,yi,x);
qui, pour un jeu de m paires (xi , yi)i1, cherche la
spline (x) qui s’adapte le mieux aux données:
 (x) est cubique entre deux points successifs,
 et satisfait les m conditions de collocation (xi)=yi.

MATLAB à la carte — module 2: « Programmation de base » 48 / 115

 Les polynômes spline

MATLAB
» xi=-5:5;
» yi=12./polyval([1 2 5],xi);
» x=-5:0.01:5;
» y=12./polyval([1 2 5],x);
» plot(x,y,'k-',xi,yi,'b*'); Figure No. 1
» hold('on');
» grid('on');
» p=polyfit(xi,yi,10);
» y=polyval(p,x);
» plot(x,y,'r-');
» y=spline(xi,yi,x);
» plot(x,y,'g-');
» legend('y=f(x)','(x_i,y_i)','n=10','spline');
»

MATLAB à la carte — module 2: « Programmation de base » 49 / 115

25
Matlab à la carte 02/09/2008

 L’interpolation de données
Interpolation en dimension 1
Pour un jeu de m paires (xi , yi)i1, la fonction
interp1 propose différents interpolants et retourne
les valeurs y ainsi obtenues en certains points x:
>> y = interp1(xi,yi,x,'method');
Quatre interpolants sont possibles:
• 'nearest' plus proche voisin (° 0)
• 'linear' linéaire (° 1, défaut)
• 'spline' spline (° 3)
• 'cubic' cubique (° 3)
MATLAB à la carte — module 2: « Programmation de base » 50 / 115

 L’interpolation de donnéesinterp1
MATLAB
» xi=-5:5;
» yi=12./polyval([1 2 5],xi);
» x=-5:0.01:5;
» y=12./polyval([1 2 5],x);
» plot(x,y,'k-',xi,yi,'b*'); Figure No. 1
» hold('on');
» grid('on');
» y=interp1(xi,yi,x,'nearest');
» plot(x,y,'g-');
» y=interp1(xi,yi,x,'linear');
» plot(x,y,'r-');
» y=interp1(xi,yi,x,'cubic');
» plot(x,y,'r-');
» y=interp1(xi,yi,x,'spline');
» plot(x,y,'r-');
» legend('y=f(x)','(x_i,y_i)','nearest','linear','cubic','spline');
»

MATLAB à la carte — module 2: « Programmation de base » 51 / 115

26
Matlab à la carte 02/09/2008

 L’interpolation de données
Interpolation en dimension 1
Pour un jeu de m paires (xi , yi)i1, la fonction
interp1 propose différents interpolants et retourne
les valeurs y ainsi obtenues en certains points x:
>> y = interp1(xi,yi,x,'method');
Quatre interpolants sont possibles:
• 'nearest' plus proche voisin (° 0)
• 'linear' linéaire (° 1, défaut)
• 'spline' spline (° 3)
• 'cubic' cubique (° 3)
MATLAB à la carte — module 2: « Programmation de base » 50 / 115

 L’interpolation de donnéesinterp1
MATLAB
» xi=-5:5;
» yi=12./polyval([1 2 5],xi);
» x=-5:0.01:5;
» y=12./polyval([1 2 5],x);
» plot(x,y,'k-',xi,yi,'b*'); Figure No. 1
» hold('on');
» grid('on');
» y=interp1(xi,yi,x,'nearest');
» plot(x,y,'g-');
» y=interp1(xi,yi,x,'linear');
» plot(x,y,'r-');
» y=interp1(xi,yi,x,'cubic');
» plot(x,y,'r-');
» y=interp1(xi,yi,x,'spline');
» plot(x,y,'r-');
» legend('y=f(x)','(x_i,y_i)','nearest','linear','cubic','spline');
»

MATLAB à la carte — module 2: « Programmation de base » 51 / 115

26
Matlab à la carte 02/09/2008

 L’interpolation de données
Interpolation en dimension 2
MATLAB a aussi des fonctions pour interpoler des
données surfaciques zi = f (xi , yi):
>> z = interp2(xi,yi,zi,x,y);
>> z = griddata(xi,yi,zi,x,y);
selon que les zi sont régulièrement échantillonnées en
des points (xi , yi) définissant une grille ou pas.
Trois interpolants sont possibles:
• 'nearest' plus proche voisin (° 0)
• 'linear' linéaire (° 1, défaut)
• carte
MATLAB à la 'cubic' cubique
— module 2: « Programmation de base »(° 3) 52 / 115

 L’interpolation de donnéesinterp2
MATLAB
» [Xi,Yi] = meshgrid(-3:0.25:3); Zi = peaks(Xi,Yi);
» [X ,Y ] = meshgrid(-3:0.20:3); Z = interp2(Xi,Yi,Zi,X,Y);
» figure(1);
» plot3(Xi,Yi,Zi,'b.');
Figure No. 1
» hold('on');
» mesh(X,Y,Z);
» box('on');
» grid('on');
» hidden('off');
» whos
Name Size Bytes Class
Xi 25x25 5000 double
Yi 25x25 5000 double
Zi 25x25 5000 double
X 31x31 7688 double
Y 31x31 7688 double
Z 31x31 7688 double
» k = find(~isnan(Z));
» err = sqrt(sum((Z(k)-peaks(X(k),Y(k))).^2))/length(k)
err = 0.0021
»

MATLAB à la carte — module 2: « Programmation de base » 53 / 115

27
Matlab à la carte 02/09/2008

 L’interpolation de données
Interpolation en dimension 2
MATLAB a aussi des fonctions pour interpoler des
données surfaciques zi = f (xi , yi):
>> z = interp2(xi,yi,zi,x,y);
>> z = griddata(xi,yi,zi,x,y);
selon que les zi sont régulièrement échantillonnées en
des points (xi , yi) définissant une grille ou pas.
Trois interpolants sont possibles:
• 'nearest' plus proche voisin (° 0)
• 'linear' linéaire (° 1, défaut)
• carte
MATLAB à la 'cubic' cubique
— module 2: « Programmation de base »(° 3) 52 / 115

 L’interpolation de donnéesinterp2
MATLAB
» [Xi,Yi] = meshgrid(-3:0.25:3); Zi = peaks(Xi,Yi);
» [X ,Y ] = meshgrid(-3:0.20:3); Z = interp2(Xi,Yi,Zi,X,Y);
» figure(1);
» plot3(Xi,Yi,Zi,'b.');
Figure No. 1
» hold('on');
» mesh(X,Y,Z);
» box('on');
» grid('on');
» hidden('off');
» whos
Name Size Bytes Class
Xi 25x25 5000 double
Yi 25x25 5000 double
Zi 25x25 5000 double
X 31x31 7688 double
Y 31x31 7688 double
Z 31x31 7688 double
» k = find(~isnan(Z));
» err = sqrt(sum((Z(k)-peaks(X(k),Y(k))).^2))/length(k)
err = 0.0021
»

MATLAB à la carte — module 2: « Programmation de base » 53 / 115

27
Matlab à la carte 02/09/2008

 L’interpolation de donnéesgriddata
MATLAB
» xi = rand(625,1)*6-3; yi = rand(625,1)*6-3; zi = peaks(xi,yi);
» [X,Y] = meshgrid(-3:0.20:3); Z = griddata(xi,yi,zi,X,Y);
» figure(2);
» plot3(xi,yi,zi,'b.');
Figure No. 2
» hold('on');
» mesh(X,Y,Z);
» box('on');
» grid('on');
» hidden('off');
» whos
Name Size Bytes Class
xi 625x1 5000 double
yi 625x1 5000 double
zi 625x1 5000 double
X 31x31 7688 double
Y 31x31 7688 double
Z 31x31 7688 double
» k = find(~isnan(Z));
» err = sqrt(sum((Z(k)-peaks(X(k),Y(k))).^2))/length(k)
err = 0.0038
»

MATLAB à la carte — module 2: « Programmation de base » 54 / 115

 L’interpolation de données
Interpolation en dimension 3
MATLAB a aussi des fonctions pour interpoler des
données volumiques vi = f (xi , yi , zi):
>> v = interp3(xi,yi,zi,vi,x,y,z);
>> v = griddata3(xi,yi,zi,vi,x,y,z);
selon que les vi sont régulièrement échantillonnées en
des points (xi , yi , zi) définissant une grille ou pas.
Trois interpolants sont possibles:
• 'nearest' plus proche voisin (° 0)
• 'linear' linéaire (° 1, défaut)
• carte
MATLAB à la 'cubic' cubique
— module 2: « Programmation de base »(° 3) 55 / 115

28
Matlab à la carte 02/09/2008

 L’interpolation de donnéesgriddata
MATLAB
» xi = rand(625,1)*6-3; yi = rand(625,1)*6-3; zi = peaks(xi,yi);
» [X,Y] = meshgrid(-3:0.20:3); Z = griddata(xi,yi,zi,X,Y);
» figure(2);
» plot3(xi,yi,zi,'b.');
Figure No. 2
» hold('on');
» mesh(X,Y,Z);
» box('on');
» grid('on');
» hidden('off');
» whos
Name Size Bytes Class
xi 625x1 5000 double
yi 625x1 5000 double
zi 625x1 5000 double
X 31x31 7688 double
Y 31x31 7688 double
Z 31x31 7688 double
» k = find(~isnan(Z));
» err = sqrt(sum((Z(k)-peaks(X(k),Y(k))).^2))/length(k)
err = 0.0038
»

MATLAB à la carte — module 2: « Programmation de base » 54 / 115

 L’interpolation de données
Interpolation en dimension 3
MATLAB a aussi des fonctions pour interpoler des
données volumiques vi = f (xi , yi , zi):
>> v = interp3(xi,yi,zi,vi,x,y,z);
>> v = griddata3(xi,yi,zi,vi,x,y,z);
selon que les vi sont régulièrement échantillonnées en
des points (xi , yi , zi) définissant une grille ou pas.
Trois interpolants sont possibles:
• 'nearest' plus proche voisin (° 0)
• 'linear' linéaire (° 1, défaut)
• carte
MATLAB à la 'cubic' cubique
— module 2: « Programmation de base »(° 3) 55 / 115

28
Matlab à la carte 02/09/2008

 L’analyse de données
Statistiques élémentaires
MATLAB a un certain nombre de fonctions pour
l’analyse de données d’un point de vue statistique:
 min plus petite valeur
 max plus grande valeur
 mean moyenne
 std déviation standard
 var variance
 median valeur médiane
 sort tri par valeur croissante/décroissante
MATLAB à la carte — module 2: « Programmation de base » 56 / 115

 L’analyse de données min

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» min(X)
ans =
0.2311
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» min(A,[],1) %% min(A)
ans =
0.2311 0.4860 0.0185 0.4447 0.1763
» min(A,[],2) %% min(A')'
ans =
0.4447
0.0185
0.1763
»

MATLAB à la carte — module 2: « Programmation de base » 57 / 115

29
Matlab à la carte 02/09/2008

 L’analyse de données
Statistiques élémentaires
MATLAB a un certain nombre de fonctions pour
l’analyse de données d’un point de vue statistique:
 min plus petite valeur
 max plus grande valeur
 mean moyenne
 std déviation standard
 var variance
 median valeur médiane
 sort tri par valeur croissante/décroissante
MATLAB à la carte — module 2: « Programmation de base » 56 / 115

 L’analyse de données min

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» min(X)
ans =
0.2311
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» min(A,[],1) %% min(A)
ans =
0.2311 0.4860 0.0185 0.4447 0.1763
» min(A,[],2) %% min(A')'
ans =
0.4447
0.0185
0.1763
»

MATLAB à la carte — module 2: « Programmation de base » 57 / 115

29
Matlab à la carte 02/09/2008

 L’analyse de données min

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» [x,k]=min(X)
x =
0.2311
k =
2
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» [a,k]=min(A)
a =
0.2311 0.4860 0.0185 0.4447 0.1763
k =
2 1 2 1 3
»

MATLAB à la carte — module 2: « Programmation de base » 58 / 115

 L’analyse de données max

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» max(X)
ans =
0.9501
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» max(A,[],1) %% max(A)
ans =
0.9501 0.8913 0.8214 0.7919 0.9218
» max(A,[],2) %% max(A')'
ans =
0.9501
0.8913
0.8214
»

MATLAB à la carte — module 2: « Programmation de base » 59 / 115

30
Matlab à la carte 02/09/2008

 L’analyse de données min

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» [x,k]=min(X)
x =
0.2311
k =
2
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» [a,k]=min(A)
a =
0.2311 0.4860 0.0185 0.4447 0.1763
k =
2 1 2 1 3
»

MATLAB à la carte — module 2: « Programmation de base » 58 / 115

 L’analyse de données max

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» max(X)
ans =
0.9501
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» max(A,[],1) %% max(A)
ans =
0.9501 0.8913 0.8214 0.7919 0.9218
» max(A,[],2) %% max(A')'
ans =
0.9501
0.8913
0.8214
»

MATLAB à la carte — module 2: « Programmation de base » 59 / 115

30
Matlab à la carte 02/09/2008

 L’analyse de données max

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» [x,k]=max(X)
x =
0.9501
k =
1
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» [a,k]=max(A)
a =
0.9501 0.8913 0.8214 0.7919 0.9218
k =
1 2 3 3 1
»

MATLAB à la carte — module 2: « Programmation de base » 60 / 115

 L’analyse de données mean

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» mean(X)
ans =
0.6331
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» mean(A,1) %% mean(A)
ans =
0.5960 0.7131 0.4321 0.6174 0.6121
» mean(A,2) %% mean(A')'
ans =
0.6518
0.4989
0.6317
»

MATLAB à la carte — module 2: « Programmation de base » 61 / 115

31
Matlab à la carte 02/09/2008

 L’analyse de données max

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» [x,k]=max(X)
x =
0.9501
k =
1
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» [a,k]=max(A)
a =
0.9501 0.8913 0.8214 0.7919 0.9218
k =
1 2 3 3 1
»

MATLAB à la carte — module 2: « Programmation de base » 60 / 115

 L’analyse de données mean

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» mean(X)
ans =
0.6331
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» mean(A,1) %% mean(A)
ans =
0.5960 0.7131 0.4321 0.6174 0.6121
» mean(A,2) %% mean(A')'
ans =
0.6518
0.4989
0.6317
»

MATLAB à la carte — module 2: « Programmation de base » 61 / 115

31
Matlab à la carte 02/09/2008

 L’analyse de données std

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» std(X,0) %% std(X)
ans =
0.2963
» std(X,1)
ans =
0.2650
»

MATLAB à la carte — module 2: « Programmation de base » 62 / 115

 L’analyse de données std

MATLAB
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» std(A,0,1) %% std(A,0) std(A)
ans =
0.3596 0.2070 0.4020 0.1736 0.3884
» std(A,1,1) %% std(A,1)
ans =
0.2936 0.1691 0.3282 0.1418 0.3172
» std(A,0,2) %% std(A',0)' std(A')'
ans =
0.2600
0.3631
0.2677
» std(A,1,2) %% std(A',1)'
ans =
0.2326
0.3245
0.2395
»
MATLAB à la carte — module 2: « Programmation de base » 63 / 115

32
Matlab à la carte 02/09/2008

 L’analyse de données std

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» std(X,0) %% std(X)
ans =
0.2963
» std(X,1)
ans =
0.2650
»

MATLAB à la carte — module 2: « Programmation de base » 62 / 115

 L’analyse de données std

MATLAB
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» std(A,0,1) %% std(A,0) std(A)
ans =
0.3596 0.2070 0.4020 0.1736 0.3884
» std(A,1,1) %% std(A,1)
ans =
0.2936 0.1691 0.3282 0.1418 0.3172
» std(A,0,2) %% std(A',0)' std(A')'
ans =
0.2600
0.3631
0.2677
» std(A,1,2) %% std(A',1)'
ans =
0.2326
0.3245
0.2395
»
MATLAB à la carte — module 2: « Programmation de base » 63 / 115

32
Matlab à la carte 02/09/2008

 L’analyse de données var

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» var(X,0) %% var(X)
ans =
0.0878
» var(X,1)
ans =
0.0702
»

MATLAB à la carte — module 2: « Programmation de base » 64 / 115

 L’analyse de données var

MATLAB
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» var(A,0,1) %% var(A,0) var(A)
ans =
0.1293 0.0429 0.1616 0.0301 0.1509
» var(A,1,1) %% var(A,1)
ans =
0.0862 0.0286 0.1077 0.0201 0.1006
» var(A,0,2) %% var(A',0)' var(A')'
ans =
0.0676
0.1318
0.0717
» var(A,1,2) %% var(A',1)'
ans =
0.0541
0.1055
0.0573
»
MATLAB à la carte — module 2: « Programmation de base » 65 / 115

33
Matlab à la carte 02/09/2008

 L’analyse de données var

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» var(X,0) %% var(X)
ans =
0.0878
» var(X,1)
ans =
0.0702
»

MATLAB à la carte — module 2: « Programmation de base » 64 / 115

 L’analyse de données var

MATLAB
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» var(A,0,1) %% var(A,0) var(A)
ans =
0.1293 0.0429 0.1616 0.0301 0.1509
» var(A,1,1) %% var(A,1)
ans =
0.0862 0.0286 0.1077 0.0201 0.1006
» var(A,0,2) %% var(A',0)' var(A')'
ans =
0.0676
0.1318
0.0717
» var(A,1,2) %% var(A',1)'
ans =
0.0541
0.1055
0.0573
»
MATLAB à la carte — module 2: « Programmation de base » 65 / 115

33
Matlab à la carte 02/09/2008

 L’analyse de données median

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» median(X)
ans =
0.6068
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» median(A,1) %% median(A)
ans =
0.6068 0.7621 0.4565 0.6154 0.7382
» median(A,2) %% median(A')'
ans =
0.4860
0.6154
0.7621
»

MATLAB à la carte — module 2: « Programmation de base » 66 / 115

 L’analyse de données sort

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» sort(X)
ans =
0.2311 0.4860 0.6068 0.8913 0.9501
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» sort(A,1) %% sort(A)
ans =
0.2311 0.4860 0.0185 0.4447 0.1763
0.6068 0.7621 0.4565 0.6154 0.7382
0.9501 0.8913 0.8214 0.7919 0.9218
» sort(A,2) %% sort(A')'
ans =
0.4447 0.4565 0.4860 0.9218 0.9501
0.0185 0.2311 0.6154 0.7382 0.8913
0.1763 0.6068 0.7621 0.7919 0.8214
»
MATLAB à la carte — module 2: « Programmation de base » 67 / 115

34
Matlab à la carte 02/09/2008

 L’analyse de données median

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» median(X)
ans =
0.6068
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» median(A,1) %% median(A)
ans =
0.6068 0.7621 0.4565 0.6154 0.7382
» median(A,2) %% median(A')'
ans =
0.4860
0.6154
0.7621
»

MATLAB à la carte — module 2: « Programmation de base » 66 / 115

 L’analyse de données sort

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» sort(X)
ans =
0.2311 0.4860 0.6068 0.8913 0.9501
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» sort(A,1) %% sort(A)
ans =
0.2311 0.4860 0.0185 0.4447 0.1763
0.6068 0.7621 0.4565 0.6154 0.7382
0.9501 0.8913 0.8214 0.7919 0.9218
» sort(A,2) %% sort(A')'
ans =
0.4447 0.4565 0.4860 0.9218 0.9501
0.0185 0.2311 0.6154 0.7382 0.8913
0.1763 0.6068 0.7621 0.7919 0.8214
»
MATLAB à la carte — module 2: « Programmation de base » 67 / 115

34
Matlab à la carte 02/09/2008

 L’analyse de données
Statistiques élémentaires
MATLAB a un certain nombre de fonctions pour
l’analyse de données d’un point de vue statistique:
 sum somme
 cumsum somme cumulée
 prod produit
 cumprod produit cumulé
 trapz intégration numérique
 cumtrapz intégration numérique cumulée

MATLAB à la carte — module 2: « Programmation de base » 68 / 115

 L’analyse de données sum

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» sum(X)
ans =
3.1654
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» sum(A,1) %% sum(A)
ans =
1.7881 2.1394 1.2964 1.8521 1.8363
» sum(A,2) %% sum(A')'
ans =
3.2591
2.4946
3.1585
»

MATLAB à la carte — module 2: « Programmation de base » 69 / 115

35
Matlab à la carte 02/09/2008

 L’analyse de données
Statistiques élémentaires
MATLAB a un certain nombre de fonctions pour
l’analyse de données d’un point de vue statistique:
 sum somme
 cumsum somme cumulée
 prod produit
 cumprod produit cumulé
 trapz intégration numérique
 cumtrapz intégration numérique cumulée

MATLAB à la carte — module 2: « Programmation de base » 68 / 115

 L’analyse de données sum

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» sum(X)
ans =
3.1654
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» sum(A,1) %% sum(A)
ans =
1.7881 2.1394 1.2964 1.8521 1.8363
» sum(A,2) %% sum(A')'
ans =
3.2591
2.4946
3.1585
»

MATLAB à la carte — module 2: « Programmation de base » 69 / 115

35
Matlab à la carte 02/09/2008

 L’analyse de données cumsum

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» cumsum(X)
ans =
0.9501 1.1813 1.7881 2.2741 3.1654
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» cumsum(A,1) %% cumsum(A)
ans =
0.9501 0.4860 0.4565 0.4447 0.9218
1.1813 1.3773 0.4750 1.0601 1.6600
1.7881 2.1394 1.2964 1.8521 1.8363
» cumsum(A,2) %% cumsum(A')'
ans =
0.9501 1.4361 1.8926 2.3373 3.2591
0.2311 1.1224 1.1409 1.7564 2.4946
0.6068 1.3689 2.1903 2.9823 3.1585
»
MATLAB à la carte — module 2: « Programmation de base » 70 / 115

 L’analyse de données prod

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» prod(X)
ans =
0.0577
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» prod(A,1) %% prod(A)
ans =
0.1333 0.3301 0.0069 0.2167 0.1199
» prod(A,2) %% prod(A')'
ans =
0.0864
0.0017
0.0530
»

MATLAB à la carte — module 2: « Programmation de base » 71 / 115

36
Matlab à la carte 02/09/2008

 L’analyse de données cumsum

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» cumsum(X)
ans =
0.9501 1.1813 1.7881 2.2741 3.1654
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» cumsum(A,1) %% cumsum(A)
ans =
0.9501 0.4860 0.4565 0.4447 0.9218
1.1813 1.3773 0.4750 1.0601 1.6600
1.7881 2.1394 1.2964 1.8521 1.8363
» cumsum(A,2) %% cumsum(A')'
ans =
0.9501 1.4361 1.8926 2.3373 3.2591
0.2311 1.1224 1.1409 1.7564 2.4946
0.6068 1.3689 2.1903 2.9823 3.1585
»
MATLAB à la carte — module 2: « Programmation de base » 70 / 115

 L’analyse de données prod

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» prod(X)
ans =
0.0577
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» prod(A,1) %% prod(A)
ans =
0.1333 0.3301 0.0069 0.2167 0.1199
» prod(A,2) %% prod(A')'
ans =
0.0864
0.0017
0.0530
»

MATLAB à la carte — module 2: « Programmation de base » 71 / 115

36
Matlab à la carte 02/09/2008

 L’analyse de données cumprod

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» cumprod(X)
ans =
0.9501 0.2196 0.1333 0.0648 0.0577
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» cumprod(A,1) %% cumprod(A)
ans =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2196 0.4332 0.0084 0.2737 0.6805
0.1333 0.3301 0.0069 0.2167 0.1199
» cumprod(A,2) %% cumprod(A')'
ans =
0.9501 0.4617 0.2108 0.0937 0.0864
0.2311 0.2060 0.0038 0.0023 0.0017
0.6068 0.4625 0.3799 0.3008 0.0530
»
MATLAB à la carte — module 2: « Programmation de base » 72 / 115

 L’analyse de données trapz

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» trapz(X)
ans =
2.2447
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» trapz(A,1) %% trapz(A)
ans =
1.0096 1.5153 0.6574 1.2338 1.2872
» trapz(A,2) %% trapz(A')'
ans =
2.3231
2.0099
2.7670
»

MATLAB à la carte — module 2: « Programmation de base » 73 / 115

37
Matlab à la carte 02/09/2008

 L’analyse de données cumprod

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» cumprod(X)
ans =
0.9501 0.2196 0.1333 0.0648 0.0577
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» cumprod(A,1) %% cumprod(A)
ans =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2196 0.4332 0.0084 0.2737 0.6805
0.1333 0.3301 0.0069 0.2167 0.1199
» cumprod(A,2) %% cumprod(A')'
ans =
0.9501 0.4617 0.2108 0.0937 0.0864
0.2311 0.2060 0.0038 0.0023 0.0017
0.6068 0.4625 0.3799 0.3008 0.0530
»
MATLAB à la carte — module 2: « Programmation de base » 72 / 115

 L’analyse de données trapz

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» trapz(X)
ans =
2.2447
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» trapz(A,1) %% trapz(A)
ans =
1.0096 1.5153 0.6574 1.2338 1.2872
» trapz(A,2) %% trapz(A')'
ans =
2.3231
2.0099
2.7670
»

MATLAB à la carte — module 2: « Programmation de base » 73 / 115

37
Matlab à la carte 02/09/2008

 L’analyse de données cumtrapz

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» cumtrapz(X)
ans =
0 0.5906 1.0096 1.5560 2.2447
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» cumtrapz(A,1) %% cumtrapz(A)
ans =
0 0 0 0 0
0.5906 0.6886 0.2375 0.5301 0.8300
1.0096 1.5153 0.6574 1.2338 1.2872
» cumtrapz(A,2) %% cumtrapz(A')'
ans =
0 0.7181 1.1893 1.6399 2.3231
0 0.5612 1.0161 1.3331 2.0099
0 0.6845 1.4762 2.2829 2.7670
»
MATLAB à la carte — module 2: « Programmation de base » 74 / 115

 L’analyse de données
Histogramme
L’histogramme est obtenu avec la fonction hist:
>> N = hist(X,n);
où les valeurs des n comptes (défaut 10) retournées
dans N sont centrées sur des valeurs équidistantes.
>> N = hist(X,B);
où B est un vecteur sur lequel les comptes des sont
centrés.

MATLAB à la carte — module 2: « Programmation de base » 75 / 115

38
Matlab à la carte 02/09/2008

 L’analyse de données cumtrapz

MATLAB
» rand('state',0);
» X=rand(1,5)
X =
0.9501 0.2311 0.6068 0.4860 0.8913
» cumtrapz(X)
ans =
0 0.5906 1.0096 1.5560 2.2447
» rand('state',0);
» A=rand(3,5)
A =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
» cumtrapz(A,1) %% cumtrapz(A)
ans =
0 0 0 0 0
0.5906 0.6886 0.2375 0.5301 0.8300
1.0096 1.5153 0.6574 1.2338 1.2872
» cumtrapz(A,2) %% cumtrapz(A')'
ans =
0 0.7181 1.1893 1.6399 2.3231
0 0.5612 1.0161 1.3331 2.0099
0 0.6845 1.4762 2.2829 2.7670
»
MATLAB à la carte — module 2: « Programmation de base » 74 / 115

 L’analyse de données
Histogramme
L’histogramme est obtenu avec la fonction hist:
>> N = hist(X,n);
où les valeurs des n comptes (défaut 10) retournées
dans N sont centrées sur des valeurs équidistantes.
>> N = hist(X,B);
où B est un vecteur sur lequel les comptes des sont
centrés.

MATLAB à la carte — module 2: « Programmation de base » 75 / 115

38
Matlab à la carte 02/09/2008

 L’analyse de données hist

MATLAB
» rand('state',0);
» X=rand(10000,1);
» N=hist(X)
N =
1018 947 980 941 1007 1004 1012 1050 1009 1032
» N=hist(X,36)
N =
Columns 1 through 12
316 263 265 271 277 266 248 274 281 268 263 283
Columns 13 through 24
245 259 296 260 285 273 310 258 278 265 291 286
Columns 25 through 36
275 292 287 306 262 315 261 259 276 286 282 318
»

MATLAB à la carte — module 2: « Programmation de base » 76 / 115

 L’analyse de données hist

MATLAB
» rand('state',0);
» X=rand(10000,1);
» N=hist(X)
N =
Figure No. 1
1018 947 980 941 1007 1004 1012 1050 1009 1032
» N=hist(X,36)
N =
Columns 1 through 12
316 263 265 271 277 266 248 274 281 268 263 283
Columns 13 through 24
245 259 296 260 285 273 310 258 278 265 291 286
Columns 25 through 36
275 292 287 306 262 315 261 259 276 286 282 318
» figure(1);
» hist(X,36);
»

MATLAB à la carte — module 2: « Programmation de base » 77 / 115

39
Matlab à la carte 02/09/2008

 L’analyse de données hist

MATLAB
» rand('state',0);
» X=rand(10000,1);
» N=hist(X)
N =
1018 947 980 941 1007 1004 1012 1050 1009 1032
» N=hist(X,36)
N =
Columns 1 through 12
316 263 265 271 277 266 248 274 281 268 263 283
Columns 13 through 24
245 259 296 260 285 273 310 258 278 265 291 286
Columns 25 through 36
275 292 287 306 262 315 261 259 276 286 282 318
»

MATLAB à la carte — module 2: « Programmation de base » 76 / 115

 L’analyse de données hist

MATLAB
» rand('state',0);
» X=rand(10000,1);
» N=hist(X)
N =
Figure No. 1
1018 947 980 941 1007 1004 1012 1050 1009 1032
» N=hist(X,36)
N =
Columns 1 through 12
316 263 265 271 277 266 248 274 281 268 263 283
Columns 13 through 24
245 259 296 260 285 273 310 258 278 265 291 286
Columns 25 through 36
275 292 287 306 262 315 261 259 276 286 282 318
» figure(1);
» hist(X,36);
»

MATLAB à la carte — module 2: « Programmation de base » 77 / 115

39
Matlab à la carte 02/09/2008

 L’analyse de données hist

MATLAB
» rand('state',0);
» X=randn(10000,1);
» N=hist(X)
N =
13 103 534 1491 2749 2803 1620 553 116 18
» N=hist(X,36)
N =
Columns 1 through 12
1 3 3 10 13 29 49 64 114 166 243 319
Columns 13 through 24
388 510 622 727 762 867 832 835 732 668 545 420
Columns 25 through 36
329 260 168 104 98 50 29 18 11 2 6 3
»

MATLAB à la carte — module 2: « Programmation de base » 78 / 115

 L’analyse de données hist

MATLAB
» rand('state',0);
» X=randn(10000,1);
» N=hist(X)
N =
Figure No. 1
13 103 534 1491 2749 2803 1620 553 116 18
» N=hist(X,36)
N =
Columns 1 through 12
1 3 3 10 13 29 49 64 114 166 243 319
Columns 13 through 24
388 510 622 727 762 867 832 835 732 668 545 420
Columns 25 through 36
329 260 168 104 98 50 29 18 11 2 6 3
» figure(1);
» hist(X,36);
»

MATLAB à la carte — module 2: « Programmation de base » 79 / 115

40
Matlab à la carte 02/09/2008

 L’analyse de données hist

MATLAB
» rand('state',0);
» X=randn(10000,1);
» N=hist(X)
N =
13 103 534 1491 2749 2803 1620 553 116 18
» N=hist(X,36)
N =
Columns 1 through 12
1 3 3 10 13 29 49 64 114 166 243 319
Columns 13 through 24
388 510 622 727 762 867 832 835 732 668 545 420
Columns 25 through 36
329 260 168 104 98 50 29 18 11 2 6 3
»

MATLAB à la carte — module 2: « Programmation de base » 78 / 115

 L’analyse de données hist

MATLAB
» rand('state',0);
» X=randn(10000,1);
» N=hist(X)
N =
Figure No. 1
13 103 534 1491 2749 2803 1620 553 116 18
» N=hist(X,36)
N =
Columns 1 through 12
1 3 3 10 13 29 49 64 114 166 243 319
Columns 13 through 24
388 510 622 727 762 867 832 835 732 668 545 420
Columns 25 through 36
329 260 168 104 98 50 29 18 11 2 6 3
» figure(1);
» hist(X,36);
»

MATLAB à la carte — module 2: « Programmation de base » 79 / 115

40
Matlab à la carte 02/09/2008

 L’analyse de données
Analyse de FOURIER
MATLAB propose aussi des fonctions pour l’analyse
de FOURIER:

• fft: N-1 -2j k·l


Yk =  Xl e N , 0  k  N-1
l=0

• ifft:
+2j k·l
N-1
Xl = 1  Y k e N , 0  l  N-1
N k=0
MATLAB à la carte — module 2: « Programmation de base » 80 / 115

 L’analyse de données fft

MATLAB
» X=[0.3679 0.5698 0.7788 0.9394 1.0000 0.9394 0.7788 0.5698]
X =
0.3679 0.5698 0.7788 0.9394 1.0000 0.9394 0.7788 0.5698
» Y=zeros(size(X));
» for k=0:7
for l=0:7
Y(k+1)=Y(k+1)+X(l+1)*exp(-2*j*pi*k*l/8);
end
end
» Y
Y =
5.9439 -1.1549 -0.1897 -0.1094 -0.0929 -0.1094 -0.1897 -1.1549
» Y=fft(X)
Y =
5.9439 -1.1549 -0.1897 -0.1094 -0.0929 -0.1094 -0.1897 -1.1549
» fftshift(Y) %% shift DC component to the center of the spectrum
ans =
-0.0929 -0.1094 -0.1897 -1.1549 5.9439 -1.1549 -0.1897 -0.1094
»

MATLAB à la carte — module 2: « Programmation de base » 81 / 115

41
Matlab à la carte 02/09/2008

 L’analyse de données
Analyse de FOURIER
MATLAB propose aussi des fonctions pour l’analyse
de FOURIER:

• fft: N-1 -2j k·l


Yk =  Xl e N , 0  k  N-1
l=0

• ifft:
+2j k·l
N-1
Xl = 1  Y k e N , 0  l  N-1
N k=0
MATLAB à la carte — module 2: « Programmation de base » 80 / 115

 L’analyse de données fft

MATLAB
» X=[0.3679 0.5698 0.7788 0.9394 1.0000 0.9394 0.7788 0.5698]
X =
0.3679 0.5698 0.7788 0.9394 1.0000 0.9394 0.7788 0.5698
» Y=zeros(size(X));
» for k=0:7
for l=0:7
Y(k+1)=Y(k+1)+X(l+1)*exp(-2*j*pi*k*l/8);
end
end
» Y
Y =
5.9439 -1.1549 -0.1897 -0.1094 -0.0929 -0.1094 -0.1897 -1.1549
» Y=fft(X)
Y =
5.9439 -1.1549 -0.1897 -0.1094 -0.0929 -0.1094 -0.1897 -1.1549
» fftshift(Y) %% shift DC component to the center of the spectrum
ans =
-0.0929 -0.1094 -0.1897 -1.1549 5.9439 -1.1549 -0.1897 -0.1094
»

MATLAB à la carte — module 2: « Programmation de base » 81 / 115

41
Matlab à la carte 02/09/2008

 L’analyse de données ifft

MATLAB
» Y
Y =
5.9439 -1.1549 -0.1897 -0.1094 -0.0929 -0.1094 -0.1897 -1.1549
» X=zeros(size(Y));
» for l=0:7
for k=0:7
X(l+1)=X(l+1)+Y(k+1)*exp(+2*j*pi*k*l/8);
end
end
» X/8
X =
0.3679 0.5698 0.7788 0.9394 1.0000 0.9394 0.7788 0.5698
» X=ifft(Y)
X =
0.3679 0.5698 0.7788 0.9394 1.0000 0.9394 0.7788 0.5698
»

MATLAB à la carte — module 2: « Programmation de base » 82 / 115

 L’analyse de données
Analyse de FOURIER
MATLAB propose des fonctions pour l’analyse de
FOURIER de vecteurs (traitement du signal):
 fft Fast FOURIER Transform
 ifft Inverse Fast FOURIER Transform
 fftshift shift DC component
 conv convolution

MATLAB à la carte — module 2: « Programmation de base » 83 / 115

42
Matlab à la carte 02/09/2008

 L’analyse de données ifft

MATLAB
» Y
Y =
5.9439 -1.1549 -0.1897 -0.1094 -0.0929 -0.1094 -0.1897 -1.1549
» X=zeros(size(Y));
» for l=0:7
for k=0:7
X(l+1)=X(l+1)+Y(k+1)*exp(+2*j*pi*k*l/8);
end
end
» X/8
X =
0.3679 0.5698 0.7788 0.9394 1.0000 0.9394 0.7788 0.5698
» X=ifft(Y)
X =
0.3679 0.5698 0.7788 0.9394 1.0000 0.9394 0.7788 0.5698
»

MATLAB à la carte — module 2: « Programmation de base » 82 / 115

 L’analyse de données
Analyse de FOURIER
MATLAB propose des fonctions pour l’analyse de
FOURIER de vecteurs (traitement du signal):
 fft Fast FOURIER Transform
 ifft Inverse Fast FOURIER Transform
 fftshift shift DC component
 conv convolution

MATLAB à la carte — module 2: « Programmation de base » 83 / 115

42
Matlab à la carte 02/09/2008

 L’analyse de données
Analyse de FOURIER
MATLAB propose des fonctions pour l’analyse de
FOURIER de matrices (traitement d’image):
 fft2 Fast FOURIER Transform
 ifft2 Inverse Fast FOURIER Transform
 fftshift shift DC component
 conv2 convolution

MATLAB à la carte — module 2: « Programmation de base » 84 / 115

 Les échanges de données


Matlab  Matlab
MATLAB propose des fonctions pour l’échange de
données avec son espace de travail:
 whos retourne des informations
 load chargement depuis un fichier
 save sauvegarde dans un fichier

MATLAB à la carte — module 2: « Programmation de base » 85 / 115

43
Matlab à la carte 02/09/2008

 L’analyse de données
Analyse de FOURIER
MATLAB propose des fonctions pour l’analyse de
FOURIER de matrices (traitement d’image):
 fft2 Fast FOURIER Transform
 ifft2 Inverse Fast FOURIER Transform
 fftshift shift DC component
 conv2 convolution

MATLAB à la carte — module 2: « Programmation de base » 84 / 115

 Les échanges de données


Matlab  Matlab
MATLAB propose des fonctions pour l’échange de
données avec son espace de travail:
 whos retourne des informations
 load chargement depuis un fichier
 save sauvegarde dans un fichier

MATLAB à la carte — module 2: « Programmation de base » 85 / 115

43
Matlab à la carte 02/09/2008

 Les échanges de données


Matlab  Fichiers ASCII
MATLAB propose des fonctions pour l’échange de
données avec des fichiers ASCII (texte) munis de
délimiteurs:
 csvread lecture depuis un fichier texte
 csvwrite écriture dans un fichier texte
 dlmread lecture depuis un fichier texte
 dlmwrite écriture dans un fichier texte
 Les données ne peuvent être que numériques.
 La signification des . et des , diffère selon la langue.
MATLAB à la carte — module 2: « Programmation de base » 86 / 115

 Les échanges de données csvread

MATLAB
» dos('notepad.exe data.csv &');
»

data.csv
0.056135,0.199,0.79845,0.84464,0.6145
0.45688,0.60073,0.55478,0.87626,0.92483
0.76553,0.54282,0.14667,0.33207,0.61393
0.29249,0.25169,0.10701,0.1454,0.25638
0.96192,0.20162,0.52378,0.74407,0.039663
1,0.57562,0.2463,0.66189,0.62071
0.99909,0.51376,0.57163,0.40278,0.34349
0.74162,0.7477,0.33437,0.58503,0.024167
0.34978,0.60802,0.67871,0.55545,0.17139
0.79658,0.98964,0.069367,0.49412,0.61072

MATLAB à la carte — module 2: « Programmation de base » 87 / 115

44
Matlab à la carte 02/09/2008

 Les échanges de données


Matlab  Fichiers ASCII
MATLAB propose des fonctions pour l’échange de
données avec des fichiers ASCII (texte) munis de
délimiteurs:
 csvread lecture depuis un fichier texte
 csvwrite écriture dans un fichier texte
 dlmread lecture depuis un fichier texte
 dlmwrite écriture dans un fichier texte
 Les données ne peuvent être que numériques.
 La signification des . et des , diffère selon la langue.
MATLAB à la carte — module 2: « Programmation de base » 86 / 115

 Les échanges de données csvread

MATLAB
» dos('notepad.exe data.csv &');
»

data.csv
0.056135,0.199,0.79845,0.84464,0.6145
0.45688,0.60073,0.55478,0.87626,0.92483
0.76553,0.54282,0.14667,0.33207,0.61393
0.29249,0.25169,0.10701,0.1454,0.25638
0.96192,0.20162,0.52378,0.74407,0.039663
1,0.57562,0.2463,0.66189,0.62071
0.99909,0.51376,0.57163,0.40278,0.34349
0.74162,0.7477,0.33437,0.58503,0.024167
0.34978,0.60802,0.67871,0.55545,0.17139
0.79658,0.98964,0.069367,0.49412,0.61072

MATLAB à la carte — module 2: « Programmation de base » 87 / 115

44
Matlab à la carte 02/09/2008

 Les échanges de données csvread

MATLAB
» dos('notepad.exe data.csv &');
» A = csvread('data.csv')
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
»

MATLAB à la carte — module 2: « Programmation de base » 88 / 115

 Les échanges de données csvwrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
» csvwrite('data.csv',A);
» dos('notepad.exe data.csv &');
»

MATLAB à la carte — module 2: « Programmation de base » 89 / 115

45
Matlab à la carte 02/09/2008

 Les échanges de données csvread

MATLAB
» dos('notepad.exe data.csv &');
» A = csvread('data.csv')
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
»

MATLAB à la carte — module 2: « Programmation de base » 88 / 115

 Les échanges de données csvwrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
» csvwrite('data.csv',A);
» dos('notepad.exe data.csv &');
»

MATLAB à la carte — module 2: « Programmation de base » 89 / 115

45
Matlab à la carte 02/09/2008

 Les échanges de données csvwrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
data.csv
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.056135,0.199,0.79845,0.84464,0.6145
0.2463 0.6619 0.6207
0.9991 0.5138 0.45688,0.60073,0.55478,0.87626,0.92483
0.5716 0.4028 0.3435
0.7416 0.7477 0.76553,0.54282,0.14667,0.33207,0.61393
0.3344 0.5850 0.0242
0.3498 0.6080 0.29249,0.25169,0.10701,0.1454,0.25638
0.6787 0.5555 0.1714
0.7966 0.9896 0.96192,0.20162,0.52378,0.74407,0.039663
0.0694 0.4941 0.6107
1,0.57562,0.2463,0.66189,0.62071
» csvwrite('data.csv',A);
0.99909,0.51376,0.57163,0.40278,0.34349
» dos('notepad.exe data.csv &');
» 0.74162,0.7477,0.33437,0.58503,0.024167
0.34978,0.60802,0.67871,0.55545,0.17139
0.79658,0.98964,0.069367,0.49412,0.61072

MATLAB à la carte — module 2: « Programmation de base » 90 / 115

 Les échanges de données Excel


MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
data.csv
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0,056135;0,199;0,79845;0,84464;0,6145
0.2463 0.6619 0.6207
0.9991 0.5138 0,45688;0,60073;0,55478;0,87626;0,92483
0.5716 0.4028 0.3435
0.7416 0.7477 0,76553;0,54282;0,14667;0,33207;0,61393
0.3344 0.5850 0.0242
0.3498 0.6080 0,29249;0,25169;0,10701;0,1454;0,25638
0.6787 0.5555 0.1714
0.7966 0.9896 0,96192;0,20162;0,52378;0,74407;0,039663
0.0694 0.4941 0.6107
1;0,57562;0,2463;0,66189;0,62071
» csvwrite('data.csv',A);
0,99909;0,51376;0,57163;0,40278;0,34349
» dos('notepad.exe data.csv &');
» 0,74162;0,7477;0,33437;0,58503;0,024167
0,34978;0,60802;0,67871;0,55545;0,17139
0,79658;0,98964;0,069367;0,49412;0,61072

MATLAB à la carte — module 2: « Programmation de base » 91 / 115

46
Matlab à la carte 02/09/2008

 Les échanges de données csvwrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
data.csv
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.056135,0.199,0.79845,0.84464,0.6145
0.2463 0.6619 0.6207
0.9991 0.5138 0.45688,0.60073,0.55478,0.87626,0.92483
0.5716 0.4028 0.3435
0.7416 0.7477 0.76553,0.54282,0.14667,0.33207,0.61393
0.3344 0.5850 0.0242
0.3498 0.6080 0.29249,0.25169,0.10701,0.1454,0.25638
0.6787 0.5555 0.1714
0.7966 0.9896 0.96192,0.20162,0.52378,0.74407,0.039663
0.0694 0.4941 0.6107
1,0.57562,0.2463,0.66189,0.62071
» csvwrite('data.csv',A);
0.99909,0.51376,0.57163,0.40278,0.34349
» dos('notepad.exe data.csv &');
» 0.74162,0.7477,0.33437,0.58503,0.024167
0.34978,0.60802,0.67871,0.55545,0.17139
0.79658,0.98964,0.069367,0.49412,0.61072

MATLAB à la carte — module 2: « Programmation de base » 90 / 115

 Les échanges de données Excel


MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
data.csv
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0,056135;0,199;0,79845;0,84464;0,6145
0.2463 0.6619 0.6207
0.9991 0.5138 0,45688;0,60073;0,55478;0,87626;0,92483
0.5716 0.4028 0.3435
0.7416 0.7477 0,76553;0,54282;0,14667;0,33207;0,61393
0.3344 0.5850 0.0242
0.3498 0.6080 0,29249;0,25169;0,10701;0,1454;0,25638
0.6787 0.5555 0.1714
0.7966 0.9896 0,96192;0,20162;0,52378;0,74407;0,039663
0.0694 0.4941 0.6107
1;0,57562;0,2463;0,66189;0,62071
» csvwrite('data.csv',A);
0,99909;0,51376;0,57163;0,40278;0,34349
» dos('notepad.exe data.csv &');
» 0,74162;0,7477;0,33437;0,58503;0,024167
0,34978;0,60802;0,67871;0,55545;0,17139
0,79658;0,98964;0,069367;0,49412;0,61072

MATLAB à la carte — module 2: « Programmation de base » 91 / 115

46
Matlab à la carte 02/09/2008

 Les échanges de données Excel


MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.csv 0.5850 Microsoft
0.0242Excel
0.3498 0.6080 0.6787
A
0.5555 C 0.1714
B D E F
0.7966 0.9896 0.0694 0.4941 0.6107
1 0,05613 0,19900 0,79845 0,84464 0,61450
» csvwrite('data.csv',A);
» dos('notepad.exe data.csv
2 0,45688 &');0,60073 0,55478 0,87626 0,92483
» dos('excel.exe &');
» 3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1
MATLAB à la carte — module 2: « Programmation de base » 92 / 115

 Les échanges de données dlmread

MATLAB
» dos('notepad.exe data.txt &');
»

data.txt
0.056135 0.199 0.79845 0.84464 0.6145
0.45688 0.60073 0.55478 0.87626 0.92483
0.76553 0.54282 0.14667 0.33207 0.61393
0.29249 0.25169 0.10701 0.1454 0.25638
0.96192 0.20162 0.52378 0.74407 0.039663
1 0.57562 0.2463 0.66189 0.62071
0.99909 0.51376 0.57163 0.40278 0.34349
0.74162 0.7477 0.33437 0.58503 0.024167
0.34978 0.60802 0.67871 0.55545 0.17139
0.79658 0.98964 0.069367 0.49412 0.61072

MATLAB à la carte — module 2: « Programmation de base » 93 / 115

47
Matlab à la carte 02/09/2008

 Les échanges de données Excel


MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.csv 0.5850 Microsoft
0.0242Excel
0.3498 0.6080 0.6787
A
0.5555 C 0.1714
B D E F
0.7966 0.9896 0.0694 0.4941 0.6107
1 0,05613 0,19900 0,79845 0,84464 0,61450
» csvwrite('data.csv',A);
» dos('notepad.exe data.csv
2 0,45688 &');0,60073 0,55478 0,87626 0,92483
» dos('excel.exe &');
» 3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1
MATLAB à la carte — module 2: « Programmation de base » 92 / 115

 Les échanges de données dlmread

MATLAB
» dos('notepad.exe data.txt &');
»

data.txt
0.056135 0.199 0.79845 0.84464 0.6145
0.45688 0.60073 0.55478 0.87626 0.92483
0.76553 0.54282 0.14667 0.33207 0.61393
0.29249 0.25169 0.10701 0.1454 0.25638
0.96192 0.20162 0.52378 0.74407 0.039663
1 0.57562 0.2463 0.66189 0.62071
0.99909 0.51376 0.57163 0.40278 0.34349
0.74162 0.7477 0.33437 0.58503 0.024167
0.34978 0.60802 0.67871 0.55545 0.17139
0.79658 0.98964 0.069367 0.49412 0.61072

MATLAB à la carte — module 2: « Programmation de base » 93 / 115

47
Matlab à la carte 02/09/2008

 Les échanges de données dlmread

MATLAB
» dos('notepad.exe data.txt &');
» A = dlmread('data.txt','\t')
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
»

MATLAB à la carte — module 2: « Programmation de base » 94 / 115

 Les échanges de données dlmwrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
» dlmwrite('data.txt',A,'\t');
» dos('notepad.exe data.txt &');
»

MATLAB à la carte — module 2: « Programmation de base » 95 / 115

48
Matlab à la carte 02/09/2008

 Les échanges de données dlmread

MATLAB
» dos('notepad.exe data.txt &');
» A = dlmread('data.txt','\t')
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
»

MATLAB à la carte — module 2: « Programmation de base » 94 / 115

 Les échanges de données dlmwrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
» dlmwrite('data.txt',A,'\t');
» dos('notepad.exe data.txt &');
»

MATLAB à la carte — module 2: « Programmation de base » 95 / 115

48
Matlab à la carte 02/09/2008

 Les échanges de données dlmwrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
data.txt
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.056135
0.2463 0.199 0.6619 0.79845 0.84464
0.6207 0.6145
0.9991 0.5138 0.45688
0.5716 0.60073 0.4028 0.55478 0.87626
0.3435 0.92483
0.7416 0.7477 0.76553
0.3344 0.54282 0.5850 0.14667 0.33207
0.0242 0.61393
0.3498 0.6080 0.29249
0.6787 0.25169 0.5555 0.10701 0.1454
0.1714 0.25638
0.7966 0.9896 0.96192
0.0694 0.20162
0.4941 0.52378 0.74407
0.6107 0.039663
1
» dlmwrite('data.txt',A,'\t'); 0.57562 0.2463 0.66189 0.62071
0.99909
» dos('notepad.exe data.txt 0.51376 0.57163 0.40278
&'); 0.34349
» 0.74162 0.7477 0.33437 0.58503 0.024167
0.34978 0.60802 0.67871 0.55545 0.17139
0.79658 0.98964 0.069367 0.49412 0.61072

MATLAB à la carte — module 2: « Programmation de base » 96 / 115

 Les échanges de données Excel


MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
data.txt
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0,056135
0.2463 0,1990.6619 0,79845 0,84464
0.6207 0,6145
0.9991 0.5138 0,45688
0.5716 0,60073
0.4028 0,55478 0,87626
0.3435 0,92483
0.7416 0.7477 0,76553
0.3344 0,54282
0.5850 0,14667 0,33207
0.0242 0,61393
0.3498 0.6080 0,29249
0.6787 0,25169
0.5555 0,10701 0,1454
0.1714 0,25638
0.7966 0.9896 0,96192
0.0694 0,20162
0.4941 0,52378 0,74407
0.6107 0,039663
1
» dlmwrite('data.txt',A,'\t'); 0,57562 0,2463 0,66189 0,62071
0,99909
» dos('notepad.exe data.txt &'); 0,51376 0,57163 0,40278 0,34349
» 0,74162 0,7477 0,33437 0,58503 0,024167
0,34978 0,60802 0,67871 0,55545 0,17139
0,79658 0,98964 0,069367 0,49412 0,61072

MATLAB à la carte — module 2: « Programmation de base » 97 / 115

49
Matlab à la carte 02/09/2008

 Les échanges de données dlmwrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
data.txt
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.056135
0.2463 0.199 0.6619 0.79845 0.84464
0.6207 0.6145
0.9991 0.5138 0.45688
0.5716 0.60073 0.4028 0.55478 0.87626
0.3435 0.92483
0.7416 0.7477 0.76553
0.3344 0.54282 0.5850 0.14667 0.33207
0.0242 0.61393
0.3498 0.6080 0.29249
0.6787 0.25169 0.5555 0.10701 0.1454
0.1714 0.25638
0.7966 0.9896 0.96192
0.0694 0.20162
0.4941 0.52378 0.74407
0.6107 0.039663
1
» dlmwrite('data.txt',A,'\t'); 0.57562 0.2463 0.66189 0.62071
0.99909
» dos('notepad.exe data.txt 0.51376 0.57163 0.40278
&'); 0.34349
» 0.74162 0.7477 0.33437 0.58503 0.024167
0.34978 0.60802 0.67871 0.55545 0.17139
0.79658 0.98964 0.069367 0.49412 0.61072

MATLAB à la carte — module 2: « Programmation de base » 96 / 115

 Les échanges de données Excel


MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
data.txt
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0,056135
0.2463 0,1990.6619 0,79845 0,84464
0.6207 0,6145
0.9991 0.5138 0,45688
0.5716 0,60073
0.4028 0,55478 0,87626
0.3435 0,92483
0.7416 0.7477 0,76553
0.3344 0,54282
0.5850 0,14667 0,33207
0.0242 0,61393
0.3498 0.6080 0,29249
0.6787 0,25169
0.5555 0,10701 0,1454
0.1714 0,25638
0.7966 0.9896 0,96192
0.0694 0,20162
0.4941 0,52378 0,74407
0.6107 0,039663
1
» dlmwrite('data.txt',A,'\t'); 0,57562 0,2463 0,66189 0,62071
0,99909
» dos('notepad.exe data.txt &'); 0,51376 0,57163 0,40278 0,34349
» 0,74162 0,7477 0,33437 0,58503 0,024167
0,34978 0,60802 0,67871 0,55545 0,17139
0,79658 0,98964 0,069367 0,49412 0,61072

MATLAB à la carte — module 2: « Programmation de base » 97 / 115

49
Matlab à la carte 02/09/2008

 Les échanges de données Excel


MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.txt 0.5850 Microsoft
0.0242Excel
0.3498 0.6080 0.6787A
0.5555 C 0.1714
B D E F
0.7966 0.9896 0.0694 0.4941 0.6107
1 0,05613 0,19900 0,79845 0,84464 0,61450
» dlmwrite('data.txt',A,'\t');
» dos('notepad.exe data.txt
2 0,45688 &');0,60073 0,55478 0,87626 0,92483
» dos('excel.exe &');
» 3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1
MATLAB à la carte — module 2: « Programmation de base » 98 / 115

 Les échanges de données


Matlab  Fichiers Excel
MATLAB propose des fonctions pour l’échange de
données avec Excel:
 xlsinfo retourne des informations
 xlsread lecture depuis un fichier Excel
 xlswrite écriture dans un fichier Excel

MATLAB à la carte — module 2: « Programmation de base » 99 / 115

50
Matlab à la carte 02/09/2008

 Les échanges de données Excel


MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.txt 0.5850 Microsoft
0.0242Excel
0.3498 0.6080 0.6787A
0.5555 C 0.1714
B D E F
0.7966 0.9896 0.0694 0.4941 0.6107
1 0,05613 0,19900 0,79845 0,84464 0,61450
» dlmwrite('data.txt',A,'\t');
» dos('notepad.exe data.txt
2 0,45688 &');0,60073 0,55478 0,87626 0,92483
» dos('excel.exe &');
» 3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1
MATLAB à la carte — module 2: « Programmation de base » 98 / 115

 Les échanges de données


Matlab  Fichiers Excel
MATLAB propose des fonctions pour l’échange de
données avec Excel:
 xlsinfo retourne des informations
 xlsread lecture depuis un fichier Excel
 xlswrite écriture dans un fichier Excel

MATLAB à la carte — module 2: « Programmation de base » 99 / 115

50
Matlab à la carte 02/09/2008

 Les échanges de données Excel


MATLAB
» dos('excel.exe &');
»

data.xls Microsoft Excel


A B C D E F
1 0,05613 0,19900 0,79845 0,84464 0,61450
2 0,45688 0,60073 0,55478 0,87626 0,92483
3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 100 / 115

 Les échanges de données Excel


MATLAB
» dos('excel.exe &');
»

data.xls Microsoft Excel


A B C D E F
1 t (s) z (m) v (m/s)
2 0,000 0,000 0,000
3 1,000 4,905 9,810
4 2,000 19,620 19,620
5 3,000 44,145 29,430
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 101 / 115

51
Matlab à la carte 02/09/2008

 Les échanges de données Excel


MATLAB
» dos('excel.exe &');
»

data.xls Microsoft Excel


A B C D E F
1 0,05613 0,19900 0,79845 0,84464 0,61450
2 0,45688 0,60073 0,55478 0,87626 0,92483
3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 100 / 115

 Les échanges de données Excel


MATLAB
» dos('excel.exe &');
»

data.xls Microsoft Excel


A B C D E F
1 t (s) z (m) v (m/s)
2 0,000 0,000 0,000
3 1,000 4,905 9,810
4 2,000 19,620 19,620
5 3,000 44,145 29,430
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 101 / 115

51
Matlab à la carte 02/09/2008

 Les échanges de données xlsinfo

MATLAB
» [type, desc, fmt] = xlsfinfo('data.xls')
type = Microsoft Excel Spreadsheet
desc = 'Feuil1' 'Feuil2'
fmt = xlExcel8
»
data.xls Microsoft Excel
A B C D E F
1 t (s) z (m) v (m/s)
2 0,000 0,000 0,000
3 1,000 4,905 9,810
4 2,000 19,620 19,620
5 3,000 44,145 29,430
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 102 / 115

 Les échanges de données xlsread

MATLAB
» A = xlsread('data.xls')
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.xls 0.5850 0.0242
Microsoft Excel
0.3498 0.6080 0.6787A
0.5555
B C
0.1714 D E F
0.7966 0.9896 0.0694 0.4941 0.6107
» 1 0,05613 0,19900 0,79845 0,84464 0,61450
2 0,45688 0,60073 0,55478 0,87626 0,92483
3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 103 / 115

52
Matlab à la carte 02/09/2008

 Les échanges de données xlsinfo

MATLAB
» [type, desc, fmt] = xlsfinfo('data.xls')
type = Microsoft Excel Spreadsheet
desc = 'Feuil1' 'Feuil2'
fmt = xlExcel8
»
data.xls Microsoft Excel
A B C D E F
1 t (s) z (m) v (m/s)
2 0,000 0,000 0,000
3 1,000 4,905 9,810
4 2,000 19,620 19,620
5 3,000 44,145 29,430
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 102 / 115

 Les échanges de données xlsread

MATLAB
» A = xlsread('data.xls')
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.xls 0.5850 0.0242
Microsoft Excel
0.3498 0.6080 0.6787A
0.5555
B C
0.1714 D E F
0.7966 0.9896 0.0694 0.4941 0.6107
» 1 0,05613 0,19900 0,79845 0,84464 0,61450
2 0,45688 0,60073 0,55478 0,87626 0,92483
3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 103 / 115

52
Matlab à la carte 02/09/2008

 Les échanges de données xlsread

MATLAB
» A = xlsread('data.xls','Feuil1')
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.xls 0.5850 Microsoft
0.0242Excel
0.3498 0.6080 0.6787A
0.5555 C 0.1714
B D E F
0.7966 0.9896 0.0694 0.4941 0.6107
» 1 0,05613 0,19900 0,79845 0,84464 0,61450
2 0,45688 0,60073 0,55478 0,87626 0,92483
3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 104 / 115

 Les échanges de données xlsread

MATLAB
» num = xlsread('data.xls','Feuil2')
num =
0 0 0
1.0000 4.9050 9.8100
2.0000 19.6200 19.6200
3.0000 44.1450 29.4300
4.0000 78.4800 39.2400
5.0000 122.6250 49.0500
6.0000 176.5800 58.8600
7.0000 240.3450 68.6700
data.xls Microsoft Excel
8.0000 313.9200 78.4800 A B C D E F
1 t (s) z (m) v (m/s)
» t = num(:,1); 2 0,000 0,000 0,000
» z = num(:,2);
» v = num(:,3); 3 1,000 4,905 9,810
» 4 2,000 19,620 19,620
5 3,000 44,145 29,430
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 105 / 115

53
Matlab à la carte 02/09/2008

 Les échanges de données xlsread

MATLAB
» A = xlsread('data.xls','Feuil1')
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.xls 0.5850 Microsoft
0.0242Excel
0.3498 0.6080 0.6787A
0.5555 C 0.1714
B D E F
0.7966 0.9896 0.0694 0.4941 0.6107
» 1 0,05613 0,19900 0,79845 0,84464 0,61450
2 0,45688 0,60073 0,55478 0,87626 0,92483
3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 104 / 115

 Les échanges de données xlsread

MATLAB
» num = xlsread('data.xls','Feuil2')
num =
0 0 0
1.0000 4.9050 9.8100
2.0000 19.6200 19.6200
3.0000 44.1450 29.4300
4.0000 78.4800 39.2400
5.0000 122.6250 49.0500
6.0000 176.5800 58.8600
7.0000 240.3450 68.6700
data.xls Microsoft Excel
8.0000 313.9200 78.4800 A B C D E F
1 t (s) z (m) v (m/s)
» t = num(:,1); 2 0,000 0,000 0,000
» z = num(:,2);
» v = num(:,3); 3 1,000 4,905 9,810
» 4 2,000 19,620 19,620
5 3,000 44,145 29,430
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 105 / 115

53
Matlab à la carte 02/09/2008

 Les échanges de données xlsread

MATLAB
» [num,txt] = xlsread('data.xls','Feuil2')
num =
0 0 0
1.0000 4.9050 9.8100
2.0000 19.6200 19.6200
3.0000 44.1450 29.4300
4.0000 78.4800 39.2400
5.0000 122.6250 49.0500
6.0000 176.5800 58.8600
7.0000 240.3450 68.6700
data.xls Microsoft Excel
8.0000 313.9200 78.4800 A B C D E F
txt =
't (s)' 'z (m)' 1 'v t(m/s)‘
(s) z (m) v (m/s)
» t = num(:,1); 2 0,000 0,000 0,000
» z = num(:,2);
» v = num(:,3); 3 1,000 4,905 9,810
» 4 2,000 19,620 19,620
5 3,000 44,145 29,430
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 106 / 115

 Les échanges de données xlsread

MATLAB
» [num,txt] = xlsread('data.xls','Feuil2')
num =
0.4891 0 0
0.4891 4.9050 9.8100
0.4891 19.6200 19.6200
0.4891 44.1450 29.4300
0.4891 78.4800 39.2400
0.4891 122.6250 49.0500 format cellule
0.4891 176.5800 58.8600 HH:MM:SS
0.4891 240.3450 68.6700
data.xls Microsoft Excel
0.4891 313.9200 78.4800 A B C D E F
txt =
'heure' 'z (m)' 'v1 (m/s)‘
heure z (m) v (m/s)
» 2 11:44:15 0,000 0,000
3 11:44:16 4,905 9,810
4 11:44:17 19,620 19,620
5 11:44:18 44,145 29,430
6 11:44:19 78,480 39,240
7 11:44:20 122,625 49,050
8 11:44:21 176,580 58,860
9 11:44:22 240,345 68,670
10 11:44:23 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 107 / 115

54
Matlab à la carte 02/09/2008

 Les échanges de données xlsread

MATLAB
» [num,txt] = xlsread('data.xls','Feuil2')
num =
0 0 0
1.0000 4.9050 9.8100
2.0000 19.6200 19.6200
3.0000 44.1450 29.4300
4.0000 78.4800 39.2400
5.0000 122.6250 49.0500
6.0000 176.5800 58.8600
7.0000 240.3450 68.6700
data.xls Microsoft Excel
8.0000 313.9200 78.4800 A B C D E F
txt =
't (s)' 'z (m)' 1 'v t(m/s)‘
(s) z (m) v (m/s)
» t = num(:,1); 2 0,000 0,000 0,000
» z = num(:,2);
» v = num(:,3); 3 1,000 4,905 9,810
» 4 2,000 19,620 19,620
5 3,000 44,145 29,430
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 106 / 115

 Les échanges de données xlsread

MATLAB
» [num,txt] = xlsread('data.xls','Feuil2')
num =
0.4891 0 0
0.4891 4.9050 9.8100
0.4891 19.6200 19.6200
0.4891 44.1450 29.4300
0.4891 78.4800 39.2400
0.4891 122.6250 49.0500 format cellule
0.4891 176.5800 58.8600 HH:MM:SS
0.4891 240.3450 68.6700
data.xls Microsoft Excel
0.4891 313.9200 78.4800 A B C D E F
txt =
'heure' 'z (m)' 'v1 (m/s)‘
heure z (m) v (m/s)
» 2 11:44:15 0,000 0,000
3 11:44:16 4,905 9,810
4 11:44:17 19,620 19,620
5 11:44:18 44,145 29,430
6 11:44:19 78,480 39,240
7 11:44:20 122,625 49,050
8 11:44:21 176,580 58,860
9 11:44:22 240,345 68,670
10 11:44:23 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 107 / 115

54
Matlab à la carte 02/09/2008

 Les échanges de données xlsread

MATLAB
» t = datestr(num(:,1),'HH:MM:SS')
t =
11:44:15
11:44:16
11:44:17
11:44:18
11:44:19
11:44:20 format cellule
11:44:21 HH:MM:SS
11:44:22 data.xls Microsoft Excel
11:44:23 A B C D E F
» z = num(:,2);
» v = num(:,3); 1 heure z (m) v (m/s)
» 2 11:44:15 0,000 0,000
3 11:44:16 4,905 9,810
4 11:44:17 19,620 19,620
5 11:44:18 44,145 29,430
6 11:44:19 78,480 39,240
7 11:44:20 122,625 49,050
8 11:44:21 176,580 58,860
9 11:44:22 240,345 68,670
10 11:44:23 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 108 / 115

 Les échanges de données xlsread

MATLAB
» [num,txt] = xlsread('data.xls','Feuil2')
num =
0 0
4.9050 9.8100
19.6200 19.6200
44.1450 29.4300
78.4800 39.2400
122.6250 49.0500 format cellule
176.5800 58.8600 dd:mm:yyyy
240.3450 68.6700 data.xls Microsoft Excel
313.9200 78.4800 A B C D E F
txt =
'date' 1
'z (m)' date
'v (m/s)' z (m) v (m/s)
'15/06/2008' '' 2 15/06/2008 '' 0,000 0,000
'16/06/2008' '' ''
'17/06/2008' '' 3 16/06/2008 '' 4,905 9,810
'18/06/2008' '' 4 17/06/2008 '' 19,620 19,620
'19/06/2008' '' 5 18/06/2008 '' 44,145 29,430
'20/06/2008' '' ''
'21/06/2008' '' 6 19/06/2008 '' 78,480 39,240
'22/06/2008' '' 7 20/06/2008 '' 122,625 49,050
'23/06/2008' '' 8 21/06/2008 '' 176,580 58,860
»
9 22/06/2008 240,345 68,670
10 23/06/2008 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 109 / 115

55
Matlab à la carte 02/09/2008

 Les échanges de données xlsread

MATLAB
» t = datestr(num(:,1),'HH:MM:SS')
t =
11:44:15
11:44:16
11:44:17
11:44:18
11:44:19
11:44:20 format cellule
11:44:21 HH:MM:SS
11:44:22 data.xls Microsoft Excel
11:44:23 A B C D E F
» z = num(:,2);
» v = num(:,3); 1 heure z (m) v (m/s)
» 2 11:44:15 0,000 0,000
3 11:44:16 4,905 9,810
4 11:44:17 19,620 19,620
5 11:44:18 44,145 29,430
6 11:44:19 78,480 39,240
7 11:44:20 122,625 49,050
8 11:44:21 176,580 58,860
9 11:44:22 240,345 68,670
10 11:44:23 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 108 / 115

 Les échanges de données xlsread

MATLAB
» [num,txt] = xlsread('data.xls','Feuil2')
num =
0 0
4.9050 9.8100
19.6200 19.6200
44.1450 29.4300
78.4800 39.2400
122.6250 49.0500 format cellule
176.5800 58.8600 dd:mm:yyyy
240.3450 68.6700 data.xls Microsoft Excel
313.9200 78.4800 A B C D E F
txt =
'date' 1
'z (m)' date
'v (m/s)' z (m) v (m/s)
'15/06/2008' '' 2 15/06/2008 '' 0,000 0,000
'16/06/2008' '' ''
'17/06/2008' '' 3 16/06/2008 '' 4,905 9,810
'18/06/2008' '' 4 17/06/2008 '' 19,620 19,620
'19/06/2008' '' 5 18/06/2008 '' 44,145 29,430
'20/06/2008' '' ''
'21/06/2008' '' 6 19/06/2008 '' 78,480 39,240
'22/06/2008' '' 7 20/06/2008 '' 122,625 49,050
'23/06/2008' '' 8 21/06/2008 '' 176,580 58,860
»
9 22/06/2008 240,345 68,670
10 23/06/2008 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 109 / 115

55
Matlab à la carte 02/09/2008

 Les échanges de données xlsread

MATLAB
» t = char(txt(2:end,1))
t =
15/06/2008
16/06/2008
17/06/2008
18/06/2008
19/06/2008
20/06/2008 format cellule
21/06/2008 dd:mm:yyyy
22/06/2008 data.xls Microsoft Excel
23/06/2008 A B C D E F
» z = num(:,2);
» v = num(:,3); 1 date z (m) v (m/s)
» 2 15/06/2008 0,000 0,000
3 16/06/2008 4,905 9,810
4 17/06/2008 19,620 19,620
5 18/06/2008 44,145 29,430
6 19/06/2008 78,480 39,240
7 20/06/2008 122,625 49,050
8 21/06/2008 176,580 58,860
9 22/06/2008 240,345 68,670
10 23/06/2008 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 110 / 115

 Les échanges de données xlswrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
» status = xlswrite('data.xls',A,'Feuil1')
status =
1
»

MATLAB à la carte — module 2: « Programmation de base » 111 / 115

56
Matlab à la carte 02/09/2008

 Les échanges de données xlsread

MATLAB
» t = char(txt(2:end,1))
t =
15/06/2008
16/06/2008
17/06/2008
18/06/2008
19/06/2008
20/06/2008 format cellule
21/06/2008 dd:mm:yyyy
22/06/2008 data.xls Microsoft Excel
23/06/2008 A B C D E F
» z = num(:,2);
» v = num(:,3); 1 date z (m) v (m/s)
» 2 15/06/2008 0,000 0,000
3 16/06/2008 4,905 9,810
4 17/06/2008 19,620 19,620
5 18/06/2008 44,145 29,430
6 19/06/2008 78,480 39,240
7 20/06/2008 122,625 49,050
8 21/06/2008 176,580 58,860
9 22/06/2008 240,345 68,670
10 23/06/2008 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 110 / 115

 Les échanges de données xlswrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344 0.5850 0.0242
0.3498 0.6080 0.6787 0.5555 0.1714
0.7966 0.9896 0.0694 0.4941 0.6107
» status = xlswrite('data.xls',A,'Feuil1')
status =
1
»

MATLAB à la carte — module 2: « Programmation de base » 111 / 115

56
Matlab à la carte 02/09/2008

 Les échanges de données xlswrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.txt 0.5850 Microsoft
0.0242Excel
0.3498 0.6080 0.6787A
0.5555 C 0.1714
B D E F
0.7966 0.9896 0.0694 0.4941 0.6107
1 0,05613 0,19900 0,79845 0,84464 0,61450
» status = xlswrite('data.xls',A,'Feuil1')
status = 2 0,45688 0,60073 0,55478 0,87626 0,92483
1
» 3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1
MATLAB à la carte — module 2: « Programmation de base » 112 / 115

 Les échanges de données xlswrite

MATLAB
» t = 0:1:8;
» z = 0.5*9.81*t.^2;
» v = 9.81*t;
» data = [{'t (sec)','z (m)','v (m/s)'}; num2cell([t(:),z(:),v(:)])];
data =
't (sec)' 'z (m)' 'v (m/s)'
[ 0] [ 0] [ 0]
[ 1] [ 4.9050] [ 9.8100]
[ 2] [ 19.6200] [19.6200]
[ 3] [ 44.1450] [29.4300]
[ 4] [ 78.4800] [39.2400]
[ 5] [122.6250] [49.0500]
[ 6] [176.5800] [58.8600]
[ 7] [240.3450] [68.6700]
[ 8] [313.9200] [78.4800]
» status = xlswrite('data.xls',data,'Feuil2')
status =
1
»

MATLAB à la carte — module 2: « Programmation de base » 113 / 115

57
Matlab à la carte 02/09/2008

 Les échanges de données xlswrite

MATLAB
» A = rand(10,5)
A =
0.0561 0.1990 0.7985 0.8446 0.6145
0.4569 0.6007 0.5548 0.8763 0.9248
0.7655 0.5428 0.1467 0.3321 0.6139
0.2925 0.2517 0.1070 0.1454 0.2564
0.9619 0.2016 0.5238 0.7441 0.0397
1.0000 0.5756 0.2463 0.6619 0.6207
0.9991 0.5138 0.5716 0.4028 0.3435
0.7416 0.7477 0.3344
data.txt 0.5850 Microsoft
0.0242Excel
0.3498 0.6080 0.6787A
0.5555 C 0.1714
B D E F
0.7966 0.9896 0.0694 0.4941 0.6107
1 0,05613 0,19900 0,79845 0,84464 0,61450
» status = xlswrite('data.xls',A,'Feuil1')
status = 2 0,45688 0,60073 0,55478 0,87626 0,92483
1
» 3 0,76553 0,54282 0,14667 0,33207 0,61393
4 0,29249 0,25169 0,10701 0,14540 0,25638
5 0,96192 0,20162 0,52378 0,74407 0,03966
6 1,00000 0,57562 0,24630 0,66189 0,62071
7 0,99909 0,51376 0,57163 0,40278 0,34349
8 0,74162 0,74770 0,33437 0,58503 0,02416
9 0,34978 0,60802 0,67871 0,55545 0,17139
10 0,79658 0,98964 0,06936 0,49412 0,61072
11
Feuil1
MATLAB à la carte — module 2: « Programmation de base » 112 / 115

 Les échanges de données xlswrite

MATLAB
» t = 0:1:8;
» z = 0.5*9.81*t.^2;
» v = 9.81*t;
» data = [{'t (sec)','z (m)','v (m/s)'}; num2cell([t(:),z(:),v(:)])];
data =
't (sec)' 'z (m)' 'v (m/s)'
[ 0] [ 0] [ 0]
[ 1] [ 4.9050] [ 9.8100]
[ 2] [ 19.6200] [19.6200]
[ 3] [ 44.1450] [29.4300]
[ 4] [ 78.4800] [39.2400]
[ 5] [122.6250] [49.0500]
[ 6] [176.5800] [58.8600]
[ 7] [240.3450] [68.6700]
[ 8] [313.9200] [78.4800]
» status = xlswrite('data.xls',data,'Feuil2')
status =
1
»

MATLAB à la carte — module 2: « Programmation de base » 113 / 115

57
Matlab à la carte 02/09/2008

 Les échanges de données xlswrite

MATLAB
» t = 0:1:8;
» z = 0.5*9.81*t.^2;
» v = 9.81*t;
» data = [{'t (sec)','z (m)','v (m/s)'}; num2cell([t(:),z(:),v(:)])];
data =
't (sec)' 'z (m)' 'v (m/s)'
[ 0] [ 0] [ 0]
[ 1] [ 4.9050] [ 9.8100]
[ 2] [ 19.6200] [19.6200]
[ 3] [ 44.1450]
data.xls [29.4300] Microsoft Excel
[ 4] [ 78.4800]A [39.2400]
B C D E F
[ 5] [122.6250] [49.0500]
[ 6] 1
[176.5800] t (s) z (m)
[58.8600] v (m/s)
[ 7] [240.3450]
2 0,000 [68.6700]
0,000 0,000
[ 8] [313.9200] [78.4800]
3 1,000 4,905
» status = xlswrite('data.xls',data,'Feuil2') 9,810
status = 4 2,000 19,620 19,620
1 5 3,000 44,145 29,430
»
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 114 / 115

58
Matlab à la carte 02/09/2008

 Les échanges de données xlswrite

MATLAB
» t = 0:1:8;
» z = 0.5*9.81*t.^2;
» v = 9.81*t;
» data = [{'t (sec)','z (m)','v (m/s)'}; num2cell([t(:),z(:),v(:)])];
data =
't (sec)' 'z (m)' 'v (m/s)'
[ 0] [ 0] [ 0]
[ 1] [ 4.9050] [ 9.8100]
[ 2] [ 19.6200] [19.6200]
[ 3] [ 44.1450]
data.xls [29.4300] Microsoft Excel
[ 4] [ 78.4800]A [39.2400]
B C D E F
[ 5] [122.6250] [49.0500]
[ 6] 1
[176.5800] t (s) z (m)
[58.8600] v (m/s)
[ 7] [240.3450]
2 0,000 [68.6700]
0,000 0,000
[ 8] [313.9200] [78.4800]
3 1,000 4,905
» status = xlswrite('data.xls',data,'Feuil2') 9,810
status = 4 2,000 19,620 19,620
1 5 3,000 44,145 29,430
»
6 4,000 78,480 39,240
7 5,000 122,625 49,050
8 6,000 176,580 58,860
9 7,000 240,345 68,670
10 8,000 313,920 78,480
11
Feuil1 Feuil2
MATLAB à la carte — module 2: « Programmation de base » 114 / 115

58

Vous aimerez peut-être aussi