Vous êtes sur la page 1sur 2

Année 2012-2013 4 Université Paul Sabatier Année 2012-2013 1 Université Paul Sabatier

Eviter au maximum les boucles, e.g.,


6.4 Un peu d’aléa — Matlab en bref —
> > for i=1 : N, x(i)=i ; end rand : génération pseudo-alétoire uniforme sur [0, 1]
randn : génération gaussienne N (0, 1)
est équivalent à mean : moyenne empirique Table des matières Vérifiez également sa syntaxe. En cas d’erreur, lisez le mes-
> > x=1 : N ; std : écart-type empirique sage d’erreur que Matlab a la gentillesse de vous indiquer.
xcorr : corrélation empirique 1 Généralités 1
Autre exemple : cov : covariance empirique 1.1 Introduction . . . . . . . . . . . . . . . . . . 1
> > r=1 : 10 ; A=[] ; % init. de A à vide 1.2 Démarrer . . . . . . . . . . . . . . . . . . . 1 1.4 Langage interprété
> > for i=1 : 5, A=[A ; r] ; end
6.5 Fonctions mathématiques spéciales 1.3 Aide en ligne . . . . . . . . . . . . . . . . . 1
besselj, bessely, gamma, erf, erfinv, etc. . . 1.4 Langage interprété . . . . . . . . . . . . . . 1 Pas de compilation, ni de déclaration de variable, ni de
peut être écrit réservation mémoire. Résultat affiché et stocké dans la va-
1.5 Variables . . . . . . . . . . . . . . . . . . . 1
> > r=1 : 10 ; A=ones(5,1)*r ; 6.6 Exemple de fichier de commande 1.6 Variables complexes . . . . . . . . . . . . . 1 riable ans.
et même Problème : On possède N mesures (xn , yn ) bruitées cen- 1.7 Vecteurs, matrices et manipulations . . . . 1 > > 2+2
sées correspondre à des points d’une droite. On va estimer 1.8 L’opérateur d’énumération « : » . . . . . . . 2 ans = 4
> > r=1 : 10 ; A=r([1 1 1 1 1], :) ; 1.9 Chaı̂nes de caractères . . . . . . . . . . . . 2
la pente a et la valeur à l’origine b de cette droite par > > 2*sin(pi/4)
ou
moindres carrés, c’est-à-dire minimisant : ans = 1.4142
> > r=1 : 10 ; A= r(ones(1,5), :) ; 2 Opérations matricielles 2
XN
Fonctions usuelles : sin, cos, exp, log, etc. . .
J(a, b) = (yk − axk − b)2 3 Affichages 2
k=1 3.1 Affichage alpha-numérique . . . . . . . . . . 2 1.5 Variables
6 Signal et image Solution : En annulant les dérivées partielles par rapport 3.2 Graphiques 1D : plot . . . . . . . . . . . . 2
à a et b on trouve (un seul minimum) : Les noms de variable commencent par une lettre. Atten-
PN PN PN 3.3 Graphiques 2D : mesh . . . . . . . . . . . . 3
6.1 Matrices particulières tion, Matlab fait la différence entre X et x.
xk yk − N1 ( k=1 xk )( k=1 yk ) 3.4 Affichage de plusieurs courbes . . . . . . . . 3
a = k=1PN PN > > x = pi/4
Matrices de Tœplitz : 2 1
k=1 xk − N (
2
k=1 xk ) 4 Fichiers, scripts, fonctions 3 x = 0.7854
> > c=[ 1 2 3 ] ; l=[ 1.5 2.5 3.5 4.5 5.5 ] ; X
N X
N 4.1 Répertoire de travail . . . . . . . . . . . . . 3
1 Point virgule « ; » évite l’affichage du résultat. Plusieurs
> > toeplitz(c,l) b= ( yk − a xk ) 4.2 Sauvegarde et chargement . . . . . . . . . . 3
ans = 1.0 2.5 3.5 4.5 5.5 N commandes par ligne : séparées par « ; » ou « , » :
k=1 k=1 4.3 Scripts . . . . . . . . . . . . . . . . . . . . . 3
2.0 1.0 2.5 3.5 4.5 Script Matlab : 4.4 Fonctions . . . . . . . . . . . . . . . . . . . 3 > > x = pi/2 ; y = sin(x) ;
3.0 2.0 1.0 2.5 3.5 % Simulation
a = pi ; b = 1/3 ; 5 Boucles et contrôles 3 1.6 Variables complexes
Matrices de Hankel, Hadamard, Hilbert, etc. . .
% Tirage d’un ensemble de mesures 5.1 Test « if » : . . . . . . . . . . . . . . . . . . 3 √
5.2 Boucle « for » : . . . . . . . . . . . . . . . 3 Matlab gère réels et complexes. i et j initialisés à −1.
N = 20 ; x = 1 :N ;
6.2 Filtrage et convolution > > z = 3 + 2*i
bruit = 10*randn(1,N) ; y = a*x+b+bruit ;
Fonction filter (2D : filter2) : filtrage rationnel par un 6 Signal et image 4 z = 3.0000 + 2.0000i
% Estimation 6.1 Matrices particulières . . . . . . . . . . . . 4
filtre de coefficients dans A et B : aest = (sum(x.*y) - sum(x)*sum(y)/N)/... Fonctions prédéfinies : real, imag, abs, angle, etc. . .
6.2 Filtrage et convolution . . . . . . . . . . . . 4
> > Y = filter(B,A,X) ; (sum(x.^ 2) - sum(x)^ 2/N) ; 6.3 Transformation de Fourier . . . . . . . . . . 4 > > r = abs(z) ;
best = (sum(y) - aest*sum(x))/N ; 6.4 Un peu d’aléa . . . . . . . . . . . . . . . . . 4 > > theta = angle(z) ;
Convolution conv (2D : conv2) :
% Affichage 6.5 Fonctions mathématiques spéciales . . . . . 4 > > y = r*exp(i*theta) ;
> > Z = conv(X,Y) ; plot(x,y,’*’,x,aest*x+best) 6.6 Exemple de fichier de commande . . . . . . 4
La fonction roots : racines (zéros, pôles). Calcul des ra- title([’Estimation a=’,num2str(aest),... 1.7 Vecteurs, matrices et manipulations
cines d’un polynôme donné par ses coefficients (ici P (z) = ’ b=’,num2str(best)]) 1 Généralités
z 3 − 6z 2 − 72z − 27) : Matrice sous forme d’un tableau :
Estimation a = 3.1107 b = 0.65773 1.1 Introduction >> A = [ 1 2 3; 4 5 6 ]
> > p = [1 -6 -72 -27] ; r=roots(p)
80 Matlab pour « Matrix Laboratory » : tout est matrice. A = 1 2 3
La fonction polyval calcule la valeur d’un polynôme en
Environnement de calcul matriciel, adapté à l’automatique 4 5 6
certains points :
et au traitement du signal et de l’image : facilité d’emploi, Expressions à évaluer possible :
> > polyval(p,[ 1, exp(j*pi/4) ]) 60
possibilités graphiques, boites à outils : signal processing,
ans = 1.0e+002 * > > x = [-1.3 sqrt(3) (1+2+3)*4/5]
image processing, optimization, etc. . .
-1.0400 -0.7862-0.5620i x = -1.3000 1.7321 4.8000
40
La fonction poly inverse la fonction roots. Éléments référencés par leurs indices :
1.2 Démarrer
> > p=poly(r) > > x(2)
p = 1.000 -6.000 -72.000 -27.000 20 Cliquez sur l’icône Matlab ou tapez matlab dans un shell. ans = 1.7321
Tapez les commandes Matlab ou le nom d’un fichier de > > x(5) = abs(x(1))
commandes à la suite des chevrons > > . x = -1.300 1.732 4.800 0.000 1.300
6.3 Transformation de Fourier 0 Ajout de lignes à une matrice :
fft, ifft. Calcul de la FFT du signal x, sur 1024 points 1.3 Aide en ligne > > r = [7 8 9] ; A = [A ; r]
régulièrement distribués dans [0, 1] :
−20 Commande help : help NomFct. Également lookfor. A = 1 2 3
> > TF=fft(x,1024) ; 0 5 10 15 20 Avant d’écrire une fonction, assurez-vous qu’une fonction 4 5 6
Pour [−0.5, +0.5] utiliser fftshift. En dimension 2 : fft2 similaire n’existe pas déjà. De même, avant d’utiliser une 7 8 9
et ifft2. fonction, vérifiez qu’elle réalise bien l’opération souhaitée. Ajout de colonnes : « , » à la place de « ; »

