32
Ingeniería Técnica Industrial (Química) 2007-08 - "Fundamentos de Informática" - Tema 5 4/11/08 1 Fundamentos de Informática Parte II – Análisis y Visualización de Datos mediante Matlab Titulación: Ingeniería Técnica Industrial – Química Industrial Profesor: José Luis Esteban Escuela Superior de Ciencias Experimentales y Tecnología (ESCET) Universidad Rey Juan Carlos Curso académico 2008-2009

Fundamentos de Informática - Docencia en Matemática Aplicadamatematicaaplicada.jezasoft.co/jeza/material_de_apoyo/informatica/... · 4/11/08 Ingeniería Técnica Industrial (Química)

Embed Size (px)

Citation preview

Ingeniería Técnica Industrial (Química) 2007-08 - "Fundamentos de Informática" - Tema 54/11/08 1

Fundamentos de InformáticaParte II – Análisis y Visualización de Datos

mediante Matlab

Titulación: Ingeniería Técnica Industrial – Química Industrial

Profesor: José Luis Esteban

Escuela Superior de Ciencias Experimentales y Tecnología (ESCET)

Universidad Rey Juan Carlos

Curso académico 2008-2009

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 2

Tema 5 – Tipos de datos, operadores y funciones

5.1. Tipos de datos en Matlab5.2. Operadores en Matlab5.3. Funciones en Matlab5.4. Lectura y escritura de datos de fichero

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 3

5.1. Tipos de datos en Matlab

●Tipos elementales de datos●Tipos de datos agregados

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 4

Tipos elementales de datos en Matlab

● Tipos numéricos➢ Entero (int8, uint8, int16, uint16, int32, uint32, int64, uint64):

➔ con o sin signo, de 8, 16, 32 ó 64 bits➢ Flotante de simple precisión (single): 32 bits➢ Flotante de doble precisión (double): 64 bits.

➔ Este es el único tipo utilizado en operaciones matemáticas● Lógico (logical): 8 bits

➢ Valor 0 ó 1. Resultado de operaciones relacionales o lógicas● Carácter (char): 16 bits

➢ Utilizado para almacenar un carácter

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 5

Tipos de datos agregados en Matlab

● Matrices➢ Matrices comunes: agregaciones bidimensionales de tipos

básicos➢ Matrices multidimensionales: 3 ó más dimensiones➢ Matrices dispersas (sparse):

➔ los elementos cuyo valor es 0 no ocupan espacio en la memoria● Números Complejos

➢ Utilizan dos matrices del mismo tamaño, una para la parte real y otra para la parte imaginaria

● Matrices de celdas● Estructuras

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 6

Matrices multidimensionales

● Matriz de 3x3:>> a = [2 4 8; 3 1 5; 9 4 2]a = 2 4 8 3 1 5 9 4 2

>> a(:, :, 2)= [5 1 3; 6 4 2; 7 7 7]a(:,:,1) = 2 4 8 3 1 5 9 4 2a(:,:,2) = 5 1 3 6 4 2 7 7 7>> a(2,2,2)ans = 4

● Adición de una tercera dimensión:

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 7

Matrices dispersas (sparse matrices)

● Las matrices que contienen muchos ceros se pueden almacenar más eficientemente usando matrices dispersas.

● La función sparse permite crear una matriz dispera vacía o convertir otra matriz en una dispersa. Ejemplos:

>> a=[1 0 0; 0 1 0; 0 0 1]a = 1 0 0 0 1 0 0 0 1>> b = sparse(a)b = (1,1) 1 (2,2) 1 (3,3) 1

● Las matrices dispersas se pueden utilizar en el mismo tipo de cálculos que las matrices comunes

>> z = sparse(3,3)z = All zero sparse: 3-by-3

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 8

Cadenas de caracteres

● Una cadena de caraceres es un vector fila de caracteres.● Las cadenas constantes se escriben entre comillas simples:

