“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
“Estructuras de Datos y Manejo de Información”
Carlos Valle Vidal
[email protected]
Departamento de Informática -
Universidad Técnica Federico Santa María
Rancagua, Agosto 2009
1 / 29
Temario
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
1
Introducción
2 Estructuras
3 Arreglos de Celdas
2 / 29
Temario
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
1
Introducción
2 Estructuras
3 Arreglos de Celdas
3 / 29
Introducción
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
El objetivo de la informática es transformar datos en
información.
Los datos se transforman en información cuando se
estructuran y organizan.
De esta forman cobran sentido y los utilizamos para la toma
de decisiones.
Ejemplo:
’Juan Leiva’
’María Saravia’ 54 F
34
M
Nombre
’Juan Perez’
’María Gonzalez’
Edad Sexo
’M’
31
45
’F’
4 / 29
Estructuras y Arreglos de Celdas
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Estructuras son colecciones de diferentes tipos de datos
organizados por nombres de campos.
Arreglos de Celdas son una clase especial de arreglos de
MATLAB cuyos elementos consisten en celdas que a su vez
contienen arreglos de MATLAB
Tanto las estructuras como los arreglos de celdas proveen
mecanismos de almacenamiento jerárquico para contener
distintos tipos de datos.
5 / 29
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Ejemplo de Estructura
>> persona.nombre=’Luisa’
persona =
nombre: ’Luisa’
>> persona.apellido=’Lane’
persona =
nombre: ’Luisa’
apellido: ’Lane’
>> persona.edad=27
persona =
nombre: ’Luisa’
apellido: ’Lane’
edad: 27
6 / 29
Ejemplo: Arreglo de celda
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Arreglo numérico
A =
-3
1
0
4
13
9
-10
7
8
Arreglo de Celdas
A =
[-3]
[ 1]
[ 0]
[ 4]
[13]
[ 9]
[-10]
[
7]
8]
[
7 / 29
Funciones aplicables a estructuras
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
fieldnames
getfield
isfield
isstruct
rmfield
setfield
struct
Obtiene nombres de campos
Obtiene contenido de campos
Verdad si un campo está en estructura
Verdad si es estructura
Remueve campo de estructura
Fija contenido de campo de estructura
Crea o convierte a arreglo de estructura
struct2cell
Convierte estructura en celda
8 / 29
Funciones aplicables a arreglos de celdas
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
cell
cell2struct
celldisp
cellfun
cellplot
deal
iscell
num2cell
Crea arreglo de celdas
Convierte celdas en arreglos
Muestra contenido de celdas
Aplica una función de celda a celda
Muestra gráficamente arreglos de celdas
Une entradas con salidas
Verdad si es Arreglo de celdas
Convierte arreglo numérico en celdas
9 / 29
Temario
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
1
Introducción
2 Estructuras
3 Arreglos de Celdas
10 / 29
Estructuras
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Las estructuras son arreglos de MATLAB que tienen
“contenedores de datos” llamados campos.
Los campos de una estructura pueden contener cualquier
tipo de datos.
Las estructuras son las componentes básicas de las
llamadas “base de datos”.
11 / 29
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Construcción de Estructuras
¿Cómo construir estructuras?
Mediante asignaciones
Usando la función struct
Usando asignación:
>>paciente.nombre=’Laura Carmona’
>>paciente.edad= 28
>>paciente.isapre=’La Muerte’
>>paciente.presion=[13
paciente =
8]
nombre: ’Laura Carmona’
edad: 28
isapre: ’La Muerte’
presion: [13 8]
12 / 29
Construcción de Estructuras (2)
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Si se quiere insertar un nuevo paciente a nuestra base de
datos:
paciente(2).nombre=’Juan Escobar’
paciente(2).edad= 35
paciente(2).isapre=’La Vida’
paciente(2).presion=[16
9]
>> paciente(2)
ans =
nombre: ’Juan Escobar’
edad: 35
isapre: ’La Vida’
presion: [16 9]
13 / 29
Observaciones
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Con el ejemplo anterior se ha creado una estructura de
tamaño [1 2]
Todas las estructuras del arreglo tienen el mismo número de
campos.
Todos los campos tienen los mismos nombres.
Si se ingresa un nuevo nombre de paciente, por ejemplo:
paciente(3).nombre=’Teresa Ruiz’
Se expande el arreglo a [1 3] y los demás campos quedan
vacíos
14 / 29
La función fieldnames
La función fieldnames nos entrega un arreglo de celdas de
strings con los nombres de campos.
>> fieldnames(paciente)
ans =
’nombre’
’edad’
’isapre’
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
15 / 29
Construcción usando struct
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
La forma básica es:
inf=struct(’campo1’, val1, ’campo2’, val2, ..)
Usando struct existen 2 métodos para asignar campos.
Se explicará a través de un ejemplo: base de datos para
registrar la temperatura y presión de una ciudad.
>> clima= struct(’temp’, 23, ’presion’, 760)
>> clima(2)= struct(’temp’, 20, ’presion’, 753)
A través de listas con valores:
weather= struct(’temp’, {23, 20}, ’presion’, {760, 753})
16 / 29
Construcción usando struct (2)
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
>> weather(1)
ans =
temp: 23
presion: 760
>> weather(2)
ans =
temp: 20
presion: 753
17 / 29
Acceso a datos
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
El acceso a datos se hace mediante el operador punto (.).
Ejemplo
>> paciente(2).edad
ans =
35
18 / 29
Acceso a datos usando funciones
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
getfield obtiene valores de un campo
Ejemplo:
>> f=getfield(paciente, {2}, ’nombre’ )
f =
Juan Escobar
Se puede extraer los valores de un campo como arreglo:
>>A=[paciente.edad]
A=
28 35
>> promedio_edad=mean(A)
Promedio_edad =
31.5000
19 / 29
Agregar y quitar campos
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Agregando un campo a una estructura simple, se le agrega a
toda la estructura.
Por ejemplo:
>> paciente(1).rut=’18.999.999-6’
paciente =
nombre: ’Laura Carmona’
edad: 28
isapre: ’La Muerte’
rut: ’18.999.999-6’
20 / 29
Agregar y quitar campos (2)
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Para eliminar campos se usa rmfield
Por ejemplo:
>> paciente=rmfield(paciente, ’rut’)
paciente =
nombre: ’Laura Carmona’
edad: 28
isapre: ’La Muerte’
21 / 29
Ejemplo
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Resultado de experimento:
test(1).plomo=.007; test(2).plomo=0.031; test(3).plomo=.019;
test(1).mercurio=.0021; test(2).mercurio=0.0009; test(3).mercurio=.0013;
test(1).cromo=.0025; test(2).cromo=0.017; test(3).cromo=0.10;
function [r1, r2]= concentracion(muestra);
%r1 contiene el cuociente entre mercurio y plomo de cada muestra.
%r2 contiene el cuociente entre plomo y cromo
r1=[muestra.mercurio] ./ [muestra.plomo];
r2=[muestra.plomo] ./ [muestra.cromo];
%Grafico de concentraciones de plomo, mercurio y cromo sobre el mismo
%grafico usando diferentes colores
22 / 29
Funciones y Estructuras: Ejemplo (2)
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
plomo=[muestra.plomo];
mercurio=[muestra.mercurio];
cromo=[muestra.cromo];
plot(plomo, ’r’); hold on
plot(mercurio, ’b’)
plot(cromo, ’y’); hold off
23 / 29
Temario
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
1
Introducción
2 Estructuras
3 Arreglos de Celdas
24 / 29
Arreglos de Celdas
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
Un arreglos de celdas es un arreglo de MATLAB en el cual
los elementos son celdas.
Las celdas son contenedores que pueden contener otros
arreglos de MATLAB
Por ejemplo, una celda puede contener un arreglo de
números reales, otra un arreglo de strings y otra un vector de
números complejos.
25 / 29
Solución 1
Un arreglo de celdas se puede crear a través de dos
mecanismos:
Asignación
Uso de funciones
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
26 / 29
Creación de Arreglos de Celdas: indexado de celdas
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglos de
Celdas
A(1,1)={[1 4; 0 5]}
A(1,2)={’Edgar Poe’}
A(2,1)={3 + 7i}
A(2,2)={pi}
27 / 29
Creación de Arreglos de Celdas: indexado de
contenido
“Estructuras de
Datos y Manejo
de Información”
Carlos Valle
Vidal
Introducción
Estructuras
Arreglo
Comentarios de: Estructuras de Datos y Manejo de Información (0)
No hay comentarios