122
Cours :introduction au Matlab 1

Cours :introduction au Matlab - UQAC COURSE... · 2015. 4. 8. · Lorsqu’on tape une entrée sur Matlab, 1. MATLAB vérifie si c’est une variable et affiche la valeur. 2. Sinon,

  • Upload
    others

  • View
    4

  • Download
    1

Embed Size (px)

Citation preview

  • Cours :introduction au Matlab

    1

  • Plan

    � Introduction� Interface de Matlab� Commandes de base.� Manipulation des variables.� Tracé des graphes.� Operateurs logiques

    2

  • MATLAB??� MATLAB est un environnement de

    programmation pour:�Développement d’algorithme,�Analyse des données,�Visualisation des données,�Calcul numérique,�Calcul technique (traitement du signal, analyse

    des systèmes,..�Etc..

    � Plus simple que les langages de programmation standard (C,C++, Fortran,..)

    3

  • Interface de MATLAB

    4

  • 5

    Interface par Défaut

  • Fenêtres des commandes: taper vos instructions ici et pressez sur ENTER pour l’exécution immédiate.Exécution ligne par ligne.

    6

    Fenêtre de commande

  • Matlab comme Calculatrice� Opérateurs de base: + - * / ^

    >>1 +3ans =

    4>>1+3, 2-1, >>10^2, 3.33^2 , 2^2.333 >>2/4, 5+8, 4*6>>2/4; 5+8; 4*6;

    Conclusion: Matlab accepte une ou plusieurs commandes par ligne. La variable ansmémorise le résultat de la dernière opération.

    7

  • Utilisation des variables

    � Taper le nom de la variable suivie de la valeur à entrer:

    � Exemple:>> var1 = 3;>> age= 56;>> Longeur=3.14

    8

  • � Le nom ne doit pas contenir un nombreou un symbole au début.� Exemple de noms de variables non

    acceptés par Matlab:�1var�#aaa

    9

    Contraintes pour les noms de variables

  • 10

    Déclaration des variables

  • Exemple: Déclaration de vecteur ou tableau de dim 3

    La commande ‘’ whos’’ affiche toutes les variables avec les details..

    Création d’un vecteur

    11

  • la liste des commandes exécutées par Matlab

    12

    Fenêtre : mémorisation des commandes utilisées..

  • Workspace: donne la liste des variablescrées par Matlab ou>>whosou>>who

    13

    Fenêtre : La liste des variables créées

  • Une autre facon de créer une variable est de cliquer sur ce bouton.

    14

    Création des variables par l’interface Matlab

  • MATLAB t’invite à associer un nom .

    15

    Interface Matlab

  • Nouvelle variable bbb est créée.

    16

    Interface Matlab

  • 17

    Assignation des variables: cas 1

  • When you click on bbb, the variableeditor window appears. You can typein new values into bbb by filling in the cells.

    Matrix?? 18

    Assignation des variables: cas 2

    2) Ou en cliquant 2 fois sur la variable

  • 19

    Assignation d’une chaine de caractère:� myString = 'Hello, world';� otherString = 'You''re right';

    Assignation par une matrice

  • Pour afficher les variables à la consoleon a deux choix: disp(bbb) ou bbb

    20

    Visualisation des variables

  • Pour:Supprimer les variables du Workspace….Fermer les figures …..

    21

    Suppression des variables

    -3-2

    -10

    12

    3

    -2

    0

    2

    -10

    -5

    0

    5

  • Tout est supprimé.

    ?? clear ou clc !!

    Suppression des variables

    22

  • To clear the command window,use the clc (clear console) command.

    Supprimer les commandes..

    23

  • Apres la commande clc, on recupere une console sans aucune commande mais lesvariables ne sont pas supprimées..

    Supprimer les commandes..

    24

  • Obtenir de l’aide..

    25

  • Exemple: search for function mean

    Obtenir de l’aide..

    26

  • Commandes utiles..

    >> a=2 , b=4, g=5a =

    2b =

    4g =

    5

    >> whos a b gName Size Bytes Class Attributesa 1x1 8 double b 1x1 8 double g 1x1 8 double

    >> 27

  • Opérations arithmétiques avec des scalaires

    28

  • Ordre de priorité

    29

  • Exercice

    >> 8/10 (sans affectation)ans =

    0.8000>> 5*ansans =

    4>> r=8/10 (avec affectation)r =

    0.8000>> rr =

    0.8000>> s=20*r s =

    16 30

  • >> 8 + 3*5ans =

    23>> 8 + (3*5)ans =

    23>>(8 + 3)*5ans =

    55>>4^2-16+8/4*2ans =

    4>> 4^2-16+8/(4*2)ans =

    1

    Exemple:

    31

  • Commande de gestion

    32

  • Variables spéciales et constantes

    >> 1/0ans =

    Inf>> 0/0ans =

    NaN>> 1/infans =

    033

  • Formats

    34

  • Tableau et Matrice

    � Une matrice est declarée par un crochet ouvert et se termine par un crochet fermé

    � Les valeurs à l’interieur des crochets, separées par des virgules ou des points virgules correspondent aux données de la matrice.�

    35

  • Matrice ou vecteur ligne

    � Pour créer une ligne de matrice, séparer les valeurs par des virgules.� Exemple:�rowMatrix = [1,2,3,4,5];

    36

  • Exemple

    37

  • Matrice ou vecteur colonne

    � Pour créer une colone de matrice, séparer les valeurs par des points virgules.

    � Exemple:�colMatrix = [1;2;3;4;5];

    38

  • Exemple

    39

  • Matrice NxM

    � Pour créer une matrice, separer les valeurs par des virgules pour les lignes et par des points virgules pour les colones.� .� Exemple:�mat1 = [1,2,3;4,5,6;7,8,9];

    40

  • Exemple

    41

  • � Exercices:� Donner les résultats des opérations

    suivantes si on le exécute sur Matlab et expliquer pourquoi?

    � -1^3+9 3*2+4-1+6/3 2/3*3� 3*2/3 3*4-5^2*2-3 2/(3*3)� (2/3^2*5)*(3-4^3)^2 ½-2 1/(2-2)

    42

  • Test:

    � Tapez:� A=[1]; B=[1 2], C=[1, 2], D=[1; 2],� E=[1 2 ; 3 4], F=[1, 2; 3 ,4], � G=[ 1 2 3; 4 5 6; 7 8 9];� a=10/6� b=10\6

    43

  • Operateur colon :Syntaxe:

    >>x = m:q:n

    � Or

    � >>x = (m:q:n)

    Opérateur :, peut se présenter dans plusieurs formes:>>1:10

    1 2 3 4 5 6 7 8 9 10

    >>100:-7:50100 93 86 79 72 65 58 51

    >>0:pi/4:pi0 0.7854 1.5708 2.3562 3.1416 44

  • Exemple:x = 0:2:8 crée le vecteur x = [0,2,4,6,8],Cependant,x = 0:2:7 crée le vecteur x = [0,2,4,6].

    Si on veut un vecteur allant de 5 a 8 par pas de 0.1, entrer :z = 5:0.1:8.

    Si le pas q n’est pas donné, alors par défaut est pris égal à 1.

    y = -3:2 produit y = [-3,-2,-1,0,1,2].

    45

  • Transposé d’un vecteur

    On a vu:

    >>p = [3,7,9]p =

    3 7 9

    On peut transformer une ligne en colonne et vice versa par la notation transposé (').

    >>p = [3,7,9]'p =

    379

    46

  • Soit : r = [2,4,20]Et soit w = [9,-6,3] ,

    Si on tape u = [r,w] .

    On obtient un nouveau vecteur ligne de même dimension et de taille= somme de la taille de r et w:

    u = [2,4,20,9,-6,3] .

    Concaténation des vecteurs:

    47

  • linspace commandeCrée un vecteur de données linéairement séparésentre deux points (pas besoin d’incrémentation).

    La syntaxe est :linspace(x1,x2,n), x1 et x2 les bornes inférieure et supérieure des valeurs à générer et n le nbre de points à générer.

    Exemple1. linspace(5,8,31) est équivalent à 5:0.1:8.

    2. linspace(5,8)dans ce cas n=100 (défaut)

    48

  • Some commonly used mathematical functions

    49

  • PARTIE B:

    �Pour ceux qui n’ont pas vu encore le calcul matriciel peuvent seulement utiliser les commandes de Matlab sans rentrer dans les détails des opérations

    50

  • Lorsqu’on tape une entrée sur Matlab,

    1. MATLAB vérifie si c’est une variable et affiche la valeur.

    2. Sinon, MATLAB vérifie si c’est une commande de matlab et fait l’exécution.

    3. Sinon, vérifie dans le présent répertoire si c’est un script (commande exécutable de Matlab ou de l’usager).

    4. Sinon, vérifie dans tous les répertoires du path si c’est un script, et fait l’exécution

    5. Sinon, affiche message d’erreur..

    À savoir…

    51

  • 6 –210 3

    + 9 8–12 14

    = 15 6–2 17

    avec MATLAB l’addition est:

    >>A = [6,-2;10,3];>>B = [9,8;-12,14]>>A+Bans =

    15 6-2 17

    Exemple:

    (2.3-1)

    Calcul Matriciel: addition

    52

  • Addition Matricielle

    53

  • Soustraction Matricielle

    � Utiliser operateur: -� Exemple:

    A - B.

    � A et B doivent avoir les mêmes dim.

    54

  • Soustraction Matricielle

    55

  • Multiplication (vous pouvez sauter la théorie): Multiplication une matrice A par un scalaire w produit une matrice où ces élements sont multipliés par w. Exemple: la forme algébrique est

    32 95 –7

    = 6 2715 –21

    Avec Matlab:

    >>A = [2, 9; 5,-7];>>3*Aans =

    6 2715 -21

    56

  • Matrix-Matrix Multiplication (vous pouvez sauter la théorie)

    Dans un produit de matrices AB , le nbre de colonnes en A doit être égal au nbre de lignes en B.

    Le produit AB a le même nbre de ligne que A et le même nbre de colonnes que B. Exemple:

    6 –2 10 3

    4 7

    9 8–5 12

    = (6)(9) + (– 2)(– 5) (6)(8) + (– 2)(12)(10)(9) + (3)(– 5) (10)(8) + (3)(12)

    (4)(9) + (7)(– 5) (4)(8) + (7)(12)

    64 24 75 116

    1 116=

    57

  • Ce produit de multiplication matricielle est réalisé par

    l’utilisation de l’opérateur *

    Exemple:

    >>A = [6,-2;10,3;4,7];>>B = [9,8;-5,12];>>A* Bans =

    64 2475 1161 116

    58

  • La multiplication matricielle n’est pas commutative:AB ≠ BA .

    Preuve:

    AB = 6 –210 3

    9 8–12 14

    = 78 2054 122

    BA = 9 8–12 14

    6 –210 3

    = 134 668 66

    Et:

    À faire attention dans vos programmes!!

    59

  • Produit Vectoriel

    Représentation formelle du produit vectoriel:Si on a deux vecteurs lignes:x = [x(1), x(2), ... , x(n)]y = [y(1), y(2), ... , y(n)]le produit vect. est donné par:x*y = [x(1)y(1), x(2)y(2), ... , x(n)y(n)]

    Sur Matlab la syntaxe est:>> x = [2, 4, – 5] , y = [– 7, 3, – 8]

    >> z = x.*yCeci est ≈ à z = [2(– 7), 4 (3), –5(–8)] = [–14, 12, 40]

    60

  • Si x et y sont sous forme des vecteurs lignes, pour obtenir le même résulat sous forme d’un vecteur colonne, utiliser opérateur ’

    Exemple z = (x’).*(y’) produit:

    Note: x’ est un vecteur colonne de dim 3 × 1 (idem pour y’)

    Contre Exemple z = (x’).*(y) Produit un message d’erreur ???

    2(–7)4(3)

    –5(–8)

    –141240

    =z =

    61

  • Produit vectoriel dans le cas d’une Matrice:

    L’operation A.*B produit une matrcice C ayant la même dimension et dont les élements sont définis par:ci j = ai j bi j . Exemple, si:

    Alors C = A.*B donne:

    A = 11 5–9 4

    B = –7 86 2

    C = 11(–7) 5(8)–9(6) 4(2)

    = –77 40–54 8

    62

  • Multiplication Matricielle (par éléments)

    63

  • Les fonctions built-in MATLAB comme sqrt(x) et exp(x) operent automatiquement sur les éléments d’une matrice et produisent un vecteur de même dimension.

    Note: Ces fonctions sont considérées des fonctions vectorielles.

    Exemple:

    >>x = [4, 16, 25];>>y = sqrt(x)y =

    2 4 5

    64

  • Exemple :Donner la commande matlab pour calculer : (ex sin x) ?

    z = exp(x).*sin(x)

    Erreur si x et y ne sont pas de même dimension

    Exercice: même question pour (ey sin x) cos2x ??

    65

  • Division Matricielle

    Même principe que la multiplication sauf ici on utilise l’opérateur division: (on deux opérateurs / et ./ )

    Cas 1 ( division vectoriel):

    x = [8 , 12, 15] y = [–2 , 6, 5]

    Alors si on tape z = x./y cela produit une division élément par élément:

    z = [8/(–2), 12/6, 15/5] = [–4, 2, 3]

  • A = 24 20– 9 4

    B = –4 53 2

    Exemple 2: division vectorielle:

    Alors C = A./B produit

    C = 24/(–4) 20/5–9/3 4/2

    = –6 4–3 2

    67

    Exemple 3: division matricielle:>>[1 2 ; 3 4]/[5 6 ; 7 7]ans =

    1.0000 -0.57141.0000 -0.2857

    >> [1 2;3 4]./[5 6;7 7]ans =

    0.2000 0.33330.4286 0.5714

  • Exemple

    68

  • Puissance Matricielle

    Même principe que la multiplication sauf ici on utilise l’opérateur puissance (symbole ^ et .^ )

    Exemple:Si x=3 alors x^2 produit 9

    Si on un vecteur:x = [3, 5, 8] ,

    Alors x.^3Produit le vecteur

    [33, 53, 83] = [27, 125, 512].

    69

  • Un scalaire peut être élevé en puissance par un vecteur. Exemple, si p = [2, 4, 5] , alors 3.^p produit un vecteur [32, 34, 35] = [9, 81, 243].

    Ne pas oublier que .^ represente un seul symbole. Le point dans 3.^p n’est pas un point decimal.

    Exercice: Quelles seront les resultats par Matlab des expressions suivantes:3.^p

    (3).^p

    3.^[2,4,5]Même résultat: [ 9 81 243]

    70

  • Element-by-element operations: Table 2.3–1

    Symbol

    +

    -

    +

    -

    .*

    ./

    .\

    .^

    Examples

    [6,3]+2=[8,5]

    [8,3]-5=[3,-2]

    [6,5]+[4,8]=[10,13]

    [6,5]-[4,8]=[2,-3]

    [3,5].*[4,8]=[12,40]

    [2,5]./[4,8]=[2/4,5/8]

    [2,5].\[4,8]=[2\4,5\8]

    [3,5].^2=[3^2,5^2]

    2.^[3,5]=[2^3,2^5]

    [3,5].^[2,4]=[3^2,5^4]

    Operation

    Scalar-array addition

    Scalar-array subtraction

    Array addition

    Array subtraction

    Array multiplication

    Array right division

    Array left division

    Array exponentiation

    Form

    A + b

    A – b

    A + B

    A – B

    A.*B

    A./B

    A.\B

    A.^B

    71

  • Accéder aux éléments de Matrice

    � Utiliser la commande:matrixName(rowNumber, colNumber)

    � Exemple: �matrixName(3,2)

    �Matlab l’indice des élements débute par 1 et non par 0 comme le C++.

    72

  • Acces par Bloc

    � Pour récupérer une colonne avec toutes les lignes, utiliser :

    varA = matName(:,colNumber);� Pour récupérer une ligne avec toutes les

    colonnes, utiliser varA = matName(rowNumber,:);

    73

  • 74

    Exemple

  • Taille de matrice et rand()

    [numRow, numCol] = size(aaa);[numRow, numCol] = rand(N,M);

    75

  • Exemple

    76

  • Matrice Transposée

    � Opérateur transposé change les colonnes en lignes et les lignes en colonnes pour une matrice.

    � En matlab utiliser operateur : Matrice’ .

    77

  • Exemple:

    78

  • Exemple 2

    79

  • Exemple 3

    80

  • Chercher le Min/Max matricielle

    � minVal = min(aaa);� maxVal = max(aaa);� Les min et max pour chaque colonne

    � Note: la majorité des fonctions de matlabprésentent la même syntaxe que le langage C, ce qui facilite la transition.

    81

  • La fonction sum()

    � Pour calculer la somme de chaque colonne, utiliser la commande sum().

    � Exemple: colSum = sum(aaa);

    82

  • Trier les Matrices

    � Utiliser la fonction sort().

    � Exemple: sort matrix A in ascending order.�B = sort(A,’ascend/descend’)�Default is ascending mode.

    83

  • Exemple: trier Row Matrix

    84

  • Example: Sorting a Row Matrix in Descend Mode

    85

  • Strings

    � MATLAB permet de manipuler des données de type caractère: CHAINE.� Déclaration: Une chaine de caractère est

    limitée par des apostrophes.� Exemple: aString = ‘Hello World!’

    86

  • Exemple: Initialiser une chaine de caractère

    87

  • Convertir une chaine

    � Pour convertir une chaine en caractère miniscule, on doit utiliser la fonction lower().� Exemple: �B = lower(A)

    88

  • Exemple:

    89

  • Converting a String to Uppercase

    � Pour convertir une chaine en caractère Majiscule, on doit utiliser la fonction upper().� Exemple:�B = upper(A)

    90

  • Exemple:

    91

  • Création de la Matrice Zero

    � Créer une matrice de dimension 6 X 5 Contenant juste des zeros, utiliser la fonction zeros(N,M):

    zeros(6,5)

    92

  • 93

    Example

  • Création de la Matrice Ones

    � Elle contient juste les valeurs 1.� Exemple: Création de 5 X 3 matrice

    ones(5,3)

    94

  • 95

    Exemple

  • Création de la Matrice aléatoire

    � On utilise la fonction dont les données sont extraire d’un fonction à distribution normale avec une moy. Nulle et sigma=1 .

    randn(N,M)

    � Pour la distribution uniforme:

    rand(N,M)96

  • 97

    Example

    Compris entre0 et 1 ????

  • 98

    >> rand(3,2)

    ans =

    0.8147 0.91340.9058 0.63240.1270 0.0975

    A=magic(3)A =

    8 1 63 5 74 9 2

    >> sum(A)ans =

    15 15 15>> sum(A')ans =

    15 15 15>> sum(diag(A))ans =

    15

    Exemple

  • Instruction if()

    if (expression)instruction;

    end

    if (expression)instruction;

    elseinstruction;

    end 99

  • Instruction if() plus généraleif expression

    instruction;elseif expression

    instruction;elseif expression

    instruction;else

    instruction;end 100

  • Instruction if(): exemple 1

    x= 0;s=0;if x==0

    s=s+1;else

    s=s-1;end

    En une seule ligne:x= 0;s=0; if x==0 s=s+1; else s=s-1; end

    101

  • Instruction if(): exemple 2

    i=?? Et j=??if (i == j)

    A(i,j) = 2;elseif (abs(i-j)) == 1

    A(i,j) = -1;else

    A(i,i) = 0;end

    102

  • Instruction while()

    while (expression)instructions;

    end

    103

  • Exemple

    a=1:100; i=1; somme=0;while length (a) > i,

    somme=a(i)+somme;i=i+1;

    end

    104

  • Boucle For

    s=0;for (i = 1: 10)s=s+i;

    end;s

    105

  • Boucle forN=3; for L = 1:N

    for C = 1:Nif(L+C-1!=0)

    A(L,C) = 1/(L+C-1);else

    A(L,C)=-1000;end

    end106

    Instruction

  • Fonction: création

    � Ouvrir un fichier ayant le même nom que la fonction et sauvegarder avec extension .m

    function m= moyenne(x,n)%code de la fonction

    m= sum(x)/n;

    � On peut faire appelle directement sur la fenêtre des commandes ou dans une autre fonction

    107

  • Fonctions

    %fonction avec 2 arguments en retour et appel de la fonction moyenne()function [mean,stdev] = stat(x)

    n = length(x);mean = moyenne(x,n);stdev = sqrt(sum((x-avg(x,n)).^2)/n);%--------------------------------------------

    108

  • Plot

    109

  • Fonction plot()

    � La fonction plot() est utilisée pour tracer la relation en 2 D deux variables.� Format:�plot(x,y) % par défaut�plot(x,y,style)

    110

  • Exemple: random matrice

    clear, close all

    clc

    xxx = 1:100

    yyy = rand(1,100)

    plot(xxx,yyy)

    111

  • Exemple

    112

  • Exemple: plot()

    x = 0:pi/100:2*pi;y = sin(x);plot(x,y)

    113

  • 114

    0 1 2 3 4 5 6 7-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

  • Exemple avec étiquetage et titre

    x = 0:pi/100:10*pi;y = sin(x);plot(x,y,’g’)xlabel('x = 0:2\pi')ylabel('Sine of x')title('Plot of the Sine Function','FontSize',12)

    115

  • 116

    0 5 10 15 20 25 30 35-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    x = 0:2π

    Sin

    e of

    xPlot of the Sine Function

  • Multi-plot()

    117

    >> x = 0:pi/100:3*pi;>> y1 = sin(x);>> y2 = sin(x-.25);>> y3 = sin(x-.5);>> plot(x,y1,x,y2,x,y3)>> legend('sin(x)','sin(x-.25)','sin(x-.5)')

    0 1 2 3 4 5 6 7 8 9 10-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    sin(x)

    sin(x-.25)

    sin(x-.5)

  • Plot : Style

    118

  • Plot: couleurs

    119

  • 0 10 20 30 40 50 60 70 80 90 1000

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    Example: Plotting the lines using line parameters

    clear, close allclc

    xxx = 1:100

    yyy = rand(1,100)

    plot(xxx,yyy)figure, plot(xxx,yyy,'g:') % the command figure is figure, plot(xxx,yyy,'r--')% used to create a newfigure, plot(xxx,yyy,':mo')% figure each time a plo t

    % is made.

    120

    0 10 20 30 40 50 60 70 80 90 1000

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    0 10 20 30 40 50 60 70 80 90 1000

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    0 10 20 30 40 50 60 70 80 90 1000

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

  • Multiple Plot() sur une seule figure

    � Format:subplot(m,n,p)

    >> t = 0:pi/10:4*pi; X=cos(t); Y=sin(t);>> subplot(2,1,1); plot(t,X);>> grid;>> subplot(2,1,2), plot(t,Y);>> title('sin()')>> subplot(2,1,1); >> title('cos()');

    0 2 4 6 8 10 12 14-1

    -0.5

    0

    0.5

    1cos()

    0 2 4 6 8 10 12 14-1

    -0.5

    0

    0.5

    1sin()

    121

  • Qcq commandes graphique de MATLAB (autres à venir..)

    122