MATLAB Trier les lignes

Ammar Ali 18 aout 2022
  1. Utilisez la fonction sortrows() pour trier les lignes de la matrice dans MATLAB
  2. Utilisez la fonction sortrows() pour trier les lignes du tableau dans MATLAB
MATLAB Trier les lignes

Ce didacticiel abordera le tri des lignes présentes dans une matrice à l’aide de la fonction sortrows() dans MATLAB. Dans l’analyse et le traitement des données, le tri est essentiel car il facilitera l’analyse et le traitement des données lors du tri.

Par exemple, si nous avons une table de patients dans un hôpital et que nous voulons trouver une personne en particulier, et si la table n’est pas triée, nous devrons parcourir toutes les données pour trouver une personne. Mais si le tableau est trié selon la première lettre des noms des patients, on peut facilement voir la personne car maintenant on n’a plus qu’à regarder les noms à partir d’une lettre spécifique.

Utilisez la fonction sortrows() pour trier les lignes de la matrice dans MATLAB

On peut utiliser la fonction sortrows() de Matlab pour trier les lignes présentes dans une matrice. La première syntaxe de la fonction sortrows() est donnée ci-dessous :

output = sortrows(matrix)

La syntaxe ci-dessus triera les lignes de la matrice donnée en fonction des éléments de la première colonne ou du premier élément de chaque ligne dans l’ordre croissant. Si deux lignes ou plus ont le même premier élément, la fonction comparera leurs deuxièmes éléments, et ainsi de suite.

Par exemple, trions les lignes d’une matrice en utilisant la syntaxe ci-dessus. Voir le code ci-dessous.

clc
clear

My_matrix = [5:10;2:7;3:8]
New_matrix = sortrows(My_matrix)

Production:

My_matrix =

     5     6     7     8     9    10
     2     3     4     5     6     7
     3     4     5     6     7     8


New_matrix =

     2     3     4     5     6     7
     3     4     5     6     7     8
     5     6     7     8     9    10

Nous avons créé une matrice 3 par 6 dans le code ci-dessus et trié ses lignes. Nous pouvons comparer les deux matrices dans la sortie pour vérifier le résultat.

Si nous regardons la première colonne de la matrice My_matrix, nous pouvons voir que la deuxième ligne viendra en premier car le premier élément de la deuxième ligne est le plus petit, et la première ligne avec la première valeur la plus élevée viendra en dernier dans la production. Nous pouvons passer une matrice de n’importe quelle taille à l’intérieur de la fonction sortrows().

La seconde syntaxe de la fonction sortrows() est donnée ci-dessous :

output = sortrows(matrix, column)

Nous pouvons utiliser la syntaxe ci-dessus pour définir le numéro de colonne de la matrice d’entrée, qui sera utilisé pour trier les lignes présentes dans la matrice donnée. Si nous ne transmettons pas le numéro de colonne, la fonction utilisera la première colonne de la matrice pour trier les lignes.

Nous pouvons également passer plusieurs numéros de colonne dans un vecteur, et la fonction triera les lignes en fonction du premier numéro de colonne. Si deux ou plusieurs des mêmes valeurs sont présentes dans la colonne actuelle, la fonction passera au numéro de colonne suivant présent dans le vecteur donné.

Par exemple, trions les lignes d’une matrice en utilisant les deuxième et troisième colonnes pour le tri. Voir le code ci-dessous.

clc
clear

My_matrix = [5:10;3:8;7:-1:2]
New_matrix = sortrows(My_matrix,[3 4])

Production:

My_matrix =

     5     6     7     8     9    10
     3     4     5     6     7     8
     7     6     5     4     3     2


New_matrix =

     7     6     5     4     3     2
     3     4     5     6     7     8
     5     6     7     8     9    10

Si nous regardons les troisième et quatrième colonnes de la matrice New_matrix, nous pouvons voir que les éléments des troisième et quatrième colonnes sont triés. Si nous ne transmettons qu’un seul numéro de colonne avec les mêmes valeurs présentes, la fonction ne changera pas la position des lignes.

La troisième syntaxe de sortrows() est donnée ci-dessous.

output = sortrows(matrix, column, direction)

Dans la syntaxe ci-dessus, la direction définira l’ordre dans lequel nous voulons trier les lignes, comme ascend pour l’ordre croissant des lignes et descend pour l’ordre décroissant des lignes. Par défaut, l’ordre est défini sur ordre croissant.

Dans le cas de plusieurs numéros de colonne, nous pouvons également ajouter plusieurs directions en tant que type de données de cellule qui sera utilisé pour chaque colonne.

