Está en la página 1de 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

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):

Flotante de simple precisin (single): 32 bits


Flotante de doble precisin (double): 64 bits.

Valor 0 1. Resultado de operaciones relacionales o lgicas

Carcter (char): 16 bits

4/11/08

Este es el nico tipo utilizado en operaciones matemticas

Lgico (logical): 8 bits

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

Utilizado para almacenar un carcter


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

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

Matrices de celdas

Estructuras

4/11/08

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

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

4/11/08

Adicin de una tercera dimensin:

>> 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

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

4/11/08

Las matrices dispersas se


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

>> 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

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

4/11/08

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

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

4/11/08

de los operadores

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):

4/11/08

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

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

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

11

Operadores Relacionales (1/2)

Los operadores relacionales realizan una comparacin


entre los operandos, devolviendo un valor lgico (0 1).

4/11/08

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

12

Operadores Relacionales (2/2)

Ejemplos:
>> a = [1 3 5 7];
>> b = [5 1 5 2];

>> a==b
ans =
0 0

>> a>b
ans =
0 1

>> a~=b
ans =
1 1

>> a>4
ans =
0 0

>> a>=b
ans =
0 1
4/11/08

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

13

Operadores Lgicos (1/2)

Los operadores lgicos relacionan valores lgicos entre


s, para obtener otro resultado lgico.

4/11/08

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

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

14

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

evaluar el operando de la derecha. De este modo se evitan


clculos innecesarios e incluso errores.
4/11/08

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

15

Precedencia de los Operadores


Parntesis ( )
Operadores matriciales

Traspuesta (.'), potencia (.^), traspuesta compleja conjugada ('), potencia matricial (^)

Operadores unarios

Ms unario (+), menos unario (), negacin lgica (~)

Operadores aritmticos

Multiplicacin (.*), divisin (./ y .\), producto de matrices (*), divisin de matrices (/ y \)
Adicin (+), sustraccin ()

Operador dos puntos (:)


Operadores relacionales

Menor (<), menor o igual (<=), mayor (>), mayor o igual (>=), igual (==), distinto (~=)

Operadores lgicos

4/11/08

Y elemento a elemento (&)


O elemento a elemento (|)
Y vago (&&)
O vago (||)
Ingeniera Tcnica Industrial (Qumica) 2007-2008 - "Fundamentos de Informtica" - Tema 5

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

4/11/08

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

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

1.0000

>> cos(x)
ans =
1.0000 0.8776
4/11/08

0.5403

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

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

18

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

4/11/08

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

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

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

21

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.

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

23

Funciones de exploracin de matrices


any(vector)
any(matriz)
all(vector)
all(matriz)
find(vector)
find(matriz)
[l c]=find(matriz)

4/11/08

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.

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

24

Funciones matriciales bsicas


[m,n] = size(matriz)
size(matriz)
size(matriz,1)
size(matriz,2)
trace(matriz)
inv(matriz)
det(matriz)

4/11/08

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

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.

save variable

Almacena la variable en un fichero con el nombre de la


variable al que se aade '.mat'

save nombrefichero

Almacena todas las variables en el fichero indicado.

save

4/11/08

Almacena todas las variables en el fichero 'matlab.mat'


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

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:

4/11/08

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

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

load 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 extensin). Se produce un error si los
datos del fichero no tienen forma de matriz.

load

4/11/08

Lee todas las variables del fichero 'matlab.mat'


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

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

También podría gustarte