You are on page 1of 32

Fundamentos de Informtica

Parte II Anlisis y Visualizacin de Datos mediante Matlab


Titulacin: Ingeniera Tcnica Industrial Qumica Industrial Profesor: Jos Luis Esteban Escuela Superior de Ciencias Experimentales y Tecnologa (ESCET) Universidad Rey Juan Carlos Curso acadmico 2008-2009
4/11/08 Ingeniera Tcnica Industrial (Qumica) 2007-08 - "Fundamentos de Informtica" - Tema 5 1

Tema 5 Tipos de datos, operadores y funciones

5.1. Tipos de datos en Matlab 5.2. Operadores en Matlab 5.3. Funciones en Matlab 5.4. Lectura y escritura de datos de fichero

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

5.1. Tipos de datos en Matlab

Tipos

elementales de datos Tipos de datos agregados

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Tipos elementales de datos en Matlab

Tipos numricos

Entero (int8, uint8, int16, uint16, int32, uint32, int64, uint64):

con o sin signo, de 8, 16, 32 64 bits

Flotante de simple precisin (single): 32 bits Flotante de doble precisin (double): 64 bits.

Este es el nico tipo utilizado en operaciones matemticas

Lgico (logical): 8 bits

Valor 0 1. Resultado de operaciones relacionales o lgicas Utilizado para almacenar un carcter


Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Carcter (char): 16 bits

4/11/08

Tipos de datos agregados en Matlab

Matrices

Matrices comunes: agregaciones bidimensionales de tipos bsicos Matrices multidimensionales: 3 ms dimensiones Matrices dispersas (sparse):

los elementos cuyo valor es 0 no ocupan espacio en la memoria

Nmeros Complejos

Utilizan dos matrices del mismo tamao, una para la parte real y otra para la parte imaginaria


4/11/08

Matrices de celdas Estructuras


Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Matrices multidimensionales

Matriz de 3x3:

Adicin de una tercera dimensin:

>> 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 2 a(:,:,2) = 5 1 3 6 4 2 7 7 7 >> a(2,2,2) ans = 4


6

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Matrices dispersas (sparse matrices)


Las matrices que contienen muchos ceros se pueden almacenar ms eficientemente usando matrices dispersas. La funcin sparse permite crear una matriz dispera vaca o convertir otra matriz en una dispersa. Ejemplos:
>> z = sparse(3,3) z= All zero sparse: 3-by-3 >> 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
7

Las matrices dispersas se pueden utilizar en el mismo tipo de clculos que las matrices comunes

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Cadenas de caracteres

Una cadena de caraceres es un vector fila de caracteres. Las cadenas constantes se escriben entre comillas simples:
>> vinagreta = 'aceite, vinagre y sal' vinagreta = aceite, vinagre y sal

Las operaciones sobre una cadena de caracteres son las mismas que sobre una matriz comn:
>> c(1) ans = a >> Ensalada=['Lechuga con ' vinagreta] Ensalada = Lechuga con aceite, vinagre y sal

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Nmeros complejos

Los nmeros 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 nmeros complejos se almacena internamente como dos matrices de nmeros reales:
>> real(c) ans = 1 3 4 5 >> imag(c) ans = 2 -1 0 -3
9

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

5.2. Operadores en Matlab

Tipos

de operadores

Operadores

aritmticos Operadores relacionales Operadores lgicos


Precedencia

de los operadores

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

10

Operaciones Aritmticos

Operaciones matriciales elemento a elemento:


A + B Suma A B Sustraccin Operandos del mismo tamao o uno de ellos ha de ser escalar

Operaciones matriciales (lgebra lineal):


Operaciones elemento a elemento:


A*B Producto matricial A/B A* B^1 A\B A^1 * B A ^ B Potencia de matrices A' Traspuesta (conjugada) Operandos de tamao compatible o uno de ellos escalar

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 tamao o uno de ellos escalar
11

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Operadores Relacionales (1/2)

Los operadores relacionales realizan una comparacin entre los operandos, devolviendo un valor lgico (0 1).

A<B A>B A <= B A >= B A == B A ~= B

menor que mayor que menor o igual que mayor o igual que igual a distinto de

Para comparar cadenas de caracteres es necesario utilizar la funcin strcmp.


Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

4/11/08

12

Operadores Relacionales (2/2)

Ejemplos:
>> a = [1 3 5 7]; >> b = [5 1 5 2]; >> a>b ans = 0 1 >> a>=b ans = 0 1 >> a==b ans = 0 0 >> a~=b ans = 1 1 >> a>4 ans = 0 0

1
13

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Operadores Lgicos (1/2)

Los operadores lgicos relacionan valores lgicos entre s, para obtener otro resultado lgico.

Negacin lgica ( ~ ) Y elemento a elemento ( & ) O elemento a elemento ( | ) Y escalar vago ( && ) O escalar vago ( || )

