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[1]).
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.