====== Leçon 2 : Manipuler les vecteurs ======
===== Syntaxe =====
==== Vecteurs ====
* Dans la //command window//, taper t=[72 4.2,(10+2) 1E1]
Cela crée un vecteur ligne : les élements le constituant doivent être séparés par des espaces ou des virgules. On peut accéder au 2° terme du vecteur simplement t(2)
Si l'index dépasse la taille du tableau, alors on a le droit à une magnifique erreur du genre //??? Index exceeds matrix dimensions.// Malheureusement, ce message risque de s'afficher de nombreuses fois au cours de votre utilisation de Matlab :-(. t(7)
* On peut également générer des vecteurs de façon automatique : x=1:5
y=23:-2:1
La syntaxe est assez évidente : ''debut:fin'' ou ''debut:pas:fin''
==== Vecteurs colonnes ====
Si on tape
v=[1;1+i;2;5-2*i]
on obtient cette fois-ci **un vecteur colonne**. Pour transposer (ou plus exactement //transconjuguer//) un vecteur, il suffit d'utiliser l'apostrophe :
v'
==== Matrices ====
* Pour écrire une matrice, il suffit de combiner les 2 écritures : m=[1 2 3;4 5 6;7 8 9]
* L'accès aux valeurs est une fois de plus intuitif : val=m(1,3)
(on remarquera que contrairement aux langages genre Java/C, **la notation des tableaux commence à 1** !). On peut (dans de très rares cas) utiliser une autre numérotation val2=m(6)
(Numérptation qui commence en haut à gauche, qui parcourt les colonnes les unes après les autres : ici, ''m(6)=m(2,3)'').
* Rien de spécial donc, on peut donv voir les fonctions de génération de matrices eye(3)
eye(4,6)
ones(3,4)
zeros(2,3)
(essayer les lignes unes à unes). ''eye'' génère donc des matrices identités, la signification de ''ones'' et ''zeros'' étant évidente.
===== Calcul =====
Tous les opérateurs classiques fonctionnent pour les tableaux/matrices. En réalité, Matlab traite tous les objets comme des tableaux : un réel est ainsi un tableau de taille (1,1). Ainsi, lors du calcul de
1+2
, Matlab effectue l'addition des 2 matrices de taille (1,1).
==== Opérations arithmétiques sur les vecteurs ====
* Voilà quelques exemples pour illustrer ce que je viens d'écrire :
x=[1 2 3];
y=[4 5 6];
ad=x+y;
mu1=x'*y;
mu2=x*y';
divers=2*x-y;
(Regarder le contenu de chacune des variables créées). On remarquera également qu'il est impossible de calculer
x*y
pour des raisons de dimension.
* On peut vouloir utiliser les opérations terme-à-terme : pour cela on précède l'opération en question par un point ((un peu comme pour les ''float'' en CamL)) :
x=[1 2 3];
y=[4 5 6];
mu=x.*y;
div=y./x;
carre=x.^2;
==== Opérations sur les index ====
* Matlab se révèle très pratique lors de l'utilisation des tableaux. On peut en effet extraire d'une matrice n'importe quelle sous matrice: m=[1 2 3 4; 5 6 7 8; 9 10 11 12]
m(:,1)
m(2,:)
m(1:2,2:4)
m(1,2:end)
(Effectuer les opérations ligne par ligne)
* On peut même effectuer des recherches :
m=[1 2 3 4; 5 6 7 8; 9 10 11 12]
m>5
find(m>5)
m(find(m>5))
===== Exercices =====
Bon, comme c'est assez chaud, il y a pas mal d'exercices, de difficulté croissante :
- Générer une matrice aléatoire m=rand(4,5);
- Enregistrer dans une variable nommée ''somme'' la somme des termes de coordonnées (1,4), (2,3) et (4,5)
- Soustraire 2 fois la matrice identité à ''m'', et enregistrer le résultat obtenu dans ''m2'' (sans l'afficher)
- Enregistrer et afficher la matrice ''m3'' égale au produit de ''m2'' par sa transposée
- Afficher tous les termes strictement négatifs de ''m3'' (la valeur de ces termes)
- Enregistrer et afficher dans ''resultat'' la matrice ''m3'' dans laquelle on a ôté la 1° ligne et 1° colonne
- That's all folks : go on to the next lesson [[03controles]]