>> a = [1 0 1]; >> b = [0 1 1]; >> a | b ans = 1 1 1 >> a & b ans = 0 0 1 >> ~ans ans = 1 1 0
14

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Operadores Lgicos (2/2)

Los operadores lgicos escalares se denominan vagos porque no evalan el operando de la derecha si no es necesario.

Y escalar vago ( && ) O escalar vago ( || )


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

Ejemplo:

Si el resultado de (b ~= 0) es falso, ya no es necesario


Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

evaluar el operando de la derecha. De este modo se evitan clculos innecesarios e incluso errores.
4/11/08 15

Precedencia de los Operadores


Parntesis ( ) Operadores matriciales

Traspuesta (.'), potencia (.^), traspuesta compleja conjugada ('), potencia matricial (^) Ms unario (+), menos unario (), negacin lgica (~) Multiplicacin (.*), divisin (./ y .\), producto de matrices (*), divisin de matrices (/ y \) Adicin (+), sustraccin ()

Operadores unarios

Operadores aritmticos

Operador dos puntos (:) Operadores relacionales

Menor (<), menor o igual (<=), mayor (>), mayor o igual (>=), igual (==), distinto (~=) Y elemento a elemento (&) O elemento a elemento (|) Y vago (&&) O vago (||)
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Operadores lgicos

4/11/08

16

5.3. Funciones en Matlab

Las funciones perimten realizar un clculo 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 funcin no disponible en la biblioteca de Matlab, el usuario puede programarla para despus utilizarla del mismo modo que las funciones de biblioteca. El aspecto de una llamada a una funcin es: r = nombre_de_funcin( arg1, arg2, ... ) r es la variable donde se almacenar el resultado arg1, arg2, ... es el conjunto de argumentos proporcionados a la funcin
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

4/11/08

17

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) Una funcin escalar aplicada a una matriz opera sobre cada elemento, devolviendo otra matriz del mismo tamao.
>> x=0:0.5:1 x= 0 0.5000

Ciertas funciones pueden devolver valores simples o mltiples:


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

1.0000

>> cos(x) ans = 1.0000 0.8776


4/11/08

0.5403

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Categoras de Funciones de Biblioteca


Funciones

de control del entorno de trabajo Funciones matemticas Funciones de programacin Funciones de lectura y escritura de ficheros Funciones grficas

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

19

Funciones matemticas

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

Funciones matriciales elementales Descomposicin y factorizacin de matrices Anlisis estadstico de datos Anlisis de polinomios Integracin de ecuaciones diferenciales ordinarias Resolucin de ecuaciones no lineales y optimizacin Integracin numrica Procesamiento de seal e imagen
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

4/11/08

20

Funciones que operan sobre escalares


sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) seno coseno tangente arco seno arco coseno 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 hiperblico cosh(x) coseno hiperblico tanh(x) tangente hiperblica asinh(x) arco seno hiperblico acosh(x) arco coseno hiperblico atanh(x) arco tangente hiperblica log(x) logaritmo natural log10(x) logaritmo decimal
4/11/08

exp(x) sqrt(x) sign(x)

funcin exponencial raz cuadrada devuelve -1 si x<0, 0 si x=0 y 1 si x>0 Aplicada a un nmero complejo, devuelve un vector unitario en la misma direccin 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 ms prximo fix(x) redondea hacia el entero ms prximo a 0 floor(x) valor entero ms prximo hacia - ceil(x) valor entero ms prximo hacia + gcd(x) mximo comn divisor lcm(x) mnimo comn mltiplo real(x) partes reales imag(x) partes imaginarias abs(x) valores absolutos angle(x) ngulos de fase
21

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Funciones que operan sobre vectores