>> c(1)ans =a>> Ensalada=['Lechuga con ' vinagreta]Ensalada =Lechuga con aceite, vinagre y sal

>> vinagreta = 'aceite, vinagre y sal'vinagreta =aceite, vinagre y sal

● Las operaciones sobre una cadena de caracteres son las mismas que sobre una matriz común:

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 9

Números complejos

● Los números complejos se pueden utilizar en Matlab de la misma forma que los reales. La unidad imaginaria se representa mediante las variables i o j.>> c = [1+2i 3-i; 4 5-3i]c = 1.0000 + 2.0000i 3.0000 – 1.0000i 4.0000 5.0000 – 3.0000i

● Una matriz de números complejos se almacena internamente como dos matrices de números reales:>> real(c)ans = 1 3 4 5

>> imag(c)ans = 2 -1 0 -3

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 10

5.2. Operadores en Matlab

●Tipos de operadores➢Operadores aritméticos➢Operadores relacionales➢Operadores lógicos

●Precedencia de los operadores

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 11

Operaciones Aritméticos

● Operaciones matriciales(álgebra lineal):➢ A * B Producto matricial➢ A / B A* B^–1➢ A \ B A^–1 * B➢ A ^ B Potencia de matrices➢ A ' Traspuesta (conjugada)➢ Operandos de tamaño compatible

o uno de ellos escalar

● Operaciones elemento a elemento:➢ A .* B {A(i,j) * B(i,j)}➢ A ./ B {A(i,j) / B(i,j)}➢ A .\ B {B(i,j) / A(i,j)}➢ A .^ B {A(i,j) ^ B(i,j)}➢ A .' Traspuesta➢ Operandos del mismo tamaño

o uno de ellos escalar

● Operaciones matriciales elemento a elemento:➢ A + B Suma➢ A – B Sustracción➢ Operandos del mismo tamaño o uno de ellos ha de ser escalar

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 12

Operadores Relacionales (1/2)

● Los operadores relacionales realizan una comparación entre los operandos, devolviendo un valor lógico (0 ó 1).➢ A < B menor que➢ A > B mayor que➢ A <= B menor o igual que➢ A >= B mayor o igual que➢ A == B igual a➢ A ~= B distinto de

● Para comparar cadenas de caracteres es necesario utilizar la función strcmp.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 13

Operadores Relacionales (2/2)

● Ejemplos:

>> a = [1 3 5 7];

>> b = [5 1 5 2];

>> a>bans = 0 1 0 1

>> a>=bans = 0 1 1 1

>> a==bans = 0 0 1 0

>> a~=bans = 1 1 0 1

>> a>4ans = 0 0 1 1

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 14

Operadores Lógicos (1/2)

● Los operadores lógicos relacionan valores lógicos entre sí, para obtener otro resultado lógico.➢ Negación lógica ( ~ ) ➢ Y elemento a elemento ( & )➢ O elemento a elemento ( | )➢ Y escalar vago ( && )➢ O escalar vago ( || )

>> a = [1 0 1];>> b = [0 1 1];>> a | bans = 1 1 1>> a & bans = 0 0 1>> ~ansans = 1 1 0

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 15

Operadores Lógicos (2/2)

● Los operadores lógicos escalares se denominan “vagos” porque no evalúan el operando de la derecha si no es necesario.➢ Y escalar vago ( && )➢ O escalar vago ( || )

● Ejemplo: >> a = 1;>> b = 0;>> x = (b ~= 0) && (a/b > 18.5)x = 0

● Si el resultado de (b ~= 0) es falso, ya no es necesario evaluar el operando de la derecha. De este modo se evitan cálculos innecesarios e incluso errores.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 16

Precedencia de los Operadores● Paréntesis ( )● Operadores matriciales

➢ Traspuesta (.'), potencia (.^), traspuesta compleja conjugada ('), potencia matricial (^)● Operadores unarios

➢ Más unario (+), menos unario (–), negación lógica (~) ● Operadores aritméticos

