Acceder a datos en estructuras anidadas
En este ejemplo se muestra cómo indexar en una estructura anidada dentro de otra estructura. La sintaxis general para acceder a los datos de un campo concreto es
structName(index).nestedStructName(index).fieldName(indices)
Cuando una estructura es escalar (1 por 1), no es necesario incluir los índices para referirse al único elemento. Por ejemplo, cree una estructura escalar s
, en la que el campo n
sea una estructura escalar anidada con los campos a
, b
y c
:
s.n.a = ones(3); s.n.b = eye(4); s.n.c = magic(5);
Acceda a la tercera fila del campo b
:
third_row_b = s.n.b(3,:)
La variable third_row_b
contiene la tercera fila de eye(4)
.
third_row_b = 0 0 1 0
Amplíe s
para que tanto s
como n
sean no escalares (1 por 2):
s(1).n(2).a = 2*ones(3); s(1).n(2).b = 2*eye(4); s(1).n(2).c = 2*magic(5); s(2).n(1).a = '1a'; s(2).n(2).a = '2a'; s(2).n(1).b = '1b'; s(2).n(2).b = '2b'; s(2).n(1).c = '1c'; s(2).n(2).c = '2c';
La estructura s
ahora contiene los datos que se muestran:
Acceda a parte del arreglo en el campo b
del segundo elemento de n
dentro del primer elemento de s
:
part_two_eye = s(1).n(2).b(1:2,1:2)
Esto devuelve la esquina superior izquierda de 2 por 2 de 2*eye(4)
:
part_two_eye = 2 0 0 2