max(x) Mximo elemento de un vector [xm,im]=max(x) dem. Devuelve el valor mximo xm y la posicin que ocupa im min(x) Mnimo elemento de un vector [xm,im]=min(x) dem. Devuelve el valor mximo xm y la posicin que ocupa im sum(x) Suma de los elementos de un vector cumsum(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 vector std(x) Desviacin tpica prod(x) Producto de los elementos de un vector cumprod(x) Devuelve el vector producto acumulativo de los elementos de un vector [y,i]=sort(x) Ordenacin de menor a mayor de los elementos de un vector x. Devuelve el vector ordenado y, y un vector i con las posiciones iniciales en x de los elementos en el vector ordenado y.
4/11/08
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

22

Funciones que construyen matrices


eye(n) zeros(m, n) zeros(n) ones(m, n) ones(n) linspace(x1, x2, n) logspace(d1, d2, n) rand(n) rand(m, n) randn(n) magic(n)
4/11/08

forma la matriz unidad de orden n forma una matriz de ceros de tamao (mn) dem de tamao (nn) forma una matriz de unos de tamao (mn) dem de tamao (nn) forma un vector con n valores equiespaciados entre x1 y x2 forma un vector con n valores espaciados logartmicamente entre 10^d1 y 10^d2. Si d2 es pi, los puntos se generan entre 10^d1 y pi forma una matriz de nmeros aleatorios entre 0 y 1, con distribucin uniforme, de tamao (nn) idem de tamao (mn) forma una matriz de nmeros aleatorios de tamao (nn), con distribucin normal, de valor medio 0 y varianza 1. crea una matriz (nn) con los nmeros 1, 2, ... n^2, con la propiedad de que todas las filas y columnas suman lo mismo.
23

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Funciones de exploracin de matrices


any(vector) any(matriz) all(vector) all(matriz) find(vector) find(matriz) [l c]=find(matriz) Comprueba si alguno de los elementos del vector es distinto de cero, devolviendo un valor lgico. Se aplica por separado a cada columna de la matriz. El resultado es un vector valores lgicos. Comprueba si todos de los elementos del vector es distinto de cero, devolviendo un valor lgico. Se aplica por separado a cada columna de la matriz. El resultado es un vector valores lgicos. Busca en el vector valores distintos de cero y devuelve otro vector con la lsta de ndices de los elementos encontrados. Busca en la matriz valores distintos de cero y devuelve otro vector con la lsta de ndices absolutos de los elementos encontrados. 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.
24

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

Funciones matriciales bsicas


[m,n] = size(matriz) size(matriz) size(matriz,1) size(matriz,2) trace(matriz) inv(matriz) det(matriz) Devuelve el nmero de filas m y de columnas n de una matriz Devuelve el tamao de una matriz cuadrada Devuelve el nmero de filas de la matriz Devuelve el nmero de columnas de la matriz Devuelve la traza (suma de los elementos de la diagonal) de una matriz cuadrada Devuelve la inversa de la matriz (cuadrada) Devuelve el determinante de la matriz (cuadrada)

Existe un gran nmero de funciones de lgebra matricial en Matlab, que se pueden consultar en la bibliografa y en la ayuda del programa.
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

4/11/08

25

Funciones sobre cadenas de caracteres


double(cad) char(vector) char(cad1, cad2, ...) deblank(cad) ischar(cad) isletter(cad) Convierte en nmeros (cdigos ASCII) cada carcter Convierte un vector de nmeros (cdigos ASCII) en una cadena Crea una matriz de caracteres con las cadenas proporcionadas Elimina los blancos al final de una cadena de caracteres Detecta si una variable es una cadena de caracteres Detecta si cada carcter de la cadena es alfabtico, devolviendo un vector de valores lgicos de la misma longitud que la cadena. isspace(cad) Detecta si un cada carcter es un espacio en blanco. strcmp(cad1, cad2) Devuelve un uno si las cadenas son iguales , y cero si no lo son strcmpi(cad1, cad2) Como strcmp, ignorando la diferencia entre maysculas y minsculas strncmp(cad1, cad2, n) Como strcmp, comparando slo los n primeros caracteres de las cadenas findstr(cad1, cad2) devuelve un vector con las posiciones iniciales de todas las veces en que la cadena ms corta aparece en la ms larga strmatch(matcad, cad) Devuelve los ndices de todos los elementos de la matriz de cadenas que empiezan por la cadena cad strrep(c1,c2,c3) Sustituye la cadena c2 por c3, cada vez que c2 es encontrada en c1
4/11/08
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

26

5.4. Lectura y escritura de datos de fichero


Por lo general, los datos que hayan de ser analizados, se encontrarn almacenados en ficheros. Por otro lado, los resultados que se generen tambin pueden constituir grandes volmenes de datos que convendr almacenar en ficheros. Tambin puede ser necesario almacenar las variables en uso para retomar la sesin con posterioridad. Matlab ofrece varias funciones para este fin.

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

27

Escritura de datos en fichero (1/3)


save nombrefichero variable1 variable2 ...

Almacena las variables especificadas en el fichero indicado. Almacena la variable en un fichero con el nombre de la variable al que se aade '.mat' Almacena todas las variables en el fichero indicado. Almacena todas las variables en el fichero 'matlab.mat'
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

save variable

save nombrefichero

save

4/11/08 28

Escritura de datos en fichero (2/3)

Las instruccin 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 instruccin save permiten alterar su funcionamiento bsico:

append ascii ascii double ascii tabs ascii double tabs

Aade datos al fichero en lugar de borrarlo Guarda los datos en formato de texto editable dem con ms dgitos significativos Separa los datos con tabulaciones Ms dgitos significativos y tabulaciones

4/11/08

Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

29

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
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

30

Lectura de datos de fichero (1/2)


load nombrefichero variable1 variable2 ...

Lee del fichero binario nicamente las variables especificadas Lee todas las variables existentes en el fichero binario indicado. Lee los datos del fichero de texto y los almacena en una variable con el mismo nombre (sin extensin). Se produce un error si los datos del fichero no tienen forma de matriz. Lee todas las variables del fichero 'matlab.mat'
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

load nombrefichero

load nombrefichero -ascii

load

4/11/08

31

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.

4/11/08
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

32

You might also like