Introduction au logiciel Matlab IntroductionaulogicielMatlab

37
Introduction au logiciel Matlab Introduction au logiciel Matlab Introduction au logiciel Matlab CharlesP Lamarche CharlesP. Lamarche Adapté en partie de Danilo Šćepanović et Patrick Ho (2009)

Transcript of Introduction au logiciel Matlab IntroductionaulogicielMatlab

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 );