Estructuras de arreglos en Matlab
Imagina que deseas dominar el uso de estructuras en Matlab. No te preocupes, es más sencillo de lo que parece. Las estructuras son colecciones de datos accesibles por su nombre. En Matlab, se crean usando la función "struct". Permíteme guiarte en este fascinante proceso.
¿Qué son las estructuras? Son similares a los arreglos, pero con capacidades ampliadas. A diferencia de los arreglos, las estructuras pueden contener datos de diferentes tipos organizados en campos, cada uno con un nombre único. Un buen ejemplo sería una agenda telefónica, que representa una estructura de arreglo.
¿Cómo Crear una Estructura de Arreglo?
Comienza creando una estructura denominada "agenda".
El primer campo de la estructura es el "nombre" de los contactos.
>> agenda.nombre="John Smith";
A continuación, añade el segundo campo.
Este será el "número de teléfono" de cada contacto.
>> agenda.numero_telefono=123456789;
Recuerda, un campo puede albergar valores numéricos, cadenas e incluso arreglos.
>> agenda(1).numero_telefono=[123456789, 987654321];
Finalmente, incluye un tercer campo para la dirección de la persona.
>> agenda.direccion="Nueva York";
Como alternativa, puedes definir todos los campos en una única instrucción utilizando la función struct().
>> agenda = struct('nombre','John Smith','numero_telefono',123456789, 'direccion', 'Nueva York')
Así, has creado una estructura llamada "agenda" que incluye un registro con tres campos (nombre, número de teléfono, dirección).
Nota: Los campos de la estructura varían en tipo de datos. Dos contienen valores alfanuméricos (nombre y dirección), mientras que uno es numérico (número de teléfono).
También puedes expandir la estructura añadiendo múltiples registros. Escribe los nombres de los campos una sola vez y encierra los datos de cada campo en llaves.
C = struct('asignatura',{'Matemáticas', 'Latín', 'Ciencias'},'calificación',{27,30,18});
Visualizar los campos de la estructura
Para ver los campos de una estructura, utiliza la función fieldnames().
>> fieldnames(agenda)
ans =
{
[1,1] = nombre
[2,1] = numero_telefono
[3,1] = direccion
}
Esta función muestra los campos entre paréntesis. En nuestro caso, la estructura cuenta con tres: nombre, número de teléfono y dirección.
Todos los registros comparten el mismo número de campos y nombres.
Añadir datos a la estructura
Una vez definida la estructura, es hora de añadir registros. Por ejemplo, para un segundo registro:
Escribe el nombre de la estructura con el índice 2 y el campo a la izquierda, seguido del valor correspondiente a la derecha.
>> agenda(2).nombre="Emily Johnson";
>> agenda(2).numero_telefono="987654321";
Ahora la estructura contiene dos registros. Recuerda que es posible dejar algunos campos vacíos al insertar un nuevo registro.
Por ejemplo, el segundo registro podría no tener dirección.
>> agenda(2)
ans =
estructura escalar conteniendo los campos:
nombre = Emily Johnson
numero_telefono = 987654321
direccion = [](0x0)
Otra forma de añadir registros es mediante la función struct().
>> agenda(3) = struct('nombre','Michael Davis','numero_telefono',123456789, 'direccion', 'Los Ángeles')
Lectura de datos de una estructura
Para acceder a los datos, escribe el nombre de la estructura, el índice y el nombre del campo deseado.
Por ejemplo, agenda(1).numero_telefono para el número de teléfono del primer registro.
>> agenda(1).numero_telefono
ans = 123456789
Y así sucesivamente para otros campos y registros.
Escribe agenda(1) para ver todos los campos del primer registro.
>> agenda(1)
ans =
estructura escalar conteniendo los campos:
nombre = John Smith
telefono = 123456789 987654321
direccion = Nueva York
Eliminar un campo de la estructura
Para eliminar un campo, usa la función rmfield().
Por ejemplo, para remover el campo "prueba" añadido previamente:
>> agenda(2).prueba="ABC";
La estructura ahora tiene cuatro campos.
>> fieldnames(agenda)
ans =
{
[1,1] = nombre
[2,1] = numero_telefono
[3,1] = direccion
[4,1] = prueba
}
Elimina el campo "prueba" con:
>> agenda=rmfield(agenda, "prueba");
Y así, el campo "prueba" ha sido eliminado.
>> fieldnames(agenda)
ans =
{
[1,1] = nombre
[2,1] = numero_telefono
[3,1] = direccion
}