Par exemple, si nous définissons deux numéros de colonne et deux directions, la première colonne sera triée selon la première direction. S’il y a les mêmes valeurs, la fonction se déplacera vers la deuxième colonne et triera les lignes selon la deuxième direction.

Par exemple, trions la matrice ci-dessus selon deux directions. Voir le code ci-dessous.

clc
clear

My_matrix = [5:10;3:8;7:-1:2]
New_matrix = sortrows(My_matrix,[3 4],{'ascend' 'descend'})

Production:

My_matrix =

     5     6     7     8     9    10
     3     4     5     6     7     8
     7     6     5     4     3     2


New_matrix =

     3     4     5     6     7     8
     7     6     5     4     3     2
     5     6     7     8     9    10

Dans la sortie ci-dessus, lorsque la fonction atteint les deux mêmes valeurs présentes dans la troisième colonne, qui est 5, elle passera à la quatrième colonne et utilisera les valeurs 6 et 4 et les triera par ordre décroissant car la direction pour le deuxième numéro de colonne est décroissant. Parlons maintenant du tri des lignes d’un tableau à l’aide de la fonction sortrows().

Utilisez la fonction sortrows() pour trier les lignes du tableau dans MATLAB

Nous pouvons également utiliser la fonction sortrows() pour trier les lignes d’un tableau de la même manière que nous avons trié les lignes d’une matrice ci-dessus. Nous pouvons également définir la variable ou la colonne que nous voulons utiliser pour le tri et la direction ou l’ordre de tri.

Par exemple, créons un tableau et trions ses lignes selon une variable. Voir le code ci-dessous.

clc
clear

P_Name = {'Smith';'John';'Will';'Jones';'Brown'};
P_Age = [37;47;37;40;49];
P_Height = [72;68;63;67;64];

P_table = table(P_Age,P_Height,'RowNames',P_Name)
Sorted_table = sortrows(P_table,'P_Height','descend')

Production:

P_table =

  5×2 table

             P_Age    P_Height
             _____    ________

    Smith     37         72
    John      47         68
    Will      37         63
    Jones     40         67
    Brown     49         64


Sorted_table =

  5×2 table

             P_Age    P_Height
             _____    ________

    Smith     37         72
    John      47         68
    Jones     40         67
    Brown     49         64
    Will      37         63

Dans le code ci-dessus, nous avons créé un tableau de patients, y compris leurs noms, âges et tailles, et nous avons trié le tableau en fonction de la taille des patients par ordre décroissant. Nous pouvons voir dans la sortie que le tableau est trié selon l’ordre décroissant de la taille des patients.

Nous pouvons également utiliser plusieurs variables et directions pour le tri, comme dans le cas d’une matrice. Dans le cas de plusieurs variables, nous devons passer les noms de variable et de direction dans une cellule.

Par défaut, la fonction sortrows() utilisera toutes les variables et l’ordre croissant pour trier les lignes du tableau donné. On peut aussi trier les lignes selon leurs noms en utilisant l’argument RowNames à la place du nom de la variable.

Si nous avons des emplacements manquants dans le tableau et que nous voulons trier le tableau en fonction des emplacements manquants, nous pouvons utiliser l’argument MissingPlacement. Après cela, nous pouvons passer sa valeur comme first pour placer la valeur manquante en premier, last pour placer les valeurs à la fin, et auto pour placer les éléments en premier dans l’ordre croissant et en dernier en cas d’ordre décroissant.

Nous pouvons également changer la méthode utilisée pour comparer les valeurs en utilisant l’argument ComparisonMethod. Après cela, nous devons passer le nom de la méthode comme réel pour les valeurs réelles, abs pour les valeurs complexes et auto, qui utilisera des valeurs réelles en cas d’entrée réelle et des valeurs complexes en cas d’entrée complexe .

La méthode de comparaison est utile dans le cas de valeurs complexes. Par exemple, si l’on veut comparer uniquement la partie réelle des valeurs complexes, on peut utiliser la méthode real, et si l’on souhaite prendre l’absolu des valeurs complexes, on peut utiliser la méthode abs.

Nous pouvons également obtenir l’index de la fonction sortrows(), qui montre le réarrangement des lignes de la matrice ou de la table d’entrée. La syntaxe des propriétés ci-dessus est donnée ci-dessous.

[Sorted_table, index] = sortrows(P_table,'RowNames','MissingPlacement','last','ComparisonMethod','abs')

Si nous voulons trier un nombre spécifique de lignes à partir de la matrice ou de la table d’entrée, nous devons les stocker dans une matrice ou une table séparée, puis utiliser la fonction sortrows() et stocker le résultat dans la table ou la matrice d’origine. Consultez ce lien pour plus de détails sur la fonction sortrows().

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - MATLAB Matrix