O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa
Chapitre 4
Les Tableaux sous Matlab
Listes et vecteurs
Les listes et les vecteurs sont des tableaux particuliers. vecteur Un vecteur est un tableau qui ne comporte quune seule colonne ; une liste (ou vecteur-ligne) est un tableau qui ne comporte quune seule ligne. MATLAB MATLAB propose un certain nombre de fonctions qui simplifient lusage des listes et des vecteurs.
1.Construction de listes : On peut définir la valeur dune liste en donnant la suite de ses éléments séparés par des espaces (ou des virgules), la liste étant délimitée par des crochets. v i p v f On peut crée une liste dont les éléments constituent une progression arithmétique de valeur initiale v i, de pas p et dont tous les termes sont inférieurs ou égaux à v f. v i v f Lorsque la valeur du pas est omise (v i : v f ), la valeur du pas est fixé par défaut à un.
1.Construction de listes : Exemples Exemples l1 = [ ] l1 = l2 = 1 : 4 l2 = l3 = 1 : 5.6 l3 = l4 = 1.5 : 0.3 : 2.5 l4 =
1.Construction de listes : linspace v i v f n v i v f. La fonction linspace (v i, v f, n) crée une liste de n éléments uniformément répartis entre v i et v f. Exemples Exemples l4 = linspace(1, 4,4) l4 = l4 = linspace(1, 4,8) l4 =
2.Construction de Vecteurs : On peut définir la valeur dun vecteur en tapant entre deux crochets la suite de ses éléments séparées par des points-virgules. La transposée dune liste est un vecteur. () On peut donc utiliser les expressions et les fonctions définies pour les listes en les transposant ensuite avec lopérateur () length la fonction length retourne le nombre déléments ou longueur de la liste ou du vecteur.
2. Construction de Vecteurs : Exemples Exemples v3 = (1.5 : 0.3 : 2.5)' v3 = l = [ ] ; length(l) ans = 4 v = [ ]' ; length(v) ans = 5
2.Construction de Vecteurs : norm(v,p) R n La fonction norm(v,p) permette de calculer les normes usuelles dun vecteur (ou dun vecteur-ligne) de R n
2. Construction de Vecteurs : Exemples norm(v,p) Exemples La fonction norm(v,p) v=[1,2,2]; norm(v,1) ans = 5 norm(v,2) ans = 3 norm(v,inf) ans = 2
3. Accès aux éléments dune liste ou dun vecteur : ks s(k). On accède à lélément dindice k de la liste ou du vecteur s par s(k). le premier élément de la liste ou du vecteur étant indicé par 1. Laccès en lecture à un élément dindice négatif ou dont la valeur est strictement supérieure à la longueur de la liste (ou du vecteur), conduit à une erreur.
3. Accès aux éléments dune liste ou dun vecteur : Exemples >> s = [1 3 5] ; s(1) ans = 1 >> s(3) ans = 5 >> s(4) ??? Attempted to access s(4); index out of bounds because numel(s)=3.
3. Accès aux éléments dune liste ou dun vecteur : Par contre, il est possible daffecter une valeur à un élément dune liste ou dun vecteur dont lindice dépasse la longueur de la liste ou du vecteur. Exemple Exemple s = [1 3 5] ; length(s) ans = 3 s(6) = 6 ; s s = length(s) ans = 6
4. Extraction de sous-listes ou de sous-vecteurs: s l 1length(s) Soient s une liste (ou un vecteur) non-vide et l une liste dentiers dont la valeur est comprise entre 1 et la longueur length(s) de la liste (ou du vecteur). s(l)s l s(l) est la liste (ou le vecteur) formé par les éléments de s dont lindice appartient à l. Exemple Exemple s = [ ] ; l = [1 3 5] ; s1 = s(l) s1 = 1 5 0
Les Tableaux (Matrices)
Matrice nm Une Matrice est un tableau à deux dimensions caractérisé par le nombre de lignes (n) et nombre de colonnes (m) ; ; Pour définir la valeur dun tableau (matrice), il suffit de concaténer en colonne (séparateur ;) des listes de nombres de même longueur ; n=m Une Matrice est dite carrée si le nombre de lignes égale au nombre de colonnes (n=m); [ ] On utilise les crochets [ et ] pour définir le début et la fin de la matrice
1.Construction dun tableau (matrice) : pour définir une variable M contenant la matrice : on écrira : >> M=[ ] M = Ou : >> M = [1,2,3;11,12,13;21,22,23] >> M = [1 2 3; ; ]
2. Accès à un élément dun tableau Il suffit dentre le nom du tableau suivi entre parenthèses des indices dont on veut lire ou écrire la valeur. Exemple si je veux la valeur de M 32 : on écrira : >> M(3,2) ans = 22 Pour modifier seulement un élément dun tableau, on utilise le même principe. >> M(3,2)=32 M =
2. Accès à un élément dun tableau Exemple Exemple : Que fait la commande suivante : >> P(2,3) = 3Réponse: P = MATLAB construit automatiquement un tableau suffisamment grand pour arriver jusquaux indices spécifiés, et met des zéros partout sauf au terme considéré. Contrairement aux langages classiques, inutile de dimensionner les tableaux à lavance : ils se construisent au fur et à mesure !
3. Extraction de sous-tableaux: (:) Il est souvent utile dextraire des blocs dun tableau existant. Pour cela on utilise le caractère (:). Il faut spécifier pour chaque indice la valeur de début et la valeur de fin. La syntaxe générale est donc la suivante: tableau(début :fin, début :fin) Ainsi pour extraire le bloc on tapera : >> M(1:2,2:3) ans =
3. Extraction de sous-tableaux: (:) On plus, si on utilise le caractère (:) seul, ¸ca veut dire prendre tous les indices possibles. Exemples : Exemples : >> M(1:2,:) ans = >> M(2,:) ans =
3. Extraction de sous-tableaux avec les fonctions tril et triu: tril triu Les fonctions tril et triu extraient respectivement les termes situés sur et au-dessous de la k ieme diagonale, et les termes situés sur et au-dessus de la k ieme diagonale. Soit le tableaux suivant :
3. Extraction de sous-tableaux avec les fonctions tril et triu: >>tril(t,1) ans = >>tril(t,-1) ans = >>tril(t,0) ans =
3. Extraction de sous-tableaux avec les fonctions tril et triu: >>triu(t,1) ans = >>triu(t,-1) ans = >>triu(t) ans =
4. Construction de tableaux par blocs: (:) On plus, si on utilise le caractère (:) seul, ¸ca veut dire prendre tous les indices possibles. Vous connaissez ce principe en mathématiques. Par exemple, à partir des matrices et vecteurs précédemment définis, on peut définir la matrice qui est une matrice 4x4. Pour faire ¸ca sous MATLAB, on fait comme si les blocs étaient des scalaires, et on écrit tout simplement :
4. Construction de tableaux par blocs: >> N=[M V U 0] Avec U = [1 2 3] V=[11;12;13] M = [1 2 3; ; ] N = ou bien en utilisant le caractère >> N=[M V; U 0]
4. Construction de tableaux par blocs: La syntaxe citée précédemment est très utilisée pour allonger des vecteurs ou des matrices, par exemple si je veux ajouter une colonne à M, constituée par V : >> M=[M V] M = Si je veux lui ajouter une ligne, constituée par U : >> M = [M;U] M =
5. Opérations sur les tableaux: 5.1. Addition et soustraction 5.1. Addition et soustraction Les deux opérateurs sont les mêmes que pour les scalaires. A partir du moment ou les deux tableaux concernés ont la même taille. Le tableau résultant est obtenu en ajoutant ou soustrayant les termes de chaque tableau Multiplication, division et puissance terme à terme 5.2. Multiplication, division et puissance terme à terme.*./.^ Ces opérateurs sont notés.*,./ et.^ (attention `a ne pas oublier le point). Ils sont prévus pour effectuer des opérations termes à terme sur deux tableau de même taille.
5. Opérations sur les tableaux: 5.3. Multiplication, division et puissance au sens matriciel 5.3. Multiplication, division et puissance au sens matriciel * Puisque lon peut manipuler des matrices, il parait intéressant de disposer dun multiplication matricielle. Celle-ci se note simplement * et ne doit pas être confondu avec la multiplication terme à terme. A*BA B Il va de soi que si lon écrit A*B le nombre de colonnes de A doit être égal au nombre de lignes de B pour que la multiplication fonctionne. A/B A B La division a un sens vis-à-vis des inverses de matrices. Ainsi A/B représente A multiplié (au sens des matrices) à la matrice inverse de B.
5. Opérations sur les tableaux: 5.3. Multiplication, division et puissance au sens matriciel 5.3. Multiplication, division et puissance au sens matriciel \A\B AB Il existe aussi une division à gauche qui se note \. Ainsi A\B signifie linverse de A multiplié par B. n ème n La puissance n ème dune matrice représente cette matrice multipliée n fois au sens des matrices par elle-même..** Pour bien montrer la différence entre les operateurs.* et *, un petit exemple faisant intervenir la matrice identité multipliée à la matrice
5. Opérations sur les tableaux: 5.3. Multiplication, division et puissance au sens matriciel 5.3. Multiplication, division et puissance au sens matriciel Exemple : la multiplication au sens des matrices : [1 0; 0 1] * [1 2; 3 4] ans = la multiplication terme à terme : [1 0; 0 1].* [1 2; 3 4] ans =
5. Opérations sur les tableaux: 5.4. Transposition 5.4. Transposition () Lopérateur transposition est le caractère () et est souvent utilisé pour transformer des vecteurs lignes en vecteurs colonnes et inversement Synthèse 5.5. Synthèse Le tableau suivant résume les différents operateurs applicables aux matrices.
5. Opérations sur les tableaux:
5. Tableaux (Matrices ) particuliers: Dans le tableaux suivant on trouve quelques fonctions permettent de construire des tableaux correspondant aux matrices usuelles comme: matrice didentité, matrice nulle, ainsi que des matrices utiles dans le domaine danalyse matricielle. eyeoneszeros nm Les fonctions eye, ones et zeros peuvent ˆêtre appelées avec deux arguments entiers n et m.
6. Matrices creuses: Les matrices creuses (sparse matrix) sont des matrices caractérisées par un nombre très important déléments nuls. Dun point de vue informatique, un traitement particulier de ces matrices permet un gain en place mémoire et en coût calculatoire.
V OUS AVEZ DES QUESTIONS ?