➢ Multiplicación (.*), división (./ y .\), producto de matrices (*), división de matrices (/ y \) ➢ Adición (+), sustracción (–)

● Operador dos puntos (:)● Operadores relacionales

➢ Menor (<), menor o igual (<=), mayor (>), mayor o igual (>=), igual (==), distinto (~=)● Operadores lógicos

➢ Y elemento a elemento (&)➢ O elemento a elemento (|)➢ Y vago (&&)➢ O vago (||)

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 17

5.3. Funciones en Matlab

● Las funciones perimten realizar un cálculo sobre uno o varios argumentos, devolviendo un resultado. Tanto los argumentos como los resultados pueden ser matrices.

● Matlab dispone de una gran biblioteca de funciones.● En aquellos casos en los que se precisa utilizar una función no

disponible en la biblioteca de Matlab, el usuario puede programarla para después utilizarla del mismo modo que las funciones de biblioteca.

● El aspecto de una llamada a una función es:➢ r = nombre_de_función( arg1, arg2, ... )➢ r es la variable donde se almacenará el resultado➢ arg1, arg2, ... es el conjunto de argumentos proporcionados a la

función

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 18

Estructura de las Funciones● Los argumentos proporcionados a las funciones pueden ser

constantes, variables o expresiones:➢ cos(1.23) cos(x) cos(2*x+b)

>> a= [1 5 3];>> maximo = max(a)maximo = 5>> [maximo posicion] = max(a)maximo = 5posicion = 2

>> x=0:0.5:1x = 0 0.5000 1.0000

>> cos(x)ans = 1.0000 0.8776 0.5403

● Ciertas funciones pueden devolver valores simples o múltiples:

● Una función escalar aplicada a una matriz opera sobre cada elemento, devolviendo otra matriz del mismo tamaño.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 19

Categorías de Funciones de Biblioteca

●Funciones de control del entorno de trabajo●Funciones matemáticas●Funciones de programación●Funciones de lectura y escritura de ficheros●Funciones gráficas

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 20

Funciones matemáticas

● Funciones que operan sobre escalares● Funciones que operan sobre vectores● Funciones que operan sobre matrices

➢ Funciones matriciales elementales➢ Descomposición y factorización de matrices➢ Análisis estadístico de datos➢ Análisis de polinomios➢ Integración de ecuaciones diferenciales ordinarias➢ Resolución de ecuaciones no lineales y optimización➢ Integración numérica➢ Procesamiento de señal e imagen

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 21

Funciones que operan sobre escalares

exp(x) función exponencialsqrt(x) raíz cuadradasign(x) devuelve -1 si x<0, 0 si x=0 y 1 si x>0

Aplicada a un número complejo, devuelveun vector unitario en la misma dirección

rem(x,y) resto x – n.*y, donde n = fix(x./y)No es necesario que x e y sean enteros

mod(x,y) resto x – n.*y, donde n = floor(x./y)round(x) redondeo hacia el entero más próximofix(x) redondea hacia el entero más próximo a 0floor(x) valor entero más próximo hacia -∞ceil(x) valor entero más próximo hacia +∞gcd(x) máximo común divisorlcm(x) mínimo común múltiploreal(x) partes realesimag(x) partes imaginariasabs(x) valores absolutosangle(x) ángulos de fase

sin(x) senocos(x) cosenotan(x) tangenteasin(x) arco senoacos(x) arco cosenoatan(x) arco tangente (devuelve un ángulo

entre -π/2 y +π/2)atan2(x,y) arco tangente (devuelve un ángulo

entre -π y +π); recibe 2 argumentos,proporcionales al seno y al coseno

sinh(x) seno hiperbólicocosh(x) coseno hiperbólicotanh(x) tangente hiperbólicaasinh(x) arco seno hiperbólicoacosh(x) arco coseno hiperbólicoatanh(x) arco tangente hiperbólicalog(x) logaritmo naturallog10(x) logaritmo decimal

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 22

