Section : Vecteurs et matrices
Précédent : A savoir pour commencer
Suivant : Opérations

Construire des matrices

On peut saisir manuellement des (petites) matrices. Les coefficients d'une même ligne sont séparés par des blancs ou des virgules (préférable). les lignes sont séparées par des points-virgules. La transposée est notée par une apostrophe. Elle permet en particulier de changer un vecteur ligne en un vecteur colonne.
x=[1,2,3]
x'
A=[1,2,3;4,5,6;7,8,9]
A'
On a souvent besoin de connaître les dimensions d'une matrice (par exemple pour vérifier si un vecteur est une ligne ou une colonne). On utilise pour cela la fonction size.
La fonction size
size(A) nombre de lignes et de colonnes
size(A,"r") nombre de lignes
size(A,"c") nombre de colonnes
size(A,"*") nombre total d'éléments
help size
A=[1,2,3;4,5,6]
size(A)
size(A')
size(A,"r")
size(A,"c")
size(A,"*")
Les commandes d'itération permettent de construire des vecteurs de nombres séparés par des pas positifs ou négatifs. La syntaxe de base est [deb:pas:fin], qui retourne un vecteur ligne de valeurs allant de deb à fin par valeurs séparées par des multiples de pas. Les crochets sont facultatifs. Par défaut, pas vaut $ 1$. Selon que fin-deb est ou non un multiple entier de pas, le vecteur se terminera ou non par fin. Si l'on souhaite un vecteur commençant par deb et se terminant par fin avec n coordonnées régulièrement espacées, il est préférable d'utiliser linspace(deb,fin,n).
v=0:10
v=0.10       
v=[0:10]
v=[0;10]
v=[0,10]     // attention aux confusions
v=[0:0.1:1]
size(v)
v=[0:0.1:0.99]
size(v)
v=[0:0.15:1]
v=[1:-0.15:0]
v=linspace(0,1,10)
v=linspace(0,1,11)
L'élément de la i-ième ligne, j-ième colonne de la matrice A est A(i,j). Si v et w sont deux vecteurs d'entiers, A(v,w) désigne la sous-matrice extraite de A en conservant les éléments dont l'indice de ligne est dans v et l'indice de colonne dans w. A(v,:) (respectivement : A(:,w)) désigne la sous-matrice formée des lignes (resp. : des colonnes) indicées par les coordonnées de v (resp. : w). Les coordonnées sont numérotées à partir de $ 1$. Le dernier indice peut être désigné par $.
A=[1,2,3;4,5,6]
A(2,2)
A(:,2)
A(:,[1,3])
A(1,$)
A($,2)
On peut modifier un élément, une ligne, une colonne, pourvu que le résultat reste une matrice. Pour supprimer des éléments, on les affecte à la matrice vide : [].
A=[1,2,3;4,5,6]
A(1,3)=30
A(:,[1,3])=[10,20]       // erreur
A(:,[1,3])=[10,30;40,60]
A(:,[1,3])=0             
A(:,2)=[]
Il suffit d'une coordonnée pour repérer les éléments d'un vecteur ligne ou colonne.
v=[1:6]
v(3)
v(4)=40
v([2:4])=[]
w=[1:6]'
w([2,4,6])=0
Faire appel à un élément dont les coordonnées dépassent celles de la matrice provoque un message d'erreur. Cependant on peut étendre une matrice en affectant de nouvelles coordonnées, au-delà de sa taille. Les coordonnées intermédiaires sont nulles par défaut.
A=[1,2,3;4,5,6]
A(0,0)          // erreur
A(3,2)          // erreur
A(3,2)=1        
v=[1:6]
v(8)            // erreur
v(8) = 1
Vecteurs
x:y nombres de x à y par pas de 1
x:p:y nombres de x à y par pas de p
linspace(x,y,n) n nombres entre x et y
v(i) i-ème coordonnée de v
v($) dernière coordonnée de v
v(i1:i2) coordonnées i1 à i2 de v
v(i1:i2)=[] supprimer les coordonnées i1 à i2 de v
Matrices
A(i,j) coefficient d'ordre i,j de A
A(i1:i2,:) lignes i1 à i2 de A
A($,:) dernière ligne de A
A(i1:i2,:)=[] supprimer les lignes i1 à i2 de A
A(:,j1:j2) colonnes j1 à j2 de A
A(:,$) dernière colonne de A
A(:,j1:j2)=[] supprimer les colonnes j1 à j2 de A
diag(A) coefficients diagonaux de A
Si A, B, C, D sont 4 matrices, les commandes [A,B], [A;B], [A,B;C,D] retourneront des matrices construites par blocs, pourvu que les dimensions coïncident. En particulier, si v et w sont deux vecteurs lignes, [v,w] les concatènera, [v;w] les empilera.
A=[1,2,3;4,5,6]
M=[A,A]
M=[A;A]
M=[A,A']                 // erreur
M=[A,[10;20];[7,8,9],30]  
M=[A,[10,20];[7,8,9],30] // erreur
Des fonctions prédéfinies permettent de construire certaines matrices particulières.
Matrices particulières
zeros(m,n) matrice nulle de taille m,n
ones(m,n) matrice de taille m,n dont les coefficients valent 1
eye(m,n) matrice identité de taille min(m,n), complétée par des zéros
rand(m,n) matrice de taille m,n à coefficients aléatoires uniformes sur $ [0,1]$
diag(v) matrice diagonale dont la diagonale est le vecteur v
triu(A) annule les coefficients au-dessous de la diagonale
tril(A) annule les coefficients au-dessus de la diagonale
toeplitz matrices à diagonales constantes
testmatrix carrés magiques et autres
d=[1:6]
D=diag(d)
A=[1,2,3;4,5,6]
[A,zeros(2,3);rand(2,2),ones(2,4)]
help testmatrix
M=testmatrix("magi",3)
help toeplitz
M=toeplitz([1:4],[1:5])
triu(M)
tril(M)
Les commandes zeros, ones, eye, rand retournent des matrices dont la taille peut être spécifiée soit par un nombre de lignes et de colonnes, soit par une autre matrice. Si un seul nombre est donné comme argument, ce nombre est compris comme une matrice de taille $ 1\times 1$.
A=ones(5,5)      // 5 lignes et 5 colonnes
rand(A)          // idem
eye(A)           // idem 
eye(5)           // 1 ligne et 1 colonne
ones(5)          // idem
rand(size(A))    // 1 ligne et 2 colonnes
On dispose de deux moyens pour réordonner des coefficients en une nouvelle matrice. La commande A(:) concatène toutes les colonnes de A en un seul vecteur colonne (on peut jouer avec la transposée pour concaténer les vecteurs lignes). La fonction matrix crée une matrice de dimensions spécifiées, pourvu qu'elles soient compatibles avec l'entrée. On peut même créer avec matrix des tableaux à plus de deux entrées (hypermatrices), ce qui ne sert que rarement.
v=[1:6]
help matrix
A=matrix(v,2,2)    // erreur
A=matrix(v,3,3)    // erreur
A=matrix(v,2,3)
A=matrix(v,3,2)'
w=A(:)
A=A'; w=A(:)'
H=matrix([1:24],[2,3,4])
Remarquons enfin qu'un peu d'algèbre permet souvent de construire des matrices particulières à peu de frais, en utilisant le produit et la transposée. Le produit de Kronecker, kron ou .*., peut également être utile.
A=ones(4,1)*[1:5]
A=[1:4]'*ones(1,5)
B=[1,2;3,4]
kron(B,B)
kron(B,eye(B))
kron(eye(B),B)
kron(B,ones(2,3))
kron(ones(2,3),B)


Section : Vecteurs et matrices
Précédent : A savoir pour commencer
Suivant : Opérations

© B. Ycart (2001)