Hervé Carfantan http://userpages.irap.omp.eu/~hcarfantan/ Hervé Carfantan http://userpages.irap.omp.eu/~hcarfantan/


Année 2012-2013 2 Université Paul Sabatier Année 2012-2013 3 Université Paul Sabatier

Fonctions zeros, ones, et eye : 2 Opérations matricielles Courbe y = sin(pi*x) 4.2 Sauvegarde et chargement
1
> > eye(2) % eye comme I : Identity Opérations usuelles définies de façon naturelle : Sauvegarde :
ans = 1 0 > > 2*A > > save NomFichier NomsVariables
0 1 > > A*B % Produit matriciel 0.5 Exemple :
> > x = ones(1,5) > > A^ p > > save test.mat A x y
ans = 1 1 1 1 1 > > inv(A)
0 Par défaut sauvegarde dans matlab.mat.

y
Taille d’une matrice : size, length : Résolution de systèmes linéaires : Chargement :
> > X = A\B % solution de A*X = B
> > size(x) > > load NomFichier
> > X = B/A % solution de X*A = B
ans = 1 5 −0.5
Attention : Voir aussi les commandes who, whos, pack et clear.
Transposée, conjuguée, retournement, rotation : > > A.*B % Produit terme à terme
>> A’ % Transposée conjuguée de A > > X = A./B % Division terme à terme −1
4.3 Scripts
>> A.’ % Transposée de A > > A.^ p % Puissance terme à terme 0 0.5 1 1.5 2
x Script : suite de commandes dans un fichier. Commen-
>> flipud(A) % Up - Down Autres fonctions utiles sur les matrices : taires par : « % ». Nom de fichier avec extension « .m »
>> fliplr(A) % Left - Right > > poly(A) % Polyn. caract. de A (nomfich.m). Exécution sous Matlab : nom du fichier, sans
>> rot90(A) % Rotation de 90˚ > > det(A) % Déterminant de A 3.3 Graphiques 2D : mesh « .m ». Variables de l’espace de travail visbibles dans le
> > trace(A) % Trace de A script et réciproquement.
> > [V,D] = eig(A) % Val. et vect. propres Pour une fonction de deux variables :
1.8 L’opérateur d’énumération « : »
Matrices creuses : gain en mémoire et en coût de calcul > > x = 1 : 0.1 : 2 ; y = -1 : 0.1 : 1 ; 4.4 Fonctions
Pas à pas, incrément : > > A = eye(2) ; B = sparse(A) ; > > [X,Y] = meshgrid(x,y) ;
> > A*[1 ;1] ; % 4 multiplications > > mesh(X,Y,cos(pi*X).*sin(pi*Y)) Définition :
> > x = 0.5 : 0.1 : 0.85 function y = sinuscardinal(x)
> > B*[1 ;1] ; % 2 multiplications
x = 0.5000 0.6000 0.7000 0.8000 Mais aussi meshc, contour, image, surf, etc. . . z = sin(x) ; % Variable de stockage
Pour certaines fonctions, matrice = tableau de valeurs :
Incrémentation par défaut : 1 (voir aussi linspace) : > > exp(A) ; log(A) ; sqrt(A) ; y = z./x ; % Variable de sortie
>> x = 1 : 5 > > round(A) ; sign(A) ; rem(A,2) ; Appel identique aux fonctions Matlab :
x = 1 2 3 4 5 Pour d’autres, matrice = suite de vecteurs colonnes > > sincpi = sinuscardinal(pi) ;
Sélection d’éléments :
> > min(A) ; % Minima des colonnes 1 Autre exemple :
> > max(A) ; % Maximum
> > A(1,3) ; A(1,1 : 3) ; A( : ,3) ; function [min, max] = minetmax(x)
> > sum(A) ; % Somme
min = min(x) ; max = max(x) ;
Si on a : > > prod(A) ; % Somme
> > cumsum(A) ; % Sommes cumulés Appel :
> > A = [1,2,3 ; 4,5,6 ; 7,8,9] ; 0
> > cumprod(A) ; % Produits cumulés > > [miny, maxy] = minetmax(y) ;
alors, extraction lignes 1 à 2 et toutes les colonnes : > > sort(A) ; % Tri des colonnes Passage par valeur seulement. Nombres d’arguments en
> > median(A) ; % Val. médiane des col entrée et en sortie acessibles dans nargin et nargout. Va-
> > A(1 : 2, : )
ans = 1 2 3 Décomposition de matrices : −1 riables de l’espace de travail invisible dans les fonctions et
> > [U,S,V] = svd(X,0) ; % Valeurs singulières réciproquement. Outils de mise au point (déboggage) : plus
4 5 6
> > R = chol(X) ; % Cholesky
1
2 simple : keyboard ; plus évolués : déboggeur intégré. . .
> > [Q,R] = qr(X) ; % QR 0
1.9 Chaı̂nes de caractères > > [L,U] = lu(X) ; % LU (Lower, Upper) 1.5 5 Boucles et contrôles
Variables contenant des chaı̂nes de caractères : −1 1
3 Affichages 5.1 Test « if » :
> > mess = ’Bienvenue sur Matlab’ ;
Structure générale :
Manipulations de même type que pour les vecteurs : 3.1 Affichage alpha-numérique
3.4 Affichage de plusieurs courbes if (expression logique)
> > mess = [mess ’ v 5’] Façon Matlab ou façon C
suite d’instructions 1 ;
mess = Bienvenue sur Matlab v 5 > > disp(mess) subplot divise la fenêtre graphique : else
pi vaut 3.142
Conversion de nombres en chaı̂nes de caractères : num2str, >> subplot(2,1,1) suite d’instructions 2 ;
> > fprintf(’pi vaut %1.3e \n’,pi) 1 2
int2str, sprintf : >> plot(x,y) end
pi vaut 3.141e+000 3 4
> > mess = [’pi vaut ’, num2str(pi)] Saisie d’une valeur : >> subplot(2,1,2) Opérateurs logiques : et (&), ou (|, xor), égal (==), dif-
mess = pi vaut 3.142 > > rep=input(’Valeur de lambda : ’) ; >> plot(x,y.^ 2) férent (~ =), supérieur (>, >=), inférieur (<, <=), non (~).
Fonctions logiques : exist, any, find, isinf, isnan, etc. . .
Évaluation d’une chaı̂ne : eval et feval : La commande figure crée une nouvelle fenêtre graphique.
Expression considérée fausse si 0, et vraie sinon.
3.2 Graphiques 1D : plot figure(2) permet d’adresser la figure n˚ 2.
> > nomvar = ’x’ ;
> > eval([nomvar ’1 = sqrt(-1)’]) Tracé d’une fonction avec axes et titre : 5.2 Boucle « for » :
x1 = 0.0000 + 1.0000i > > x = (0 : 0.1 : 2) ; y = sin(x*pi) ; 4 Fichiers, scripts, fonctions Structure générale :
> > NomFct = ’sin’ ; > > plot(x,y) ; % abscisse, ordonnée
> > feval(NomFct,pi) > > title(’Courbe y = sinus(pi*x)’) for i=1 : 10
4.1 Répertoire de travail suite d’instructions ;
ans = 1.2246e-16 % sin(pi) 0 ! > > xlabel(’x’) ; ylabel(’y’)
Commandes cd et dir (idem dos) ; cd et ls (idem Unix). end

Hervé Carfantan http://userpages.irap.omp.eu/~hcarfantan/ Hervé Carfantan http://userpages.irap.omp.eu/~hcarfantan/

Vous aimerez peut-être aussi