Funciones que operan sobre vectores

max(x) Máximo elemento de un vector[xm,im]=max(x) Ídem. Devuelve el valor máximo xm y la posición que ocupa immin(x) Mínimo elemento de un vector[xm,im]=min(x) Ídem. Devuelve el valor máximo xm y la posición que ocupa imsum(x) Suma de los elementos de un vectorcumsum(x) Devuelve el vector suma acumulativa de los elementos de un vector

(cada elemento del resultado es una suma de elementos del original)mean(x) Valor medio de los elementos de un vectorstd(x) Desviación típicaprod(x) Producto de los elementos de un vectorcumprod(x) Devuelve el vector producto acumulativo de los elementos de un vector[y,i]=sort(x) Ordenación de menor a mayor de los elementos de un vector x.

Devuelve el vector ordenado y, y un vector i con las posiciones inicialesen x de los elementos en el vector ordenado y.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 23

Funciones que construyen matriceseye(n) forma la matriz unidad de orden nzeros(m, n) forma una matriz de ceros de tamaño (m×n)zeros(n) ídem de tamaño (n×n)ones(m, n) forma una matriz de unos de tamaño (m×n)ones(n) ídem de tamaño (n×n)linspace(x1, x2, n) forma un vector con n valores equiespaciados entre x1 y x2logspace(d1, d2, n) forma un vector con n valores espaciados logarítmicamente

entre 10^d1 y 10^d2. Si d2 es pi, los puntos se generan entre 10^d1 y pi

rand(n) forma una matriz de números aleatorios entre 0 y 1, con distribución uniforme, de tamaño (n×n)

rand(m, n) idem de tamaño (m×n)randn(n) forma una matriz de números aleatorios de tamaño (n×n), con

distribución normal, de valor medio 0 y varianza 1.magic(n) crea una matriz (n×n) con los números 1, 2, ... n^2, con la

propiedad de que todas las filas y columnas suman lo mismo.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 24

Funciones de exploración de matricesany(vector) Comprueba si alguno de los elementos del vector es distinto

de cero, devolviendo un valor lógico.any(matriz) Se aplica por separado a cada columna de la matriz. El

resultado es un vector valores lógicos.all(vector) Comprueba si todos de los elementos del vector es distinto de

cero, devolviendo un valor lógico.all(matriz) Se aplica por separado a cada columna de la matriz. El

resultado es un vector valores lógicos.find(vector) Busca en el vector valores distintos de cero y devuelve otro

vector con la lísta de índices de los elementos encontrados.find(matriz) Busca en la matriz valores distintos de cero y devuelve otro

vector con la lísta de índices absolutos de los elementos encontrados.

[l c]=find(matriz) Busca en la matriz valores distintos de cero y devuelve dos vectores, uno con la lista de filas y otro con la lista de columnas de los elementos encontrados.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 25

Funciones matriciales básicas

[m,n] = size(matriz) Devuelve el número de filas m y de columnas n de una matrizsize(matriz) Devuelve el tamaño de una matriz cuadradasize(matriz,1) Devuelve el número de filas de la matrizsize(matriz,2) Devuelve el número de columnas de la matriztrace(matriz) Devuelve la traza (suma de los elementos de la diagonal) de

una matriz cuadradainv(matriz) Devuelve la inversa de la matriz (cuadrada)det(matriz) Devuelve el determinante de la matriz (cuadrada)

● Existe un gran número de funciones de álgebra matricial en Matlab, que se pueden consultar en la bibliografía y en la ayuda del programa.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 26

Funciones sobre cadenas de caracteresdouble(cad) Convierte en números (códigos ASCII) cada carácterchar(vector) Convierte un vector de números (códigos ASCII) en una cadenachar(cad1, cad2, ...) Crea una matriz de caracteres con las cadenas proporcionadasdeblank(cad) Elimina los blancos al final de una cadena de caracteresischar(cad) Detecta si una variable es una cadena de caracteresisletter(cad) Detecta si cada carácter de la cadena es alfabético, devolviendo un

