Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Indexación de matrices

En MATLAB®, hay tres enfoques principales para acceder a los elementos de la matriz en función de su ubicación (índice) en la matriz. Estos enfoques están indexando por posición, indexación lineal e indexación lógica.

Indexación con posiciones de elementos

La forma más común es especificar explícitamente los índices de los elementos. Por ejemplo, para tener acceso a un único elemento de una matriz, especifique el número de fila seguido del número de columna del elemento.

A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
A = 4×4

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16

e = A(3,2)
e = 10 

es el elemento de la posición 3, 2 (tercera fila, segunda columna) de.eA

También puede hacer referencia a varios elementos a la vez especificando sus índices en un vector. Por ejemplo, acceda al primer y tercer elemento de la segunda fila de.A

r = A(2,[1 3])
r = 1×2

     5     7

Para acceder a los elementos de un intervalo de filas o columnas, utilice el.colon Por ejemplo, acceda a los elementos de la primera a la tercera fila y de la segunda a la cuarta columna de.A

r = A(1:3,2:4)
r = 3×3

     2     3     4
     6     7     8
    10    11    12

Una forma alternativa de calcular es utilizar la palabra clave para especificar la segunda columna a través de la última columna.rend Este enfoque le permite especificar la última columna sin saber exactamente cuántas columnas hay.A

r = A(1:3,2:end)
r = 3×3

     2     3     4
     6     7     8
    10    11    12

Si desea tener acceso a todas las filas o columnas, utilice el operador de dos puntos por sí mismo. Por ejemplo, devuelva toda la tercera columna de.A

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

     3
     7
    11
    15

En general, puede utilizar la indexación para acceder a los elementos de cualquier matriz en MATLAB, independientemente de su tipo de datos o dimensiones. Por ejemplo, acceda directamente a una columna de una matriz.datetime

t = [datetime(2018,1:5,1); datetime(2019,1:5,1)]
t = 2x5 datetime array
   01-Jan-2018   01-Feb-2018   01-Mar-2018   01-Apr-2018   01-May-2018
   01-Jan-2019   01-Feb-2019   01-Mar-2019   01-Apr-2019   01-May-2019

march1 = t(:,3)
march1 = 2x1 datetime array
   01-Mar-2018
   01-Mar-2019

Para matrices de mayor dimensión, expanda la sintaxis para que coincida con las dimensiones de la matriz. Considere una matriz numérica aleatoria de 3 por 3 por 3. Acceda al elemento de la segunda fila, la tercera columna y la primera hoja de la matriz.

A = rand(3,3,3); e = A(2,3,1)
e = 0.5469 

Para obtener más información sobre cómo trabajar con matrices multidimensionales, consulte.Los arrays multidimensionales

La indexación con un índice único

Otro método para obtener acceso a los elementos de una matriz es usar un solo índice, independientemente del tamaño o las dimensiones de la matriz. Este método se conoce como.linear indexing Mientras que MATLAB muestra matrices de acuerdo con sus tamaños y formas definidas, en realidad se almacenan en la memoria como una sola columna de elementos. Una buena forma de visualizar este concepto es con una matriz. Mientras que la siguiente matriz se muestra como una matriz de 3 por 3, MATLAB lo almacena como una sola columna compuesta por las columnas anexadas una tras otra.A El vector almacenado contiene la secuencia de elementos,,,,,,,, y se puede mostrar con un solo signo de dos puntos.124533362925914811

A = [12 36 91; 45 29 48; 33 25 11]
A = 3×3

    12    36    91
    45    29    48
    33    25    11

Alinear = A(:)
Alinear = 9×1

    12
    45
    33
    36
    29
    25
    91
    48
    11

Por ejemplo, el elemento 3, 2 de is, y puede acceder a él utilizando la sintaxis.A25A(3,2) También puede acceder a este elemento utilizando la sintaxis, ya que es el sexto elemento de la secuencia vectorial almacenada.A(6)25

e = A(3,2)
e = 25 
elinear = A(6)
elinear = 25 

Aunque la indexación lineal puede ser menos intuitiva visualmente, puede ser eficaz para realizar ciertos cálculos que no dependen del tamaño o la forma de la matriz. Por ejemplo, puede sumar fácilmente todos los elementos de sin tener que proporcionar un segundo argumento a la función.Asum

s = sum(A(:))
s = 330 

Las funciones ayudan a convertir entre los índices de matriz originales y su versión lineal.sub2indind2sub Por ejemplo, calcule el índice lineal del elemento 3, 2 de.A

linearidx = sub2ind(size(A),3,2)
linearidx = 6 

Convierta el índice lineal de nuevo a su forma de fila y columna.

[row,col] = ind2sub(size(A),6)
row = 3 
col = 2 

Indexación con valores lógicos

El uso de indicadores lógicos verdaderos y falsos es otra forma útil de indexar en matrices, especialmente cuando se trabaja con instrucciones condicionales. Por ejemplo, supongamos que desea saber si los elementos de una matriz son menores que los elementos correspondientes de otra matriz.AB El operador menos que devuelve una matriz lógica cuyos elementos son cuando un elemento en es menor que el elemento correspondiente en.1AB

A = [1 2 6; 4 3 6]
A = 2×3

     1     2     6
     4     3     6

B = [0 3 7; 3 7 5]
B = 2×3

     0     3     7
     3     7     5

ind = A<B
ind = 2x3 logical array

   0   1   1
   0   1   0

Ahora que conoce las ubicaciones de los elementos que cumplen la condición, puede inspeccionar los valores individuales utilizando como la matriz de índice.ind MATLAB coincide con las ubicaciones del valor 1 en los elementos correspondientes de y, y enumera sus valores en un vector de columna.indAB

Avals = A(ind)
Avals = 3×1

     2
     3
     6

Bvals = B(ind)
Bvals = 3×1

     3
     7
     7

Las funciones "is" de MATLAB también devuelven matrices lógicas que indican qué elementos de la entrada cumplen una condición determinada. Por ejemplo, compruebe qué elementos de un vector faltan utilizando la función.stringismissing

str = ["A" "B" missing "D" "E" missing]; ind = ismissing(str)
ind = 1x6 logical array

   0   0   1   0   0   1

Supongamos que desea encontrar los valores de los elementos que faltan.not Utilice el operador con el vector de índice para hacerlo.~ind

strvals = str(~ind)
strvals = 1x4 string array
    "A"    "B"    "D"    "E"

Para obtener más ejemplos con la indexación lógica, consulte.Encontrar elementos de matriz que cumplen una condición

Temas relacionados