Seleccionar elementos en matrices de Matlab

Publicado el 15 mayo 2019 por Daniel Rodríguez @analyticslane

El tipo de dato básico de Matlab es la matriz. Aunque con el tiempo se han introducido nuevos tipos de datos como las celdas o las tablas, la matriz es el más utilizado. Saber trabajar con estos tipos de datos es clave para obtener el máximo provecho de este entorno de trabajo. A continuación, se va a explicar cómo seleccionar elementos en matrices de Matlab utilizando la potencia que ofrecen los índices. Para así saber extraer los datos necesarios en cada situación.

Creación de una matriz

Para trabajar es necesario disponer de una matriz. Dado que, en esta situación, los valores concretos no son importantes se puede emplear una matriz de enteros generada aleatoriamente. Así el siguiente código crea una matriz de 6 filas y 4 columnas tras reiniciar el generador de números aleatorios de Matlab.

rng('default');
data = randi(50 ,6, 4);
data =

    41    14    48    40
    46    28    25    48
     7    48    41    33
    46    49     8     2
    32     8    22    43
     5    49    46    47

Siendo esta la matriz que se utilizará en el resto de la entrada.

Acceso a los elementos de la matriz.

Para acceder a un elemento de la matriz se ha de indicar el nombre y entre paréntesis las coordenadas. En primer lugar, se indica la fila y seguido de una coma la columna. Por ejemplo, se puede acceder al registro de la fila 2 y columna 3 con data(2, 3). Mediante lo que se obtendrá el valor 25.

Otra forma de acceder es indicando solamente un valor entre paréntesis. En este Matlab recorrerá los elementos por filas, al finalizar la primera continuará por la segunda y así consecutivamente. Es decir, la posición será la columna menos uno por el número de filas más la posición de la fila. En el ejemplo anterior data(6 * (3-2) + 2), es decir, data(14).

Selección de columnas en matrices de Matlab

Una de las tareas de filtrado más habituales al trabajar con matrices en Matlab es seleccionar una comuna. Es decir, obtener todas las filas de una columna. Para lo que es necesario utilizar el operador : en las filas. Así la columna 3 de nuestro ejemplo se puede obtener con data(:, 3).

ans =

    48
    25
    41
     8
    22
    46

En otras ocasiones se puede ser necesario seleccionar más de una columna. Para ello el número de las columnas en un vector que se puede crear manualmente con corchetes. Por ejemplo, la primera y tercera columna se puede obtener con el siguiere código.

data(:, [1, 3])
ans =

    41    48
    46    25
     7    41
    46     8
    32    22
     5    46

Otra opción es con : indicando en primer lugar la primera columna y en segundo la última. Por ejemplo, para obtener desde la tercera a la cuarta se puede utilizar el siguiente código:

data(:, 3:4)
ans =

    48    40
    25    48
    41    33
     8     2
    22    43
    46    47

En el caso de que no se conozca el número de columnas y se desea extraer desde una hasta el final se puede utilizar el valor end. Por ejemplo, desde la tercera hasta el final se puede conseguir con el siguiente código.

data(:, 3:end)

Finalmente, el vector que se utiliza puede estar desordenado, obteniendo de esta manera una matriz con las columnas en un orden diferente. Por ejemplo, si se desea extraer primero la tercera y después la segunda columna se puede utiliza el siguiente código.

data(:, [3, 1])
ans =

    48    41
    25    46
    41     7
     8    46
    22    32
    46     5

Selección de filas en matrices de Matlab

Si lo que se desea es extraer filas solamente se puede utilizar lo visto en la sección anterior para las columnas. Simplemente utilizando : para indicar en la posición de las columnas. Por ejemplo, mediante data(3,:) se obtiene la tercera fila y data([1,3],:) la primera y tercera columna.

Combinar la selección de filas y columnas en matrices de Matlab

La selección de filas y columnas se puede combinar. En lugar de seleccionar un conjunto de filas y todas las columnas o un conjunto de columnas y todas las filas es posible un conjunto tanto de filas como de columnas. Lo que es tan sencillo como indicar las filas y las columnas al mismo tiempo como cuando se selecciona un elemento.

data([1, 3], [1, 3])
ans =

    41    48
     7    41

Selección condicional de elementos en las matrices

La selección puede ser inteligente, seleccionando las filas o columnas que cumple una o varias condiciones. Lo que se puede conseguir filtrando con la utilización de vectores lógicos. Por ejemplo, los valores mínimos de cada columna se pueden obtener mediante la función min.

min(data)
ans =

     5     8     8     2

Ahora, se puede seleccionar las columnas cuyo valor mínimo es menor que 5 con el operador comparación. Al aplicar el operador al resultado anterior se obtiene un vector con cuatro elementos que son true cuando se cumple la condición y false en el resto de los casos.

min(data) > 5
ans =

  1×4 logical array

   0   1   1   0

Este vector se puede utilizar para seleccionar las columnas que verifican la condición deseada. Así para obtener estas columnas se puede utilizar.

data(:, min(data) > 5)
ans =

    14    48
    28    25
    48    41
    49     8
     8    22
    49    46

Finalmente, las condiciones pueden ser todo los complejas que se desee.

data(:, min(data) > 5 & max(data) == 49);

Obviamente, los filtros se pueden utilizar también en las filas.

Conclusiones

En esta entrada se ha visto cómo seleccionar elementos en matrices de Matlab. Una tarea que es bastante habitual. Por eso conocer y comprender todas las formas para realizar esta tarea es clave para maximizar el rendimiento a la hora de trabajar con Matlab. Tanto sea para seleccionar una fila o columna en concreto como aquellas que verifican una condición.

Imágenes: Pixabay (Pexels)

No te olvides valorar esta entrada

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones de Analytics Lane.

Contenido relacionado