clear all;
Cell Arrays a MATLAB
En aquest tutorial explicarem què són els cell arrays de MATLAB i com treballar-hi.
Activeu "Output inline" a la dreta de la barra de desplaçament.

Crear un Cell Array
Un cell array és un tipus de dada que pot contenir diferents tipus o mides de dades a cada cel·la.
Utilitza claus { } per definir les cel·les, separant les entrades amb comes o espais, i les files amb punts i coma.
Defineix un cell array 1×3
C = {'text', 42, [1,2,3]}
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 'text' | 42 | [1,2,3] |
Defineix un cell array 2×2
C2 = { 'pi', pi; ...
'matrix', [1 2;3 4] }
| 1 | 2 | |
|---|---|---|
| 1 | 'pi' | 3.1416 |
| 2 | 'matrix' | [1,2;3,4] |
Accedir als elements d’un Cell Array
Utilitza parèntesis ( ) per extreure una cel·la (retorna una cel·la), i claus { } per extreure’n el contingut.
Extreu una cel·la 1×1
cell1 = C(2)
cell1 = 1x1 cell array
{[42]}
Extreu el contingut (numèric 42)
value42 = C{2}
value42 = 42
Accedeix a una part de la matriu dins la cel·la
subval = C2{2,2}(1,2)
subval = 2
Modificar elements d’un Cell Array
Assigna dins les cel·les amb claus { } per sobreescriure’n el contingut, o amb parèntesis ( ) per sobreescriure la cel·la sencera.
Canvia el contingut de la segona cel·la a un string
C{2} = 'answer'
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 'text' | 'answer' | [1,2,3] |
Substitueix la cel·la sencera per una altra cel·la
C(3) = {ones(3)}
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 'text' | 'answer' | [1,1,1;1,1,1;1,1,1] |
Afegeix una cel·la nova al final
C{4} = @sin
| 1 | 2 | 3 | 4 | |
|---|---|---|---|---|
| 1 | 'text' | 'answer' | [1,1,1;1,1,1;1,1,1] | @sin |
Cell Arrays imbricats
Les cel·les poden contenir altres cell arrays per a emmagatzematge jeràrquic.
Crea una cel·la imbricada
Cnested = { 'level1', { 'level2', { 100, 200 } } }
| 1 | 2 | |
|---|---|---|
| 1 | 'level1' | 1x2 cell |
Accedeix al valor imbricat 200
deep200 = Cnested{2}{2}{2}
deep200 = 200
Conversió
Pots convertir entre arrays numèrics i cel·les quan les dimensions coincideixen.
Array numèric
A = [10, 20;
30, 40]
A = 2x2
10 20
30 40
Converteix a cell array
Acell = num2cell(A)
| 1 | 2 | |
|---|---|---|
| 1 | 10 | 20 |
| 2 | 30 | 40 |
Converteix de nou a numèric (si totes les cel·les contenen escalars)
Anum = cell2mat(Acell)
Anum = 2x2
10 20
30 40