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
oudebut: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)
).
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 1) :
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 dansm2
(sans l'afficher) - Enregistrer et afficher la matrice
m3
égale au produit dem2
par sa transposée - Afficher tous les termes strictement négatifs de
m3
(la valeur de ces termes) - Enregistrer et afficher dans
resultat
la matricem3
dans laquelle on a ôté la 1° ligne et 1° colonne - That's all folks : go on to the next lesson Leçon 3 : fichiers M et structures de contrôle
float
en CamL