Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

sub2ind

Convertir subíndices en índices lineales

Descripción

ind = sub2ind(sz,row,col) devuelve los índices lineales ind correspondientes a los subíndices de fila y columna de row y col para una matriz de tamaño sz. Aquí, sz es un vector con dos elementos, donde sz(1) especifica el número de filas y sz(2) especifica el número de columnas.

ejemplo

ind = sub2ind(sz,I1,I2,...,In) devuelve los índices lineales ind correspondientes a subíndices multidimensionales de n arreglos I1,I2,...,In para un arreglo multidimensional de tamaño sz. Aquí, sz es un vector con n elementos que especifica el tamaño de cada dimensión del arreglo.

ejemplo

Ejemplos

contraer todo

La asignación de subíndices (indexado por posición) en índices lineales para una matriz de 3 por 3 se puede ilustrar de la siguiente manera.

Especifique los subíndices de fila y columna en una matriz de 3 por 3. Convierta los subíndices en índices lineales.

row = [1 2 3 1];
col = [2 2 2 3];
sz = [3 3];
ind = sub2ind(sz,row,col)
ind = 1×4

     4     5     6     7

La asignación de subíndices en índices lineales para un arreglo de 2 por 2 por 2 se puede ilustrar de la siguiente manera.

Especifique los subíndices de fila, columna y página en un arreglo de 2 por 2 por 2. Convierta los subíndices en índices lineales.

I1 = [1 2 1 2];
I2 = [2 2 1 1];
I3 = [1 1 2 2];
sz = [2 2 2];
ind = sub2ind(sz,I1,I2,I3)
ind = 1×4

     3     4     5     6

Convierta un índice de subíndice de un arreglo 3D a un solo índice lineal.

Cree un arreglo y encuentre el índice lineal correspondiente al elemento en la posición (2,1,2).

A = rand(3,4,2);
linearInd = sub2ind(size(A),2,1,2)
linearInd = 
14

Compruebe que ambas versiones del índice hacen referencia al mismo elemento.

A(2,1,2)
ans = 
0.4854
A(14)
ans = 
0.4854

Argumentos de entrada

contraer todo

Tamaño de un arreglo, especificado como vector de enteros positivos. Cada elemento de este vector indica el tamaño de la dimensión correspondiente. Por ejemplo, [2 3 4] define un arreglo de 2 por 3 por 4.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Subíndices de fila, especificados como escalar, vector, matriz o arreglo multidimensional. row y col pueden ser arreglos del mismo tamaño o uno cualquiera puede ser escalar.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Subíndices de columna, especificados como escalar, vector, matriz o arreglo multidimensional. row y col pueden ser arreglos del mismo tamaño o uno cualquiera puede ser escalar.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Subíndices multidimensionales, especificados como escalar, vector, matriz o arreglo multidimensional. I1,I2,…,In pueden ser arreglos del mismo tamaño o cualquiera de ellos puede ser escalar.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Argumentos de salida

contraer todo

Índices lineales, devueltos como escalar, vector, matriz o arreglo multidimensional.

  • Si todas las entradas de subíndice tienen el mismo tamaño, ind también tiene el mismo tamaño.

  • Si las entradas de subíndice son una mezcla de escalares y arreglos, ind tiene el tamaño de las entradas de subíndice no escalares.

Tipos de datos: double

Algoritmos

Para un arreglo A, si ind = sub2ind(size(A),I1,…,In), A(ind(k)) = A(I1(k),…,In(k)) para todo k.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

expandir todo