====== 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]]