Upload
others
View
7
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