Génération rapide de tableaux

Matrices classiques

Il existe une fonction zeros qui crée une matrice de dimensions que l'on précise et ne contenant que des zéros.

Par exemple, pour créer une matrice \(N\) de 2 lignes et 500 colonnes, on peut l'initialiser ainsi :

1
>> N = zeros(2,500)

Pour pré-allouer la mémoire nécessaire, on peut définir des matrices de taille donnée ne contenant que des 0 avec la fonction zeros, ou ne contenant que des 1 avec la fonction ones. Il faut spécifier le nombre de lignes et le nombre de colonnes.

Attention

Pour engendrer des vecteurs lignes (ou de colonnes), il faut spécifier explicitement la dimension «1» pour le nombre de lignes (ou de colonnes).

Exemple

Voici deux exemples :

1
2
3
4
5
>> ones(2,3)
  
ans =
    1   1   1
    1   1   1
1
2
3
4
>> zeros(1,3)
  
ans =
    0   0   0

La matrice identité est obtenue avec la fonction eye. On spécifie seulement la dimension de la matrice (puisqu'elle est nécessairement carrée...).

1
2
3
4
5
6
>> eye(3)
  
ans =
    1   0   0
    0   1   0
    0   0   1

Il peut être utile de créer une matrice contenant des nombres pseudo-aléatoires. Deux fonctions principales existent pour cela.

rand(n,m) (pour random, aléatoire en anglais) génère des nombres réels aléatoires dans l'intervalle \([0, 1]\) et crée une matrice de dimensions \(n\) et \(m\) à préciser :

1
2
3
4
5
>> rand(2,3)
  
ans =
    0.1622 0.3112 0.1656
    0.7943 0.5285 0.6020

randi(intMax,n,m) permet de créer une matrice \(n{\, \rm x \,}m\) d'entiers tirés aléatoirement dans l'intervalle \([1,intMax]\) :

1
2
3
4
5
>> randi(20,2,3)
  
ans =
    9 6 12
    3 9 6

Complément

Il existe également une fonction diag permettant de créer des matrices diagonale par diagonale.

par exemple, si 1, 2, 3 et 4 sont les valeurs de la deuxième diagonale d'une matrice \(6 {\, \rm x \, } 6\) :

1
2
3
4
5
6
7
8
9
>> D = diag([1 2 3 4],2)
  
D =
    0 0 1 0 0 0
    0 0 0 2 0 0
    0 0 0 0 3 0
    0 0 0 0 0 4
    0 0 0 0 0 0
    0 0 0 0 0 0

Cette fonction est utile si l'on veut définir la matrice incidente d'un système algébrique...

Listes de valeurs

Cette notion est capitale pour la construction de courbes. Il s'agit de générer dans un vecteur une liste de valeurs équidistantes entre deux valeurs extrêmes.

Syntaxe

La syntaxe générale, utilisant l'opérateur : (colon en anglais), est :

variable = valeur début:pas:valeur fin

Cette syntaxe crée toujours un vecteur ligne.

Exemple

Par exemple pour créer un vecteur de valeurs équidistantes de 0.1 entre 0 et 1 :

1
2
3
4
5
6
7
>> x = 0:0.1:1
  
x =
Columns 1 through 7
    0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000
Columns 8 through 11
0.7000    0.8000    0.9000    1.0000

Conseil

Il est conseillé de mettre un point-virgule à la fin de ce type d'instruction pour éviter l'affichage fastidieux du résultat (cf. Suppression de l'affichage).

Exemple

Autre exemple pour créer 101 valeurs équi-réparties sur l'intervalle \([0, 2\pi]\)  :

1
>> x = 0: 2*pi/100 : 2*pi;

Remarque

La fonction linspace permet de créer le même type de liste que l'opérateur :, en offrant la possibilité du contrôle direct du nombre de valeurs. Ainsi, l'exemple précédant s'écrirait linspace(0,2*pi,100).

Remarque

Par défaut, si le pas n'est pas précisé, MATLAB crée une liste avec un pas valant 1.

1
2
3
4
>> L =1:10
  
L =
    1 2 3 4 5 6 7 8 9 10

Complément

À l'instar de linspace, la fonction logspace permet de créer une liste de valeurs réparties de manière logarithmique.