clear all;
Arrays de celdas en MATLAB
En este tutorial explicaremos qué son los arrays de celdas de MATLAB y cómo trabajar con ellos.
Activa "Output inline" en el lado derecho de tu barra de desplazamiento.

Crear un array de celdas
Un array de celdas es un tipo de dato que puede contener diferentes tipos o tamaños de datos en cada celda.
Usa llaves { } para definir celdas, separando las entradas con comas o espacios, y las filas con punto y coma.
Define un array de celdas de 1×3
C = {'text', 42, [1,2,3]}
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 'text' | 42 | [1,2,3] |
Define un array de celdas de 2×2
C2 = { 'pi', pi; ...
'matrix', [1 2;3 4] }
| 1 | 2 | |
|---|---|---|
| 1 | 'pi' | 3.1416 |
| 2 | 'matrix' | [1,2;3,4] |
Acceder a elementos de celdas
Usa paréntesis ( ) para extraer una celda (devuelve una celda), y llaves { } para extraer su contenido.
Extrae una celda de 1×1
cell1 = C(2)
cell1 = 1x1 cell array
{[42]}
Extrae el contenido (numérico 42)
value42 = C{2}
value42 = 42
Accede a parte de la matriz dentro de la celda
subval = C2{2,2}(1,2)
subval = 2
Modificar elementos de celdas
Asigna dentro de las celdas con llaves { } para sobrescribir el contenido, o con paréntesis ( ) para sobrescribir la propia celda.
Cambia el contenido de la segunda celda a una cadena
C{2} = 'answer'
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 'text' | 'answer' | [1,2,3] |
Sustituye la celda completa por otra celda
C(3) = {ones(3)}
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 'text' | 'answer' | [1,1,1;1,1,1;1,1,1] |
Añade una celda nueva al final
C{4} = @sin
| 1 | 2 | 3 | 4 | |
|---|---|---|---|---|
| 1 | 'text' | 'answer' | [1,1,1;1,1,1;1,1,1] | @sin |
Arrays de celdas anidados
Las celdas pueden contener otros arrays de celdas para un almacenamiento jerárquico.
Crea una celda anidada
Cnested = { 'level1', { 'level2', { 100, 200 } } }
| 1 | 2 | |
|---|---|---|
| 1 | 'level1' | 1x2 cell |
Accede al valor profundamente anidado 200
deep200 = Cnested{2}{2}{2}
deep200 = 200
Conversión
Puedes convertir entre arrays numéricos y celdas cuando las dimensiones coinciden.
Array numérico
A = [10, 20;
30, 40]
A = 2x2
10 20
30 40
Convertir a array de celdas
Acell = num2cell(A)
| 1 | 2 | |
|---|---|---|
| 1 | 10 | 20 |
| 2 | 30 | 40 |
Convertir de nuevo a numérico (si todas las celdas contienen escalares)
Anum = cell2mat(Acell)
Anum = 2x2
10 20
30 40