- a=[1 2 3;4 5 6] : créé une matrice de 2 lignes et 3 colonnes contenant les éléments 1 2 3 sur la première ligne et 4 5 6 sur la deuxième.
- b=[1 ;2 ;3] : Créé un vecteur colonne valant 1 2 3.
- a=[1,2,3] (identique a =[1 2 3]) : créé le vecteur ligne 1 2 3 .
- b=[a;1 2 3] : Créé une matrice dont la première ligne vaut a et la deuxième ligne vaut 1 2 3.
- a=1:5 : Créé un vecteur valant 1 2 3 4 5.
- a=1:2:10 : Créé un vecteur valant 1 3 5 7 9.
- a=[1 3:5] : Créé un vecteur valant 1 3 4 5.
- a=(1:3)’ : donc réalise un vecteur colonne valant 1 2 3 (' permet de faire la transposée).
- a=zeros(3) : Créé une matrice de 0 de taille 3x3.
- a=ones(2,4) : Créé une matrice de 1 de taille 2x4.
- a=zeros(2,3,4) : Créé une matrice de 0 de taille 2x3x4.
- a=linspace(1,10,5) Créé un vecteur de 5 éléments linéairement réparti entre 1 et 10.
- a=logspace(1,10,5) Créé un vecteur de 5 éléments logarithment réparti entre 1 et 10.
1 2 3 4 5 6 7 8 9
2 4 6 8 0 1 2 3 4
2 2 2 2 2 2 2 2 2
Solution : (Sélectionner pour voir la solution)
Note: La commande zeros est très souvent utilisée pour déclarer une matrice. En Matlab, les variables ne sont pas déclarées. Cependant lorsqu'on affecte des valeurs à un vecteur ou une matrice, celui ci s'agrandit au fur et à mesure et le temps d'exécution de la fonction peut alors être fortement augmenté. Il est donc recommandé d'utiliser la commande zeros pour initialiser la matrice à la bonne dimension. ## ##Accès aux éléments et sous-matrices##608## Soit la matrice a=[1 2 3;4 5 6] et le vecteur b=[1 2 3].
Noter que les indices des matrices Matlab commence à 1 (et non 0 comme en C).
- a(1,2)=4 : Affecte 4 à l'élément de la première ligne et deuxième colonne de la matrice a.
- b(3)=4 : Affecte 4 au troisième élément du vecteur b.
- a(1,:) : Sous matrice correspondant à la première ligne.
- a(:,2) : Sous matrice correspondant à la deuxième colonne.
- a(2,2:end) : Sous matrice correspondant à la deuxième ligne, colonne 2 à fin(soit 3).
- a(2,[1 end-1]) : Sous matrice correspondant à la deuxième ligne, colonne 1 et fin-1(soit 2).
- a([2 3],[1 2])=[1 2;3 4] : Affecte [1 2;3 4] à la sous matrice formé par les lignes 2 et 3, colonne 1 et 2.
- a(:) : Vecteur colonne formé par tous les éléments de a.
1 2 3 4 5 6 7 8 9
2 4 6 8 0 1 2 3 4
2 2 2 2 2 2 2 2 2
et inverser l'ordre des colonnes sur les éléments en gras (toujours en une seule ligne de commande). C'est à dire que l'on doit avoir A=
8 7 6 5 4 3 2 1 9
3 2 1 0 8 6 4 2 4
2 2 2 2 2 2 2 2 2
Solution : (Sélectionner pour voir la solution)
Logical indexing :
Il est possible de construire une sous matrice en appliquant un masque à la matrice principale. Exemple :
v=[1 2 3 4];
v(logical([1 0 1 0])) retourne [1 3]
v(v>2) retourne [3 4] (Equivalent à v(find(v>2)) mais plus rapide)
## ##Opérations sur les matrices##608## Prenons A=[1+i 2+i 0;1 2 3;1 i 0] une matrice complexe et B=[1 2 3;4 5 6;7 8 9].
- A' : Adjoint de A (Conjugué de la transposée).
- A.' : transposée de A.
- C=B^-1; : Inverse de B.
- C*B : Produit matriciel.
- C.*B : Produit terme à terme.
- C+B : Somme.
- C^2 : C*C (puissance matricielle).
- C.^B : Puissance terme à terme.
- C./B : division terme à terme.
- C\B : équivalent à B^-1*C mais plus rapide car ne calcul pas l'inverse de B.
- B/C : Equivalent à (C'\B')'.
Exemple : Soit a un vecteur quelconque (ex. a=rand(1,100)) et x un reel (ex x=2;)
En utilisant les opérations vectorielles, écrire de façon la plus concise possible une séquence d’instructions qui évalue le polynôme :
Solution : (Sélectionner pour voir la solution)
## ##Fonctions usuelles sur les matrices##608## Prenons B=[1 2 3;4 5 6;7 8 9], v=[1 0 1];
- size(B) : Vecteur correspond à la taille de chacune des dimensions de B (ici [3 3]).
- size(B,1) : Vecteur correspond à la taille de la première dimension de B.
- length(v) : Nombre d'élément dans v (Souvent utiliser quand v peut être un vecteur ligne ou colonne).
- length(B) : maximum entre le nombre de lignes et le nombre de colonne (ici 3)
- f=diag(B) : Vecteur colonne contenant la diagonal de B.
- diag(f) : Matrice diagonal dont la diagonal correspond à f.
- det(B) : Déterminant.
- norm(B) : Norme.
- rank(B) : Rang.
- trace(B) : Rang.
- sum(B) : Somme
- prod(B) : Produit
- mean(B) : Moyenne
- std(B) : Ecart type
- var(B) : Variance (sans biais (/(N-1)))
- var(B,1) : Variance statistique (/N)
- max(B) : maximum
- min(B) : minimum
- cumsum(v) : Somme cumulé (ici [1 1 2]).
- cumprod(v) : Produit cumulé (ici [1 0 0]).
- eye(5) : Renvoie la matrice identité de dimension 5x5.
- randn(3,4) : Renvoie 3x4 dont chaque terme suit une variable aléatoire gaussienne.
- [P,D]=eig(C) : Diagonalisation de C : P*D*P^-1
- null(h) : Matrice orthogonal. (h*null(h)=0)
- pinv(h) : Pseudo inverse.
- sort(R) : Trie les éléments de chacune des colonnes indépendamment.
- sortrows(R,3) : Trie les lignes par rapport aux éléments de la troisième colonne.
- find(g==5) : Donne les positions des éléments de g qui sont égaux à 5 (find est une fonction qui renvoie les positions des éléments non nulles. Dans le cas ou l'on cherche à obtenir g(find(g==5)) le "logical indexing" est généralement plus rapide).
- lu : Décomposition LU.
- chol : Cholesky.
- qr : Décomposition QR.
- qzhess : Hessenberg.
- schur : Schur.
- housh : Householder.
- krylov : Krylov.
- b=(g>=5) : renvoie un vecteur b(ou une matrice) tel que b(i)=g(i)>=5
- mat3=(mat1==mat2) : Renvoie une matrice mat3 de même dimension que mat1 et mat2 avec mat3(i,j)=mat1(i,j)==mat2(i,j)
- b=(g==5 | g==3) : b(i)=(g(i)==5 | g(i)==3) (même principe pour &)
- find(g==5) : Donne les positions des éléments de g qui sont égaux à 5 (find est une fonction qui renvoie les positions des éléments non nulles)
- isequal(mat1,mat2) : Renvoie 1 si tous les membres de mat1 sont égaux à ceux de mat2 sinon 0
- mat3 = ismember(mat1,mat2) : mat3(i,j)=1 si mat1(i,j) est dans mat2 (sinon 0)
- any(vec) : Renvoie 1 si un ou plusieurs éléments de vec sont 1 (sinon 0)
- all(vec) : Renvoie 1 si tous les éléments de vec sont 1 (sinon 0)
- reshape([1 2 3 4 5 6],2,3) : renvoie [1 2 3;4 5 6] (Recréé une matrice à partir d'un vecteur).
- fliplr([1 2 3;4 5 6]) : renvoie [3 2 1;6 5 4] (replace les éléments de droite à gauche).
- flipud([1 2 3;4 5 6]) : renvoie [4 5 6;1 2 3] (replace les éléments de bas en haut).
- flipdim : Replace les éléments dans l'ordre inversé suivant la dimension spécifiée.
- permute : Permet de permuter les dimensions d'une matrice (généralisation de la transposée en dimension >2)
- ipermute : Permet de faire l'opération inverse de permute
- tril : Extrait la matrice triangulaire inférieure
- triu : Extrait la matrice triangulaire supérieure
- E=unique(mat) : Renvoie un vecteur colonne contenant tous les élément triés de mat mais une et une seule fois (Ce qui permet de considerer après E comme un ensemble d'élément)
- intersect(var1,var2) : Intersection (trié)
- setdiff(var1,var2) : Différence
- union(var1,var2) : Union