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 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 :

  1. Générer une matrice aléatoire
    m=rand(4,5);
  2. Enregistrer dans une variable nommée somme la somme des termes de coordonnées (1,4), (2,3) et (4,5)
  3. Soustraire 2 fois la matrice identité à m, et enregistrer le résultat obtenu dans m2 (sans l'afficher)
  4. Enregistrer et afficher la matrice m3 égale au produit de m2 par sa transposée
  5. Afficher tous les termes strictement négatifs de m3 (la valeur de ces termes)
  6. Enregistrer et afficher dans resultat la matrice m3 dans laquelle on a ôté la 1° ligne et 1° colonne
  7. That's all folks : go on to the next lesson Leçon 3 : fichiers M et structures de contrôle
1) un peu comme pour les float en CamL
matlab/02vecteurs.txt · Dernière modification: 2009/08/03 20:25 (édition externe)
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki