Introduction au logiciel Matlab

Transcription

Introduction au logiciel Matlab
Introduction au logiciel Matlab
Introduction au logiciel Matlab
Introduction au logiciel Matlab
Charles‐P Lamarche
Charles‐P. Lamarche
Adapté 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
Opérations de base
(4) Matrices et vecteurs
(5) Opérations matricielles
((6)) Graphiques 2D
p q
Environement Matlab
Workspace
C
Command d
Window
Command History
Introduction à Matlab
help
!!!! La fonction qui vous sera la plus utile !!!!
Nous verrons la fonction help plus tard…
Types de variables
yp
• Dans MATLAB, nul besoin de déclarer les variables!!
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‐bit
char: 16 bit
• La plupart des variables que vous utiliserai seront des matrices ou tableaux contenant des double et des char
contenant des double
et des char
• D’autres types sont supportés: variables complexes, variables symboliques, entiers etc
entiers, etc.
Comment nommer les variable
•
Pour créer une variable, on assigne un nom à une valeur
» var1=3.14
» myString='hello world'
•
Noms de variables
¾ Le 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ées
¾ i et j servent à définir les nombre complexes
¾ pi prend la valeur 3.1415926…
¾ ans met le résultat de la dernière opération en mémoire
¾ Inf and ‐Inf représentes +‐ l’infini
¾ NaN 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!
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 ligne
g
• Vecteur ligne
g
» 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 vecteurs
• Élément par élément
» a= [1 2;3 4];
[ ; ];
⎡1 2⎤
a=⎢
⎥
3
4
⎣
⎦
• 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!
» clear
l
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 13
2) Créer la variable c, un vecteur colonne contenant les valeurs: 13 10 7 4 1
3) Sauver dans un fichier .mat du nom de varEx
4) Effacer toutes les variables!
5) Ouvrir le fichier varEx
»
»
»
»
»
r=[1 4 7 10 13];
[1 4 7 10 13]
c=[13; 10; 7; 4; 1];
save varEx r c
clear r c
l
load varEx
Opérations scalaires de base
p
• Opérations de base (+,‐,*,/)
» 7/45
» (1+i)*(2+i)
» 1 / 0
» 0 / 0
0/0
• Exposants (^)
» 4^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 commande
pour réinitialiser la fenêtre de commande
• Commande
» clc
Fonctions préprogrammées
p p g
• MATLAB a une énorme
MATLAB a une énorme librairie de fonctions!!
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
p & doc
help
p
• Informations
Informations sur l
sur l’utilisation
utilisation d
d’une
une commande:
commande:
» help sin
• Pour une documentation plus complète:
» doc sin
Exercice sur les opérations scalaires
Exercice sur les opérations scalaires
• Vérifier que e
Vérifier que e^(i*x)
(i x) = cos(x) cos(x) + ii*sin(x)
sin(x) pour quelques valeurs de 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 workspace
¾ Affichage de la fenètre de commande
¾ Fonction size
Fonction size
• Pour les vecteurs, il y a aussi la fonction length:
L’art de transposer
p
• 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
+ [ 2 11
= [14 14
32 −11]
−30 32]
2 21]
⎡ 12 ⎤ ⎡ 3 ⎤ ⎡ 9 ⎤
⎢ 1 ⎥ ⎢ −1⎥ ⎢ 2 ⎥
⎢
⎥−⎢ ⎥ = ⎢
⎥
⎢ −10 ⎥ ⎢13 ⎥ ⎢ −23⎥
⎢
⎥ ⎢ ⎥ ⎢
⎥
−
0
33
33
⎣
⎦ ⎣ ⎦ ⎣
⎦
• Les dimensions doivent concorder
» 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ément
p
• Les
Les fonctions Matlab fonctionnent sur les matrices et les vecteurs! fonctions Matlab fonctionnent sur les matrices et les vecteurs!
» t = [1 2 3];
» f = exp(t);
¾ Même chose qu’écrire:
ê
h
’é
» f = [exp(1) exp(2) exp(3)];
• Les opérateurs (* / ^) ont deux modes de fonctionnement
¾ élément par élément ¾ matriciel
Opérations: élément par élément
p
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 2 3] .* ⎢⎢ 2⎥⎥ = ERROR
⎢⎣1 ⎥⎦
⎡1 ⎤ ⎡ 4 ⎤ ⎡ 4 ⎤
⎢ 2 ⎥ .* ⎢ 2 ⎥ = ⎢ 4 ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣ 3 ⎥⎦ ⎢⎣1 ⎥⎦ ⎢⎣ 3 ⎥⎦
3 ×1..* 3 ×1 = 3 ×1
⎡1 1 1 ⎤ ⎡1 2 3⎤ ⎡1 2 3⎤
⎢ 2 2 2 ⎥ .* ⎢1 2 3⎥ = ⎢ 2 4 6 ⎥
⎢
⎥ ⎢
⎥ ⎢
⎥
⎢⎣ 3 3 3 ⎥⎦ ⎢⎣1 2 3⎥⎦ ⎢⎣ 3 6 9 ⎥⎦
3 × 3.* 3 × 3 = 3 × 3
⎡12 22 ⎤
⎡1 2 ⎤
⎢3 4 ⎥ .^ 2 = ⎢ 2
2⎥
3
4
⎣
⎦
⎣
⎦
C be
Can
b any dimension
di
i
Opérations standard vs
p
élément par élément
p
•
•
•
•
•
•
Multiplication standard (*)
M
lti li ti
t d d (*)
Multiplication élément par élément (.*)
Division standard (/)
Division élément par élément (. /)
Exposant: standard(^)
Exposant: élément par élément (.
Exposant: élément par élément
(.^))
⎡1 2 ⎤
⎡1 2 ⎤ ⎡1 2 ⎤
^
2
=
⎢3 4 ⎥
⎢3 4 ⎥ * ⎢3 4 ⎥
⎣
⎦
⎣
⎦ ⎣
⎦
Must be square to do powers
⎡4⎤
[1 2 3]* ⎢⎢ 2⎥⎥ = 11
⎢⎣1 ⎥⎦
1× 3* 3 ×1 = 1×1
⎡1 1 1⎤ ⎡1 2 3⎤ ⎡3 6 9 ⎤
⎢2 2 2⎥ * ⎢1 2 3⎥ = ⎢6 12 18 ⎥
⎢
⎥ ⎢
⎥ ⎢
⎥
⎢⎣3 3 3⎥⎦ ⎢⎣1 2 3⎥⎦ ⎢⎣9 18 27⎥⎦
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
Même produit, mais élément par élément:
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 1
g
p
Exemple d’appel d’une fonction
var=zeros(M,N);
(M N)
g
Nombre de ligne
Nombre de colonne
Fonctions d’initialisation automatique
q
• Pour
Pour initialiser une séquence linéaire: linspace
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
¾ dans ce cas, Lincrément par défaut est 1
Exercice
• Construire
Construire un vecteur de 1000 valeurs de
un vecteur de 1000 valeurs de
f(x) = e^{‐x}*cos(x), pour x compris entre 0 et10.
» x = linspace(0,10,1000);
li
(0 10 1000)
» f = exp(‐x).*cos(x);
Manipulation de vecteurs
p
• Le premier index d’un vecteur est 1 et non 0
• x(n) retourne le neme élément du vecteur x
[13
x(1)
5 9 10]
x(2)
x(3)
x(4)
• L’argument (index) peut aussi être un vecteur • Par exemple:
» x=[13 5 9 10];
» aa=x(2:4);
x(2:4);
aa=[5
[5 9 10];
9 10];
» b=x(1:end‐1); b=[13 5 9];
Manipulation de matrices
p
• Deux manière d’indexer les matrices
¾ manière standard (ligne, colonne)
¾ indices linéaires (comme dans le cas d’un vecteur)
• Indexation: standard ou indices
Indexation: standard ou indices linéaire
b(1,1)
b(2,1)
⎡14 33⎤
⎢9 8⎥
⎣
⎦
b(1,2)
b(1)
b(2,2)
b(2)
⎡14 33⎤
⎢9 8⎥
⎣
⎦
• Sous‐matrices
» A A = rand(5) % matrice aléatoire de dimension 5x5
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)
b(3)
b(4)
Manipulations avancées
• L'argument
L argument (index) peut être une matrice. Dans ce cas, chaque élément (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 −2 ⎤
b=⎢
⎥
−
3
2
10
⎣
⎦
• Sélection de ligne et de colonne
⎡12 5 ⎤
c=⎢
⎥
−
2
13
⎣
⎦
» d=c(1,:);
d=[12 5];
» e=c(:,2);
e=c(: 2);
e=[5;13];
» c(2,:)=[3 6]; % remplace la seconde ligne de c
Exercice sur les manipulation de vecteurs
p
• Évaluer la fct. sinus entre 0 et 2
Évaluer la fct sinus entre 0 et 2*pi
pi en utilisant 1000 points équidistants.
en utilisant 1000 points équidistants
• Quelle est la valeur:
¾ à l’index 55
¾ aux index 100 à 110
»
»
»
»
xx = linspace(0, 2
linspace(0, 2*pi,
pi, 1000);
1000);
y=sin(x);
v
y(100:110)
(100 110)
Exercice sur les manipulation de matrices
• Bâtir une matrice remplie de zéros de dimenssion 3x100 et un vecteur p
contenant 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 p
nombre aléatoires compris entre ‐1 et 1
» mat(3, :)=2.*(0.5.*ones(1, 100)‐rand(1, 100));
Graphiques 2D
p 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
» 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!!
1
10 valeurs:
1
0.8
1000 valeurs:
0.6
0.8
0.6
0.4
0.4
02
0.2
02
0.2
0
0
-0.2
-0.2
-0.4
-0.4
-0.6
-0.6
-0 8
-0.8
-0 8
-0.8
-1
0
2
4
6
8
10
12
14
-1
0
2
4
6
8
10
12
14
Graphiques 2D
p q
• On peut changer la couleur, le type de point, le type de trait et plus encore!!
!!
» plot(x, y, 'b o ‐ '); couleur
l
point
Type de trait
d
• Dans ce cas, il n’y aura pas de trait, seulement des points
» p
plot(x, y,
( , y, 'o'))
• 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 2D
p q
• Pour tracer deux courbes sur le même graphique
g 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;
» plot(x,‐y, ‘r o ‐ ');
ou
» figure(10); f
( )
» plot(x, ‐y, ‘b o ‐ ',x, ‐y, 'r o ‐ ');
Même résultat!!
Graphiques 2D
p q
• Plusieurs types de graphiques 2D
yp
g p q
»
»
»
»
»
»
»
»
plot(x, y);
loglog(x, y);
og og( , y);
semilogx(x, y);
semilogy(x, y);
bar(x, y);
bar(x, y); hist(x, y);
polar (θ, r); stairs(x y);
stairs(x, y);
% graphique 2D en coord. (x, y)
% graphique log(y) vs log(x)
%
g ap que og(y) s og( )
% graphique y vs log(x)
% graphique log(y) vs x
% graphique à barre
% graphique à barre
% histogramme % graphique 2D en coord. (θ, r) % graphique 2D en escalier
% graphique 2D en escalier
Exercice sur les graphiques 2D
g p q
• Tracer
Tracer la fonction f(x) = e
la fonction f(x) = e^(‐|x|/(2pi))*cos(x)
( |x|/(2pi)) cos(x) sur l
sur l’intervale
intervale x = [
x = [‐10pi
10pi 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), plot(x exp( abs(x)/(2*pi)) *cos(x) 'r');
r );