Ordenar filas en MATLAB

Ammar Ali 30 enero 2023
  1. Utilice la función sortrows() para ordenar filas de matriz en MATLAB
  2. Use la función sortrows() para ordenar las filas de la tabla en MATLAB
Ordenar filas en MATLAB

Este tutorial analizará la clasificación de filas presentes en una matriz utilizando la función sortrows() en MATLAB. En el análisis y procesamiento de datos, la clasificación es esencial porque facilitará el análisis y el procesamiento de los datos cuando se clasifiquen.

Por ejemplo, si tenemos una tabla de pacientes en un hospital y queremos encontrar a una persona en concreto, y si la tabla no está ordenada, tendremos que repasar todos los datos para encontrar a una persona. Pero si la tabla está ordenada según la primera letra de los nombres de los pacientes, podemos ver fácilmente a la persona porque ahora solo tenemos que mirar los nombres a partir de una letra específica.

Utilice la función sortrows() para ordenar filas de matriz en MATLAB

Podemos usar la función sortrows() de Matlab para ordenar las filas presentes en una matriz. La primera sintaxis de la función sortrows() se da a continuación:

output = sortrows(matrix)

La sintaxis anterior ordenará las filas en la matriz dada según los elementos de la primera columna o el primer elemento de cada fila en orden ascendente. Si dos o más filas tienen el mismo primer elemento, la función comparará sus segundos elementos y así sucesivamente.

Por ejemplo, ordenemos las filas en una matriz usando la sintaxis anterior. Vea el código a continuación.

clc
clear

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

Producción :

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

Creamos una matriz de 3 por 6 en el código anterior y ordenamos sus filas. Podemos comparar las dos matrices en la salida para verificar el resultado.

Si observamos la primera columna de la matriz Mi_matriz, podemos ver que la segunda fila vendrá primero porque el primer elemento de la segunda fila es el más pequeño, y la primera fila con el primer valor más alto será el último en el producción. Podemos pasar una matriz de cualquier tamaño dentro de la función sortrows().

La segunda sintaxis de la función sortrows() se da a continuación:

output = sortrows(matrix, column)

Podemos usar la sintaxis anterior para establecer el número de columna de la matriz de entrada, que se usará para ordenar las filas presentes en la matriz dada. Si no pasamos el número de columna, la función usará la primera columna de la matriz para ordenar las filas.

También podemos pasar múltiples números de columna en un vector, y la función ordenará las filas según el primer número de columna. Si dos o más de los mismos valores están presentes en la columna actual, la función se moverá al siguiente número de columna presente en el vector dado.

Por ejemplo, ordenemos las filas de una matriz usando la segunda y la tercera columna para ordenar. Vea el código a continuación.

clc
clear

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

Producción :

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 observamos la tercera y cuarta columnas de la matriz New_matrix, podemos ver que los elementos de la tercera y cuarta columnas están ordenados. Si solo pasamos un solo número de columna con los mismos valores presentes, la función no cambiará la posición de las filas.

La tercera sintaxis de sortrows() se da a continuación.

output = sortrows(matrix, column, direction)

En la sintaxis anterior, la dirección definirá el orden en el que queremos ordenar las filas, como ascend para el orden ascendente de las filas y descend para el orden descendente de las filas. De forma predeterminada, el orden se establece en orden ascendente.

En el caso de varios números de columna, también podemos agregar varias direcciones como un tipo de datos de celda que se usará para cada columna.

Por ejemplo, si definimos dos números de columna y dos direcciones, la primera columna se ordenará según la primera dirección. Si hay los mismos valores, la función se moverá a la segunda columna y ordenará las filas según la segunda dirección.

Por ejemplo, ordenemos la matriz anterior según dos direcciones. Vea el código a continuación.

clc
clear

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

Producción :

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

En el resultado anterior, cuando la función llega a los dos mismos valores presentes en la tercera columna, que es 5, se moverá a la cuarta columna y usará los valores 6 y 4 y los clasificará en orden descendente porque la dirección para el número de la segunda columna es descendente. Ahora hablemos de ordenar las filas de una tabla usando la función sortrows().

Use la función sortrows() para ordenar las filas de la tabla en MATLAB

También podemos usar la función sortrows() para ordenar las filas de una tabla de la misma manera que ordenamos las filas de una matriz anterior. También podemos establecer la variable o columna que queremos usar para clasificar y la dirección o el orden de clasificación.

Por ejemplo, creemos una tabla y ordenemos sus filas según una variable. Vea el código a continuación.

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')

Producción :

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

En el código anterior, creamos una tabla de pacientes, incluidos sus nombres, edades y alturas, y ordenamos la tabla según la altura de los pacientes en orden descendente. Podemos ver en la salida que la tabla está ordenada según el orden descendente de las alturas de los pacientes.

También podemos usar múltiples variables y direcciones para ordenar, como en el caso de una matriz. En el caso de múltiples variables, tenemos que pasar los nombres de las variables y direcciones en una celda.

Por defecto, la función sortrows() utilizará todas las variables y el orden de dirección ascendente para ordenar las filas de la tabla dada. También podemos ordenar las filas según sus nombres usando el argumento RowNames en lugar del nombre de la variable.

Si faltan ubicaciones en la tabla y queremos ordenar la tabla de acuerdo con las ubicaciones que faltan, podemos usar el argumento MissingPlacement. Después de eso, podemos pasar su valor como first para colocar primero el valor faltante, last para colocar los valores al final y auto para colocar los elementos primero en orden ascendente y último en caso de orden descendente.

También podemos cambiar el método utilizado para comparar valores utilizando el argumento ComparisonMethod. Después de eso, tenemos que pasar el nombre del método como real para valores reales, abs para valores complejos y auto, que usará valores reales en caso de entrada real y valores complejos en caso de entrada compleja. .

El método de comparación es útil en el caso de valores complejos. Por ejemplo, si queremos comparar solo la parte real de los valores complejos, podemos usar el método real, y si queremos tomar el absoluto de los valores complejos, podemos usar el método abs.

También podemos obtener el índice de la función sortrows(), que muestra la reordenación de las filas de la matriz o tabla de entrada. La sintaxis de las propiedades anteriores se proporciona a continuación.

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

Si queremos ordenar un número específico de filas de la matriz o tabla de entrada, debemos almacenarlas en una matriz o tabla separada y luego usar la función sortrows() y almacenar el resultado nuevamente en la tabla o matriz original. Consulte este enlace para obtener más detalles sobre la función sortrows().

Autor: 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

Artículo relacionado - MATLAB Matrix