Section : Vecteurs et matrices
Précédent : A savoir pour commencer
Suivant : Opérations
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 . 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 . 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 |
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 .
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)