vector de valores lógicos de la misma longitud que la cadena.isspace(cad) Detecta si un cada carácter es un espacio en blanco.strcmp(cad1, cad2) Devuelve un uno si las cadenas son iguales , y cero si no lo sonstrcmpi(cad1, cad2) Como strcmp, ignorando la diferencia entre mayúsculas y minúsculasstrncmp(cad1, cad2, n) Como strcmp, comparando sólo los n primeros caracteres de las

cadenasfindstr(cad1, cad2) devuelve un vector con las posiciones iniciales de todas las veces en

que la cadena más corta aparece en la más largastrmatch(matcad, cad) Devuelve los índices de todos los elementos de la matriz de cadenas

que empiezan por la cadena cadstrrep(c1,c2,c3) Sustituye la cadena c2 por c3, cada vez que c2 es encontrada en c1

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 27

5.4. Lectura y escritura de datos de fichero

● Por lo general, los datos que hayan de ser analizados, se encontrarán almacenados en ficheros.

● Por otro lado, los resultados que se generen también pueden constituir grandes volúmenes de datos que convendrá almacenar en ficheros.

● También puede ser necesario almacenar las variables en uso para retomar la sesión con posterioridad.

● Matlab ofrece varias funciones para este fin.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 28

Escritura de datos en fichero (1/3)

save nombrefichero variable1 variable2 ...● Almacena las variables especificadas en el fichero indicado.save variable● Almacena la variable en un fichero con el nombre de la

variable al que se añade '.mat'save nombrefichero● Almacena todas las variables en el fichero indicado.save● Almacena todas las variables en el fichero 'matlab.mat'

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 29

Escritura de datos en fichero (2/3)

● Las instrucción save almacena los datos en formato binario, y cada vez que se escribe un fichero se pierde el contenido previo de éste.

● Las siguientes opciones de la instrucción save permiten alterar su funcionamiento básico:➢ –append Añade datos al fichero en lugar de borrarlo➢ –ascii Guarda los datos en formato de texto editable➢ –ascii –double Ídem con más dígitos significativos➢ –ascii –tabs Separa los datos con tabulaciones➢ –ascii –double –tabs Más dígitos significativos y tabulaciones

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 30

Escritura de datos en fichero (3/3). Ejemplos.

● save practica2.mat➢ Almacena todas las variables del workspace en el fichero binario

● save variable.mat a➢ Almacena la variable a en el fichero binario variables.mat

● save variables.mat a b c➢ Almacena las variables a, b y c en el fichero binario variables.mat

● save a.txt a –ascii➢ Almacena la variable a en el fichero de texto a.txt

● save variables.txt a b c –ascii➢ Almacena la variables a, b y c en el fichero de texto variables.txt.➢ Peligro, habrá problemas al intentar cargarlas en memoria.

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 31

Lectura de datos de fichero (1/2)

load nombrefichero variable1 variable2 ...● Lee del fichero binario únicamente las variables especificadasload nombrefichero● Lee todas las variables existentes en el fichero binario indicado.load nombrefichero -ascii● Lee los datos del fichero de texto y los almacena en una variable

con el mismo nombre (sin extensión). Se produce un error si los datos del fichero no tienen forma de matriz.

load● Lee todas las variables del fichero 'matlab.mat'

4/11/08 Ingeniería Técnica Industrial (Química) 2007-2008 - "Fundamentos de Informática" - Tema 5 32

Lectura de datos de fichero (2/2). Ejemplos.

● load practica2.mat➢ Carga en el workspace todas las variables del fichero

(binario).● load variables.mat a b c➢ Carga del fichero binario variables.mat únicamente las

variables a, b y c.● load a.txt –ascii➢ Carga el contenido del fichero de texto a.txt en la variable a.➢ No es posible cargar varias variables a partir de un solo

fichero de texto.