Acceder a datos en arreglos de celdas
En este ejemplo se muestra cómo leer y escribir datos desde y a un arreglo de celdas.
Cree un arreglo de celdas de 2 por 3 de datos de texto y numéricos.
C = {'one', 'two', 'three'; 1, 2, 3}
C=2×3 cell array
{'one'} {'two'} {'three'}
{[ 1]} {[ 2]} {[ 3]}
Hay dos formas de hacer referencia a los elementos de un arreglo de celdas. Ponga los índices entre paréntesis, ()
, para hacer referencia a conjuntos de celdas; por ejemplo, para definir un subconjunto del arreglo. Ponga los índices entre llaves, {}
, para hacer referencia al texto, los números u otros datos de celdas concretas.
Indexar las celdas con paréntesis, ()
Los índices de arreglo de celdas entre paréntesis hacen referencia a conjuntos de celdas. Por ejemplo, para crear un arreglo de celdas de 2 por 2 que sea un subconjunto de C
, utilice paréntesis.
upperLeft = C(1:2,1:2)
upperLeft=2×2 cell array
{'one'} {'two'}
{[ 1]} {[ 2]}
Actualice conjuntos de celdas reemplazándolas con la misma cantidad de celdas. Por ejemplo, reemplace las celdas de la primera línea de C
por un arreglo de celdas de tamaño equivalente (1 por 3).
C(1,1:3) = {'first','second','third'}
C=2×3 cell array
{'first'} {'second'} {'third'}
{[ 1]} {[ 2]} {[ 3]}
Si las celdas del arreglo contienen datos numéricos, puede convertir las celdas a un arreglo numérico empleando la función cell2mat
.
numericCells = C(2,1:3)
numericCells=1×3 cell array
{[1]} {[2]} {[3]}
numericVector = cell2mat(numericCells)
numericVector = 1×3
1 2 3
numericCells
es un arreglo de celdas de 1 por 3, pero numericVector
es un arreglo de 1 por 3 de tipo double
.
Indexar el contenido con llaves, {}
Acceda al contenido de las celdas —los números, texto u otros datos de las celdas— indexando con llaves. Por ejemplo, para acceder al contenido de la última celda de C
, use llaves.
last = C{2,3}
last = 3
last
es una variable numérica de tipo double
, porque la celda contiene un valor double
.
Del mismo modo, puede indexar con llaves para reemplazar el contenido de una celda.
C{2,3} = 300
C=2×3 cell array
{'first'} {'second'} {'third'}
{[ 1]} {[ 2]} {[ 300]}
Puede acceder al contenido de varias celdas indexando con llaves. MATLAB® devuelve el contenido de las celdas como lista separada por comas. Como cada celda puede contener un tipo de datos diferente, no puede asignar esta lista a una sola variable. Sin embargo, puede asignar la lista al mismo número de variables como celdas. MATLAB® realiza asignaciones a las variables siguiendo el orden de la columna.
Asigne contenido de cuatro celdas de C
a cuatro variables.
[r1c1, r2c1, r1c2, r2c2] = C{1:2,1:2}
r1c1 = 'first'
r2c1 = 1
r1c2 = 'second'
r2c2 = 2
Si cada celda contiene el mismo tipo de datos, puede crear una sola variable aplicando el operador de concatenación de arreglos, []
, a la lista separada por comas.
Concatene el contenido de la segunda fila a un arreglo numérico.
nums = [C{2,:}]
nums = 1×3
1 2 300