Départements GEI & Mécanique
INITIATION À
MATLAB
Yassine ARIBA – Jérôme CADIEUX
version 0.0
Matlab, ses boîtes à outils et Simulink sont des produits développés
par la société The MathWorks, Inc. Matlab® et Simulink® sont des
marques déposés par cette même société.
La distribution utilisée en séance est sous licence classroom, c’est-à-
dire qu’elle est réservée à un usage académique éducatif. Toute
utilisation à but commercial ou recherche est interdite.
Icam - Toulouse Y. Ariba – J. Cadieux 2
Interface de MATLAB
Icam - Toulouse Y. Ariba – J. Cadieux
Deux façons de créer une matrice
Sans écho à l’écran
MATLAB fait la différence entre
minuscules et majuscules
Fenêtre de commandes : création de quelques variables
Icam - Toulouse Y. Ariba – J. Cadieux 4
Information sur les variables
1 >> who
2 Your variables are:
3 A t
4 >> clear t
5 >> who
6 Your variables are:
7 A
clear all réinitialise l’environnement
Icam - Toulouse Y. Ariba – J. Cadieux 5
Déclaration d’un vecteur
1 % Vecteur ligne m =
2 >> m = [0 1 2 3] 0 1 2 3
ou
1 >> m = [0:3]
La progression entre deux éléments peut être précisée :
>> x = [1:-0.25:-1]
Déclaration d’un vecteur colonne
1 >> n = [0;1;2;3] % Création d’un vecteur colonne
ou par transposition
1 >> n = m’
Icam - Toulouse Y. Ariba – J. Cadieux 6
Déclaration d’une matrice
ans =
1 >> A=[1 2 3;4 5 6;7 8 9] 1 2 3
4 5 6
7 8 9
Taille d’une matrice
1 >> size(A) ans =
3 3
Accès aux éléments
1 >> A(1,2)
2 >> A([1 3],:)
Matrices particulières
1 >> eye(n)
2 >> ones(n,m)
n, m sont des entiers
3 >> zeros(n,m)
4 >> rand(n,m)
Icam - Toulouse Y. Ariba – J. Cadieux 7
Opérations élémentaires
1 >> 3+5
2 >> ans-2 Dans toutes opérations, il faut faire attention
3 >> A + ones(3) aux dimensions des opérandes
4 >> m + x(1:4)
Multiplication Division
1 >> 3*4 1 >> 3/4
2 >> b=[1;0;5]
1 >> 3\4
3 >> A*b
4 >> b’*A 1 >> B=[1 4 3;2 -1 0;0 3 3]
5 >> [1,1,2]*b 2 >> y=B\b
Élévation à la puissance
1 >> 2^3
2 >> sqrt(16)
3 >> A^2
4 >> B^(-1) % idem fonction d’inversion inv(B)
Icam - Toulouse Y. Ariba – J. Cadieux 8
Opérations terme à terme
1 >> A .^ 2
2 >> diag([1,2,3]) .* A
3 >> c=[1:1:5],d=[0.5:0.5:2.5]
4 >> c./d
5 >> e=[1 -1 0 2 2]
6 >> e.*c
Icam - Toulouse Y. Ariba – J. Cadieux 9
Manipulation par blocs
1.0000 1.0000 1.0000 0.4565 0.4447
1 >> C = [ones(3), rand(3,2);
1.0000 1.0000 1.0000 0.0185 0.6154
2 rand(2,3), eye(2)] 1.0000 1.0000 1.0000 0.8214 0.7919
0.9218 0.1763 0.9355 1.0000 0
0.7382 0.4057 0.9169 0 1.0000
Extraction de sous matrices
1 >> C1 = C(:,[3 5])
2 >> C2 = C(:,[1:3])
3 >> C3 = C([1 2],[4 5]) C(arg1, arg2): le premier argument permet
4 >> D = diag(C) de sélectionner un ensemble de lignes,
5 >> D1 = diag(C,1) le second un ensemble de colonnes.
6 >> D2 = diag(C,-2)
7 >> T1 = tril(C)
8 >> T2 = triu(C)
Icam - Toulouse Y. Ariba – J. Cadieux 10
Boucles
1 for compteur = expression 1 n = 20;
2 instructions 2 for k = 1:n
3 end 3 y(k) = k^2;
4 end
1 while expression 1 x = 16;
2 instructions 2 while x > 1
3 end 3 x = x / 2;
4 end
Icam - Toulouse Y. Ariba – J. Cadieux 11
Conditions
1 if expression 1 1 switch expression 1
2 instructions 1 2 instructions 1
3 elseif expression 2 3 case expression 2
4 instructions 2 4 instructions 2
5 else 5 case {expression 3, expression 4, …}
6 instructions 3 6 instructions
7 end 7 otherwise
8 instructions 4
9 end
Icam - Toulouse Y. Ariba – J. Cadieux 12
opération Symbole opération Symbole
supérieur supérieur
> >=
à ou égal à
inférieur inférieur
< <=
à ou égal à
égal à == non ~
et &, && ou |,||
Il existe aussi xor, any, all.
Icam - Toulouse Y. Ariba – J. Cadieux
1 >> help polyval
2 >> doc polyval
Icam - Toulouse Y. Ariba – J. Cadieux 14
Fonctions scalaires
Fonctions usuelles
1 sin exp abs round
2 cos log sqrt tanh 1 >> help elfun
3 tan rem sign acosh …
Fonctions matricielles
Fonctions usuelles
1 max sum mean sort
2 min prod …
Fonctions matricielles
1 eig size norm 1 >> help matfun
2 inv …
Icam - Toulouse Y. Ariba – J. Cadieux 15
Commande de base
1 >> x = [0 : 0.01 : 2*pi];
2 >> y = cos(3*x);
3 >> plot(x,y)
Quelques options
1 plot(x,y,s) % s:chaîne de caractères
2 pour la couleur et le tracé
Couleurs Marqueurs Tracés
y : jaune + : plus - : trait continu
m : magenta o : cercles : : pointillés
c : cyan * : étoiles -. : trait point
r : rouge x : croix - : tirets
g : vert s : carré
b : bleu d : diamant 1 >> plot(x,y,’r*’)
k : noir v^<> : triangles
w : blanc h : hexagramme
Icam - Toulouse Y. Ariba – J. Cadieux
Superposition de tracés
1 >> x = [0 : 0.01 : 2*pi]; 1 >> hold on
2 >> y = cos(3*x); 2 >> plot(x,y);
ou
3 >> z = exp(-0.5*x).*sin(5*x), 3 >> plot(x,z)
4 >> plot(x,y,x,z)
Pour compléter le tracé
1 >> legend(‘cos(3x)’,’sin(2x)’)
2 >> title(‘Voici un titre’)
3 >> axis([0 7 -1.2 1.2])
4 >> xlabel(‘x: axe des abscisses’)
5 >> ylabel(‘y: axe des ordonnées’)
6 >> grid on
Icam - Toulouse Y. Ariba – J. Cadieux
Figure avec plusieurs graphiques
1 >> x=[-20:0.05:20];
2 >> subplot(2,3,1) ; plot(x,sin(0.3*x)); title(‘sinus’);
3 >> subplot(2,3,2) ; plot(x,cos(0.3*x)); title(‘cosinus’);
4 >> subplot(2,3,3) ; plot(x,atan(x)); title(‘arctangente’);
5 >> subplot(2,3,4) ; plot(x,x.^2); title(‘parabole’);
6 >> subplot(2,3,5) ; plot(x,sin(x)./x); title(‘sinus cardinal’);
7 >> subplot(2,3,6) ; plot(x,abs(x)); title(‘valeur absolue’);
Icam - Toulouse Y. Ariba – J. Cadieux 18
Scripts
• Liste d’instructions.
• Accès à toutes les variables de l’environnement.
• Pas de paramètres d’entrée.
• Ne retourne aucune valeurs.
• Appels d’autres scripts ou fonctions.
Fonctions
• N’a pas accès aux variables de l’environnement.
• Possède des variables d’appel en arguments.
• Variables locales inaccessibles depuis l’extérieur.
• Retourne une ou plusieurs valeurs.
Icam - Toulouse Y. Ariba – J. Cadieux 19
Workspace Script
Fonction
Workspace
Icam - Toulouse Y. Ariba – J. Cadieux 20
Script1.m Fonc1.m
1 x1=-1 ; x2=1; 1 function [moy,ecarttype] = Fonc1(x)
2 n=50; 2 % Commentaire affiché par le help Fonc1
3 x = linspace(x1,x2,n); 3 n = length(x);
4 y = exp(-2*x).*(x.^2-3*x+4); 4 moy = sum(x) / n;
5 plot(x,y); 5 ecarttype = sqrt(sum((x - moy).^2)/n);
6 disp('voir tracé sur figure') 6
>> n=0; >> Fonc1;
>> script1; ??? Input argument »x » is undefined
??? Undefined function or Error in ==> Fonc1 at 3
variable ‘script1’. >>[a,b] = Fonc1([1 2 3 4]);
>> Script1; a =
voir tracé sur figure 2.5000
b =
>> n 1.1180
n = >> n
50 ??? Undefined function or variable ‘n’.
Icam - Toulouse Y. Ariba – J. Cadieux 21
Énoncé 1
Les équations paramétriques d’une ellipse centrée à l’origine sont:
x = A cos t
avec 0 ≤ t ≤ 2π
y = B sin t
1. Tracer cette ellipse pour A=2 et B=1.
2. Ajouter un titre et des labels abscisses/ordonnées
3. Tracer la courbe pour différentes valeurs de A et B. A quoi correspondent ces 2 paramètres?
Icam - Toulouse Y. Ariba – J. Cadieux 22
Solution 1
Icam - Toulouse Y. Ariba – J. Cadieux 23
Énoncé 2
Calculer la somme des carrés des 1000 premiers entiers de 3 façons différentes:
• Avec l’instruction for
• Avec l’instruction while
• Avec l’instruction sum
Icam - Toulouse Y. Ariba – J. Cadieux 24
Solution 2
Icam - Toulouse Y. Ariba – J. Cadieux 25
Énoncé 3
Représenter graphiquement la fonction suivant:
avec
a, b et ε sont des paramètres constants.
La fenêtre de représentation porte sur -2 ≤ x ≤3 et -1 ≤ y ≤ 1
consigne: utiliser une fonction (m-file) pour calculer Φ(x).
A.N. : On prendra a=-1, b=2 et ε=0.5.
Icam - Toulouse Y. Ariba – J. Cadieux 26
Solution 3
Icam - Toulouse Y. Ariba – J. Cadieux 27
Énoncé 4
Recherche d’une racine par dichotomie.
Soit f(x) une fonction continue strictement croissante sur [a,b] telle que:
f(a) < 0 et f(b) > 0
L’objectif est de trouver x0 tel que f(x0) = 0.
• évaluer la fonction en c=(a+b)/2;
• si f(c) < 0, l’intervalle de recherche devient [c,b];
• si f(c) > 0, l’intervalle de recherche devient [a,c].
• Ce processus est ensuite réitéré…
A.N. : Déterminer la racine des fonctions:
• f(x) = 2x4 + 2.3x3 - 16x2 - 8x - 17.5 sur l’intervalle [0,100].
• g(x) = tan(x2) - x sur l’intervalle [0.5,π/3].
Icam - Toulouse Y. Ariba – J. Cadieux 28
Solution 4
Icam - Toulouse Y. Ariba – J. Cadieux 29
Énoncé 5
Soit un signal créneau f(t) d’amplitude A, de période T et de valeur moyenne nulle.
Sa décomposition en série de Fourier est donnée par:
avec
Représenter le signal f(t) à partir de sa décomposition en série de Fourier jusqu’à
l’ordre n=7. Tester ensuite pour des valeurs de n supérieures.
A.N. : On prendra A=2 et T=0.5s. Echelle temporelle: 0 ≤ t ≤ 2 avec un pas de 0.001.
Icam - Toulouse Y. Ariba – J. Cadieux 30
Solution 5
Icam - Toulouse Y. Ariba – J. Cadieux 31
Énoncé 6
Manipulation de polynômes. Créer deux fonctions qui permettent:
• d’additionner deux polynômes,
• de multiplier deux polynômes.
Nous définirons un polynôme de la forme (par ex.)
par un vecteur ligne contenant ses coefficients: P=[1 2 3 4 5]
Notons la fonction poly2str(P,’x’)
qui permet d’afficher un polynôme par rapport à la variable x.
Icam - Toulouse Y. Ariba – J. Cadieux 32
Solution 6
Icam - Toulouse Y. Ariba – J. Cadieux 33