Introduction au logiciel MatlabIntroduction au logiciel Matlab
Introduction au logiciel Matlab
Charles‐P LamarcheCharles‐P. LamarcheAdapté en partie de Danilo Šćepanović et
Patrick Ho (2009)
Plan de match
PLAN DE MATCH:PLAN DE MATCH:
(1) Introduction
(2)Variables
(3) Opérations de base(3) Opérations de base
(4) Matrices et vecteurs
(5) Opérations matricielles
(6) Graphiques 2D( ) p q
Environement Matlab
C dC d
WorkspaceWorkspace
Command Command WindowWindow
Command Command HistoryHistoryHistoryHistory
Introduction à Matlab
helphelphelphelp!!!! La fonction qui vous sera la plus utile !!!!
Nous verrons la fonction help plus tard…
Types de variables
• Dans MATLAB nul besoin de déclarer les variables!!
yp
• Dans MATLAB, nul besoin de déclarer les variables!!
• MATLAB supporte plusieurs types de variables, les plus utilisées sont:» 3 84» 3.84
double: 32‐bit (par défaut)» 'a'
char: 16 bitchar: 16‐bit
• La plupart des variables que vous utiliserai seront des matrices ou tableaux contenant des double et des charcontenant des double et des char
• D’autres types sont supportés: variables complexes, variables symboliques, entiers etcentiers, etc.
Comment nommer les variable
• Pour créer une variable, on assigne un nom à une valeur» var1=3.14» myString='hello world'
• Noms de variablesLe premier caractère doit être une lettre!!Ne pas confondre les lettre majuscules et les lettre minuscules (var1 est différent de Var1)
• Variables réservéesi et j servent à définir les nombre complexespi prend la valeur 3.1415926…ansmet le résultat de la dernière opération en mémoireInf and ‐Inf représentes +‐ l’infiniNaN veux dire ‘Not a Number’, i.e. 0/0 = NaN
Scalaires
• La variable a prend la valeur 10» a = 10
a apparait maintenant dans la fenêtre workspace!a apparait maintenant dans la fenêtre workspace!
• Opérations impliquant une variable » c = 10*2 2*a» c = 10*2‐2*a
• Pour ne pas afficher le résultat dans la fenêtre de commande, on utilise le point‐virgule (;)point‐virgule (;)» Elvis = 'Gratton';
Vecteur ligneg
• Vecteur ligneg» row = [1 2 5.4 ‐6.6];» row = [1, 2, 5.4, ‐6.6]; % Équivalent!
• Command window:
• Workspace:p
Vecteur colonne
• Vecteur colonne» column = [4;2;7;4];
• Command window:Command window:
• Workspace:
Matrices
• Même principe que dans le cas des vecteurs1 2⎡ ⎤
• Élément par élément» a= [1 2;3 4];
1 23 4
a⎡ ⎤
= ⎢ ⎥⎣ ⎦
[ ; ];
• Concaténation de vecteurs ou de matrices» a = [1 2];» a = [1 2];» b = [3 4];» c = [5;6];
» d = [a;b];» e = [d c];» f = [[e e];[a b a]];
Fonction clear
• La fonction clear all sert à supprimer toutes les variables du workspace
• La fonction clear sert à supprimer des variables précises» a = 1; » b = 1+a;» c = 1+b; % le signe % sert à introduire un commentaire!
l» clear a» clear b c
Regardez dans le workspace les variables a b et c ont disparues!!Regardez dans le workspace, les variables a, b et c ont disparues!!
Exercice sur les variables
• Effectuer les 5 opérations suivantes:
1) Créer la variable r, un vecteur ligne contenant les valeurs: 1 4 7 10 132) Créer la variable c, un vecteur colonne contenant les valeurs: 13 10 7 4 13) Sauver dans un fichier .mat du nom de varEx4) Effacer toutes les variables!5) Ouvrir le fichier varEx
[1 4 7 10 13]» r=[1 4 7 10 13];» c=[13; 10; 7; 4; 1];» save varEx r c
l» clear r c» load varEx
Opérations scalaires de basep
• Opérations de base (+,‐,*,/)» 7/45» 7/45» (1+i)*(2+i)» 1 / 0» 0 / 0» 0 / 0
• Exposants (^)» 4^2» (3+4*j)^2» (3+4*j)^2
• Priorité des opérations + parenthèses» ((2+3)*3)^0.1
• Pas de multiplication implicite!!» 3(1+0.7) % il y aura un message d’erreur!!
• Commande pour réinitialiser la fenêtre de commandeCommande pour réinitialiser la fenêtre de commande» clc
Fonctions préprogramméesp p g
• MATLAB a une énorme librairie de fonctions!!• MATLAB a une énorme librairie de fonctions!!
• Exemples:( )» sqrt(2)
» log(2), log10(0.23)» cos(1.2), atan(‐.8)» exp(2+4*i)» round(1.4), floor(3.3), ceil(4.23)» angle(i); abs(1+i);» angle(i); abs(1+i);
• La librairie comporte également des fonctions beaucoup plus complexes!!!
Fonctions Help & docp
helphelp• Informations sur l’utilisation d’une commande:
pp• Informations sur l utilisation d une commande:
» help sin
• Pour une documentation plus complète:» doc sin
Exercice sur les opérations scalairesExercice sur les opérations scalaires
• Vérifier que e^(i*x) = cos(x) + i*sin(x) pour quelques valeurs de x:Vérifier que e (i x) cos(x) i sin(x) pour quelques valeurs de x:
» x = pi/3;» a exp(i*x)» a = exp(i*x)» b = cos(x)+ i*sin(x)» a‐b
Dimension des matrices et vecteurs
• Dimension des matrices et vecteurs:Regarder dans le workspaceAffichage de la fenètre de commandeFonction sizeFonction size
• Pour les vecteurs, il y a aussi la fonction length:
L’art de transposerp
• Transposition du vecteur a» a = [1 2 3 4]» transpose(a)
• Autre façon de transposer» a.'
• Sans le point: transposition Hermitienne, i.e. transposition + conjugué complexe» a = [1+j 2+3*j]» a'» a. '
• Pour des vecteur de nombres réels, .' and ' donnent le même résultat!
Additions et soustractions
• Additions et soustractions élément par élément:
[ ][ ]12 3 32 11
2 11 30 32
−
+ −
12 3 91 1 210 13 23
⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥ ⎢ ⎥−⎢ ⎥ ⎢ ⎥ ⎢ ⎥− =⎢ ⎥ ⎢ ⎥ ⎢ ⎥− −
• Les dimensions doivent concorder
[ ]14 14 2 21 =10 13 230 33 33
⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥−⎣ ⎦ ⎣ ⎦ ⎣ ⎦
» c = row + column (erreur!)• Bonne utilisation de l’addition élément par élément
» c = row’ + column» c = row + column’
• Somme et multiplication des éléments d’un vecteur» s=sum(row);» p=prod(row);
Fonctions: élément par élémentp
• Les fonctions Matlab fonctionnent sur les matrices et les vecteurs!• Les fonctions Matlab fonctionnent sur les matrices et les vecteurs! » t = [1 2 3];» f = exp(t);
ê h ’éMême chose qu’écrire:» f = [exp(1) exp(2) exp(3)];
• Les opérateurs (* / ^) ont deux modes de fonctionnementélément par élément matricielmatriciel
Opérations: élément par élémentp p
• Pour effectuer des opérations élément par élément, on utilise le point (.)» a=[1 2 3];b=[4;2;1];» a.*b, a./b, a.^b erreur!!» a.*b’, a./b’, a.^(b’) Ok!!, / , ( )
4⎡ ⎤⎢ ⎥
1 1 1 1 2 3 1 2 32 2 2 1 2 3 2 4 63 3 3 1 2 3 3 6 9
.*⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥ ⎢ ⎥=⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦ ⎣ ⎦[ ]1 2 3 2
1
1 4 4
.* ERROR⎢ ⎥ =⎢ ⎥⎢ ⎥⎣ ⎦
⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥ ⎢ ⎥
3 3 3 1 2 3 3 6 93 3 3 3 3 3.*
⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦ ⎣ ⎦× × = ×
2 2 43 1 3
3 1 3 1 3 1
.*
.*
⎢ ⎥ ⎢ ⎥ ⎢ ⎥=⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦ ⎣ ⎦× × = ×
2 2
2 2
1 2 1 22
3 4 3 4.^
C b di i
⎡ ⎤⎡ ⎤= ⎢ ⎥⎢ ⎥
⎣ ⎦ ⎣ ⎦3 1 3 1 3 1. Can be any dimension
Opérations standard vs élément par élémentp p
M lti li ti t d d (*)• Multiplication standard (*)• Multiplication élément par élément (.*)• Division standard (/)
[ ]4
1 2 3 2 111
*⎡ ⎤⎢ ⎥ =⎢ ⎥⎢ ⎥⎣ ⎦
• Division élément par élément (. /)• Exposant: standard(^)• Exposant: élément par élément (.^)
11 3 3 1 1 1*
⎢ ⎥⎣ ⎦× × = ×
Exposant: élément par élément (. )
1 1 1 1 2 3 3 6 9⎡ ⎤ ⎡ ⎤ ⎡ ⎤1 2 1 2 1 2⎡ ⎤ ⎡ ⎤ ⎡ ⎤2 2 2 1 2 3 6 12 183 3 3 1 2 3 9 18 27
3 3 3 3 3 3
*
*
⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥ ⎢ ⎥=⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦ ⎣ ⎦
× × = ×
1 2 1 2 1 22
3 4 3 4 3 4^ *
Must be square to do powers
⎡ ⎤ ⎡ ⎤ ⎡ ⎤=⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦
3 3 3 3 3 3× × = ×
Exercice sur les vecteurs
• Produit vectoriel entre [1 2 3] and [3 5 4]:[ ] [ ]» a=[1 2 3]*[3 5 4]’
• Même produit mais élément par élément:• Même produit, mais élément par élément:» b=[1 2 3].*[3 5 4]
• Vecteur contenant les logarithme des éléments du vecteur b:» c=log(b)
Fonctions d’initialisation
• Matrices et vecteurs de uns, de zéros et de nombres aléatoires:» o=ones(1,10)
vecteur ligne avec 10 éléments tous égal à 1» z=zeros(23,1)
vecteur colonne avec 23 éléments tous égal à 0» r=rand(1,45)
vecteur ligne avec 10 éléments aléatoires compris entre 0 et 1g p
Exemple d’appel d’une fonction(M N)var=zeros(M,N);
Nombre de ligne Nombre de colonneg
Fonctions d’initialisation automatiqueq
• Pour initialiser une séquence linéaire: linspace• Pour initialiser une séquence linéaire: linspace» a=linspace(0,10,5)
début à 0, fin à 10 (inclus), 5 valeurs
• On peut aussi utiliser la technique suivante (:)» b=0:2:10
début à 0, par incrément de 2, fin à 10 increment can be decimal or negative
» c=1:5» c=1:5dans ce cas, Lincrément par défaut est 1
Exercice
• Construire un vecteur de 1000 valeurs de• Construire un vecteur de 1000 valeurs def(x) = e^{‐x}*cos(x), pour x compris entre 0 et10.
li (0 10 1000)» x = linspace(0,10,1000);» f = exp(‐x).*cos(x);
Manipulation de vecteursp
• Le premier index d’un vecteur est 1 et non 0
• x(n) retourne le neme élément du vecteur x
[ ]13 5 9 10
x(1) x(2) x(3) x(4)
• L’argument (index) peut aussi être un vecteur
x(1) x(2) x(3) x(4)
• Par exemple:» x=[13 5 9 10];» a=x(2:4); a=[5 9 10];» a x(2:4); a [5 9 10];» b=x(1:end‐1); b=[13 5 9];
Manipulation de matricesp
• Deux manière d’indexer les matricesmanière standard (ligne, colonne)indices linéaires (comme dans le cas d’un vecteur)
• Indexation: standard ou indices linéaire• Indexation: standard ou indices linéaire
⎡ ⎤⎡ ⎤ 14 339 8⎡ ⎤⎢ ⎥⎣ ⎦
b(1)
b(2)
b(3)
b(4)
14 339 8⎡ ⎤⎢ ⎥⎣ ⎦
b(1,1)
b(2,1)
b(1,2)
b(2,2)
• Sous‐matrices» A = rand(5) % matrice aléatoire de dimension 5x5» A rand(5) % matrice aléatoire de dimension 5x5» A(1:3,1:2) % sous‐matrice (3x2)» A([1 5 3], [1 4]) % sous‐matrice (3x2)
Manipulations avancées
• L'argument (index) peut être une matrice. Dans ce cas, chaque élémentL argument (index) peut être une matrice. Dans ce cas, chaque élément est recherché individuellement, et retourné comme une matrice
» a=[‐1 10 3 ‐2];» a=[‐1 10 3 ‐2];» b=a([1 2 4;3 4 2]);
1 10 23 2 10
b− −⎡ ⎤
= ⎢ ⎥−⎣ ⎦
• Sélection de ligne et de colonne
12 52 13
c ⎡ ⎤= ⎢ ⎥⎣ ⎦
» d=c(1,:); d=[12 5];» e=c(: 2); e=[5;13];
2 13⎢ ⎥−⎣ ⎦
» e=c(:,2); e=[5;13];» c(2,:)=[3 6]; % remplace la seconde ligne de c
Exercice sur les manipulation de vecteursp
• Évaluer la fct sinus entre 0 et 2*pi en utilisant 1000 points équidistants• Évaluer la fct. sinus entre 0 et 2 pi en utilisant 1000 points équidistants.• Quelle est la valeur:
à l’index 55aux index 100 à 110
» x = linspace(0, 2*pi, 1000);» x linspace(0, 2 pi, 1000);» y=sin(x);» v
(100 110)» y(100:110)
Exercice sur les manipulation de matrices
• Bâtir une matrice remplie de zéros de dimenssion 3x100 et un vecteur pcontenant des valeurs de 0 è 100 espacés de 10» mat=zeros(3, 100);» x=linspace(0, 10, 100);
• Remplacer la première ligne de la matrice par cos(x)» mat(1, :)=cos(x);( ) ( )
• Remplacer la deuxième ligne de la matrice par log((x+2)^2)» mat(2, :)=log((x+2).^2);( , ) g(( ) );
• Remplacer la troisième ligne de la matrice par un vecteur contenant des nombre aléatoires compris entre ‐1 et 1p» mat(3, :)=2.*(0.5.*ones(1, 100)‐rand(1, 100));
Graphiques 2Dp q
• Exemple» x=linspace(0,4*pi,10);» y=sin(x);
• Valeur de y en fonction des indexes » plot(y);
• Valeur de y en fonction de x• Valeur de y en fonction de x» plot(x,y);
MATLAB permet de facilement visualiser les fonctions!!
Graphiques 2D
• Plus il y a de point, plus la fonction sera lisse» x=linspace(0,4*pi,1000);» plot(x,sin(x));
• Les vecteurs doivent être de même dimension!!» plot([1 2], [1 2 3])
erreur!!
10 valeurs:
0 2
0.4
0.6
0.8
1
0 2
0.4
0.6
0.8
1
1000 valeurs:
-0 8
-0.6
-0.4
-0.2
0
0.2
-0 8
-0.6
-0.4
-0.2
0
0.2
0 2 4 6 8 10 12 14-1
-0.8
0 2 4 6 8 10 12 14-1
-0.8
Graphiques 2Dp q
• On peut changer la couleur, le type de point, le type de trait et plus !!encore!!
» plot(x, y, 'b o ‐ ');
l d
• Dans ce cas, il n’y aura pas de trait, seulement des points» plot(x, y, 'o')
couleur point Type de trait
p ( , y, )
• Titres» title('titre du graphique'); xlabel('Axe des x'); ylabel(' Axe des y ');
• Limites» xlim([xmin xmax]); ylim([ymin ymax]);
• Taper la commande help plot pour une liste complète des options
Graphiques 2Dp q
• Pour tracer deux courbes sur le même graphiqueg p q» hold on;
• Pour tracer un nouveau graphique (dans l’exemple, 10 est le no. de la figure)» figure(10); » plot(x, y, 'b o ‐ ');» hold on;» hold on;» plot(x,‐y, ‘r o ‐ ');ou
f ( )» figure(10); » plot(x, ‐y, ‘b o ‐ ',x, ‐y, 'r o ‐ ');Même résultat!!
Graphiques 2Dp q
• Plusieurs types de graphiques 2Dyp g p q
» plot(x, y); % graphique 2D en coord. (x, y)» loglog(x, y); % graphique log(y) vs log(x)og og( , y); % g ap que og(y) s og( )» semilogx(x, y); % graphique y vs log(x)» semilogy(x, y); % graphique log(y) vs x» bar(x, y); % graphique à barre» bar(x, y); % graphique à barre» hist(x, y); % histogramme » polar (θ, r); % graphique 2D en coord. (θ, r) » stairs(x y); % graphique 2D en escalier» stairs(x, y); % graphique 2D en escalier
Exercice sur les graphiques 2Dg p q
• Tracer la fonction f(x) = e^(‐|x|/(2pi))*cos(x) sur l’intervale x = [‐10pi 10pi]• Tracer la fonction f(x) = e ( |x|/(2pi)) cos(x) sur l intervale x = [ 10pi 10pi]. Utiliser une ligne rouge pleine et un nombre de points adéquat. » x=0:.01:10;» plot(x exp( abs(x)/(2*pi)) *cos(x) 'r');» plot(x, exp(‐abs(x)/(2*pi)).*cos(x), r );