CIP42 C2 OpMatricielles .pdf
Nom original: CIP42-C2-OpMatricielles.pdfTitre: LCI IIIAuteur: Asmaa El Hannani
Ce document au format PDF 1.5 a été généré par Microsoft® Office PowerPoint® 2007, et a été envoyé sur fichier-pdf.fr le 01/03/2013 à 14:03, depuis l'adresse IP 41.249.x.x.
La présente page de téléchargement du fichier a été vue 986 fois.
Taille du document: 499 Ko (20 pages).
Confidentialité: fichier public
Aperçu du document
Part 3
OPÉRATIONS MATRICIELLES
Asmaa El Hannani
50
Opérations matricielles
Les opérations matricielles jouent un rôle central dans
MATLAB.
Une caractéristique saillante de MATLAB est la syntaxe très
simple et naturelle pour les opérations matricielles.
Dans la mesure des contraintes imposées par le clavier cette
syntaxe est naturelle, c'est-a-dire qu'elle correspond à l‘écriture
usuelle.
Asmaa El Hannani
1
51
Opérations matricielles
Les opérations +, - ,*, /, ^ existent aussi pour les matrices.
Voir « help ops » pour plus d’informations sur les opérateurs
en général
Addition + et soustraction Pas d'ambiguïtés, s’opère élément par élément.
Les dimensions des matrices doivent être compatibles
Asmaa El Hannani
52
Opérations matricielles (+,-)
>> A = [1,2,3;4,5,6;7,8,9]
A=
1 2 3
4 5 6
7 8 9
>> B = [1 5]
>> A+A
ans =
2 4 6
8 10 12
14 16 18
>> A+B
??? Error using ==> plus
Matrix dimensions must agree.
Asmaa El Hannani
2
B=
1
5
53
Opérations matricielles (*)
L’opérateur de multiplication * permet de réaliser
soit
La multiplication d’un scalaire par un scalaire
La multiplication d’un scalaire par une matrice
La multiplication matricielle (matrice par matrice ou
vecteur par matrice)
Asmaa El Hannani
54
Opérations matricielles (*)
>> a
a=
3
>> a*A
ans =
3 6 9
12 15 18
21 24 27
Asmaa El Hannani
3
>> A*A
ans =
30 36 42
66 81 96
102 126 150
>> A*C
ans =
26
62
98
55
Opérations matricielles (*, .* , ^ , .^)
Si on souhaite multiplier deux à deux les éléments de deux
matrices, il faut utiliser l'opérateur « .* »
C'est la même chose pour l'opérateur ^ . Si A^2 signifie A*A
au sens matriciel, A.^2 signifie qu'on prend tous les éléments
de A élevés au carré.
>> A*A
ans =
30 36 42
66 81 96
102 126 150
>> A.*A
ans =
1 4 9
16 25 36
49 64 81
>> A^2
ans =
30 36 42
66 81 96
102 126 150
>> A.^2
ans =
1 4 9
16 25 36
49 64 81
Asmaa El Hannani
56
Opérations matricielles (/, ./ , \ , .\)
Il existe deux symboles, / et \ pour la division de matrices:
/ division à droite, c’est-à-dire si A,B sont deux matrices avec B
inversible, AB−1 s’obtient par A/B.
\ division à gauche, c’est-à-dire si A,B sont deux matrices avec B
inversible, B−1A s’obtient par B\A.
Les operateurs ./ et .\ sont utilisés respectivement pour les
division à droite et à gauche terme à terme.
>> A./B
>>A = [1 2 ; 3 4];
>> B = [5 6; 7 8];
Asmaa El Hannani
4
>> A/B
ans =
3.0000 -2.0000
2.0000 -1.0000
>> B\A
ans =
5.0000 4.0000
-4.0000 -3.0000
ans =
0.2000
0.4286
>> B.\A
ans =
0.2000
0.4286
0.3333
0.5000
0.3333
0.5000
57
Opérations booléennes
Les valeurs booléennes "vrai" et "faux" sont
respectivement représentées dans Matlab par les
valeurs 1 et 0.
Pour certaines fonctions (comme le IF), ce qui est
vrai est tout ce qui n’est pas égal à 0
Pour obtenir de l’aide sur les opérateurs
booléens de Matlab, lancer la commande
helpwin relop.
Asmaa El Hannani
58
Opérateur relationnels
Il existe six opérateurs relationnels pour la comparaison de
matrices de même dimension:
La comparaison se fait élément par élément et le résultat est
une matrice dont les éléments sont soit 1, soit 0 (matrice
logique).
Asmaa El Hannani
5
59
Opérateurs logiques
Il y a trois opérateurs logiques. Ils s'appliquent en général à
des matrices 0-1et agissent élément par élément. Le résultat est
une matrice 0-1.
Par opposition aux opérateurs & et | l'opérateur ~ est unitaire.
Asmaa El Hannani
60
Exemples
>> a=2;
>> b=3;
>> a<b
ans =
1
>> a>b
ans =
0
Asmaa El Hannani
6
>> a==b
ans =
0
>> (b>a) && (a~=3)
ans =
1
>> a~=b
ans =
1
>> (b<a) || (a==2)
ans =
1
61
Opérateurs
Opérandes
Operand
Opérateur
Operator
Arithmétique
Arithmetik
Relationnel
Relational
Logique
Logik
1
opérande
Résultat
Resultat
2
opérandes
N = Numériques / Numerik
L = Logiques / Logik
+*/^
X
-
X
<, <=,
>, >=,
==, ~=,
X
X
|| (OU)
&& (ET)
X
X
N
N
X
N
N
X
N
L
X
L
L
L
L
xor(a,b)
~ (négation)
(Negation)
X
X
Asmaa El Hannani
62
Fonctions relationnelle et logiques
Les fonctions any et all sont utiles lorsqu'elles sont utilisées en
liaison avec les opérateurs logiques.
Pour un vecteur, la fonction any renvoie 1 si un élément au
moins du vecteur est différent de zéro (0 sinon).
La fonction all renvoie 1 si tous les éléments du vecteur sont
différents de zéro (0 sinon).
>>A = [1 2 0 4]; any(A)
ans =
1
Asmaa El Hannani
7
>> all(A)
ans =
0
63
Fonctions relationnelle et logiques
Lorsque l'argument de ces deux fonctions est une matrice, elles
agissent sur les vecteurs colonnes de la matrice.
>>A = [1 0 4; 2 0 5; 3 0 0]
A=
104
205
300
>> any(A)
ans =
101
(1 si la colonne contient au moins 1 élément est ≠ 0)
>> all(A)
ans =
100
(1 si tous les éléments de la colonne sont ≠ 0)
Asmaa El Hannani
64
Fonctions relationnelle et logiques
Ci-après, la liste des fonctions relationnelles et logiques que
l'on trouve dans MATLAB:
Asmaa El Hannani
8
65
Transposition
Le caractère ' désigne la transposition d'une
matrice.
>> A = [1 2 3; 4 5 6; 7 8 10] , B = A‘
A=
123
456
7 8 10
B=
147
258
3 6 10
Asmaa El Hannani
66
Concaténation de matrices
Il est possible de créer de nouvelles matrices par concaténation
d’autres matrices.
La syntaxe est similaire à celle de la création de matrices à
partir de scalaires.
>> A = [1 2 3; 4 5 6; 7 8 10];
>> C = [3 ; 4 ; 5];
>> [A, C; 10,11,12,6
10,11,12,6]
ans =
1 2 3 3
4 5 6 4
7 8 9 5
10 11 12 6
Asmaa El Hannani
9
67
Extraction de sous-matrices
Lorsqu'on écrit A(1,3), on extrait en fait une sous-matrice de
dimensions 1X1.
Cette syntaxe est en fait extensible à des sous-matrices de plus
grande taille.
>> A(2,[1 3])
ans =
4 6
L’exemple ci-dessus signifie que l’on extrait les éléments 1 et
3 de la deuxième ligne. Ces éléments recomposent une matrice
1X2
Asmaa El Hannani
68
Permutations des éléments d’une matrice
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
123
456
789
Dans cet exemple, on crée une nouvelle matrice sur base de la
matrice A, dans laquelle on a permuté les lignes 2 et 3 et dans
laquelle l’ordre des colonnes est maintenant 3 1 2.
Asmaa El Hannani
10
>> A([1 3 2],[3 1 2])
ans =
3 1 2
9 7 8
6 4 5
69
Génération de vecteurs et
matrices
L’opérateur colon « : »
L'opérateur ":" (colon) est un opérateur permettant de générer
des suites de nombres.
La notation "a:b" signifie : générer un vecteur contenant tous
les nombres de a à b par pas de 1.
>> a = -2:4
a=
-2 -1 0 1 2 3 4
>> b = [-2:3]
b=
-2 -1 0 1 2 3
Asmaa El Hannani
11
>> b = [-2:3]‘
b=
-2
-1
0
1
2
3
>> a = 3:-1
a=
Empty matrix: 1-by-0
71
Génération avec l’opérateur colon « : »
La notation "a : h : b" signifie : générer un vecteur contenant
tous les nombres de a à b par pas de h. Le pas h peut être
positif ou négatif.
>> a = 3:-1:-2
a=
3 2 1 0 -1 -2
>> b = 0:0.2:1
b=
0 0.2000 0.4000 0.6000 0.8000 1.0000
Asmaa El Hannani
72
Matrices spéciales
La fonction « ones(m,n) » permet de générer une matrice de
dimension mXn composée de 1
La fonction « zeros(m,n) » permet de générer une matrice de
dimension mXn composée de 0
>> x = ones(2,3)
x=
1 1 1
1 1 1
Asmaa El Hannani
12
>> y = zeros(1,3)
y=
0 0 0
73
Matrices spéciales
Asmaa El Hannani
74
Extraction d’une sous-matrice avec
l’opérateur colon « : »
Soit la matrice A
>> A = [1 2 3 4; 5 6 7 8 ; 9* ones(1,4); zeros(1,4)]
A=
1234
5678
9999
0000
Pour extraire la sous matrice
3*3 composée des 3
premières lignes et colonnes
>> B = A(1:3,1:3)
B=
123
567
999
Asmaa El Hannani
13
Pour extraire la dernière colonne :
>> A(1:4,4)
ans =
4
8
9
0
75
Extraction d’une sous-matrice avec
l’opérateur colon « : »
Il existe un raccourci qui permet de spécifier d'un coup toutes
les lignes ou colonnes d'une matrice :
>> A(:,2)
ans =
2
6
9
0
Il faut lire A(toutes les lignes, deuxième colonne).
Remarque: Si vous voulez de l'aide sur l'opérateur ":", entrez
« help colon »
Asmaa El Hannani
76
Matrice vide
La commande suivante crée une matrice vide
A=[]
il devient alors possible d'utiliser cette matrice ultérieurement.
La commande Clear A a un effet différent, en ce sens qu'elle
efface la variable A de l'espace travail.
La fonction exist permet de vériffier l'existence d'une matrice
et la fonction isempty indique si la matrice est vide ou non.
Une matrice vide peut être utilisée pour détruire des lignes ou
des colonnes d'une matrice:
A(2,:) = [ ]
Asmaa El Hannani
14
(efface la deuxième ligne de A)
77
Fonctions matricielles
Fonctions matricielles élémentaires
Lorsque l'argument d'une fonction élémentaire est une matrice
la fonction s'applique aux éléments de la matrice.
Par exemple exp(A) ou sqrt(A) calcule l'exponentielle
respectivement la racine de chaque élément de la matrice A.
Asmaa El Hannani
15
79
Fonctions mathématiques élémentaires
Asmaa El Hannani
80
Fonctions mathématiques élémentaires
Asmaa El Hannani
16
81
Fonctions matricielles
Asmaa El Hannani
83
Fonctions agissant sur les colonnes
L'utilisation de ces fonctions permet souvent d‘éviter la programmation des boucles for.
Asmaa El Hannani
17
84
Manipulation de matrices
Asmaa El Hannani
85
Manipulation de matrices
Pour la manipulation de matrices il faut encore mentionner les
fonctions size et length qui renvoient la dimension d'une
matrice, respectivement la longueur d'un vecteur.
>>A = [1 2 3 4; 5 6 7 8 ; 9* ones(1,4); zeros(1,4); rand(1,4)];
>>size(A)
ans =
5 4
>>length (A(:,2)
ans =
5
Asmaa El Hannani
18
86
Chaîne de caractères
Chaîne de caractères
MATLAB stocke les chaînes de caractères ("string") sous forme de
vecteurs-ligne (type "char array") dans lesquels chaque caractère est un
élément du vecteur.
Une donnée de type chaîne de caractères est représentée sous la forme
d'une suite de caractères encadrée d'apostrophes simples (').
Il est possible de manipuler chaque lettre de la chaîne en faisant référence à
sa position dans la chaîne.
La concaténation de chaînes de caractères s'effectue selon les règles de
manipulation des vecteurs.
Si une chaîne de caractères doit contenir le caractère apostrophe (') celui-ci
doit être doublé dans la chaîne (ainsi pour affecter le caractère apostrophe
(') à une variable on devra écrire '''', soit 4 apostrophes ).
Asmaa El Hannani
19
88
Chaîne de caractères
>> ch1 = 'bon'
ch1 =
bon
>> ch2 = 'jour'
ch2 =
jour
>> whos
Name
Size
Bytes Class
ch1
1x3
6 char array
ch2
1x4
8 char array
Grand total is 7 elements using 14 bytes
>> ch = [ch1,ch2]
ans =
Bonjour
Asmaa El Hannani
20
>> ch(1), ch(7), ch(1:3)
ans =
b
ans =
r
ans =
bon
>> ch3 = 'soi';
>> ch = [ch(1:3), ch3, ch(7)]
ans =
bonsoir
>> ch4 = 'aujourd''hui'
ch4 =
aujourd'hui
89
Télécharger le fichier (PDF)
CIP42-C2-OpMatricielles.pdf (PDF, 499 Ko)