Guide d’introduction ` a Matlab et Octave
Damien ROQUE – GIPSA-lab 1
eravril 2011
Ce document pr´esente succinctement les bases du logicielMatlab. Il s’adresse en premier lieu aux d´ebutants mais peut ´egalement jouer le rˆole d’aide m´emoire en d´ecrivant les fonctions les plus courantes. Hormis quelques notions de calcul matriciel et d’informatique, ce document ne n´ecessite aucun pr´e-requis.
1 Prise en main de Matlab
Matlab est un logiciel de calcul num´erique sp´ecialis´e dans le traitement des matrices. Il inclue un langage de programmation ainsi que des modules de visualisation des donn´ees (textuels et graphiques).
Parmi les principaux avantages du logiciel, soulignons une prise en main ais´ee, de tr`es nom- breuses librairies1, ainsi qu’une disponibilit´e sur la plupart des plate-formes. Au fil de son
´
evolution, le logiciel s’est enrichi de nombreuses sur-couches de d´eveloppement graphiques dont la plus connue est certainementSimulink.
L’inconv´enient majeur de Matlab est qu’il s’agit d’un logiciel commercial dont la disponibilit´e compl`ete est soumise `a l’achat d’une licence on´ereuse. Il existe toutefois des alternatives gratuites telles qu’OctaveouScilab2.
1.1 Pr´ esentation de l’interface
Quel que soit le syst`eme d’exploitation sur lequel il est install´e,Matlab d´emarre g´en´eralement en faisant apparaitre une fenˆetre principale compos´ee de quatre principaux panneaux (fig. 1) :
1. Le navigateur de fichiers permet de se positionner dans le r´epertoire de travail souhait´e.
Ce module permet notamment d’ouvrir un fichier source ou de consulter un jeu de donn´ees enregistr´e.
2. Le terminal principal est l’´el´ement fondamental du logiciel, il permet de saisir toutes les commandes du langage en mode interactif.
3. L’environnement de travail r´epertorie tous les objets en m´emoire (scalaires, vecteur, ma- trices). Cette interface offre la possibilit´e de modifier ces donn´ees graphiquement.
4. L’historique permet de retrouver les commandes saisies manuellement dans le terminal.
La saisie interactive des commandes dans le terminal Matlab n’est pas suffisante pour d´ecrire des simulations complexes. Il est pr´ef´erable de rassembler les commandes dans un fichier portant
1. D’apr`es la terminologie officielle, un ensemble de librairies ayant attrait `a un mˆeme domaine s’appelle une toolbox.
2. Ces logiciels libres sont disponibles sur Internet, pour la plupart des syst`emes d’exploitation courants : http://www.gnu.org/software/octave/
http://www.scilab.org/
Figure1 – Espace de travail pr´esent´e par la fenˆetre principale deMatlab.
l’extension .m. Dans ce but, l’´editeur de texte natif offre une aide pr´ecieuse `a la programmation puisqu’il int`egre des fonctionnalit´e de v´erification syntaxiques `a la vol´ee. Cet outil peut ˆetre lanc´e
`
a partir du panneau “explorateur de fichiers”, ou plus simplement `a partir du menuFile > Open (fig. 2). Outre la zone de saisie du texte (1), il est possible de lancer l’ex´ecution du programme directement `a partir de l’´editeur (2).
Figure2 – ´Editeur de texte natif deMatlab.
1.2 Maˆıtrise de l’aide
Les premi`eres commandes `a apprendre sont celles qui permettent d’obtenir de l’aide. En effet, l’ensemble des fonctions fournies avec lestoolboxes officielles sont document´ees. Il existe plusieurs mani`eres d’acc´eder `a cette documentation.
En sp´ecifiant le nom exact de la fonction, la commande help permet d’obtenir de l’aide `a travers le terminal textuel.
help f o n c t i o n
La commande lookfor est utilis´ee lorsque l’on connait seulement le nom approximatif de la fonction.
l o o k f o r n o m a p p r o x i m a t i f f o n c t i o n
Enfin, il est possible de naviguer dans l’aide par le biais de l’interface graphique : Help >
Product Help. Ce mode de visualisation de la documentation pr´esente l’int´erˆet de faire apparaitre des illustrations graphiques (fig. 3).
Figure3 – Affichage de la documentation deMatlab.
2 Prise en main d’Octave
Octave constitue un simple interpr´eteur de commandes et ne comporte pas d’environnement de d´eveloppement comparable `a celui deMatlab. Il est alors n´ecessaire d’utiliser des composants externes tel qu’un terminal, un ´editeur de texte, un afficheur de graphiques (fig. 4). Sous Unix, ces trois services sont souvent rendus respectivement par BASH,Emacs,Gnuplot.
Figure4 – Principe de fonctionnement d’Octave.
En pratique, une fois positionn´e dans l’interpr´eteur Octave, l’utilisateur peut appeler toutes les fonctions du logiciel ainsi que certaines commandes UNIX (ex. : ls, cd, pwd. . . ). Quelques exemples courants sont pr´esent´es ci-dessous.
help randn % Affichage de l’aide relative `a une fonction
doc randn % Affichage de la documentation compl`ete d’une fonction l o o k f o r r a y l e i g h % Recherche les fonctions proches de l’expression ”rayleigh”
pwd % Affichage du positionnement absolu dans l’arborescence
cd mes programmes matlab % Positionnement dans un r´epertoire
l s −a l % Affichage de l’ensemble des fichiers du r´epertoire e d i t f i l t r e n u m e r i q u e .m % Ouverture d’un fichier avec l’´editeur de texte par d´efaut f i l t r e n u m e r i q u e % Ex´ecution d’un programme dans le r´epertoire courant d e l e t e f i l t r e n u m e r i q u e .m % Suppression d’un fichier
e x i t % Fermeture de l’interpr´eteur Octave
Il existe de nombreuses librairies utilisables sous Octave et poss´edant g´en´eralement la mˆeme signature que celles de Matlab3. En d´epit d’un interface utilisateur radicalement diff´erente, les deux logiciels utilisent un langage sensiblement identique. Par cons´equent, nous consid´erons que les recommandations list´ee dans ce document s’applique indiff´eremment `aMatlab etOctave.
Les utilisateurs d´esireux de produire un code source interop´erable veilleront `a utiliser un codage des caract`eres de type ISO-8859-1 ou ISO-8859-15.
3 Op´ erations de base sur les variables
La principale vocation de Matlab est le calcul num´erique matriciel. Par cons´equent, tous les variables sont des matrices parmi lesquelles les vecteurs et les scalaires sont des cas particuliers.
Par d´efaut les coefficients des matrices sont cod´es sur 8 octets en virgule flottante (typedouble).
Dans l’espace de travail, la commande whos permet d’afficher toutes les variables utilis´ees.
Pour visualiser les valeurs de l’une d’entre elles, il suffit de taper son nom, puis de valider par
Enter . La commande clear entraˆıne l’effacement de l’ensemble des variables en m´emoire. Les instructions load et save permettent respectivement de charger et d’enregistrer le contenu de
3. Ces fonctions additionnelles sont souvent regroup´ees dans le paquetoctave-forge.
l’espace de travail dans un fichier4.
Les trois paragraphes suivants pr´esentent les op´erations fondamentales ayant attrait aux va- riables, vecteurs et matrices. Ces traitements peuvent ˆetre enrichis par de nombreuses fonctions dont les principales sont list´ees en partie A, page 10.
3.1 Scalaires
L’affectation des variables s’effectue simplement `a l’aide de l’op´erateur =. La pr´esence d’un point virgule en fin de ligne empˆeche l’affichage du r´esultat de la commande dans le terminal.
L’exemple suivant pr´esente des op´erateurs arithm´etiques courants, mis en œuvre sur des scalaires.
d i x =10; % Simple affectation
e p s i l o n =16.64 e−12; % Exposant
o n z e =10+1; % Addition
un=onze−d i x ; % Soustraction
c e n t d i x=o n z e∗d i x ; % Multiplication
c i n q=d i x / 2 ; % Division
h u i t =2ˆ3; % Puissance
z=5+6 i ; % Notation cart´esienne d’un nombre complexe
Les op´erateurs relationnels sont `a la base des tests num´eriques. Ils permettent d’´evaluer une condition et renvoient syst´ematique une expression logique (0 ou 1).
a==b ; % Test d’´egalit´e
c˜=d ; % Test de diff´erence
f<e ; % Test d’inf´eriorit´e
a>b ; % Test de sup´eriorit´e
a<=b ; % Test d’inf´eriorit´e ou d’´egalit´e a>=b ; % Test de sup´eriorit´e ou d’´egalit´e
Les op´erateurs logiques prennent en argument et renvoient des expressions logiques. Leur res- semblance avec les op´erateurs relationnels peut induire des erreurs.
a =1; % Affectation d’une valeur logique (0 ou 1)
b=˜a ; % NON logique
c=a&b ; % ET logique
d=c|b ; % OU logique
L’environnement de travail comporte des constantes et variables sp´eciales (tab. 1). La connais- sance de ces objets pr´ed´efinis est une aide pr´ecieuse `a la programmation. Cependant, leur contenu n’´etant pas prot´eg´e, il faut prendre garde `a ne pas les red´efinir au cours du programme.
Constante Description
pi La valeur tronqu´ee deπ(3.14159265358979) iouj Le nombre imaginaire tel quei=√
−1
Inf Infini (ex. : r´esultat de la division d’un r´eel non nul par 0) NaN Ind´efini (ex. : r´esultat de 0/0)
realmin Plus petit nombre r´eel (pour un codage `a virgule flottante sur 32 bits) realmax Plus grand nombre r´eel (pour un codage `a virgule flottante sur 32 bits)
ans Variable par d´efaut qui re¸coit le r´esultat d’une expression non-assign´ee Table 1 – Liste des constantes et variables sp´eciales inclues dans l’environnementMatlab.
4. Les enregistrements de donn´ees portent g´en´eralement l’extension.mat.
3.2 Vecteurs et matrices
En utilisant la terminologie emprunt´ee `a l’informatique, un vecteur s’assimile `a un tableau unidimensionnel, `a la diff´erence pr`es que Matlab tient compte de sa disposition (en ligne ou en colonne). L’exemple suivant illustre la d´eclaration et l’initialisation de vecteurs.
x =[1 2 3 4 5 6 ] ; % D´eclaration et initialisation d’un vecteur ligne `a 6 ´el´ements x=zeros( 1 , n ) ; % D´eclaration d’un vecteur ligne de taille n et initialisation `a 0 x=o n e s ( 1 , n ) ; % D´eclaration d’un vecteur ligne de taille n et initialisation `a 1 x = [ 1 ; 2 ; 3 ; 4 ; 5 ; 6 ] ; % D´eclaration et initialisation d’un vecteur colonne `a 6 ´el´ements x=zeros( n , 1 ) ; % D´eclaration d’un vecteur colonne de taille n et initialisation `a 0 x=o n e s ( n , 1 ) ; % D´eclaration d’un vecteur colonne de taille n et initialisation `a 1
y=[ ] ; % D´eclaration d’un vecteur vide
y=[y x ] ; % Insertion de x `a la fin de y
y=[x y ] ; % Insertion de x au d´ebut de y
y=[y ( 1 : k−1) x y ( k :end) ] % Insertion de x `a la k-i`eme position de y
A travers les exemples pr´ec´edents, nous remarquons qu’il est possible de travailler avec des vecteurs de taille connue ou inconnue. Ce dernier cas est `a ´eviter puisque l’allocation dynamique de m´emoire est une op´eration couteuse en temps de calcul. Lorsque la taille d’un vecteur ou d’une matrice est connue, il est pr´ef´erable de les initialiser `a l’aide dezeros()ouones().
La d´eclaration d’une matrice est semblable `a celle d’un vecteur. Il faut toutefois prendre garde
`
a ne pas confondre les indices de lignes et de colonnes. L’exemple suivant pr´esente des op´erations courantes de manipulation de matrices.
x=zeros(m, n ) ; % D´eclaration d’une matrice nulle de m lignes et n colonnes
x=o n e s (m, n ) ; % D´eclaration d’une matrice de m lignes et n colonnes initialis´ee `a 1 x=eye( n ) ; % D´eclaration d’une matrice identit´e de m lignes et n colonnes a =[1 2 3 ; 4 5 6 ; 7 8 9 ] % D´eclaration et initialisation d’une matrice de 3 lignes et 3 colonnes a =
1 2 3
4 5 6
7 8 9
a ( 2 , 3 ) % Affichage du coefficient de la 2`eme ligne et de la 3`eme colonne ans =
6
a ( : , 3 ) % Affichage de la troisi`eme colonne
ans = 3 6 9
a ( 2 , : ) % Affichage de la deuxi`eme ligne
ans =
4 5 6
c o l o n n e=a ( : ) % Transformation en vecteur colonne (lecture colonne par colonne) c o l o n n e =
1 4 7 2 5 8
3 6 9
l i g n e=c o l o n n e ’ % Transposition d’un vecteur colonne l i g n e =
1 4 7 2 5 8 3 6 9
reshape( c o l o n n e , 3 , 3 ) % Reconstruction de la matrice (3 lignes et 3 colonnes) ans =
1 2 3
4 5 6
7 8 9
Les op´erations mentionn´ees dans le paragraphe concernant les scalaires s’appliquent ´egalement aux vecteurs et aux matrices. Il faut ´evidemment choisir les dimensions de ces variables de mani`ere
`
a respecter les r`egles d’alg`ebre matricielle.
De plus, il est possible d’effectuer les op´erations de multiplication, de division et de puissance
´
el´ements par ´el´ements entre deux matrices. Dans ce cas, l’op´erateur souhait´e doit ˆetre pr´ec´ed´e d’un point. Encore une fois, les erreurs de dimensionnement des matrices sont fr´equentes pour ce type d’op´erations.
A=[1 2 3 ; 4 5 6 ; 7 8 9 ] B=[1 2 3 ] ;
C=[9 8 7 ; 6 5 4 ; 3 2 1 ] B∗A
ans =
30 36 42
A.∗C ans =
9 16 21
24 25 24
21 16 9
4 Structures de programmation
Tel que nous l’avons ´evoqu´e en introduction, Matlab b´en´eficie d’un v´eritable langage de pro- grammation proc´edural. A travers les quatre paragraphes suivants, nous d´ecrivons successivement la construction de suites num´eriques, les structures de contrˆole, ainsi que les fonctions.
4.1 Suites lin´ eaires
Les suites lin´eaires se mat´erialisent sous la forme de vecteurs ligne. Ainsi l’´el´ementndu vecteur repr´esente le termeun de la suite. L’exemple suivant illustre la cr´eation d’une suite arithm´etique.
debut =0; % D´eclaration du terme initial de la suite
f i n =10; % D´eclaration du terme final de la suite
p a s =2; % D´efinition de la raison de la suite
n b p o i n t s =6; % D´efinition du nombre de points de la suite s u i t e =( debut : p a s : f i n ) ; % M´ethode 1 : D´efinition et initialisation du vecteur s u i t e=l i n s p a c e( debut , f i n , n b p o i n t s ) % M´ethode 2 : Utilisation de la fonction linspace
s u i t e =
0 2 4 6 8 10
Lors de la cr´eation d’une suite, le pas est un argument optionnel, sa valeur par d´efaut est unitaire. Il est ´evidemment possible de cr´eer des suites g´eom´etriques en utilisant un processus it´eratif ou plus simplement `a l’aide des fonctions pr´evues `a cet effet.
A titre d’exemple, les suites lin´eaires peuvent ˆetre utilis´ees pour r´ealiser des op´erations de d´ecimation et d’expansion. Ces techniques sont souvent utilis´ees pour simuler l’´echantillonnage dans le cas discret.
N=100; % D´efinition de la taille du signal `a cr´eer
x=rand( 1 ,N) ; % Cr´eation d’un signal al´eatoire compos´e de 100 ´echantillons
Nd=10; % D´efinition du facteur de d´ecimation
Ne=5; % D´efinition du facteur d’expansion
xd=zeros( 1 ,N/Nd) ; % Initialisation d’un vecteur pour le signal d´ecim´e xd=x ( 1 : Nd :length( x ) ) ; % D´ecimation du signal x
xe=zeros( 1 ,N∗Ne ) ; % Initialisation d’un vecteur pour le signal dilat´e xe ( 1 : Ne :length( xe ) )=x ; % Expansion du signal x
4.2 Instructions conditionnelles
Une instruction conditionnelle permet de diff´erencier les commandes `a ex´ecuter en fonction de la valeur d’une (ou plusieurs) expression(s) logique(s). L’exemple suivant montre plusieurs instructions conditionnelles cascad´ees.
i f a==1
disp( ’ un ’ ) ; % Affichage de la chaine ’un’ si a=1 e l s e i f a==2
disp( ’ deux ’ ) ; % Affichage de la chaine ’deux’ si a=2 e l s e
disp( ’ a u t r e ’ ) ; % Affichage de la chaine ’autre’ si a est diff´erent de 1 et 2 i f a>2
disp( ’ grand ’ ) ; % Affichage de la chaine ’grand’ si a est sup´erieur `a 2 e l s e
disp( ’ p e t i t ’ ) ; % Affichage de la chaine ’petit’ si a est inf´erieur `a 1 end
end
L’instruction if permet l’´evaluation de la condition principale. Une suite optionnelle d’ins- tructions elseif peut tenir compte des conditions alternatives et else peut traiter le cas par d´efaut.
4.3 Traitements it´ eratifs
Comme dans la plupart des langages de programmation, les traitements it´eratifs sont effectu´es
`
a l’aide de boucles.
La boucle forest utilis´ee lorsque le nombre d’it´erations `a r´ealiser est connu. Elle prend en argument un vecteur ou une matrice que l’indice parcours colonne par colonne. Comme le montre l’exemple suivant, il est souvent judicieux d’utiliser une suite pour initialiser le vecteur indice.
f o r k = 1 : 1 :length( v e c t e u r )
i n v e r s e ( k ) =1/ v e c t e u r ( k ) ; % Inversion des ´el´ements d’un vecteur
end
L’ex´ecution de la boucle whileest conditionn´ee par la valeur d’une expression logique. Il est g´en´eralement n´ecessaire de modifier cette expression logique dans le corps de la boucle pour ne pas engendrer une ex´ecution sans fin.
n=0;
while ( 2 ˆ n < 1 0 0 )
p u i s s a n c e s 2 =2ˆn ; % Calcul des puissances de 2 inf´erieures `a 100 n=n+1;
end
L’instruction break permet de rompre l’ex´ecution d’une boucle. La fonction continueinter- rompt l’it´eration courante et force le passage `a l’it´eration suivante.
Dans tous les cas, les boucles sont des op´erations couteuses en temps de calcul. Il est recom- mand´e de les ´eviter, en pr´ef´erant autant que possible les op´erations matricielles.
4.4 Autres structures de contrˆ ole
La structureswitch-casepermet de d´eclencher diff´erentes commandes en fonction des valeurs prises par une variable. Remarquons que plusieurs blocsifpeuvent se substituer `a cette structure.
s w i t c h x
c a s e{1}
disp( ’ un ’ ) ; % Affichage de la chaine ’un’ si x = 1 c a s e{2}
disp( ’ deux ’ ) ; % Affichage de la chaine ’deux’ si x = 2 o t h e r w i s e
disp( ’ a u t r e ’ ) ; % Affichage de la chaine ’autre’ si x est diff´erent de 1 et 2 end
Lorsqu’une commande est susceptible de retourner des erreurs, la structuretry-catchpermet de les prendre en compte. Ainsi, si une erreur apparait dans le bloc try, les commandes du bloc catchsont ex´ecut´ees.
t r y
c=a∗b ; % Commande pouvant renvoyer une erreur
c a t c h
c =0; % Traitement de l’erreur
end
Dans les programmesMatlabbien ´ecrits, les recours `atry-catchsont extrˆemement rares dans le mesure o`u le langage est proc´edural et non pas orient´e objet.
4.5 D´ efinition de fonctions
Le d´eveloppement de long programmes exige la segmentation du code en fonctions pour plus de lisibilit´e. SousMatlab, elles sont r´eparties dans des fichiers distincts, dont le nom est celui de la fonction, suivi de l’extension.m. Consid´erons l’exemple de la fonctionminmaxqui prend en entr´ee un vecteur ligne et qui renvoie le minimum et le maximum de ce vecteur.
function [ minimum , maximum]=minmax ( v e c t e u r )
% MINMAX renvoie le minimum et le maximum d’un vecteur ligne
% Usage : [MINIMUM,MAXIMUM]=MINMAX(VECTEUR)
% Retourne les scalaires MINIMUM et MAXIMUM
% V´erification du nombre de param`etres i f nargin˜=1
error( ’Un s e u l argument e s t r e q u i s ’ ) ; end
% V´erification de la nature du param`etre i f ˜ i s v e c t o r ( v e c t e u r )
error( ’Un v e c t e u r e s t a t t e n d u p a r l a f o n c t i o n ’ ) ; end
% Calcul du minimum et du maximum min=min( v e c t e u r ) ;
max=max( v e c t e u r ) ; return
Une fonction d´ebute syst´ematiquement par une ligne de d´eclaration (nom, param`etres, variables de sortie). Elle se compose ensuite de commentaires optionnels, renvoy´es lors de la consultation de l’aide (help minmax). Les v´erifications de la conformit´e des param`etres permet d’anticiper et de pr´eciser les erreurs pouvant survenir. Apr`es les calculs, la commande returneffectue le retour
`
a la fonction appelante ; elle est donc optionnelle en fin de programme.
Lors de l’appel d’une fonction, celle-ci doit se trouver dans le mˆeme r´epertoire que le programme principal, ou dans un r´epertoire sp´ecifi´e dans le path.
5 Bonnes pratiques
A Liste des fonctions fr´ equemment utilis´ ees
Les quatre paragraphes suivants r´esument les fonctions de base couramment utilis´ees sous Matlab. Nous distinguons les fonctions math´ematiques (applicables sur tous types de variables), les fonctions concernant sp´ecifiquement les vecteurs et les matrices, les fonctions utilis´ees pour cr´eer des graphiques et les fonctions fr´equemment utilis´ees dans le domaine des communications num´eriques.
A.1 Fonctions math´ ematiques courantes
Les fonctions list´ees ci-apr`es ´etendent les op´erateurs math´ematiques introduits au d´ebut de ce document. Elles s’appliquent sur tout type de variables (xfait r´ef´erence indiff´eremment `a un scalaire, un vecteur, ou une matrice).
Nous d´etaillons successivement les fonctions trigonom´etriques, les fonctions de manipulation des nombres complexes, ainsi que les arrondis.
sqrt(x) — Racine carr´ee de x.
exp(x) — Exponentielle dex.
log(x) — Logarithme naturel dex.
log10(x) — Logarithme d´ecimal de x.
log2(x) — Logarithme binaire dex.
cos(x) — Cosinus dex.
sin(x) — Sinus dex.
tan(x) — Tangente dex.
cot(x) — Cotangente dex.
factorial(x) — Factorielle dex.
abs(x) — Valeur absolue dex.
sign(x) — Signe dex.
real(x) — Partie r´eelle dex.
imag(x) — Partie imaginaire dex.
mod(x,y) — Valeur absolue du reste de la division enti`ere de xpary.
rem(x,y) — Reste de la division enti`ere dexpary.
fix(x) — Troncature dex`a l’entier le plus proche en direction de 0.
round(x) — Arrondi dex`a l’entier le plus proche.
floor(x) — Arrondi dexau plus grand entier inf´erieur.
ceil(x) — Arrondi dexau plus petit entier sup´erieur.
Les fonctions trigonom´etrique sont tr`es nombreuses, de telle sorte que nous avons omis les fonctions r´eciproques (acos, asin...) ainsi que les fonctions hyperboliques (cosh, sinh). Une liste exhaustive des fonctions est fournie dans le menu Help > Function Browser, rubrique Mathematics > Elementary Math.
A.2 Fonctions ´ el´ ementaires sur les matrices et vecteurs
Les fonctions suivantes mettent l’accent sur la manipulation des vecteur et des matrices. Nous consid´erons que la variable d’exempleX se limite `a ces objets.
X.’ — Transpos´ee deX.
X’ — Transpos´ee conjugu´ee deX.
conj(X) — Conjugu´ee deX.
inv(X) — Inverse deX. det(X) — D´eterminant deX.
norm(X) — Norme de X.
dot(X) — Produit scalaire deX parY.
trace(X) — Trace de la matriceX (somme des ´el´ements de la diagonale).
rank(X) — Rang de la matriceX (nombre de ligne ou de colonnes lin´eairement ind´ependants).
min(X) — Valeur et position du plus petit ´el´ement de X.
max(X) — Valeur et position du plus grand ´el´ement deX. length(X) — Longueur du vecteurX.
size(X) — Dimensions de la matrice X.
sum(X,1) — Somme des lignes deX.
sum(X,2) — Somme des colonnes deX.
fliplr(X) — Permutation de gauche `a droite des ´el´ements deX. flipud(X) — Permutation de haut en bas des ´el´ements deX.
find(X<limite) — Recherche des ´el´ements deX inf´erieurs `a limite.
sort(X) — Tri des ´el´ements de X.
mean(X) — Valeur moyenne des ´el´ements deX. std(X) — Ecart type des ´el´ements deX.
prod(X) — Produit des ´el´ements de X.
cumsum(X) — Somme cumul´ee des ´el´ements deX.
eig(X) — Valeurs propres deX.
La totalit´e des commandes se rapportant aux vecteurs et aux matrices est disponible dans les rubriquesMathematics > Arrays and MatricesetMathematics > Linear Algebradu na- vigateur de fonctions.
A.3 Cr´ eation de graphiques
Nous nous int´eressons principalement aux graphiques `a deux dimensions. Nous consid´erons le cas g´en´eral o`uX est une matrice etchaineest une chaˆıne de caract`eres d´elimit´ee par des simples quotes5.
figure(n) — Ouverture de la fenˆetre graphiquenpour l’affichage d’une figure.
plot(X) — Trac´e du vecteurX dans un graphique `a deux dimensions.
hist(X) — Trac´e de l’histogramme des valeurs deX.
title(’chaine’) — Affichage du titre d’un graphique.
xlabel(’chaine’) — Affichage d’une l´egende pour l’axe des abscisses.
ylabel(’chaine’) — Affichage d’une l´egende pour l’axe des ordonn´ees.
close — Fermeture de la fenˆetre graphique courante.
close all — Fermeture de l’ensemble des fenˆetres graphiques.
5. Dans une chaˆıne de caract`ere, l’apostrophe s’obtient par ´echappement en utilisant deux simples quotes.
subplot(m,n,p) — Partitionnement de la fenˆetre graphique en une matrice de taillem×n et s´election de la case ppour l’affichage du graphique courant (pbalaye la matrice ligne par ligne).
axis([x0 x1 y0 y1]) — Limitation de l’axe des abscisses `a l’intervalle [x0, x1] et l’axe des or- donn´ees `a l’intervalle [y0, y1].
hold(’on’) — Maintien de l’affichage d’une figure pour superposer la suivante dans le mˆeme graphique.
grid(’on’) — Affichage la grille dans la fenˆetre courante.
print — Exportation de la figure dans un fichier image.
La commande plot comporte de nombreux d´eriv´es (stem, semilogx, semilogy, loglog, stairs, bars, polar...). L’aide associ´ee `a ces commandes est disponible dans la rubrique Graphics > Specialized Plottingdu navigateur de fonctions.
A.4 Fonctions pour les communications num´ eriques
Nous pr´esentons ci-dessous les fonctions de base fr´equemment utilis´ees dans le domaine des communications num´eriques. Parmi elles, nous trouvons ´evidemment la g´en´eration de signaux al´eatoires, des algorithmes pour la transformation de Fourier, ainsi que des fonctions de filtrage num´erique.
rand(m,n) — Tirage al´eatoire des coefficients d’une matrice m×n (distribution uniforme sur l’intervalle [0,1]).
randn(m,n) — Tirage al´eatoire des coefficients d’une matricem×n(distribution normale centr´ee et r´eduite).
erfc(x) — Fonction d’erreur compl´ementaire enx.
fft(X) — Transform´ee de Fourier rapide du vecteurX.
ifft(X) — Transform´ee de Fourier rapide inverse du vecteurX.
conv(X,Y) — Produit de convolution des vecteursX et Y.
filter(a,b,X) — Filtrage du signal contenu dans le vecteurX par le filtre d´ecrit par la fonction de transfert d´efinie par a et b (a repr´esente les coefficients du num´erateur et b ceux du d´enominateur).
freqz(a,b) — R´eponse fr´equentielle d’un filtre num´erique `a partir de la fonction de transfert d´ecrite par les vecteursaetb.
psd(X) — Estimation de la densit´e spectrale de puissance du vecteur X `a l’aide de diff´erentes m´ethodes (voir aussihelp spectrumpour les diff´erentes m´ethodes d’estimation).
roots(X) — Racine du polynˆome dont les coefficients sont contenus dans le vecteurX.
Rappelons l’existence du module optionnelCommunication Toolboxqui rassemble des fonctions de haut niveau pour la conception de chaines de communication num´eriques.