Contenu principal

Créer, concaténer et étendre des matrices

La structure de données MATLAB® la plus basique est la matrice. Une matrice est un tableau rectangulaire à deux dimensions, d’éléments de données disposés dans des lignes et des colonnes. Ces éléments peuvent être des nombres, des valeurs logiques (true ou false), des dates et des heures, des chaînes de caractères, des valeurs categorical ou d’autres types de données MATLAB.

Même un nombre unique est stocké en tant que matrice. Par exemple, une variable contenant la valeur 100 est stockée en tant que matrice de 1 par 1 de type double.

A = 100;
whos A
  Name      Size            Bytes  Class     Attributes

  A         1x1                 8  double              

Construire une matrice de données

Si vous avez un jeu de données spécifique, vous pouvez disposer les éléments dans une matrice à l’aide de crochets. Une ligne de données unique comporte des espaces ou des virgules entre ses éléments, et les lignes sont séparées par un point-virgule. Par exemple, créez une ligne unique de quatre éléments numériques. La taille de la matrice obtenue est 1 par 4 parce qu’elle comporte une ligne et quatre colonnes. On appelle souvent une matrice de ce type un vecteur ligne.

A = [12 62 93 -8]
A = 1×4

    12    62    93    -8

sz = size(A)
sz = 1×2

     1     4

Créez maintenant une matrice comportant les mêmes nombres, mais disposez-les en deux lignes. Cette matrice comporte deux lignes et deux colonnes.

A = [12 62; 93 -8]
A = 2×2

    12    62
    93    -8

sz = size(A)
sz = 1×2

     2     2

Fonctions pour les matrices spécialisées

MATLAB propose de nombreuses fonctions qui aident à créer des matrices comportant certaines valeurs ou ayant une structure particulière. Par exemple, les fonctions zeros et ones créent des matrices comportant uniquement des zéros ou des uns. Les premier et deuxième arguments de ces fonctions sont respectivement le nombre de lignes et le nombre de colonnes de la matrice.

A = zeros(3,2)
A = 3×2

     0     0
     0     0
     0     0

B = ones(2,4)
B = 2×4

     1     1     1     1
     1     1     1     1

La fonction diag place les éléments d’entrée sur la diagonale d’une matrice. Par exemple, créez un vecteur ligne A comportant quatre éléments. Ensuite, créez une matrice de 4 par 4 dont les éléments de la diagonale sont les éléments de A.

A = [12 62 93 -8];
B = diag(A)
B = 4×4

    12     0     0     0
     0    62     0     0
     0     0    93     0
     0     0     0    -8

La fonction createArray (depuis R2024a) peut renvoyer des tableaux de presque n’importe quel type de données MATLAB. La fonction utilise la même syntaxe que zeros et ones pour définir la taille du tableau, mais elle offre également plusieurs options pour spécifier le contenu du tableau. Par exemple, vous pouvez spécifier la valeur de remplissage.

C = createArray(2,3,FillValue=duration(1,15,0))
C = 2×3 duration
   01:15:00   01:15:00   01:15:00
   01:15:00   01:15:00   01:15:00

Concaténer des matrices

Vous pouvez également utiliser des crochets pour ajouter des matrices existantes. Cette manière de créer une matrice s’appelle la concaténation. Par exemple, concaténez deux vecteurs ligne pour en faire un vecteur ligne encore plus long.

A = ones(1,4);
B = zeros(1,4);
C = [A B]
C = 1×8

     1     1     1     1     0     0     0     0

Pour disposer A et B en tant que deux lignes d’une matrice, utilisez le point-virgule.

D = [A; B]
D = 2×4

     1     1     1     1
     0     0     0     0

Pour concaténer plusieurs matrices, elle doivent être de tailles compatibles. Autrement dit, quand vous concaténez des matrices horizontalement, elles doivent comporter le même nombre de lignes. Quand vous les concaténez verticalement, elles doivent comporter le même nombre de colonnes.

Par exemple, créez deux matrices comportant deux lignes toutes les deux. Ajoutez la deuxième matrice horizontalement sur la première en utilisant des crochets.

A = ones(2,3)
A = 2×3

     1     1     1
     1     1     1

B = zeros(2,2)
B = 2×2

     0     0
     0     0

C = [A B]
C = 2×5

     1     1     1     0     0
     1     1     1     0     0

Une autre manière de concaténer des matrices compatibles est d’utiliser des fonctions de concaténation, telles que horzcat, vertcat et cat. Ajoutez la deuxième matrice horizontalement sur la première en utilisant horzcat.

D = horzcat(A,B)
D = 2×5

     1     1     1     0     0
     1     1     1     0     0

Générer une séquence numérique

La colon est une manière pratique de créer des matrices dont les éléments sont séquentiels et espacés uniformément. Par exemple, créez un vecteur ligne dont les éléments sont les entiers de 1 à 10.

A = 1:10
A = 1×10

     1     2     3     4     5     6     7     8     9    10

Vous pouvez utiliser l’opérateur point-virgule pour créer une séquence de nombres dans n’importe quelle plage, incrémentée de un.

A = -2.5:2.5
A = 1×6

   -2.5000   -1.5000   -0.5000    0.5000    1.5000    2.5000

Pour changer la valeur de l’incrément de séquence, spécifiez la valeur d’incrément entre les valeurs de plage de début et de fin, séparées par des deux-points.

A = 0:2:10
A = 1×6

     0     2     4     6     8    10

Pour décrémenter, utilisez un nombre négatif.

A = 6:-1:0
A = 1×7

     6     5     4     3     2     1     0

Vous pouvez également incrémenter par des valeurs non entières. Si une valeur d’incrément ne partitionne pas uniformément la plage spécifiée, MATLAB met automatiquement fin à la séquence à la dernière valeur qu’il peut atteindre avant de dépasser la plage.

A = 1:0.2:2.1
A = 1×6

    1.0000    1.2000    1.4000    1.6000    1.8000    2.0000

Étendre une matrice

Vous pouvez ajouter un ou plusieurs éléments à une matrice en les plaçant en dehors des limites d’indice de lignes et de colonnes existantes. MATLAB remplit automatiquement la matrice avec des zéros pour qu’elle reste rectangulaire. Par exemple, créez une matrice de 2 par 3 et ajoutez-y une ligne et une colonne supplémentaires en insérant un élément à la position (3,4).

A = [10  20  30; 60  70  80]
A = 2×3

    10    20    30
    60    70    80

A(3,4) = 1 
A = 3×4

    10    20    30     0
    60    70    80     0
     0     0     0     1

Vous pouvez également étendre la taille en insérant une nouvelle matrice en dehors des plages d’indice existantes.

A(4:5,5:6) = [2 3; 4 5]
A = 5×6

    10    20    30     0     0     0
    60    70    80     0     0     0
     0     0     0     1     0     0
     0     0     0     0     2     3
     0     0     0     0     4     5

Pour étendre la taille d’une matrice de manière répétée, comme dans une boucle for, la bonne pratique consiste à préallouer de l’espace pour la plus grande matrice que vous pensez créer. Sans préallocation, MATLAB doit allouer de la mémoire à chaque fois que la taille augmente, ce qui ralentit les opérations. Par exemple, préallouez une matrice qui contient jusqu’à 10 000 lignes et 10 000 colonnes en initialisant ses éléments à zéro.

A = zeros(10000,10000);

Si vous devez préallouer des éléments supplémentaires plus tard, vous pouvez l’étendre en affectant des plages d’indice hors de la matrice ou en concaténant une autre matrice préallouée à A.

Tableaux vides

Un tableau vide dans MATLAB est un tableau ayant au moins une longueur de dimension égale à zéro. Les tableaux vides sont utiles pour représenter le concept de « rien » de manière programmatique. Par exemple, supposons que vous souhaitez trouver tous les éléments d’un vecteur inférieurs à 0, mais qu’il n’y en a aucun. La fonction find renvoie un vecteur d’indices vide, ce qui indique qu’elle n’a pas trouvé d’éléments inférieurs à 0.

A = [1 2 3 4];
ind = find(A<0)
ind =

  1×0 empty double row vector

Beaucoup d’algorithmes contiennent des appels de fonction qui peuvent renvoyer des tableaux vides. Souvent, il est utile de permettre aux tableaux vides de traverser ces algorithmes en tant qu’arguments de fonction au lieu de les traiter comme un cas particulier. Si vous devez personnaliser le traitement des tableaux vides, vous pouvez les vérifier en utilisant la fonction isempty.

TF = isempty(ind)
TF = logical
   1

Voir aussi

Rubriques