Anda di halaman 1dari 108

n en Matlab y Simulink

Curso de Programacio

Alberto Herreros (albher@eis.uva.es)


Enrique Baeyens (enrbae@eis.uva.es)
Departamento de Ingeniera de Sistemas y Autom
atica (DISA)
Escuela de Ingenieras Industriales (EII)
Universidad de Valladolid (UVa)

Curso 2010/2011

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

1/215

Curso 2010/2011

2/215

Contenidos

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

3/215

es MATLAB?
Que
Es un lenguaje de alto nivel para computaci
on e ingeniera. Integra
computaci
on, visualizaci
on y programaci
on.
Aplicaciones tpicas de MATLAB son:
Matem
aticas y computaci
on
Desarrollo de algoritmos
Modelado, simulaci
on y prototipado
An
alisis de datos, exploraci
on y visualizaci
on
Gr
aficos cientficos y de ingeniera.
Desarrollo de aplicaciones

Matlab es un sistema interactivo cuyo elemento b


asico son las matrices y
no requiere dimensionamiento.
El nombre proviene de laboratorio de matrices.
Originalmente fue escrito en FORTRAN y haca uso de las libreras
LINPACK y EISPACK
Las u
ltimas versiones est
an desarrolladas en C y utilizan las libreras
LAPACK y BLAS.
Sobre la base de MATLAB se han construido conjuntos de funciones
especficas para diferentes problemas, denominadas toolboxes.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

4/215

Formas de introducir matrices en MATLAB

Lista explcita de elementos.


Desde un fichero de datos externo.
Utilizando funciones propias.
Creando un fichero .m

Comenzaremos introduciendo manualmente la matriz de D


urer.
Para ello utilizamos las siguientes reglas:
Separar elementos de una fila con espacios o comas.
Usar punto y coma; para indicar final de fila.
Incluir la lista completa de elementos dentro de corchetes, [ ].

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

5/215

Trabajando con matrices

Para introducir la matriz de D


urer hacemos:
A = [ 1 6 3 2 1 3 ; 5 10 11 8 ; 9 6 7 1 2 ; 4 15 14 1 ]

Como resultado se obtiene


A =
16
5
9
4

3
10
6
15

2
11
7
14

13
8
12
1

Una vez introducida una matriz, queda guardada en el entorno de


trabajo de MATLAB.
La matriz A es un cuadrado magico: Todas sus filas, columnas y
diagonales suman lo mismo. Para comprobarlo hacemos
sum (A)
ans =
34

34

34

34

El comando sum(A) calcula la suma de las columnas de la matriz


A, obteniendose un vector de dimension el n
umero de columnas.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

6/215

Trabajando con matrices

Para calcular la suma de las filas, podemos calcular la transpuesta


de la matriz.
A

obteniendo
ans =
16
3
2
13

5
10
11
8

9
6
7
12

4
15
14
1

la suma de las filas, en formato vector columna es


sum (A )
ans =
34
34
34
34

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

7/215

Trabajando con matrices

La funcion diag permite obtener un vector con los elementos de la


diagonal principal.
d i a g (A)

Se obtiene
ans =
16
10
7
1

y la suma de los elementos de la diagonal principal es


sum ( d i a g (A) )

obteniendose
ans =
34

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

8/215

Trabajando con matrices

La antidiagonal de una matriz no suele ser muy importante, por lo


que no hay ninguna funcion para extraerla. No obstante, puede
invertirse la disposicion de las columnas de la matriz con la funcion
fliplr, as la suma de la antidiagonal es
sum ( d i a g ( f l i p l r (A) ) )
ans =
34

Otra forma de obtener la suma de los elemento de la antidiagonal


es sumando elemento a elemento.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

9/215

Trabajando con matrices

Un elemento de la matriz A se referencia como A(i,j), siendo i la


fila y j la columna. La suma de la antidiagonal podra haberse
obtenido tambien como sigue:
A ( 1 , 4 )+A ( 2 , 3 )+A ( 3 , 2 )+A ( 4 , 1 )
ans =
34

Tambien es posible acceder a cada elemento de una matriz con un


solo ndice, as A(k) corresponde al elemento k de un vector
ficticio que se formara colocando las columnas de la matrix A una
debajo de otra: Comprobar que A(4,2) y A(8) corresponden al
mismo elemento de la matriz A.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

10/215

Trabajando con matrices

Si se intenta acceder a un elemento que excede las dimensiones de


la matriz, se obtiene un error
t = A( 4 , 5 )
Index exceeds matrix dimensions .

Si se inicializa un elemento que excede las dimensiones de la


matriz, la matriz se acomoda en dimension al nuevo elemento, con
el resto de nuevos elementos inicializados a cero.
X = A;
X ( 4 , 5 ) = 17
X =
16
5
9
4

3
10
6
15

2
11
7
14

A. Herreros, E. Baeyens, DISA/EII (UVa)

13
8
12
1

0
0
0
17

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

11/215

El operador :

El operador : es uno de los mas importantes de MATLAB. Tiene


diferentes utilidades. La expresion
1:10

indica un vector que contiene los n


umeros enteros desde 1 hasta
10.
1

10

Para obtener un espaciado no unitario, se utiliza un incremento.


100: 7:50

es
100

93

86

79

72

65

58

51

y
0: pi /4: pi

es
0

0.7854

A. Herreros, E. Baeyens, DISA/EII (UVa)

1.5708

2.3562

Curso de Programaci
on en Matlab y Simulink

3.1416
Curso 2010/2011

12/215

El operador :

Cuando el operador : aparece en los subndices de una matriz se


refiere a las filas o columnas y permite extraer submatrices. Por
ejemplo, A(1:k,j) es el vector formado por los primeros k
elementos de la columna j de la matriz A y
sum (A ( 1 : 4 , 4 ) )

calcula la suma de todos los elementos de la cuarta columna. Otra


forma mas compacta y elegante de hacer lo mismo es
sum (A ( : , end ) )

los dos puntos : (sin otros n


umeros) significan todas las filas y end
se refier a la u
ltima columna.
Pregunta: Que esta calculando la siguiente expresion?
sum (A( end , : ) )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

13/215

n magic
La funcio

Matlab dispone de una funcion magic que permite calcular


cuadrados magicos
Haciendo
B = magic ( 4 )
B =
16
2
5
11
9
7
4
14

3
10
6
15

13
8
12
1

La matriz obtenida es casi la misma que la matriz de D


urer, solo se
diferencia en que las columnas 2 y 3 estan intercambiadas. Se pude
obtener de nuevo la matriz de D
urer haciendo la siguiente
operaci
on
A = B(: ,[1 3 2 4])
A =
16
3
2
5
10
11
9
6
7
4
15
14
A. Herreros, E. Baeyens, DISA/EII (UVa)

13
8
12
1

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

14/215

Expresiones

Al igual que muchos otros lenguajes de programacion, MATLAB


dispone de expresiones matematicas, pero al contrario que en la
mayora de los lenguajes de programacion, estas expresiones hacen
referencia a matrices.
Los bloques constructivos de las expresiones son
Variables
N
umeros
Operadores
Funciones

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

15/215

Variables

MATLAB no requiere ning


un tipo de declaraci
on o indicaci
on de la
dimensi
on. Cuando MATLAB encuentra un nuevo nombre de variable la
crea autom
aticamente y reserva la cantidad de memoria necesaria. Si la
variable ya existe, MATLAB cambia su contenido y si es necesario
modifica la reserva de memoria.
Por ejemplo, la expresi
on
n u m e s t = 15

crea una matriz 1 por 1 llamada num_est y almacena el valor 25 en su


u
nico elemento.
Los nombres de variables deben comenzar siempre por una letra y pueden
incluir otras letras, n
umeros y el smbolo de subrayado, hasta un total de
31 caracteres.
Se distingue entre may
usculas y min
usculas. A y a no son la misma
variable.
Para ver el contenido de una variable, simplemente escribir el nombre de
la variable.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

16/215

meros
Nu

MATLAB utiliza notaci


on decimal convencional, con punto decimal
opcional y signo + o
Es posible utilizar notaci
on cientfica. La letra e especifica un factor de
escala de potencia de 10.
Los n
umeros imaginarios puros se especifican con la letra i o
j
Los siguientes ejemplos son todos n
umeros v
alidos en MATLAB
3
9.6397238
1i

99
1 . 6 0 2 1 0 e 20
3.14159 j

0.0001
6 . 0 2 2 5 2 e23
3 e5i

Internamente, los n
umeros se almacenan en formato largo utilizando la
norma IEEE de punto flotante. La precisi
on es aproximadamente de 16
cifras decimales significativas y el rango est
a entre 10308 y 10+308 .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

17/215

Operadores

Las expresiones de MATLAB utilizan los operadores aritmeticos


usuales, as como sus reglas de precedencia
+
*
/
\
^

( )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Suma
Resta
Producto
Division
Division por la izquierda
(se explicara)
Potencia
Transposicion y conjugacion compleja
Orden de evaluacion

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

18/215

Funciones

MATLAB proporciona un gran n


umero de funciones matem
aticas
elementales, por ejemplo, abs, sqrt, exp, sin, cos, etc.
Por defecto, MATLAB utiliza n
umeros complejos:
La raz cuadrada o el logaritmo de un n
umero negativo no producen error,
sino que dan como resultado u n
umero complejo.
Los argumentos de las funciones pueden ser n
umeros complejos
MATLAB proporciona tambien funciones avanzadas: Funciones de Bessel
o funciones gamma.
Una lista de todas las funciones elementales puede obtenerse con el
comando
help elfun

Funciones m
as avanzadas y funciones de matrices se obtienen con
help specfun
help elmat

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

19/215

Funciones
Algunas funciones est
an compiladas con el n
ucleo de MATLAB y son muy
r
apidas y eficientes. Ej. sqrt, sin
Otras funciones est
an programadas en lenguaje de MATLAB (ficheros
m). Pueden verse y modificarse
Algunas funciones proporcionan el valor de ciertas constantes u
tiles.
pi
i
j
eps
realmin
realmax
Inf
NaN

3.14159265

1
1
Precisi
on relativa de punto flotante 252
N
umero en punto flotante m
as peque
no 21022
N
umero en punto flotante m
as grande (2 )2+1023
Infinito
Not-a-Number (no es un n
umero)

Infinito se obtiene al dividir un n


umero no nulo por cero, o como
resultado de evaluar expresiones matem
aticas bien definidas.
NaN se obtiene al tratar de evaluar expresiones como 0/0 o
Inf-Inf que no
tienen valores bien definidos
Los nombres de las funciones no est
an reservados. Puede definirse una
variable eps=1e-6 y utilizarla. Para restaurar su valor original
c l e a r eps
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

20/215

Expresiones

Ya se han visto varios ejemplos de expresiones. Algunos otros


ejemplos son los siguientes:
r h o = (1+ s q r t ( 5 ) ) /2
rho =
1.6180
a = a b s (3+4 i )
a =
5
z = s q r t ( b e s s e l k ( 4 / 3 , rhoi ) )
z =
0.3730+ 0 . 3 2 1 4 i
huge = e x p ( l o g ( r e a l m a x ) )
huge =
1 . 7 9 7 7 e +308
t o o b i g = p i huge
toobig =
Inf

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

21/215

Funciones para crear matrices

MATLAB proporciona cuatro funciones para generar matrices


zeros
ones
rand
randn

A. Herreros, E. Baeyens, DISA/EII (UVa)

Matriz
Matriz
Matriz
Matriz

de
de
de
de

ceros
unos
elementos uniformemente distribuidos
elementos normalmente distribuidos

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

22/215

Funciones para crear matrices


Ejemplos
Z = zeros (2 ,4)
Z =
0
0
0
0

0
0

F = 5 o n e s ( 3 , 3 )
F =
5
5
5
5
5
5

5
5
5

0
0

N = f i x (10 rand (1 ,10) )


N =
4
9
4
4
8
0
R = randn (4 ,4)
R =
1.0668
0.2944
0.0593
1.3362
0.0956
0.7143
0.8323
1.6236
A. Herreros, E. Baeyens, DISA/EII (UVa)

0.6918
0.8580
1.2540
1.5937

1.4410
0.5711
0.3999
0.6900

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

23/215

El comando load
El comando load permite leer ficheros binarios que contienen matrices
generadas en sesiones anteriores de MATLAB
Tambien permite leer ficheros de texto que contienen datos.
El fichero debe estar organizado como una tabla de numeros separados
por espacios, una lnea por cada fila, e igual n
umero de elementos en
cada fila.
Ejemplo: Crear utilizando un editor de texto un fichero llamado
magik.dat que contenga los siguientes datos
16.0
5.0
9.0
4.0

3.0
10.0
6.0
15.0

2.0
11.0
7.0
14.0

13.0
8.0
12.0
1.0

El comando
l o a d magik . d a t

crea una variable llamada magik conteniendo la matriz.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

24/215

Ficheros m

Los ficheros m son ficheros de texto que contienen c


odigo de MATLAB.
Para crear una matriz haciendo uso de un fichero m, editar un fichero
llamado magik.m con el siguiente texto
A = [
16.0
5.0
9.0
4.0

...
3.0
10.0
6.0
15.0

2.0
11.0
7.0
14.0

13.0
8.0
12.0
1.0 ] ;

Ejecutar ahora el comando


magik

Comprobar que se ha creado la matriz A.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

25/215

n
Concatenacio

Es el proceso de unir dos o m


as matrices para formar otra matriz de
mayor dimensi
on
El operador concatenaci
on es []
Ejemplo:
B = [A
B =
16
5
9
4
64
53
57
52

A+32; A+48
3
10
6
15
51
58
54
63

2
11
7
14
50
59
55
62

A+16]
13
8
12
1
61
56
60
49

48
37
41
36
32
21
25
20

35
42
38
47
19
26
22
31

34
43
39
46
18
27
23
30

45
40
44
33
29
24
28
17

Comprobar que las columnas de esta matriz suman todas lo mismo, pero
no ocurre lo mismo con sus filas.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

26/215

Borrado de filas y columnas


Se pueden borrar filas y columnas utilizando el operador [].
es la matriz vaca (concatenaci
on de nada).
El proceso es sustituir una fila o una columna por la matriz vaca [].
Ejemplo: Borrado de la segunda columna de una matriz
X = A;
X(: ,2) = [ ]
X =
16
2
5
11
9
7
4
14

13
8
12
1

No se pueden borrar elementos, por que el resultado ya no sera una


matriz
X( 1 , 2 ) = [ ]

producira un error.
Sin embargo, utilizando un u
nico subndice es posible borrar elementos,
aunque el resultado ya no sera una matriz, sino un vector.
X(2:2:10) = [ ]
X =
16
9
A. Herreros, E. Baeyens, DISA/EII (UVa)

13

Curso de Programaci
on en Matlab y Simulink

12

1
Curso 2010/2011

27/215

El comando format
Este comando controla el formato numerico de los resultados que muestra
MATLAB.
Afecta s
olo a la presentaci
on en pantalla, no al formato interno ni a los
c
alculos.
Ejemplos:
x = [ 4 / 3 1 . 2 3 4 5 e 6]
format short
1.3333
0.0000
format short e
1 . 3 3 3 3 e +000 1 . 2 3 4 5 e 006
format short g
1.3333
1 . 2 3 4 5 e 006
format long
1.33333333333333
0.00000123450000
format long e
1 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 e +000
1.234500000000000 e
006
format long g
1.33333333333333
1 . 2 3 4 5 e 006

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

28/215

El comando format
f o r m a t bank
1.33
format r a t
4/3

0.00

1/810045

format hex
3 ff5555555555555

3 eb4b6231abfd271

Adem
as format compact suprime espacios y lneas en blanco. Para
obtener m
as control sobre la presentacin en pantalla se pueden utilizar
las funciones sprintf y fprintf.
Para que no aparezca el resultado de un c
alculo en la pantalla, se utiliza ;
A = magic ( 1 0 0 ) ;

Para dividir expresiones que no caben en una u


nica lnea, se usan tres
puntos ...
s = 1 1/2 + 1/3 1/4 + 1/5 1/6 + 1/7 . . .
1/8 + 1/9 1/10 + 1/11 1 / 1 2 ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

29/215

n en pantalla
Comandos de edicio

ctrl-
ctrl-
home
end
esc
del
backspace

A. Herreros, E. Baeyens, DISA/EII (UVa)

ctrl-p
ctrl-n
ctrl-b
ctrl-f
ctrl-r
ctrl-l
ctrl-a
ctrl-e
ctrl-u
ctrl-d
ctrl-h
ctrl-k

Comando anterior
Comando siguiente
Caracter atras
Caracter adelante
Palabra adelante
Patabra atras
Ir a comienzo de lnea
Ir a fin de lnea
Borrar lnea
Borrar caracter actual
Borrar caracter anterior
Borrar hasta fin de lnea

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

30/215

ficos
Gra

MATLAB dispone de recursos para mostrar vectores y matrices en


graficos, as como para incluir texto en los graficos e imprimirlos.
La funci
on b
asica de creaci
on de gr
aficos es plot.
Si y es un vector, plot(y) dibuja un gr
afico de los valores de los
elementos de y frente a sus ndices.
Si x e y son dos vectores de igual tama
no, plot(x,y) dibuja un gr
afico
de los valores de los elementos de y frente a los de x.
Ejemplo:
t = 0: pi /100:2 pi ;
y = sin ( t ) ;
plot (t , y)

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

31/215

ficos
Gra

Se pueden crear gr
aficos m
ultiples con una u
nica llamada a plot.
MATLAB elige los colores autom
aticamente siguiendo una tabla
predefinida.
Ejemplo:
y2 = s i n ( t .25) ;
y3 = s i n ( t .5) ;
p l o t ( t , y , t , y2 , t , y3 )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

32/215

ficos
Gra
Se puede especificar el color, tipo de lnea, y marcas con el comando
plot (x , y , color style marker )

color_style_marker es una cadena de tres caracteres, que indican


respectivamente el color, tipo de lnea y marca.
La letra que indica el color puede ser: c, m, y, r, g, b, w,
k, que indican cyan, magenta, amarillo, rojo, verde, azul, blanco y
negro.
La letra que indica el tipo de lnea puede ser: - para lnea continua,
-- para lnea de trazos, : para lnea de puntos, -. para punto y
raya, none sin lnea.
Las marcas m
as comunes son +, o, * y x.
Ejemplo: El comando
p l o t ( x , y , y :+ )

dibuja el gr
afico en lnea continua amarilla y situa marcas + en cada
punto.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

33/215

Ayuda en MATLAB

Existen varias formas de obtener ayuda en lnea de MATLAB.


El comando help
La ventana de ayuda
El escritorio de ayuda (MATLAB help desk)
P
aginas de referencia en lnea
P
agina Web de The Mathworks, Inc. (www.mathworks.com)

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

34/215

El comando help

Es el comando m
as b
asico para obtener informaci
on de la sintaxis y
actuaci
on de una funci
on.
La informaci
on aparece directamente sobre la ventana de comandos.
Ejemplo:
h e l p magic
MAGIC Magic s q u a r e .
MAGIC(N) i s an NbyN m a t r i x c o n s t r u c t e d from
t h e i n t e g e r s 1 t h r o u g h N2 w i t h e q u a l row ,
column , and d i a g o n a l sums .
P r o d u c e s v a l i d magic s q u a r e s f o r N =
1 ,3 ,4 ,5....

El nombre de la funci
on siempre aparece en may
usculas, pero en realidad
debe escribirse en min
usculas al llamar a la funci
on

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

35/215

Las funciones est


an organizadas en grupos l
ogicos, as como la estructura
de directorios de MATLAB.
Las funciones de
algebra lineal est
an en el directorio matfun. Para listar
todas las funciones de este grupo
h e l p matfun
Matrix f u n c t i o n s numerical l i n e a r algebra .
Matrix a n a l y s i s .
norm
M a t r i x o r v e c t o r norm .
normest
E s t i m a t e t h e m a t r i x 2norm
...

El comando help lista todos los grupos de funciones


help
matlab / g e n e r a l
matlab / ops
...

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

36/215

La ventana de ayuda

Disponible seleccionando la opci


on Help Window del men
u Help o bien
pulsando la interrogaci
on de la barra de men
u.
Puede invocarse desde la ventana de comandos con helpwin
Para obtener ayuda sobre un comando helpwin comando
La informaci
on obtenida es la misma que con el comando help pero
permite hipertexto y navegaci
on

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

37/215

El comando lookfor
Conveniente cuando buscamos una funci
on pero no recordamos su
nombre.
Busca todas las funciones que en la primera lnea de texto de la ayuda
(lnea H1) contienen la palabra clave.
Ejemplo: Estamos buscando una funci
on para invertir matrices, hacemos
help inverse
i n v e r s e .m n o t f o u n d .

entonces bucamos con lookfor


lookfor inverse
INVHILB I n v e r s e H i l b e r t m a t r i x .
ACOSH
Inverse hyperbolic cosine .
ERFINV I n v e r s e o f t h e e r r o r f u n c t i o n .
INV
Matrix i n v e r s e .
PINV
Pseudoinverse .
IFFT
Inverse d i s c r e t e Fourier transform .
IFFT2
Twod i m e n s i o n a l i n v e r s e d i s c r e t e F o u r i e r
transform .
ICCEPS I n v e r s e c o m p l e x c e p s t r u m .
IDCT
Inverse d i s c r e t e cosine transform .

Con la opci
on -all busca en todo el texto de la ayuda, no solo en H1.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

38/215

El escritorio de ayuda (help desk)

El escritorio de ayuda de MATLAB permite acceder a mucha informaci


on
de referencia almacenada en el disco duro o en el CD-ROM en formato
HTML mediante un navegador.
Se accede a traves de la opci
on Help Desk del men
u Help.
Tambien se accede escribiendo helpdesk en la ventana de comandos.
Para acceder a la p
agina de referencia en formato HTML de un comando
especfico, se utiliza el comando doc. Ejemplo: doc eval.
Las p
aginas de referencia se encuentran tambien disponibles en formato
PDF y pueden ser consultadas e impresas con Acrobat Reader.
Finalmente, desde el escritorio de ayuda se puede acceder a la P
agina
Web the The MathWorks, Inc.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

39/215

El Entorno de MATLAB
El entorno de MATLAB incluye el conjunto de variables definidas durante
una sesi
on de MATLAB y el conjunto de ficheros del disco que contienen
programas y datos y que permanecen entre sesiones.
El espacio de trabajo (workspace) es el
area de memoria accesible desde
la lnea de comandos de MATLAB.
Los comandos who y whos muestran el contenido del espacio de trabajo,
who proporciona una lista reducida, whos incluye adem
as informaci
on
sobre tama
no y almacenamiento.
whos
Name
A
D
M
S
h
n
s
v
Grand t o t a l

Size
4 x4
5 x3
10 x1
1 x3
1 x11
1 x1
1 x5
2 x5

Bytes
128
120
3816
442
22
8
10
20

Class
double array
double array
c e l l array
struct array
char array
double array
char array
char array

i s 471 e l e m e n t s u s i n g 4566 b y t e s .

Para borrar variables del espacio de trabajo, usar el comando clear.


c l e a r n o m bCurso
r e de
v aProgramaci
r i a b l oen en Matlab y Simulink

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso 2010/2011

40/215

El comando save
Permite almacenar los contenidos del espacio de trabajo en un fichero
MAT (binario).
s a v e 15 o c t 0 2

salva el espacio de trabajo en el fichero 15oct02.mat. Para salvar


u
nicamente ciertas variables
s a v e 15 o c t 0 2 n o m b r e s v a r i a b l e s

Para recuperar el espacio de trabajo se utiliza el comando load.


l o a d 15 o c t 0 2

El formato MAT es binario y no puede leerse, si se desea un fichero que


pueda leerse pueden utilizarse las siguientes alternativas
-ascii
Formato de texto de 8 bits.
-ascii -double Use
Formato de texto de 16 bits.
-ascii -double -tabs Delimita los elementos de una matriz con tabuladores
-v4
Crea un fichero MAT de la versi
on 4
-append
A
nade datos a un fichero MAT ya existente
En formato texto no puede salvarse todo el espacio de trabajo de una vez,
y debe hacerse indicando el nombre de las variables.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

41/215

squeda
La trayectoria de bu

La trayectoria de b
usqueda (search path) es la lista ordenada de
directorios en los que MATLAB va buscando las funciones.
El comando path muestra la trayectoria de b
usqueda.
Si hubiera varios ficheros con el mismo nombre de funci
on en diferentes
directorios, MATLAB ejecuta el primero que encuentra al seguir la
trayectoria de b
usqueda.
Para modificar la trayectoria de b
usqueda, ir a Set Path en el
men
u File.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

42/215

n de Ficheros
Manipulacio

MATLAB dispone de los comandos dir, type, delete, cd, para


realizar las operaciones usuales de manipulacion de ficheros de un
sistema operativo.
MATLAB MS-DOS UNIX VAX/VMS
dir
dir
ls
dir
type
type
cat
type
delete
del o erase
rm
delete
cd
chdir
cd
set default

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

43/215

El comando diary

Crea un diario de la sesi


on MATLAB en un fichero de texto.
El fichero puede editarse con cualquier editor o procesador de textos.
Para crear un fichero llamado midiario.txt que contenga todos los
comandos de la sesi
on y sus resultados en la ventana de comandos, hacer
diary midiario . txt

si no se incluye ning
un nombre de fichero, el diario de la sesi
on se
almacena por defecto en el fichero diary.
Para parar la grabaci
on del diario
diary off

Para volver a activar/desactivar la grabaci


on del diario
d i a r y on / o f f

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

44/215

n de programas externos
Ejecucio

Para ejecutar programas externos a MATLAB desde la lnea de


comandos, se antepone el caracter de escape !. Por ejemplo, en
UNIX
! vi

Ejecuta el editor de texto visual.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

45/215

Ejercicios 1

Fichero Aejer1.m : Las siguientes expresiones describen las


tensiones principales de contacto en las direcciones x, y y z que
aparecen entre dos esferas que se presionan entre s con una fuerza
F.
x

y = pmax

pmax
1 + z 2 /a2

"



 #
 a 
2 1
z
z
1 tan1
(1 v1 ) 0,5 1 + 2
a
z
a

siendo
3F (1 v12 )/E1 + (1 v22 )/E2
8
1/d1 + 1/d2
3F
2a2


a

pmax

1/3

vj son los coeficientes de Poisson, Ej los modulos de Young de


cada esfera y dj son los diametros de las dos esferas.
Escribir las ecuaciones en notacion de MATLAB y evaluarlas para
los siguientes valores: v1 = v2 = 0,3, E1 = E2 = 3 107 , d1 = 1,5,
d2 = 2,75, F = 100 lb. y z = 0,01 in.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

46/215

Ejercicio 2

Fichero Aejer2.m : El n
umero de carga de un rodamiento
hidrodinamico esta dado por la siguiente expresion:
p
 2 (1 2 ) + 162
NL =
(1 2 )2
siendo  el coeficiente de excentricidad. Escribir la ecuacion en
notacion de Matlab y evaluarla para  = 0,8.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

47/215

Ejercicio 3

Fichero Aejer3.m : Un tubo largo con radio interior a y radio


exterior b y diferentes temperaturas en la superficie interior Ta y
en la exterior Tb esta sometido a tensiones.
Las tensiones radial y tangencial se obtienen mediante las
siguientes ecuaciones:
r


 2
  
 
E (Ta Tb )
a2
b
b
b
1 ln
ln
2
2
2
2(1 v ) ln(b/a) b a
r
a
r





 
E (Ta Tb )
a2
b2
b
b
1 2
+ 1 ln
ln
2
2
2(1 v ) ln(b/a)
b a
r
a
r

siendo r la coordenada radial del tubo, E el modulo de Young del


material del tubo y el coeficiente de dilatacion. La distribucion
de temperaturas a lo largo de la pared del tubo en la direccion
radial es:
T = Tb +

(Ta Tb ) ln(b/r )
ln(b/a)

Escribir las ecuaciones en notacion de Matlab y evaluarlas para


los siguientes valores: = 1,2 105 , E = 3 107 , v = 0,3, Ta = 500,
Tb = 300, a = 0,25, b = 0,5, r = 0,375.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

48/215

Ejercicio 4

Fichero Aejer4.m : La formula siguiente, propuesta por el


matematico S. Ramanujan permite aproximar el valor de .
N
8 X (4n)!(1103 + 26390n)
1
=

9801
(n!)4 3964n
n=0

Evaluar la formula anterior para N = 0, 1, 2, 3 y comparar el


resultado obtenido con el valor de que proporciona Matlab.
Para calcular el factorial, utilizar la funcion gamma que satisface
gamma(n+1)=n!.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

49/215

Ejercicio 5

Fichero Aejer5.m : Introducir en el espacio de trabajo de


Matlab dos vectores a y b siendo aj = 2j 1 y bj = 2j + 1,
j = 1, . . . , 7. Se pide:
1

Calcular la suma de a y b

Calcular la diferencia de a y b.

Calcular el producto aT b y el valor de su traza y determinante.

Calcular el producto ab T .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

50/215

Ejercicio 6

Fichero Aejer6.m : Sea z=magic(5). Realizar las siguientes


operaciones ordenadamente y mostrar los resultados:

3.

Dividir todos los elementos de la segunda columna por

Sustituir la u
ltima fila por el resultado de sumarle los elementos de la
tercera fila.

Sustituir la primera columna por el resultado de multiplicarle los


elementos de la cuarta columna.

Hacer que todos los elementos de la diagonal principal sean 2.

Asignar el resultado obtenido a la variable q y mostrarla por pantalla.

Mostrar la diagonal principal de qq T .

Mostar el cuadrado de todos los elementos de la matriz q.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

51/215

Ejercicio 7

Fichero Aejer7.m : En analisis de regresion lineal multivariante


aparece la siguiente cantidad:
H = X (X T X )1 X T
Sea

17 31 5
6 5 4

X =
19 28 9
12 11 10

Calcular la diagonal de H.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

52/215

Ejercicio 8

Fichero Aejer8.m : Dibujar el resultado de la suma de las


siguientes series para los rangos indicados de valores de . Utilizar
200 puntos para realizar la grafica.
1

Onda cuadrada

4X1
f ( ) =
sin(2(2k 1) ),

k=1

1
1

2
2

Diente de sierra

1
1X1
f ( ) = +
sin(2k ),
2

1 1

k=1

Diente de sierra

1
1X1
f ( ) =
sin(2k ),
2

1 1

k=1

Onda triangular

4X
1
f ( ) =
cos((2k 1) ),
2

(2k 1)2

1 1

k=1

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

53/215

Ejercicio 9

Fichero Aejer9.m : Dibujar las siguientes curvas. Utilizar axis


equal para una correcta visualizacion.
1

Cicloide ( 3, r = 0,5, 1, 1,5)


x

r sin

r cos

Lemniscata (/4 /4)


x

p
cos 2 cos(2)
p
sin 2 cos(2)

Espiral (0 6)
de Arqumedes
x

cos

sin

Logartmica (k = 0,1)

A. Herreros, E. Baeyens, DISA/EII (UVa)

e k cos

e k sin

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

54/215

Ejercicio 10

Fichero Aejer10.m : Dibujar las siguientes curvas. Utilizar axis


equal para una correcta visualizacion.
1

Cardioide (0 2)
x

2 cos cos 2

2 sin sin 2

4 cos3

4 sin3

Astroide (0 2)

Epicicloide (R = 3, a = 0,5, 1
o2, y 0 2)
x

(R + 1) cos a cos((R + 1))

(R + 1) sin a sin((R + 1))

Epicicloide (R = 2,5, a = 2, y 0 6)
x

(R + 1) cos a cos((R + 1))

(R + 1) sin a sin((R + 1))

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

55/215

Ejercicio 11

Fichero Aejer11.m : Dibujar las siguientes curvas


tridimensionales. Utilizar axis equal para visualizar
correctamente.
1

Helice esferica (c = 5,0,


0 t 10)
x

sin(t/2c) cos(t)

sin(t/2c) sin(t)

cos(t/2c)

Senoide sobre esfera (a = 10,0,


b = 1,0, c = 0,3, 0 t 2)
p
x = cos(t) b 2 c 2 cos2 (at)
p
y = sin(t) b 2 c 2 cos2 (at)
z

Senoide sobre cilindro (a = 10,0,


b = 1,0, c = 0,3, 0 t 2)

c cos(at)

Espiral toroidal (a = 0,2, b = 0,8,


c = 20,0, 0 t 2)

b cos(t)

[b + a sin(ct)] cos(t)

b sin(t)

[b + a sin(ct)] sin(t)

c cos(at)

a cos(ct)

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

56/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

57/215

n a entornos de trabajo (I)


Introduccio

Entornos de trabajo con Matlab:


Espacio de trabajo workspace.
Ficheros de escritura scripts (*.m).
Ficheros de funciones de Matlab (*.m) y compiladas.
Objetos desarrollados en Matlab y en Java.

Workspace en Matlab.
Uso de variables globales, scripts, funciones y objetos.
Ejemplo:
>> a = [ 1 , 2 ; 3 , 4 ] ;
>> whos
>> i n v ( a ) ;

Ficheros de escritura scripts:


Ficheros (*.m) con ordenes iguales a las dadas en el workspace.
Las variables que utiliza son las globales del workspace.

Utiles
para repetir la misma operaci
on varias veces.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

58/215

n a entornos de trabajo (II)


Introduccio
Ficheros (*.m) de funciones:
Son ficheros en lenguaje interpretado de Matlab.
Sus variables son locales por defecto.
Paso a la funci
on del valor de las variables.
Funciones propias de Matlab y Toolbox.
Ejemplo:
function c = myfile1 (a , b)
c = s q r t ( ( a . 2 ) +(b . 2 ) )
Uso desde el workspace:
>>
>>
>>
>>
...

x = 7.5
y = 3.342
z = myfile (x , y)
whos

Ficheros de funciones compilador en C/C++ o FORTRAN. Contienen


cabecera especial para conexi
on con Matlab.
Clases y objetos definidos en Matlab y Java. Una clase es un tipo de dato
al que se puede asociar funciones propias y redefinir operadores.
>> s = t f ( s ) ; g e t ( s )
>> P= 1 / ( s +1) ; bode (P) ;
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

59/215

Tipos de datos (I)

Tipos de variables:
Clase
Ejemplo
array
[1,2;3,4]; 5+6i

char

Hola

celda

{17, hola, eye(2)}

struct

a.dia=1; a.mes=julio

objeto

tf(1,[1,1])

A. Herreros, E. Baeyens, DISA/EII (UVa)

Descripci
on
Datos virtual ordenado por ndices
cuyos componentes son datos del
mismo tipo.
Array de caracteres (cada car
acter
tiene 16 bits).
Dato virtual ordenado por ndices
cuyos componentes son arrays de distinto tipo.
Dato virtual para almacenar datos
por campos (estructura). Cada campo es un array o celda.
Datos definido por el usuario con base
a una estructura y con funciones asociadas.

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

60/215

Tipos de datos (II)

Operadores:
Oper. aritm
eticos
+
Suma.
Resta.
.*
Multiplicaci
on.
./
Divisi
on derecha.
.\
Divisi
on izquierda.
:
Operador dos puntos.
.^
Potencia.
.
Transpuesta.

Conjugada transpuesta.
*
Multiplicaci
on de matrices.
/
Divisi
on derecha de matrices.
\
Divisi
on izquierda de matrices.
^
Potencia de matrices.

A. Herreros, E. Baeyens, DISA/EII (UVa)

>
>
<=
>=
==
=

Oper. de relaci
on
Menor que
Mayor que
Menor que o igual a
Mayor que o igual a
Igual a
No igual a

Operadores l
ogicos.
&
Y
|
OR
~
NO

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

61/215

Tipos de datos (III)


Operaciones aritmeticas en el workspace o Ascript1.m:
>> a = [ 1 , 2 ; 3 , 4 ] ; b = [ 4 , 5 ; 6 , 7 ] ;
>> c= 3 a
...
>> a ( 1 , : ) b ( : , 1 )
...

>> c= a b
...
>> c= a . b

Operaciones de relaci
on en el workspace o Ascript1.m:
>> a = [ 1 , 2 , 3 ] ;
>> a==b
...

b=[1 ,3 ,2];

>> a > b
...
>> a = [ ] ; i s e m p t y ( a )

...
Operaciones l
ogicas en el workspace o Ascript1.m:
>> a = [ 1 , 2 , 3 ] ; b = [ 1 , 0 , 3 ] ;
>> a==b
...
>> a | b
...

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

>> a&b
...
>> a
...

Curso 2010/2011

62/215

Tipo de datos (IV): Valores especiales

Funciones del directorio elmat que devuelven valores importantes,


ans
Variable a la que se asigna el resultado de una expresi
on que no ha sido asignada.
eps
Tolerancia con la que trabaja Matlab en sus c
alculos.
realmax Mayor n
umero en coma flotante que puede representar el computador.
realmin Menor n
umero en coma flotante que puede representar el computador.
pi
3.1415926535897...
i, j
N
umeros imaginarios puros.
Inf
Infinito. Se obtiene de divisiones entre cero.
NaN
Indeterminaci
on. Se obtiene de divisiones 0/0,
inf/inf o n/0 cuando n es imaginario.
flop
Cuenta las operaciones en coma flotante realizadas.
version Indica la versi
on de Matlab usada.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

63/215

Tipo de datos (V): Valores especiales

En el workspace:
>> 3+2
...
>> p i 3
...
>> r e a l m a x
...

A. Herreros, E. Baeyens, DISA/EII (UVa)

>> a= 5+3 i
...
>> a= i (4+3 i )
...
>> a= 3/0
...

Curso de Programaci
on en Matlab y Simulink

>> a= 0/0
...
>> a= NaN3
...
>> a= 3 I n f
...

Curso 2010/2011

64/215

Sentencias de control.

Sentencias de control en Matlab:


if, else y elseif: Ejecuta un grupo de sentencias bas
andose en
condiciones l
ogicas.
switch, case y otherwise: Ejecuta diferentes grupos de sentencias en
funci
on de condiciones l
ogicas.
while: Ejecuta un n
umero de sentencias de forma indefinida en funci
on de
una sentencia l
ogica.
for: Ejecuta un n
umero de sentencias un n
umero determinado de veces.
try...catch: Cambia el control de flujo en funci
on de los posibles errores
producidos.
break: Termina de forma directa la realizaci
on de un bucle for o while.
return: Sale de la funci
on.

Nota: Los bucles for y while pueden ser modificados por c


odigo
vectorizado para aumentar la velocidad de ejecuci
on.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

65/215

Sentencia de control if, else y elseif.

Forma general Asript2.m,

if

sent lo
g 1 ,
% bloque 1
e l s e i f sent lo
g 2
,
% bloque 2
else
% bloque 3
end

A. Herreros, E. Baeyens, DISA/EII (UVa)

if n < 0
% Si n negativo error .
d i s p ( Entrada debe se p o s i t i v a ) ;
e l s e i f rem ( n , 2 ) == 0
% Si es par se d i v i d e entre 2.
A = n /2;
else
% Si es impar se incrementa y d i v i d e
.
A = ( n+1) / 2 ;
end

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

66/215

Sentencia de control switch, case y otherwise.

Formulaci
on general Ascript3.m,
switch expression
case value1
%
bloque 1
case value2
% b l o q u e 2
. . .
otherwise
% b l o q u e n
end

A. Herreros, E. Baeyens, DISA/EII (UVa)

s w i t c h input num
c a s e { 1 , 2, 3}
d i s p ( 1
o 2
o 3 ) ;
case 0
disp ( cero ) ;
c a s e { 1 , 2 , 3}
disp ( 1
o 2
o 3);
otherwise
disp ( otro valor ) ;
end

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

67/215

Sentencia de control while y for.

Formulaci
on general Ascript4.m,
n = 1;
w h i l e p r o d ( 1 : n ) < 1 e100 ,
n = n + 1;
end

while expresi
on
% bloque
end

Formulaci
on general Ascript5.m,
f o r n d i c e= i n i c i o : p a s o : f i n ,
% bloque
end

A. Herreros, E. Baeyens, DISA/EII (UVa)

for i i = 2:6 ,
x ( i i ) = 2 x ( i i 1) ;
end

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

68/215

Sentencia de control: break, try-catch y return

Sentencia break:
Sirve para salir de forma autom
atica del u
ltimo bucle while o for abierto
sin tener en cuenta la condici
on o ndice de salida.

Sentencia de control try, catch:


Formulaci
on general,
try bloque-1 catch bloque-2 end
Ejecuta el bloque-1 mientras no haya un error. Si se produce un error en
bloque-1 se ejecuta bloque-2.

Sentencia return:
Se sale de la funci
on en la que se trabaja.
Si se llega al final de la funci
on (*.m), Matlab sale de ella
autom
aticamente.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

69/215

Funciones en matlab (I): Cabecera

Se define el nombre y las variables de entrada y salida:


function c = myfile (a , b)

Las lneas de comentario se inician con el car


acter %.
Las lneas de comentario posteriores a la funci
on son de ayuda.
function c = myfile (a , b)
% Output : c . I n p u t : a y b

Usando la funci
on help.
>> h e l p m y f i l e
Output : c . I n p u t : a y b

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

70/215

Funciones en matlab (II): Variables de entrada

Variables de entrada-salida:
Libertad en su n
umero. La variable nargin y nargout indican su n
umero.
Variables locales por defecto sin tipo determinado.
Ejemplo: a, b y c pueden ser double o array myfile2.m.
function c = myfile2 (a , b , c)
% Output : c . I n p u t : a , b y c
i f n a r g i n <2 ,
error ( c = myfile (a , b , [ c ]) ) ;
e l s e i f n a r g i n ==2,
c= s q r t ( a .2+ b . 2 ) ;
else
c= s q r t ( a .2+ b .2+ c . 2 ) ;
end

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

71/215

Funciones en matlab (III): Celdas como Variables de entrada

Una celda varargin como variable de entrada y otra varargout como


salida. Ejemplo myfile3.m:
function c = myfile3 ( varargin )
% Output : c . I n p u t : a , b y c
i f n a r g i n <2 ,
error ( c = myfile (a , b , [ c ]) ) ;
e l s e i f n a r g i n ==2,
c= s q r t ( v a r a r g i n {1}.2+ v a r a r g i n { 2 } . 2 ) ;
else
c= s q r t ( v a r a r g i n {1}.2+ v a r a r g i n {2}.2+ v a r a r g i n
{3}.2) ;
end

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

72/215

ticas
Funciones en matlab (IV): Variables globales y esta

Variable est
atica: No se pierde su valor y s
olo se puede usar en la funci
on
definida.
Variable global: No se pierde su valor y se puede usar en todas las
funciones donde este definida. Debe estar definida en el workspace.
Ejemplo funci
on myfile4.m:
function c = myfile4 (a)
% Output : c . I n p u t : a
global P;
i f i s e m p t y (P) , P=1; end
c= P a ; P= P+1;

Variable est
atica:
>> P= 1 0 ; z= m y f i l e ( 3 ) ; % r e p e t i r

Variable global:
>> g l o b a l P ; P=10; z= m y f i l e ( 3 ) ; % r e p e t i r

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

73/215

Funciones en matlab (V): Sub-funciones y funciones privadas

Varias funciones contenidas en un mismo fichero.


La funci
on principal es la primera. Equivalente a la funci
on main del
lenguaje C.
Ejemplo myfile5.m:
function c = myfile5 (a , b)
% Output : c . I n p u t : a y b
c= f u n ( a , b ) ;
f u n c t i o n z= f u n ( x , y )
z=s q r t ( x .2+ y . 2 ) ;

Funciones privadas: Est


an en sub-carpeta private y s
olo se pueden usar
por las funciones de la carpeta.
Prioridades en la llamada a funciones: Sub-funci
on, funci
on en misma
carpeta, funci
on en carpeta private,funci
on en las carpetas del path.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

74/215

n de cadenas eval() y feval()


Funciones en matlab (VI):Evaluacio

Son el equivalente a los punteros a funciones de lenguaje C.


eval(): Una cadena de caracteres es interpretada como orden,
>> cad= m y f i l e ; a= 1 ;
>> c= e v a l ( [ cad , ( a , , i n t 2 s t r ( 2 ) , ) ] ) ;

feval: Se llama a una funci


on por su nombre o comodn Ascript6.m,
>>
>>
>>
>>
>>
>>

cad= m y f i l e
c= f e v a l ( cad
cad= @ m y f i l e
c= f e v a l ( cad
cad= @( x , y )
c= f e v a l ( cad

A. Herreros, E. Baeyens, DISA/EII (UVa)

; a= 1 , b =2;
, a , b) ;
; a =1 , b =1;
, a , b) ;
s q r t ( x .2+ y . 2 ) ;
, a , b) ;

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

75/215

Entrada de datos, pausas y llamadas a la shell.

input(): Introducci
on de datos Ascript7.m,
n= i n p u t ( I n t r . d a t o : ) ; % Do ub le .
n= i n p u t ( I n t r . d a t o : , s ) ; % Cadena de c a r a c t e r e s .

ginput(): Localizar puntos en una gr


afica con el rat
on,
figure ; plot (1:1000) ;
[ x , y ]= g i n p u t ( 1 ) % l o c a l i z a r un p u n t o x , y en g r
afica .
[ x , y , t e c l a ]= g i n p u t ( 1 ) % t e c l a da l a t e c l a d e l r a t
on
usada .

pause(): La funci
on para el programa durante un periodo de tiempo,
p a u s e ( n ) ; % Para e l p r o g ra m a d u r a n t e n s e g u n d o s .
p a u s e ; % Para e l p r o gram a h a s t a que s e p u l s e una t e c l a .

Llamada a la shell (MS-DOS o LINUX): Iniciar sentencia con !,


! c o p y f i c h 1 . c f i c h 2 c . % S i e l s i s t e m a f u e r a msdos

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

76/215

Funciones save y load.

save: Grabar datos en ficheros Ascript8.m,


-mat: C
odigo binario (por defecto).
-ascii: C
odigo ASCII.
-append: Graba al final del fichero.
>> s a v e d a t o s . d a t a b c % Graba d a t o s . dat l a s
variables a b c
>> a= r a n d ( 1 0 , 5 ) ;
>> s a v e a s c i i append d a t o s . d a t a %Graba a l f i n a l
f i c h e r o en c o
d i g o ASCII .

del

load: Recupera las variables guardadas con la sentencia save.


>> l o a d d a t o s . d a t % R e c u p e r a l a s

A. Herreros, E. Baeyens, DISA/EII (UVa)

v a r i a b l e s de d a t o s . d a t

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

77/215

Funciones de librera entrada/salida de lenguaje C (I)

Algunas de las funciones de entrada/salida:


Clase
Abrir/Cerrar
Binarios I/O
Con formato
Conversi
on cadenas

A. Herreros, E. Baeyens, DISA/EII (UVa)

Funci
on
fopen()
fclose()
fread()
fwrite()
fscanf()
fprintf()
sscanf()
sprintf()

Descripci
on
Abrir fichero.
Cerrar fichero.
Lectura binaria de fichero (defecto enteros).
Escritura binaria en fichero (defecto enteros).
Lectura con formato de fichero.
Escritura con formato en fichero.
Lee de cadena con un determinado formato.
Escribe en cadena con formato.

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

78/215

Funciones de librera entrada/salida de lenguaje C (II)

Ejemplos de apertura y cierre. Permisos:


r: Lectura. Puntero al inicio del fichero.
w: Escritura. Se borra el fichero si existe.
a: A
nadir. Puntero al final del fichero.
r+: Lectura/escritura. Puntero al inicio.
>> f i c = f o p e n ( f i c h . d a t , r ) ; % Abre f i c h e r o p a r a
lectura .
>> f c l o s e ( f i c ) ;
% C i e r r a f i c h e r o f i c h . dat .
>> f c l o s e ( a l l ) ; % C i e r r a t o d o s l o s f i c h e r o s .

Principales usos:
Ficheros de texto con formato
Ficheros binarios para guardar o extraer matrices en su forma vectorial.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

79/215

Funciones de librera entrada/salida de lenguaje C (III)

Ejemplo Ascript9.m:
>>
>>
>>
>>
>>

a= r a n d ( 3 , 3 )
f i c h= f o p e n ( d a t o s . t x t , w ) ; % G u a r d a r en t e x t o
f p r i n t f ( f i c h , %.2 f %.2 f %.2 f \n , a ) ;
fclose ( fich ) ;
f i c h= f o p e n ( d a t o s . t x t , r ) ; % R e c u p e r a r de f i c h e r o
texto
>> b= f s c a n f ( f i c h , %f )
>> f c l o s e ( f i c h ) ;
>> f i c h= f o p e n ( d a t o s . t x t , w ) ; % G u a r d a r en b i n
ario ,
f o r m a t o r e a l 4
>> f w r i t e ( f i c h , a , r e a l 4 ) ;
>> f c l o s e ( f i c h ) ;
>> f i c h= f o p e n ( d a t o s . t x t , r ) ; % R e c u p e r a r en b i n
ario
>> b= f r e a d ( f i c h , i n f , r e a l 4 )
>> f c l o s e ( f i c h ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

80/215

cticas de funciones y sentencias de control (I).


Pra
Fichero Bejer1.m : Generar una funci
on (*.m) para obtener las
siguientes series matem
aticas. Los argumentos son tres: El primero es el
nombre de la serie deseada (obligatorio). El segundo es el n
umero de
datos de , por defecto 200 (opcional). El tercero es lmite superior de
sumatorio, por defecto 1000 (opcional). Si el n
umero de argumentos de
salida es uno se devuelve los datos, si es cero se dibuja la gr
afica
correspondiente.
Se
nal cuadrada:
f ( ) =

X
n=1,3,5,...

1
sin(2n )
n

1
1

2
2

.
Dientes de sierra:
f ( ) =

1
1X1
+
sin(2n )
2
n=1 n

1 1

.
Se
nal triangular:
f ( ) =

4X
1

cos((2n 1) )
2
n=1 (2n 1)2

1 1

.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

81/215

cticas de funciones y sentencias de control (II)


Pra

Fichero Bejer2.m : El desplazamiento de una onda propagada a lo


largo de una cuerda tiene una velocidad inicial cero y un deplazamiento
inicial,
{u(, 0) = a | 0 a} {u(, 0) = 1
| a 1},
1a
siendo su ecuaci
on,
P
sin na
2
u(, ) = a(1a) N
sin(n ) cos(n).
n=1
n3
Crear una funci
on *.m para mostrar en gr
afico u(, ). La entrada de la
funci
on ser
a el valor de a, opcional defecto a = 0,25, el de N, opcional
defecto N = 50, y el de , opcional defecto = 0,05, donde
0 2. La funci
on dibuja la gr
afica si el usuario no pide variables de
salida y devuelve el valor de u(, ) sin dibujar la gr
afica en caso
contrario.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

82/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

83/215

n de programas: Indexado de arrays y celdas (I)


Optimizacio

Para la optimizaci
on de un programa con matlab se debe reducir el
n
umero de bucles y cambiarlo por
algebra matricial.
Formato externo: Filas y columnas. Formato interno: vector de columnas,
Ascript10.m.
>> a= [ 1 , 2 , 3 ; 4 , 5 , 6 ] ;
>> a ( 2 , 1 ) , a ( 2 ) ,

Llamada parcial a un array, end cuenta el n


umero de filas o columnas,
>>
>>
>>
>>

i i = 1 : 2 : 3 ; % v e c t o r de 1 a 3 con p a s o 2 .
a (1 , i i ) % primera f i l a , columnas i i
a ( 1 , 2 : end ) % p r i m e r a f i l a , c o l u m n a s de 2 a l
a ( 1 , : ) % primera f i l a , todas l a s columnas

final

Composici
on de arrays,
>> b= [ a ( : , 1 ) , [ 5 , 7 ] ] % P r i m e r a columna de a y [ 5 , 7 ]
v e c t o r columna .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

84/215

n de programas: Indexado de arrays y celdas (II)


Optimizacio
Borrado de matrices,
>> b ( : , 1 ) = [ ] ; % B o r r a d o de l a p r i m e r a columna .

Matrices ceros, unos y aleatorias,


>> a= z e r o s ( 2 , 3 ) ; b= o n e s ( 3 , 2 ) ; c= r a n d ( 2 , 3 ) ;

Espacios lineales y logartmicos,


>> a= l i n s p a c e ( 1 , 1 0 , 1 0 0 ) ; % De 1 a 1 0 , 100 p u n t o s , p a s o
lineal
>> a= l o g s p a c e ( 1 , 5 , 1 0 0 ) ; % De 1 e1 a 1 e5 , 100 p u n t o s ,
paso l o g .

Funciones de tama
no y repetici
on.
>> [ n f i l , n c o l ]= s i z e ( a ) ; % Tama
no f i l a columna ,
>> n f i l = s i z e ( a , 1 ) ; % Tama
no f i l a .
>> ncomp= s i z e ( a ( : ) , 1 ) ; % N
u mero de componentes ,
formato i n t e r n o .
>> b= re p m a t ( a , [ 3 , 1 ] ) ; % R e p e t i r m a t r i z a t r e s v e c e s
en columna .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

85/215

n del co
digo de programas (I)
Optimizacio

Inicializaci
on de matrices como matrices cero.
Sustituci
on de bucles por productos matriciales, Ascript11.m
Funci
on en diferentes puntos, y (n) = sin(n) n, 0 < n < 10, 100 puntos:
>> n=l i n s p a c e ( 0 , 1 0 , 1 0 0 ) ; y= s i n ( n ) . n ;
P
Sumatorio de funci
on, y = 10
n=0 sin(n) n.
>> n= [ 0 : 1 0 ] ; y= sum ( s i n ( n ) . n ) ;
Funci
on de dos dimensiones en varios puntos,
y (i, j) = i 2 + j 2 + i j, i [0, 5], j [0, 7],
>>
>>
>>
>>
>>

i i =0:5; j j = [ 0 : 7 ] ;
s i i= s i z e ( i i ,2) ; s j j= s i z e ( jj ,1) ;
i i = r ep ma t ( i i , [ s j j , 1 ] ) ; j j = r e p m a t ( j j , [ 1 , s i i ] ) ;
[ i i , j j ]= m e s h g r i d ( i i , j j ) ; % e q u i v a l e n t e
y= i i .2+ j j .2+ i i . j j ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

86/215

n del co
digo de programas (II)
Optimizacio

Sustituci
on de bucles por productos matriciales, Ascript11.m
Funci
onPde una dimensiones con sumatorio,
2
y (i) = 10
n=1 n i + i, i [0, 5],
>> i i = 0 : 5 ; n = [ 1 : 1 0 ] ;
>> y= n o n e s ( s i z e ( n ) ) i i .2+ i i ;

Pr
actica de optimizaci
on de programas: Volver a escribir el c
odigo
de las pr
actica de generaci
on de se
nales sin usar bucles, Ficheros
Bejer1bis.m, Bejer2bis.m.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

87/215

Matrices tri-dimensionales (I)

Se componen de filas, columnas y p


aginas.
Generaci
on de matrices tridimensionales, Ascript12.m
>>
>>
>>
>>

a =[1 ,2;3 ,4];


% M a t r i z de d o s d i m e n s i o n e s .
a ( : , : , 2 )= [ 5 , 6 ; 7 , 8 ] ; % M a t r i z de t r e s d i m e n s i o n e s .
a= c a t ( 3 , [ 2 , 3 ; 4 , 5 ] , [ 5 , 6 ; 7 , 8 ] ) ; % e n c a d e n a en dim 3
a= re pm a t ( [ 2 , 3 ; 4 , 5 ] , [ 1 , 1 , 2 ] ) ;
% r e p i t e en p
aginas

Re-dimensi
on: El array es tomado como vector y re-dimesionado,
>> a= r e s h a p e ( a , [ 2 , 4 ] ) ; % C o n v i e r t e d o s p
aginas a
c u a t r o columnas .

Borrado de parte de la matriz,


>> a ( : , : , 2 ) = [ ] ; % B o r r a d o de l a p
agina 3.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

88/215

Matrices tri-dimensionales (II)

Eliminaci
on de dimensiones,
>> b= s q u e e z e ( a ( : , 1 , 1 ) ) ; % Se o b t i e n e un v e c t o r dim
(21)
>> b= s q u e e z e ( a ( 1 , : , 1 ) ) ; % Se o b t i e n e un v e c t o r dim
(12)
>> b= s q u e e z e ( a ( 1 , 1 , : ) ) ; % Se o b t i e n e un v e c t o r dim
(21)

Cambio de ndices en dimensiones,


>> b= p e r m u t e ( a , [ 2 , 1 , 3 ] ) ; % L a s f i l a s p a s a n a s e r
columnas .
>> a= i p e r m u t e ( b , [ 2 , 1 , 3 ] ) ; % Es l a i n v e r s a de p e r m u t e .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

89/215

Matrices multidimensionales (III)

Celdas multidimensionales: Se puede trabajar con ellas de forma similar a


como se trabaja con las matrices.
>> A= { [ 1 , 2 ; 3 , 4 ] , h o l a ; [ 1 , 2 , 3 ] , 2 } ; % c e l d a de dim
(22)
>> B= { h o l a , [ 1 , 2 , 3 ] ; 2 , 2 } ; % c e l d a de dim ( 2 2 )
>> C= c a t ( 3 , A , B) ; % c e l d a de dim ( 2 2 2 )

Estructuras multidimensionales: Se puede trabajar con ellas de la forma


similar a como se trabaja con matrices.
>> c l a s e ( 1 , 1 , 1 ) . alum= p e p e ; c l a s e ( 1 , 1 , 1 ) . n o t a =10;
>> c l a s e ( 1 , 1 , 2 ) . alum= j u a n ; c l a s e ( 1 , 1 , 2 ) . n o t a =10;
>> c l a s e= s q u e e z e ( c l a s e ) ; % Se r e d u c e a d o s d i m e n s i o n e s
.
>> c l a s e . alum % M u e s t r a l o s nombres de t o d o s l o s
alumnos .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

90/215

Funciones para estructuras y celdas (I)

Funciones especificas para structuras.


Funci
on
getfield()
isfield()
isstruct()
rmfield()
setfield()
struct()
struct2cell()

A. Herreros, E. Baeyens, DISA/EII (UVa)

Descripci
on
Muestra los campos de la estructura.
Verdadero si un campo de la estructura.
Verdadero si es una estructura.
Borra el campo marcado de la estructura.
Cambia los contenidos de campo.
Crea o convierte en una matriz de estructuras.
Convierte una matriz de estructuras en celdas.

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

91/215

Funciones para estructuras y celdas (II)

Ejemplos de funciones para estructuras,


>> c l a s e ( 1 ) . alum= p e p e ; c l a s e ( 1 ) . n o t a =10;
>> c l a s e ( 2 ) . alum= j u a n ; c l a s e ( 2 ) . n o t a =10;
>> c l a s e ( 3 )= s t r u c t ( alum , j o s
e , nota , 7) % Otra
f o r m a de d e f i n i r
>> g e t f i e l d ( c l a s e ) % M u e s t r a l o s campos de c l a s e
>> i s s t r u c t ( c l a s e ) % A f i r m a t i v o
>> i s f i e l d ( c l a s e , n o t a ) % A f i r m a t i v o
>> r m f i e l d ( c l a s e , n o t a ) % E l i m i n a campo n o t a .
>> s e t f i e l d ( c l a s e , alum , p e p e ) ; % I n t r o d u c e pepe
en campo alum
>> p= s t r u c 2 c e l l ( c l a s e )
>> % Pone un e l e m e n t o de s t r u c t en una columna de l a
celda .
>> % De un v e c t o r e s t r u c t u r a s a l e una m a t r i z de c e l d a s

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

92/215

Funciones para estructuras y celdas (III)

Funciones especificas de celdas.


Funci
on
cell()
cell2struct()
celldisp()
cellfun()
cellplot()
iscell()
num2cell()

A. Herreros, E. Baeyens, DISA/EII (UVa)

Descripci
on
Crea una matriz de celda.
Convierte celdas en estructuras.
Muestra el contenido de la celda.
Aplica una celda funci
on a matriz.
Muestra una gr
afica de la celda.
Verdadero en caso de que sea celda.
Conversi
on de matriz numerica en celda.

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

93/215

Funciones para estructuras y celdas (IV)

Ejemplos de funciones de estructuras.


>>
>>
>>
>>
>>
>>

a= c e l l ( 2 , 2 ) % Se c r e a una c e l d a v a ca .
a={ p e p e , j u a n ; 1 0 , 1 0 } ; %Se l l e n a c e l d a
i s c e l l (a) % Afirmativo
c e l l d i s p ( a ) % M u e s t r a e l c o n t e n i d o de l a c e l d a
c e l l p l o t ( a ) % M u e s t r a e l c o n t e n i d o en v e n t a n a .
cellfun ( i s r e a l , a) % Diferentes funciones
aplicadas a celdas .
>> c e l l 2 s t r u c ( a , { alum , n o t a } ) % Pasa de c e l d a a
estructura .
>> % Toma l o s campos p o r f i l a s .
>> n u m 2 c e l l ( [ 1 , 2 ; 3 , 4 ] ) % C o n v i e r t e m a t r i z en c e l d a .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

94/215

cticas con matrices, celdas, estructuras y ficheros


Pra

Escribir un fichero Fichero Bejer3.m las siguientes operaciones:


Generar una matriz aleatoria de dimensiones {10 5 20}.
Obtener la matriz correspondiente a la segunda p
agina.
Obtener el vector correspondiente a la fila 2, columna 3.
Obtener una celda cuyos componentes sean los elementos de la matriz.
Agregar dicha celda al campo datos de una estructura. Introducir otro
campo llamado nombre que corresponda a una cadena de caracteres.
Salvar la matriz, celda y estructura en un fichero de nombre datos.dat.
Salvar los elementos de la matriz en un fichero binario usando fwrite().
Recuperar dichos datos e introducirlos en una matriz de dimensi
on
{5 10 20}.
Meter la primera p
agina de esta matriz en un fichero de texto con formato
5 datos por lnea.
Recoger estos datos lnea a lnea y reconstruir la matriz.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

95/215

Curso 2010/2011

96/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

ficas en dos dimensiones (I)


Funciones para gra

Funci
on
figure
subplot
hold
plot
loglog
semilogx, semilogy
xlim, ylim , zlim
tit, xlabel, ylabel
legend, text, gtext
ginput
grid, box

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Crea una figura
Crea varios ejes en la misma figura
Superpone diferentes plots
Plot lineal
Plot logartmico
Plot semilogartmico en eje x e y
Margenes en cada uno de los ejes
Texto en ttulo y ejes
A
nadir texto en figura
Marcar posici
on en figura
Mallado y caja en figura

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

97/215

ficas en dos dimensiones (II)


Funciones para gra

Funci
on
bar, bar3, bar3h
errorbar
compass
ezplot, ezpolar
fplot
hist, pareto
pie, pie3
stem, stairts
scatter, plotmatrix

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Graficas de barras
Graficas con barras que marcan el error
Graficas en forma de compas
Grafica sencillas de funciones
Graficas de funciones
Histograma y carta de pareto
Pastel de dos o tres dimensiones
Graficas con impulsos y escaleras
Graficas de dispersi
on de datos y matrices

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

98/215

ficos de dos dimensiones, Escript1.m (I)


Ejemplos con gra
Barras:
>>
>>
>>
>>

x= 2 . 9 : 0 . 2 : 2 . 9 ; b a r ( x , e x p (x . x ) ) ;
b a r h ( x , e x p (x . x ) ) ;
y= r o u n d ( r a n d ( 5 , 3 ) 1 0 ) ;
bar ( y , group ) ; bar ( y , s t a c k ) ;

Histogramas:
>> y= r a n d n ( 1 e4 , 1 ) ;

hist (y) ;

hist (y ,20) ;

Pasteles:
>> x = [ 1 , 3 , 0 . 5 , 2 . 5 , 2 ] ; p i e ( x ) ;

Escaleras:
>> x= 3 : 0 . 1 : 3 ; s t a i r s ( x , e x p (x . 2 ) ) ;

Barras con error:


>> x= 4 : . 2 : 4 ; y= ( 1 / s q r t ( 2 p i ) ) e xp ( ( x . 2 ) / 2 ) ;
>> e=r a n d ( s i z e ( x ) ) / 1 0 ;
>> e r r o r b a r ( x , y , e ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

99/215

ficos de dos dimensiones, Escript1.m (II)


Ejemplos con gra

Puntos:
>> y=r a n d n ( 5 0 , 1 ) ; stem ( y ) ;

Histograma de los
angulos.
>> y= r a n d n ( 1 0 0 0 , 1 ) p i ; r o s e ( y ) ;

Representaci
on de n
umeros complejos:
>> z= e i g ( r a n d n ( 2 0 , 2 0 ) ) ; compass ( z ) ;
>> f e a t h e r ( z ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

100/215

ficas para funciones y complementos (I), Escript2.m.


Gra
Gr
aficas funciones: plot() para n
umeros, ezplot(), fplot() para
funciones:
x= 0 : 0 . 0 5 : 1 0 ; y= s i n ( x ) . e x p ( 0.4 x ) ;
figure ;
subplot (3 ,1 ,1) ; plot (x , y) ; t i t l e ( plot ) ;
subplot (3 ,1 ,2) ;
e z p l o t ( s i n ( x ) . e x p ( 0.4 x ) , [ 0 , 1 0 ] ) ; t i t l e ( e z p l o t
);
>> s u b p l o t ( 3 , 1 , 3 ) ;
>> f p l o t ( s i n ( x ) . e x p ( 0.4 x ) , [ 0 , 1 0 ] ) ; t i t l e ( f p l o t )
;
>>
>>
>>
>>
>>

subplot(n,m,p) divide la gr
afica en n m partes y va a la p.
Texto y ejes en las gr
aficas: Ttulos, legendas, cajas, mallado:
>>
>>
>>
>>
>>
>>

d i s p ( Texto y e j e s en g r
aficas : )
t= 0 : 0 . 1 : 2 p i ; r=s i n ( 2 t ) . c o s ( 2 t ) ;
f i g u r e ; subplot (2 ,1 ,1) ; polar ( t , r ) ;
t i t l e ( polar )
subplot (2 ,1 ,2) ;
f p l o t ( [ s i n ( x ) , s i n ( 2 x ) , s i n ( 3 x ) ] , [ 0 , 2 p i ] , ,
o , ) ;
>> t i t l e ( f p l o t )
>> l e g e n d ( s i n ( x ) , s i n ( 2 x ) , s i n ( 3 x ) ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

101/215

ficas para funciones y complementos (II), Escript2.m.


Gra

>> d i s p ( Tt u l o , nombre en e j e s , l e g e n d a : )
>> x= l i n s p a c e ( 0 , 2 , 3 0 ) ; y= s i n ( x . 2 ) ; f i g u r e ; p l o t ( x , y ) ;
>> t e x t ( 1 , . 8 , y=s i n ( x 2 ) ) ; x l a b e l ( E j e X ) ; y l a b e l ( E j e Y )
;
>> t i t l e ( G r
afico senoidal ) ;
>> d i s p ( S u b p l o t , tama
n o de l e t r a , tama
no e j e s , c a j a , g r i d :
)
>> x = 0 : . 1 : 4 p i ; y= s i n ( x ) ; z=c o s ( x ) ;
>> f i g u r e ; s u b p l o t ( 1 , 2 , 1 ) ; p l o t ( x , y ) ;
>> a x i s ( [ 0 , 2 p i , 1 , 1 ] ) ;
>> s e t ( gca , F o n t S i z e , 1 2 ) ;
>> g r i d on ; box on ;
>> t i t l e ( s i n ( x ) , F o n t W e i g h t , b o l d , F o n t S i z e , 1 2 ) ;
>> s u b p l o t ( 1 , 2 , 2 ) ; p l o t ( x , z ) ;
>> a x i s ( [ 0 , 2 p i , 1 , 1 ] ) ;
g r i d on ; box on
>> s e t ( gca , F o n t S i z e , 1 2 ) ;
>> t i t l e ( c o s ( x ) , F o n t W e i g h t , b o l d , F o n t S i z e , 1 2 ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

102/215

ficas en tres dimensiones.


Funciones para gra

Funci
on
plot3
mesh, meshc, meshz
surf, surfc, surfl
meshgrid, ndgrid
hidden
contour, contour3
trimesh, trisurf
scatter3, stem3
slice
surfnorm
quiver3
patch

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Plot lineal en tres dimensiones
Plot de mallados en tres dimensiones
Plot de superfiecie en tres dimensiones
Preparaci
on de datos para gr
aficas de superficie
Ocultar lneas y superficies ocultas
Curvas de nivel
Plot de mallado triangular
Diagramas de dispersi
on y impulsos en 3 dimensiones
Gr
aficos de volumen
Normales de las superficies
Puntos y normales en vectores
Parches de superficies

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

103/215

ficas en tres dimensiones, Escript3.m (I)


Ejemplos de gra
Gr
afica de tres dimensiones por puntos:
>> t= 0 : p i / 5 0 : 1 0 p i ;
>> f i g u r e ; p l o t 3 ( s i n ( t ) , c o s ( t ) , t ) ; g r i d on ; a x i s s q u a r e
>> f i g u r e ; p l o t 3 ( s i n ( t ) , c o s ( t ) , t , , c o s ( t ) , s i n ( t ) , t ,
);

Gr
afica de tres dimensiones por polgonos:
>> z = 0 : 0 . 0 1 : 8 ; x=c o s ( z ) ; y=s i n ( z ) ;
>> f i g u r e ; f i l l 3 ( x , y , z , r ) ;

Gr
aficas de tres dimensiones con barras:
>>
>>
>>
>>

figure ;
subplot
subplot
subplot

y= c o o l ( 7 ) ;
(1 ,3 ,1) ; bar3 ( y , 0 . 2 , detached ) ;
(1 ,3 ,2) ; bar3 ( y , grouped ) ;
(1 ,3 ,3) ; bar3 ( y , 0 . 1 , stacked ) ;

Gr
aficas de tres dimensiones con puntos con base:
>> f i g u r e ; x= l i n s p a c e ( 0 , 1 , 1 0 ) ;
>> y=x . / 2 ; z=s i n ( x )+s i n ( y ) ;
>> stem3 ( x , y , z , f i l l ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

104/215

ficas en tres dimensiones, Escript3.m (II)


Ejemplos de gra
Superficies tres dimensiones y contornos en dos y tres:
>>
>>
>>
>>
>>

[ X , Y]= m e s h g r i d ( 7 . 5 : . 5 : 7 . 5 ) ;
Z= s i n ( s q r t (X.2+Y . 2 ) ) . / s q r t (X.2+Y . 2 ) ;
s u r f (X , Y , Z ) ; f i g u r e ; s u r f c (X , Y , Z ) ;
f i g u r e ; s u r f l (X , Y , Z ) ;
contour (Z) ; contour3 (Z , 5 0 ) ;

Superficie con velocidad:


>> f i g u r e ; [ U , V ,W]= s u r f n o r m (X , Y , Z ) ;
>> q u i v e r 3 (X , Y , Z , U , V ,W, 0 . 5 ) ;

Contornos:
>> [ X , Y]= m e s h g r i d ( 2 : . 2 : 2 , 2 : . 2 : 3 ) ; Z= X . e x p (X.2 Y
.2) ;
>> c o n t o u r (X , Y , Z ) ; f i g u r e ; c o n t o u r (X , Y , Z , 5 0 ) ;
>> f i g u r e ; c o n t o u r f (X , Y , Z ) ;

Cambio de color y perspectiva:


>> f i g u r e ; s p h e r e ( 1 6 ) ; a x i s s q u a r e ; s h a d i n g f l a t ;
>> s e t ( gca , Z l i m , [ 0 . 6 , 0 . 6 ] ) ; s e t ( g c f , C o l o r , w ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

105/215

ficas en tres dimensiones, Escript3.m (III)


Ejemplos de gra

Rotaci
on de la figura:
>> h= s u r f ( p e a k s ( 2 0 ) ) ; r o t a t e ( h , [ 1 , 0 , 0 ] , 1 5 ) ;
>> v i e w ( [ 1 0 , 1 0 ] ) ;

Mallado triangular de la base, no homogeneo. Superficie en funci


on de
ese mallado:
>>
>>
>>
>>

f i g u r e ; x= r a n d ( 1 , 5 0 ) ; y= r a n d ( 1 , 5 0 ) ;
z= p e a k s ( 6 x 3 , 6 x 3) ;
t r i= delaunay (x , y ) ; trimesh ( t r i , x , y , z ) ;
figure ; trisurf ( tri ,x ,y , z) ;

Representaci
on en cuatro dimensiones, la cuarta es el color:
>> f i g u r e ; l o a d wind ; c a v= c u r l ( x , y , z , u , v , w) ;
>> s l i c e ( x , y , z , cav , [ 9 0 , 1 3 4 ] , [ 5 9 ] , [ 0 ] ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

106/215

cticas funciones para gra


ficas
Pra
Escribir en un fichero Fichero Cejer1.m el c
odigo para obtener las
siguientes gr
aficas,
2

Visualizar sobre el rango 2 a 2 la funci


on v = e x y z .
3
Representar en el intervalo [8, 8] la funci
on f (x) = x 2x4 .
Graficar sobre los mismos ejes las funciones bessel(1, x), bessel(2, x) y
bessel(3, x) para valores entre 0 y 12, separados uniformemente entre
s dos d
ecimas. Colocar tres leyendas y tres tipos de trazo diferentes
(normal, asteriscos y crculos) respectivamente para las tres funciones.
Representar la curva en polares r = 4(1 + cos(a)) para a entre 0 y 2
(cardiode). Representar tambi
en la curva en polares r = 3a para a entre
4 y 4 (espiral).
Representar la curva alabeada de coordenadas param
etricas x = cos2 (t),
y = sin(t) cos(t) y z = sin(t) para t entre 4 y 4.

Escribir en un fichero Fichero Cejer2.m el c


odigo para obtener las
siguientes gr
aficas,
Representar la superficie, su gr
afico de malla y su gr
afico de contorno
cuya ecuaci
on es la siguiente:
x = xe x

y 2

2 < x, y < 2

Representar en un gr
afico de curvas de nivel con 20 lneas la superficie de
la ecuaci
on z = sin(x) sin(y ) con 2 < x, y < 2.
Representar el paraboloide x 2 + y 2 seccionado por el plano z = 2.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

107/215

Curso 2010/2011

108/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

n de clase y objeto
Definicio
Una clase es un nuevo tipo de dato, a una estructura, para el que se
pueden definir funciones especificas y redefinir los operadores.
Un objeto es un caso particular de una clase.
Los campos de la estructura asociada a una clase se llamar
an propiedades
de la clase, y las funciones asociadas a una clase funciones metodo.
>>
>>
>>
>>

s= t f ( s ) ; % C l a s e t f , o b j e t o s .
P= 1 / ( s +1) ; % O p e r a d o r + y / r e d e f i n i d o s p a r a P
K= zpk ( [ ] , [ 1 , 2 ] , 1 ) ; % C l a s e zpk , o b j e t o K
bode (P) ; % bode m
e todo de l a c l a s e t f

Caractersticas de la programaci
on a objeto:
Redefinici
on de operadores especficos para la clase.
Datos encapsulados: Las propiedades de un objeto no son visibles y s
olo
se puede acceder a ellas desde las funciones m
etodo de la clase.
Herencia: Una clase se puede crear a partir de otra, heredando todas sus
funciones m
etodo. Las clases tf, zpk y ss derivan de la clase lti.
Agregaci
on: Un objeto puede contener otros objetos.

Toda la informaci
on de una clase, tf, est
a en el directorio asociado @tf.
Las propiedades de clase usada quedan en memoria. Se deben limpiar
para poder modificarlas,
>> c l e a r

tf

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

109/215

todo principales (I)


Funciones me

Constructor: Genera un objeto a partir de datos.


>>
>>
>>
>>
>>
>>

P= t f ( 1 , [ 1 , 2 , 3 ] ) ; % C o n s t r u c t o r t f , o b j e t o P .
K= zpk ( [ ] , [ 1 , 2 ] , 1 ) ; % C o n s t r u c t o r zpk , o b j e t o K
Pzpk= zpk (P) ; % P o b j e t o t f , Pzpk o b j e t o zpk
i s a (P , t f ) % a f i r m a t i v o
i s a (P , zpk ) % n e g a t i v o
P % Llama a f u n c i
on display

Visualizador: Metodo display que muestra la informaci


on del objeto.
>> P % Llama a f u n c i
o n d i s p l a y de t f
>> Pzpk % Llama a f u n c i
o n d i s p l a y de zpk

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

110/215

todo principales (II)


Funciones me

Obtenci
on de informaci
on:
General: M
etodo get(), muestra propiedades del objeto.
>> g e t (P)
Por ndices: M
etodo B=subref(A,S)
>> P . num{1} % A=P , S ( 1 ) . t y p e = . , S ( 1 ) . t y p e = { } ,
>> %S ( 1 ) . s u b s ={ num } , S ( 2 ) . s u b s ={1}

Introducci
on de informaci
on:
General: M
etodo set(), cambia propiedades del objeto.
>> s e t (P , num , [ 1 , 2 ] )
Por ndices: M
etodo A= subsasign(A,S,B)
>> P . num{1}= 1 % A=P , S ( 1 ) . t y p e = . , S ( 2 ) . t y p e = {}
>> %S ( 1 ) . s u b s ={ num } , S ( 2 ) . s u b s ={1} , B=1

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

111/215

n de operadores (I)
Redefinicio

Operaci
on
a + b
a - b
-a
+a
a.*b
a*b
a./b
a.\b
a/b

A. Herreros, E. Baeyens, DISA/EII (UVa)

M-fichero
plus(a,b)
minus(a,b)
uminus(a)
uplus(a)
times(a,b)
mtimes(a,b)
rdivide(a,b)
ldivide(a,b)
mrdivide(a,b)

Descripci
on
Suma
Resta
Menos unitario
M
as unitario
Multiplicaci
on por elemento
Multiplicaci
on matricial
Divisi
on derecha por elemento
Divisi
on izquierda por elemento
Divisi
on matricial derecha

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

112/215

n de operadores (II)
Redefinicio

Operaci
on
a\b
a.^b
a^b
a < b
a > b
a <= b
a >= b
a ~= b
a == b
a & b
a | b

A. Herreros, E. Baeyens, DISA/EII (UVa)

M-fichero
mldivide(a,b)
power(a,b)
mpower(a,b)
lt(a,b)
gt(a,b)
le(a,b)
ge(a,b)
ne(a,b)
eq(a,b)
and(a,b)
or(a,b)

Descripci
on
Divisi
on matricial izquierda
Potencia por elemento
Potencia matricial
Menor que
Mayor que
Menor que o igual a
Mayor que o igual a
Distinto de
Igual a
Y l
ogico
O l
ogico

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

113/215

n de operadores (III)
Redefinicio

Operaci
on
~a
a:d:b
a:b
a
a.
[a b]
[a; b]
a(s1,s2,...sn)
a(s1,...,sn) = b
(a)

A. Herreros, E. Baeyens, DISA/EII (UVa)

M-fichero
not(a)
colon(a,d,b)
colon(a,b)
ctranspose(a)
transpose(a)
display(a)
horzcat(a,b,...)
vertcat(a,b,...)
subsref(a,s)
subsasgn(a,s,b)
subsindex(a)

Descripci
on
NO l
ogico
Operador dos puntos
Traspuesta conjugada compleja
Matriz transpuesta
Visualizaci
on pantalla
Concatenaci
on horizontal
Concatenaci
on vertical
Referencia por subndices
Asignamiento por subndices
Conversi
on al ser ndice

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

114/215

Prioridades y ejemplos

Prioridades entre objetos ante metodos y operadores:


Un objeto creado tiene prioridad sobre una variable de Matlab,
>> P= 1 / ( s +1) ; % o p e r a d o r

/ y + de c l a s e

tf .

Entre dos objetos creados hay que asignar prioridades,


>> i n f e r i o r t o ( c l a s s 1 , c l a s s 2 ,
>> s u p e r i o r t o ( c l a s s 1 , c l a s s 2 ,

...)
...)

Ejemplo de objetos, metodos y operadores:


>> s= t f ( s ) % C o n s t r u c t o r
>> P ( 1 )= 1 / ( s +1) ; % O p e r a d o r e s
subsasign
>> P ( 2 )= 1 / ( s +2) ;
>> K= P ( 1 ) % m
e todo s u b s r e f

A. Herreros, E. Baeyens, DISA/EII (UVa)

/ , + , m
e todo

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

115/215

Ejemplo: Una clase de polinomios (I)

Objetivos: Se pretende realizar una clase para trabajar con polinomios.


Para ello se definen las siguientes funciones metodo:
M
etodo constructor polynom: Se crea un objeto a partir de los
coeficientes del polinomio.
M
etodo double: El polinomio se podr
a convertir a un vector.
M
etodo display: El objeto se ver
a en la pantalla en forma de cadena de
caracteres.
Sobrecarga de operadores: Los operadores suma (+), resta (-) y
multiplicaci
on (*) son redefinidos para polinomios.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

116/215

Ejemplo: Una clase de polinomios (II)

Metodo constructor,
f u n c t i o n p = polynom ( a )
% polynom C o n s t r u c t o r de l a c l a s e polynom .
% p = polynom ( v ) c r e a un p o l i n o m i o de un v e c t o r .
% Los c o e f i c i e n t e e s t
a n en o r d e n d e c r e c i e n t e
% de l a s p o t e n c i a s de x .
if

n a r g i n == 0
p.c = [];
p = c l a s s ( p , polynom ) ;
e l s e i f i s a ( a , polynom )
p = a;
else
p.c = a (:) . ;
p = c l a s s ( p , polynom ) ;
end

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

117/215

Ejemplo: Una clase de polinomios (III)

Metodo display:
function display (p)
% polynom \ d i s p l a y . Comando v e n t a n a p a r a v e r e l o b j e t o .
disp ( int2str (p . c) ) ;

Metodo double:
function c = double (p)
% polynom \ d o u b l e . C o n v i e r t e polynom a un v e c t o r d o u b l e .
% c = d o u b l e ( p ) . C o n v i e r t e un p o l i n o m i o en v e c t o r .
c = p.c;

Operador +:
function r = plus (p , q)
% polynom \ p l u s . D e f i n e p + q p a r a p o l i n o m i o s .
p = polynom ( p ) ; q = polynom ( q ) ;
k = length (q . c) length (p . c) ;
r = polynom ( [ z e r o s ( 1 , k ) p . c ] + [ z e r o s (1 , k ) q . c ] ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

118/215

Ejemplo: Una clase de polinomios (IV)


Operador -:
f u n c t i o n r = minus ( p , q )
% polynom \ minus . I m p l e m e n t a p q e n t r e p o l i n o m i o s .
p = polynom ( p ) ; q = polynom ( q ) ;
k = length (q . c) length (p . c) ;
r = polynom ( [ z e r o s ( 1 , k ) p . c ] [ z e r o s (1 , k ) q . c ] ) ;

Operador *:
f u n c t i o n r = mtimes ( p , q )
% polynom \ mtimes . I m p l e m e n t a p q e n t r e p o l i n o m i o s .
p = polynom ( p ) ;
q = polynom ( q ) ;
r = polynom ( c o n v ( p . c , q . c ) ) ;

Ejemplo de su uso en workspace:


>>
>>
>>
>>
>>
>>

p=
p=
p=
q=
t=
a=

polynom % C r e a un o b j e t o v a c i o
polynom ( p ) % D e v u e l v e e l o b j e t o que s e manda
polynom ( [ 1 , 2 , 3 ] ) % C r e a un o b j e t o p l l e n o
p+p
qp
double (p)

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

119/215

Clases derivadas: Herencia (I)

Muchas veces se desea crear una nueva clase con las mismas propiedades
y funciones metodos que otra ya existente a la que se a
naden nuevas
propiedades y funciones metodo.
Esto se puede conseguir a
nadiendo un objeto de la clase existente
ClasePadre en la definici
on de la nueva clase.
Los objetos de la nueva clase ser
an ObjetoHijo, y los de la clase
existente ObjetoPadre.
Un ObjetoHijo puede acceder a todos las funciones metodo de la
ClasePadre que no esten definidos en su clase.
La forma de definir un objeto hijo es la siguiente:
O b j e t o H i j o= c l a s s ( O b j e t o H i j o , C l a s e H i j o , O b j e t o P a d r e ) ;

Con esta definici


on Matlab crea un componente
ObjetoHijo.ClasePadre donde se guardar
a la informaci
on de la parte
del ObjetoHijo con las mismas propiedades que el ObjetoPadre.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

120/215

Clases derivadas: Herencia (II)


Un objeto hijo puede recibir herencia de varios objetos padres,
O b j e t o H i j o= c l a s s ( O b j e t o H i j o , C l a s e H i j o , O b j e t o P a d r e 1 ,
ObjetoPadre2 ) ;

Una funci
on metodo que no posea la ClaseHijo ser
a buscada en las
funciones de la clase ClasePadre1 y de no ser encontrada entre las de la
clase ClasePadre2.
Un ejemplo muy sencillo de una clase derivada es el de una clase de
funciones, cuyas propiedades son:
Nombre de la funci
on.
Polinomio caracterstico.

Est
a claro que esta clase funcion puede ser propuesta como derivada de
la clase polinomio polymon, a
nadiendo a la misma una propiedad donde
se escriba el nombre de la funci
on.
Todas las funciones metodo de la clase polynom pueden ser usadas en la
clase funcion excepto el metodo constructor, el metodo display y el
subsref, que van a ser redefinidos.
Cuando los objetos funcion use funciones metodo de la clase polynom,
se est
a trabajando con la parte del objeto funcion heredada, y el
resultado de la operaci
on podr
a ser un objeto polynom o de otra clase ya
definida, pero nunca de la clase funcion.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

121/215

Clases derivadas: Herencia (III)


Funci
on metodo constructor de funcion. C
odigo.
function p = funcion ( varargin )
% FUNCION C o n s t r u t o r de l a c l a s e f u n c i o n .
switch nargin
case 0
p o l y= polynom ;
p . nombre = ;
p = c l a s s (p , funcion , poly ) ;
case 1
i f i s a ( v a r a r g i n {1} , f u n c i o n )
p = varargin {1};
else
e r r o r ( Tipo de a r g u m e n t o e r r o
n e o ) ; end
case 2
i f i s c h a r ( v a r a r g i n {1}) ,
p . nombre= v a r a r g i n { 1 } ;
else
e r r o r ( Arg : nombre , p o l i n o m i o ) ; end
p o l y = polynom ( v a r a r g i n { 2 } ) ;
p = c l a s s (p , funcion , poly ) ;
otherwise
e r r o r ( N
u mero de a r g u m e n t o s e r r
o n e o ) ; end

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

122/215

Clases derivadas: Herencia (IV)

Funci
on metodo display. C
odigo.
function display (p)
% POLYNOM/DISPLAY Comando v e n t a n a p a r a v e r e l o b j e t o .
disp ( ) ;
d i s p ( [ Funci
o n , p . nombre , = ] )
disp ( ) ;
disp ( [ char (p) ] ) ;

Ejemplos en el workspace:
>>
>>
>>
>>
>>
>>

p= f u n c i o n % O b j e t o f u n c i o n n u l o
p1= f u n c i o n ( z e t a , [ 1 , 2 , 3 ] )
% O b j e t o f u n c i o n con nombre y p a r
ametros .
p2= f u n c i o n ( e t a , [ 2 , 3 , 4 ] )
p3= p1+p2
% Se u s a un m
e todo d e l p a d r e . E l r e s u l t a d o en un
o b j e t o polynom .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

123/215

Clases derivadas: Herencia (V)


Funci
on metodo subsref: Muestra por campos el nombre y polinomio de
la funci
on, y por ndice el valor de la funci
on en un punto. C
odigo.
function b = subsref (a , s )
% SUBSREF Muestra , p o r campos e l c o n t e n i d o d e l
% o b j e t o , p o r n d i c e s e l v a l o r en un c i e r t o p u n t o .
s w i t c h s . type ,
case . ,
switch s . subs
c a s e nombre ,
b= a . nombre ;
case poly ,
b= c h a r ( a . polynom ) ;
otherwise
e r r o r ( Campos : nombre , p o l y . ) ;
end
case () ,
i n d= s . s u b s { : } ;
b= a . polynom ( i n d ) ;
otherwise
e r r o r ( Campo o n d i c e e r r o
neo . ) ;
end

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

124/215

Clases agregadas (I)

Una clase puede tener de componentes objetos de otras clases ya


definidas.
Con ello, no se heredan directamente sus funciones metodo, pero estas
funciones podr
an ser usadas en la definici
on de las nuevas funciones
metodo.
Ejemplo: La clase transfer tiene las siguientes propiedades:
Polinomio del numerador.
Polinomio del denominador.

Est
a claro que se puede aprovechar la clase polynom para crear esta
nueva clase ya que sus dos componentes son polinomios.
Las funciones metodo de la nueva clase no tienen nada que ver con las de
polynom, pero en su construcci
on ser
an empleadas.
Las funciones metodo de la nueva clase son la funci
on constructora,
display, subsref, plus, minus, mtimes y mrdivide.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

125/215

Clases agregadas (II)


Funci
on metodo constructor. C
odigo.
function p = transfer ( varargin )
% FUNCION C o n s t r u t o r de l a c l a s e t r a n s f e r
% C r e a una f u n c i o
n de t r a n s f e r e n c i a c o m p u e s t a de
% d o s p o l i n o m i o s , uno en n u m e r a d o r y o t r o en
denominador .
switch nargin
case 0
p . num= polynom ; p . den= polynom ;
p = c l a s s (p , t r a n s f e r ) ;
% Objeto nulo
case 1
i f i s a ( v a r a r g i n {1} , t r a n s f e r )
p = varargin {1};
% Objeto f u n c i o n
else
p . num= polynom ( v a r a r g i n { 1 } ) ; p . den= polynom ( 1 ) ;
p= c l a s s ( p , t r a n s f e r ) ;
% Objeto s
o l o n u m e r ad o r
end
case 2
p . num= polynom ( v a r a r g i n { 1 } ) ; p . den= polynom ( v a r a r g i n
{2}) ;
p = c l a s s (p , t r a n s f e r ) ;
% Objeto numerador y
denominador
otherwise
e r r o r ( N
u mero de a r g u m e n t o s e r r
oneo ) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

126/215

Clases agregadas (III)

Funci
on metodo display. C
odigo:
function display (p)
% t r a n s f e r \ d i s p l a y . Comando v e n t a n a p a r a v e r e l o b j e t o .
num= c h a r ( p . num ) ;
den= c h a r ( p . den ) ;
disp ( ) ;
d i s p ( [ inputname (1) , = ] )
disp ( ) ;
d i s p ( [ num ] ) ;
d i s p ( r ep m a t ( , [ 1 , max ( [ s i z e ( num , 2 ) , s i z e ( den , 2 ) ] ) ] ) ) ;
d i s p ( den ) ;

Ejemplos en el workspace:
>>
>>
>>
>>
>>

g=
g=
p=
g=
g=

t r a n s f e r ; % Objeto nulo
t r a n s f e r ( [ 1 , 2 , 3 ] ) % O b j e t o con num y den= 1 .
polynom ( [ 1 , 2 , 3 ] ) % O b j e t o polynom
t r a n s f e r ( [ 1 , 2 , 3 ] , [ 3 , 4 , 5 ] ) ; % O b j e t o con num y den
t r a n s f e r ( p , [ 1 , 2 , 3 ] ) ; % O b j e t o con num y den

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

127/215

Clases agregadas (IV)


Funci
on metodo subsref. C
odigo:
function b = subsref (a , s )
% t r a n s f e r \ s u b s r e f . Por campos , l a r e p r e s e n t a c i
on del
objeto .
% Por n d i c e s , e l v a l o r de l a f u n c i
o n en un p u n t o .
s w i t c h s . type ,
case . ,
s w i t c h s . subs ,
c a s e num ,
b= c h a r ( a . num ) ; % p o l i n o m i o num
c a s e den ,
b= c h a r ( a . den ) ; % p o l i n o m i o den
otherwise
e r r o r ( Campos : num , den ) ;
end
case () ,
ind = s . subs { : } ;
b= a . num ( i n d ) . / a . den ( i n d ) ; % V a l o r en x
otherwise
e r r o r ( Dar campo o v a l o r de x en p ( x ) )
end

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

128/215

Clases agregadas (V)


Sobrecarga de operadores. C
odigo:
function r = plus (p , q)
% t r a n s f e r \ plus . Define p + q para t r a n s f e r .
p = transfer (p) ;
q = transfer (q) ;
r . num= p . numq . den + p . den q . num ;
r . den= p . den q . den ;
r= c l a s s ( r , t r a n s f e r ) ;
f u n c t i o n r = minus ( p , q )
% t r a n s f e r \ minus . D e f i n e p q p a r a t r a n s f e r .
p = transfer (p) ;
q = transfer (q) ;
r . num= p . numq . den p . den q . num ;
r . den= p . den q . den ;
r= c l a s s ( r , t r a n s f e r ) ;
f u n c t i o n r = mtimes ( p , q )
% t r a n s f e r \ mtime . D e f i n e p q p a r a t r a n s f e r .
p = transfer (p) ;
q = transfer (q) ;
r . num= p . numq . num ;
r . den= p . den q . den ;
r= c l a s s ( r , t r a n s f e r ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

129/215

Clases agregadas (VI)

Sobrecarga de operadores. C
odigo:
f u n c t i o n r = mtimes ( p , q )
% t r a n s f e r \ mrdivide Define p / q para t r a n s f e r .
p = transfer (p) ;
q = transfer (q) ;
r . num= p . numq . den ;
r . den= p . den q . num ;
r= c l a s s ( r , t r a n s f e r ) ;

Ejemplos en el workspace:
>>
>>
>>
>>
>>
>>

g1= t r a n s f e r ( [ 1 , 2 , 3 ] , [ 2 , 3 , 4 ] )
g2= t r a n s f e r ( [ 1 , 4 , 3 ] )
% den=1
g3= g1+g2 ; % O b j e t o t r a n s f e r
g3= g1 / g2 % O b j e t o t r a n s f e r
g3 . num % Cadena de c a r a c t e r e s
g3 ( 1 0 ) % V a l o r de c o c i e n t e en x=10

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

130/215

cticas de la programacio
n orientada a objeto
Pra

Modificar la funci
on metodo subsref, Fichero Dejer1.m de la clase
funcion, de forma que los ndices sirva para devolver el valor del
coeficiente correspondiente. Por ejemplo, p(3) debe devolver el tercer
coeficiente.
Modificar la funci
on metodo subsref, Fichero Dejer2.m, de la clase
transfer de forma que devuelva los ndices de numerador y denominador
correspondientes. Por ejemplo, g(1,2) debe devolver el primer coeficiente
del numerador, y segundo del denominador.
Definir una funci
on metodo subasgn, de las clases funcion y transfer,
Fichero Dejer3.m y Dejer4.m con un criterio similar a los empleados
en los dos apartados anteriores. Ejemplo en la clase funcion, p(3)=5,
introduce un 5 en la posici
on tercera del polinomio. Ejemplo en la clase
transfer, g(2,3)=[1,2], introduce un 1 en la posici
on segunda del
numerador, y un 2 en la posici
on tercera de denominador.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

131/215

Curso 2010/2011

132/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

n de sistema continuos.
Definicio

Un sistema es la relaci
on entre una se
nal de entrada y una de salida,
y (t) = F (u(t)).
Todo sistema fsico es causal, es decir, la se
nal de salida depende en el
tiempo de la se
nal de entrada.
Un sistema continuo en el tiempo puede ser representado
matem
aticamente mediante una ecuaci
on diferencial ordinaria (ODE),
y (n) = f (t, y , y 0 , . . . , y (n1) ).
Nota: La entrada es una funci
on del tiempo u(t).

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

133/215

n de sistemas continuos lineales


Definicio

Sistema lineal:
Si u(t) y (t), entonces u(t) y (t).
Si {u1 (t), u2 (t)} {y1 (t), y2 (t)}, entonces
{u1 (t) + u2 (t)} {y1 (t) + y2 (t)}.

Un sistema lineal se rige por una ecuaci


on diferencial lineal,
y (n) + an1 y (n1) + . . . + a0 y = bn u (n) + bn1 u (n1) + . . . + b0 u.
Nota: Ver que de esta forma se cumple con su definici
on.
Funci
on de transferencia de un sistema lineal es la transformada de
Laplace de su ecuaci
on diferencial,
Y (s)
s n + an1 s n1 + . . . + a0
=
.
U(s)
bn s n + bn1 s n1 + . . . + b0

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

134/215

n de sistema muestreados.
Definicio

Un sistema muestreado puede ser representado por una ecuaci


on en
diferencias,
y (k) = f (k, y (k), y (k 1), . . . , y (k n)).
Un sistema muestreado lineal puede ser representado por un una ecuaci
on
en diferencias lineal,
y (k+n)+a1 y (k+n1)+. . .+a0 y (k) = bn u(k+n)+bn1 u(k+n1)+. . .+b0 u(k).
Funci
on de transferencia de un sistema muestreado lineal es la
transformada Z de su ecuaci
on en diferencias,
Y (z)
z n + a1 z n1 + . . . + a0
.
=
U(z)
bn z n + bn1 z n1 + . . . + b0
Un sistema, en general puede estar compuesto por partes continuas,
muestreadas, lineales y no lineales.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

135/215

n en Matlab y Simulink: Comparacio


n
Simulacio

La simulaci
on de un sistema consiste en predecir los datos de salida del
mismo frente a los datos de entrada.
Simulaci
on desde Matlab:
Creaci
on de un fichero con la ecuaci
on diferencial del sistema en forma de
derivadas de primer orden.
Resoluci
on del ODE por m
etodos similares a los de Runge-Kutta.

Simulaci
on desde Simulink (interface gr
afico):
Dibujo del sistema en un entorno gr
afico, donde se dispone de iconos para
sus partes lineales, no lineales, continuas y discretas.
Creaci
on de un fichero con la informaci
on de la planta y uso de las
funciones de simulaci
on de matlab.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

136/215

n con Matlab
Simulacio

La ecuaci
on ODE del sistema y (n) = f (t, y , y 0 , . . . , y (n1) ) se debe
transformar a una ecuaci
on ODE vectorial de primer orden y 0 = F (t, y ).
Una forma sencilla de conseguirlo es mediante el cambio,
y1 = y , y2 = y 0 , . . . , yn = y (n1) ,
y por tanto

y10
y20
..
.
yn0

y2
y3
..
.
f (t, y1 , y2 , . . . , yn )

Condiciones iniciales: Valores iniciales de



T
y1 (t0 ), . . . , yn (t0 )
.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

137/215

n de Val der Pol


ODE de la funcio
Ejemplo: Funci
on de Val der Pol, (din
amica no lineal
masa-muelle-amortiguador)
y100 (1 y12 )y10 + y1 = 0,
en ecuaciones de estado,
 0  

y2
y1
=
.
y20
(1 y12 )y2 y1
Fichero con la relaci
on de las ecuaciones de estado,
f u n c t i o n dy= p o l ( t , y )
% t es e l tiempo
% y e s e l v a l o r d e l v e c t o r p a r a un t .
% dy e s l a d e r i v a d a de y p a r a un t dado .
% y (3) par
a m e t r o m o d i f i c a b l e con c o n d i c i o n e s i n i c i a l e s
dy = [ y ( 2 ) ; y ( 3 ) (1 y ( 1 ) 2 ) y ( 2 )y ( 1 ) ; 0 ] ; % Columna

Esta funci
on ser
a llamada por el programa ODE en los sucesivo puntos t
para obtener la derivada.
La entrada se debe poner en funci
on de t.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

138/215

n de ODEs y formulacio
n
Clasificacio

Funciones ODE para sistema suaves basados en metodos de Ruge-Kutta:


ode45, ode23 y ode113.

Funciones ODE para problema con cambios de alta frecuencia:


ode15s, ode23s y ode23t.

Formato de la llamada a la funci


on ODE:
>> [ t , y ]= s o l v e r ( @F , t s p a n , y0 , o p t i o n )
@F: Nombre o puntero del fichero .m donde se guarda la funci
on.
tspan:
[ti,tf]: Lmite inferior y superior. Paso y n
umero de valores de
salida variables.
linspace(ti,tf,Npuntos): Se fija el n
umero de puntos y tiempo
cuya salida se desea conocer. El programa internamente tiene paso
variable.
y0: Valores iniciales deseados (vector columna).
option: Especificaciones del algoritmo. Si se pone [] se toman por
defecto.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

139/215

Opciones de las funciones ODE


Consultar con la ayuda:
>>
>>
>>
>>
>>

help odeset
o p t i o n= o d e s e t ; % d a t o s p o r d e f e c t o .
x0= [ 0 . 1 , 1 . 1 , 0 . 1 ] ; % d o s e s t a d o s , un p a r
ametro
s o l= ode45 ( @pol , x0 ) ; % V e r s i
on 7
y= d e v a l ( s o l , l i n s p a c e ( 0 , 1 0 , 1 0 0 ) ) ; % s o l . en p u n t o s

Ejemplos:
N
umero de datos de salida:
>> o p t i o n= o d e s e t ( R e f i n e , 4 ) ; % p o r d e f e c t o .
Jacobiano del ODE en funci
on jacpol.m:
>> o p t i o n= o d e s e t ( J a c o b i a n , @ j a c p o l ) ;
Se precisa una funci
on de la forma,
f u n c t i o n j a c= j a c p o l ( t , y )
jac = [0 ,
1 , 0;
2y ( 1 ) y ( 2 ) , 1y ( 1 ) 2 , (1 y ( 1 ) 2 ) y ( 2 ) ;
0, 0, 0];

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

140/215

Ecuaciones diferenciales con valores de frontera (I)

El problema puede ser planteado por las ecuaciones como para a < t < b,
y 0 = f (t, y , p)
g (y (a), y (b), p) = 0
Se resuelve con la funci
on:
>> s o l= bv p4c ( @F , @bc ,

s o l i n i t , o p t i o n , p1 , p2 ,

...)

@F nombre o puntero a funci


on que define el problema.
@bc nombre o puntero a funci
on que define los valores frontera.
solinit: Fijar el mallado en t y puntos iniciales para y .
option opciones de resolucion bvpset, bvpget.
pi par
ametros extras.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

141/215

Ecuaciones diferenciales con valores de frontera (II)

Ejemplo: Soluci
on de la ecuaci
on y 00 + |y | = 0, sabiendo que y (0) = 0 e
y (4) = 2.
Funci
on diferencial:
f u n c t i o n dydx= F ( t , y )
dydx= [ y ( 2 ) ; a b s ( y ( 1 ) ) ] ;
Funci
on frontera:
f u n c t i o n r e s= bc ( ya , yb )
r e c= [ ya ( 1 ) ; yb ( 1 ) + 2 ] ;
Operaciones a realizar:
>>
>>
>>
>>

s o l i n i t= b v p i n i t ( l i n s p a c e (0 ,4 ,5) , [ 1 , 0 ] ) ;
s o l= b v p4 c ( @F , @bc , s o l i n i t ) ;
t=l i n s p a c e ( 0 , 4 ) ; y= d e v a l ( s o l , t ) ;
plot (t , y) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

142/215

Ecuaciones diferenciales en derivadas parciales (I)

Una ecuaci
on en derivadas parciales puede formularse como:







u
u
u u
m
m
c x, t, u,
x f x, t, u,
+ s x, t, u,
=x
x t
x
x
x
donde a x b, t0 t tf .
Condiciones iniciales: Para t = T0 ,
u(x, t0 ) = u0 (x).
Condiciones frontera: Para x = a o x = b,


u
p(x, t, u) + q(x, t)f x, t, u,
= 0.
x

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

143/215

Ecuaciones diferenciales en derivadas parciales (II)

Se resuelve con la funci


on:
>> s o l= pd ep e (m, @F , @ i n i t , @ f r o n t , xmesh , t s p a n ,
o p t i o n s , p1 , p2 , . . . )
m: Simetra de la ec. diferencial, bloques (m=1), cilndrica (m=2) y esf
erica
(m=3).
F Nombre o puntero a la definici
on de funci
on.
>> [ c , f , s ]= F ( x , t , u , dudx )
init: Nombre o puntero a las condiciones iniciales.
>> u= i n i t ( x )
front: Nombre o puntero a las condiciones frontera.
>> [ p l , q l , pr , p r ]= f r o n t ( x l , u l , x r , ur , t )
xmesh: Mallado de los valores de x.
tspan: Mallado de los valores de t.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

144/215

Ecuaciones diferenciales en derivadas parciales (III)


Ejemplo: Resolver la ecuaci
on diferencial
 

u
2 u
=
,

t
x x
sujeto a las condiciones iniciales u(x, 0) = sin(x) y condiciones frontera
u(0, t) = 0,

e t +

u
(1, t)
x

=0

f u n c t i o n [ c , f , s ]= F ( x , t , u , dxdu )
c= p i 2 ; f= dxdu ; s =0;
f u n c t i o n u0= i n i t ( x )
u0= s i n ( p i x ) ;
f u n c t i o n [ p l , q l , pr , q r ]= f r o n t ( x l , u l , x r , ur , t )
p l=u l ; q l =0; p r= p i e x p ( t ) ; q r= 1 ;
>>
>>
>>
>>
>>

m= 0 ; x= l i n s p a c e ( 0 , 1 , 2 0 ) ; t= l i n s p a c e ( 0 , 2 , 5 ) ;
s o l= pd ep e (m, @F , @ i n i t , @ f r o n t , x , t ) ;
u= s o l ( : , : , 1 ) ;
figure ; surf (x , t , u) ;
f i g u r e ; p l o t ( x , u ( end , : ) ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

145/215

cticas de simulacio
n con matlab
Pra
Resolver la ecuaci
on de Van del Pol y 00 + (1 y 2 )y 0 + y = 0 para
= 1, con valores iniciales y (0) = 2 e y 0 (0) = 0, en el intervalo
t = [0, 20] (usando su Jacobiano) por el ode45 y ode23. Generalizar el
resultado para una cualquiera. El fichero script con la resoluci
on del
problema se llamar
a Eejer1.m.
Resolver la ecuaci
on de Lorenz, usadas en la descripci
on de sistemas
ca
oticos, para los puntos iniciales y valores de , r y b que el usuario
desee, por ejemplo = 10, r = 28 y b = 8/3. El fichero script con la
resoluci
on del problema se llamar
a Eejer2.m.
x 0 = (y x)
y 0 = x(r z) y
z 0 = xy bz
Dada la ecuaci
on y 00 + ( 2q cos(2t))y = 0, con condiciones de frontera
y (0) = 1, y 0 (0) + y 0 () = 0 encontrar una soluci
on para q = 15 y
= 15, bas
andose en una soluci
on inicial para diez puntos de t en el
intervalo [0, ]. Dibujar la gr
afica de la primera componente en 100
puntos igualmente espaciados entre [0, ]. El fichero script con la
resoluci
on del problema se llamar
a Eejer3.m.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

146/215

Simulink: Tabla de bloques propios

Bloques especficos de Simulink:


Continuous: Bloques de sistemas continuos escritos en base a su
funciones de transferencia; sus polos, ceros y ganancias; y sus ecuaciones
en espacio de estado.
Discrete: Bloques de sistemas discretos escritos en base a su funciones
de transferencia; sus polos, ceros y ganancias; y sus ecuaciones en espacio
de estado.
Function & Tables: Funciones y tablas de Matlab. Especial importancia
las S-Function.
Math: Bloque de operaciones matem
aticas entre se
nales.
Nonlinear: Bloque de no linealidades.
Signal & Systems: Entradas y salidas de datos hacia el espacio de
trabajo de Matlab (bloques in y out), y hacia ficheros. Bloque subsystem
que permite generar un diagrama de bloque dentro de otro.
Sinks: Bloques que muestran los datos simulados en pantallas o los
guardan en ficheros.
Sources: Bloques que generan diferentes tipos de se
nales.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

147/215

Simulink: Tabla de bloques pertenecientes a toolbox

Bloques pertenecientes a toolbox de Matlab:


Control System Toolbox: Bloques de sistemas continuos y discretos en
la formulaci
on orientada a objeto LTI especfica de esa toolbox.
Real-Time: Bloques de comunicaci
on entre el sistema y una tarjeta de
adquisici
on de datos.
En general, todas las toolbox de matlab han desarrollado funciones de
simulink en la versi
on 7 o posterior.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

148/215

n de sistemas desde matlab


Simulink: Simulacio

Interface gr
afico para modelar un sistema.
Simulaci
on desde Matlab: Entradas bloques in y salidas bloques out.
>> [ t , x , y ]= s i m ( FUN , t s p a n , o p t i o n , [ t , u ] )
FUN: Nombre del fichero .mdl del fichero Simulink.
tspan:
[ti,tf]: Lmite inferior y superior. Paso y n
umero de valores de
salida variables.
linspace(ti,tf,Npuntos): Se fija el n
umero de puntos y tiempo
cuya salida se desea conocer. El programa internamente tiene paso
variable.
x0: Valores iniciales de las variables de estado (vector columna).
option: Especificaciones del algoritmo. Si se pone [] se toman por
defecto.
[t,u]: Tiempo y entradas al modelo Simulink desde el espacio de trabajo.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

149/215

n con matlab y simulink


Ejercicios de simulacio

Formular en un fichero *.m los dos modelos planteados en Simulink y


demostrar que la simulaci
on con la funci
on ode45 y con Simulink es
equivalente. El nombre del fichero script ser
a Eejer4.m.
1

s+1

1/100s+1

In1
Transfer Fcn

1
In1

A. Herreros, E. Baeyens, DISA/EII (UVa)

Relay

Saturation

Integrator1

Integrator

s+1

Transfer Fcn

Integrator1

Integrator

Curso de Programaci
on en Matlab y Simulink

1
Out1

1
Out1

Curso 2010/2011

150/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

151/215

fico de matlab (I)


GUIDE: Interface gra
Definici
on: Es una herramienta para construir interfaces gr
aficos con
botoneras, figuras, texto, y m
as elementos.
Construcci
on de gr
aficos: Se realiza con un interface del programa
que permite colocar cada elemento donde se desee. Tras ello se exporta la
informaci
on a un fichero .m.
Programaci
on de funciones: Cada elemento del gr
afico tiene asociado
en el fichero .m una funci
on donde el programador escribe las
instrucciones de cada elemento.

Ejemplo: La siguiente gr
afica muestra un inteface para el an
alisis de las
se
nales cardacas. Se compone de,
Pantalla: para visualizar los datos.
Botones: para marcar las operaciones que se desean realizar.
Pantallas de texto: Para mandar mensajes al programa.

2500
2000
1500
1000
500
0
-500
0.97

0.98

0.99

1.01

1.02

1.03

1.04
5

x 10

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

152/215

fico de matlab (II)


GUIDE: Interface gra
Entorno gr
afico: El comando GUIDE abre una pantalla con la que se
puede dibujar el esquema gr
afico del interface,
Cada elemento a
nadido es un objeto con un nombre y propiedades que se
pueden modificar en la pantalla.
Los elementos se pueden alinear, formar bloques y otra serie de
operaciones para conseguir una gr
afica bonita.
Cuando la figura se haya terminado se procede a exportar la informaci
on a
un fichero .m.

Pantalla GUIDE y paleta de trabajo:

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

153/215

fico de matlab (III)


GUIDE: Interface gra
Programaci
on de los objetos: En el fichero .m generado con el
interface cada objeto tiene asociado dos funciones, una de inicializaci
on y
otra de llamada.
Variables de las funciones: Son dos objetos, hObject para los
gr
aficos y handles para la informaci
on.
Ejemplo: Barra para mandar datos (slider),
Funci
on creaci
on de un slider:
f u n c t i o n S Dim CreateFcn ( hObject , eventdata , h a n d l e s )
% I n t r o d u c e en e l o b j e t o g r
afico los valores iniciales
s e t ( h O b j e c t , V a l u e , 5 ) ; s e t ( h O b j e c t , Min , 0 ) ;
s e t ( h O b j e c t , Max , 1 0 ) ;

Funci
on de llamada de un slider:
f u n c t i o n S Dim Callback ( hObject , eventdata , h a n d l e s )
% Extrae del objeto g r
afico el valor
N= g e t ( h O b j e c t , V a l u e ) ;
% I n t r o d u c e d i c h o v a l o r en o t r o o b j e t o
% E Dim , c a s i l l a de t e x t o
s e t ( h a n d l e s . E Dim , S t r i n g , n u m 2 s t r ( f l o o r (N) ) ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

154/215

GUIDE: Ejercicios propuestos

Ejercicio: Realizar un interface de usuario con la herramienta GUIDE


que consiga mostrar en una pantalla gr
aficas elegidas por el usuario en
diferentes formatos, superficie, mallado o contorno. La funci
on donde
debe ser guardado el programa se llamar
a Fejer1.m
Ver las explicaciones del manual de matlab del interface de usuario,
builgui.pdf, donde se explica este ejemplo con detalle.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

155/215

Curso 2010/2011

156/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

ticas ba
sicas (I)
Funciones matema

Funci
on
abs
acos, acosh
acot, acoth
acsc, acsch
angle
asec, asech
asin, asinh
atan, atanh
atan2
ceil
complex

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Valor absoluto
Arco coseno y arco coseno hiperb
olico
Arco cotangente y arco cotangente hiperb
olico
Arco cosecante y arco cosecante hiperb
olico
Argumento
Arco secante y arco secante hiperb
olico
Arco seno y arco seno hiperb
olico
Arco tangente y arco tangente hiperb
olico
Arco tangente en el cuarto cuadrante
Redondeo al entero m
as pr
oximo
Forma un n
umero complejo

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

157/215

ticas ba
sicas (II)
Funciones matema

Funci
on
conj
cos,cosh
cot,coth
csc,csch
exp
fix
floor
gcd
imag
lcm
log
log2
log10
mod

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Complejo conjugado
Coseno y coseno hiperb
olico
Cotangente y cotangente hiperb
olica
Cosecante y cosecante hiperb
olica
Exponencial
Elimina la parte decimal
Mayor entero menor o igual que un real dado
M
aximo com
un divisor
Parte imaginaria de un n
umero complejo
M
aximo com
un m
ultiplo
Logaritmo neperiano
Logaritmo base 2
Logaritmo base 10
M
odulo

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

158/215

ticas ba
sicas (III)
Funciones matema

Comentario
Coeficiente binomial
Parte real de un n
umero complejo
Resto de la divisi
on
Redondeo al entero m
as cercano
Secante y secante hiperb
olica
Signo
Seno y seno hiperb
olico
Raz cuadrada
Tangente y tangente hiperb
olica

Funci
on
nchoosek
real
rem
round
sec,sech
sign
sin,sinh
sqrt
tan,tanh
Pueden consultarse con
>> h e l p e l f u n

MATLAB tiene tambien funciones matem


aticas especiales
>> h e l p s p e c f u n

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

159/215

ticas ba
sicas DElfun1.m
Ejemplo de funciones matema

Combinaciones de 10 elementos tomadas de 4 en 4

10
4


:

>> n c h o o s e k ( 1 0 , 4 )

Seno y coseno de los


angulos entre 0 y 2, incrementando de /2 en /2.
>> s i n ( 0 : p i / 2 : 2 p i )
>> c o s ( 0 : p i / 2 : 2 p i )

Algunas propiedades de las funciones exponencial y logartmica


>>
>>
>>
>>
>>

exp (2 p i i )
exp ( l o g ( 2 ) )
2 e x p ( i p i )
2 ( c o s ( p i )+i s i n ( p i ) )
l o g (3+2 i )

Algunas propiedades de las funciones trigonometricas


>>
>>
>>
>>
>>
>>

s i n ( p i / 4 ) 2+ c o s ( p i / 4 ) 2
( e x p ( 5 )+ex p ( 5) ) /2
cosh (5)
c o s h ( p i ) 2 s i n h ( p i ) 2
1+t a n ( p i / 4 ) 2
s e c ( p i / 4 ) 2

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

160/215

n de coordenadas
Funciones de transformacio

Funci
on
cart2pol,pol2cart
cart2sph,sph2cart

Comentario
Transforma cartesianas a polares (cilndricas 3D)
Transforma cartesianas a esfericas

Ejemplo de transformaci
on de coordenadas DCoor1.m
Transforma el punto (3, 2, 5) de cilndricas a cartesianas:
>> [ x , y , z ]= p o l 2 c a r t ( 3 , 2 , 5 )
Transforma el punto (1, 1, 1) de cartesianas a cilndricas y a esf
ericas:
>> [ c1 , c2 , c3 ]= c a r t 2 p o l ( 1 , 1 , 1 )
>> [ c1 , c2 , c3 ]= c a r t 2 s p h ( 1 , 1 , 1 )
Transforma el punto (5, /3) de cilndricas a cartesianas:
>> [ x , y ]= p o l 2 c a r t ( 5 , p i / 3 )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

161/215

sicas (I)
Funciones estadsticas ba

Funci
on
max
mean
median
min
perms
sort
sortrows
std
var

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
M
aximo de vector
Media
Mediana
M
aximo
Permuta las filas de una matriz
Datos ordenados
Ordena filas de una matriz
Desviaci
on estandar.
Varianza

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

162/215

sicas (II)
Funciones estadsticas ba

Funci
on
corr
cov
corrcoef
xcorr
xcov
cumprod
cumsum
cumtrapz
diff
find
hist,histc

Comentario
Correlaci
on entre variables
Matriz de covarianzas
Matriz de correlaciones
Correlaci
on cruzada entre variables
Covarianzas cruzadas entre variables
Producto acumulativo
Suma acumulativa
Integraci
on acumulativa trapezoidal
Funci
on diferencial y aproximaci
on acumulativa
Busca datos en vectores
Histograma y contaje de histograma

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

163/215

sicas estadstica DStat1.m (I)


Ejemplo funciones ba
Generamos dos series de 1000 n
umeros cada una que se almacenan en los
vectores x e y. Estos vectores representan un conjunto de medidas
obtenidas de muestrear dos variables aleatorias X e Y.
>> r a n d n ( s e e d , 1 ) ;
>> x = r a n d n ( 1 0 0 0 , 1 ) ;
>> y = r a n d n ( 1 0 0 0 , 1 ) ;

El valor medio de x se calcula con el comando:


>> mean ( x )

Si hubiera alg
un valor NaN en el vector x, el comando mean(x) devuelve
NaN como media, para descontar estos valores se utiliza el comando NaN
>>
>>
>>
>>

xn=x ;
xn ( 2 0 0 )=NaN ;
mean ( xn )
nanmean ( xn )

La mediana se calcula con el comando:


>> median ( x )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

164/215

sicas estadstica DStat1.m (II)


Ejemplo funciones ba

La desviaci
on tpica se calcula con el comando
>> s t d ( x )

La varianza se calcula con el comando


>> v a r ( x )

El valor m
as grande de la serie se obtiene con el comando
>> max ( x )

El valor m
as peque
no de la serie se obtiene con el comando
>> min ( x )

El rango de valores de la serie se obtiene con el comando


>> r a n g e ( x )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

165/215

sicas estadstica DStat1.m (III)


Ejemplo funciones ba

La matriz de covarianza cruzada entre las dos variables aleatorias X e Y


se obtiene con el comando:
>> c o v ( x , y )

La matriz de correlaci
on cruzada entre las dos variables aleatorias X e Y
se obtiene con el comando:
>> c o r r c o e f ( x , y )

Para obtener la posici


on o ndice del mayor o menor valor dentro del
vector x, se puede utilizar el comando max o min con argumentos de
salida.
>> [ a i ] = max ( x )

El mayor valor es a, y su posici


on dentro del vector x queda almacenado
en la posici
on i.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

166/215

sicas estadstica DStat1.m (IV)


Ejemplo funciones ba
Los valores del vector x pueden ordenarse con el comando sort
>> x s = s o r t ( x ) ;

Se puede obtener el ndice de ordenaci


on utilizando sort con un segundo
argumento de salida
>> [ x s i ] = s o r t ( x ) ;

Tanto xs, como x(i) contienen los valores ordenados de menor a mayor,
para ver los que van de la posici
on 201 a 210 se hace:
>> [ x s ( 2 0 1 : 2 1 0 ) x ( i ( 2 0 1 : 2 1 0 ) ) ]

El histograma de los datos se calcula con el comando


>> h i s t ( x )

Por defecto el comando hist utiliza 10 intervalos. Para utilizar un n


umero
diferente de intervalos, por ejemplo 50, hacer
>> h i s t ( x , 5 0 )

La cuenta de elementos h por intervalo i se obtiene con el comando


>> [ h i ] = h i s t ( x , 5 0 ) ;

i contiene el valor medio del intervalo y h la cuenta de elementos


A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

167/215

Ejercicios de tratamiento de datos

En un fichero script de nombre Gejer1.m realizar las siguientes


operaciones:
Generar una variable aleatoria x con distribuci
on normal y otra y con
distribuci
on uniforme, ambas con 1000 elementos.
Hallar la media, varianza y mediana de ambas variables.
Hallar el histograma de ambas variables.
Representar la funci
on de distribuci
on acumulada de ambas variables a
partir de los datos ordenados.
Representar la funci
on de distribuci
on de ambas variables a partir de la
diferencia de los datos obtenidos en el apartado anterior.
Hallar el diagrama Q-Q entre ambas variables, es decir, el diagrama de los
datos ordenados de una variable con respecto a la otra.
Hallar la correlaci
on y convarianza entre ambas variables.
Hallar la correlaci
on y covarianza cruzadas de las variables consigo mismas
y entre ellas para un tiempo de [, ].

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

168/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

169/215

sicas de a
lgebra matricial (I)
Funciones ba

Funci
on
expm
logm
sqrtm
funm
transpose, ()
inv
det
rank
trace

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Exponencial de una matriz e A
Logaritmo neperiano de una matriz
Raz cuadrada de una matriz
Cualquier funci
on matem
atica aplicada a una matriz
Transpuesta de una matriz
Inversa de una matriz
Determinante de una matriz
Rango de una matriz
Traza de una matriz

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

170/215

sicas de a
lgebra matricial (II)
Funciones ba

Funci
on
eig
svd
cond
rcond
norm
null
orth
subspace

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Valores propios de una matriz
Valores singulares de una matriz
N
umero de condici
on de una matriz
Recproco del n
umero de condici
on (estimado)
Norma de una matriz
Base ortonormal del n
ucleo de una matriz
Base ortonormal de la imagen de una matriz

Angulo
entre los subespacios de dos matrices

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

171/215

lgebra de matrices DAlg1.m (I)


Ejemplo de Matlab de funciones de a
Formamos una matriz cuadrada aletoria de dimensi
on 3
>> A=r a n d n ( 3 )

Calculamos su traspuesta
>> A

Calculamos su rango con rank


>> r a n k (A)

Calculamos su determinante con det


>> d e t (A)

Calculamos sus autovalores con eig


>> e i g (A)

Calculamos su traza con eig


>> e i g (A)

Comprobamos que la traza es la suma de los autovalores


>> [ sum ( e i g (A) ) t r a c e (A) ]
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

172/215

lgebra de matrices DAlg1.m (II)


Ejemplo de Matlab de funciones de a

Comprobamos que el determinante es el producto de los autovalores


>> [ p r o d ( e i g (A) ) d e t (A) ]

Calculamos el n
umero de condici
on
>> cond (A)

Comprobamos que el n
umero de condici
on es el cociente entre el m
aximo
y el mnimo autovalor
>> s q r t ( max ( e i g (A A) ) / min ( e i g (A A) ) )
>> max ( s v d (A) ) / min ( s v d (A) )

Estimamos el recproco del n


umero de condici
on con rcond
>> r c o n d (A)

Obtenemos el error relativo de estimaci


on obtenido con rcond)
>> a b s ( cond (A) 1/ r c o n d (A) ) / cond (A)

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

173/215

lgebra de matrices DAlg2.m (I)


Ejemplo de Matlab de funciones de a

Formamos una matriz cuadrada compleja aleatoria de dimensi


on 3
>> B=r a n d n ( 3 )+j r a n d n ( 3 )

Calculamos B elevada al cubo


>> B3

Calculamos 2 elevado a B
>> 2B

Calculamos la exponencial de B por dos metodos


>> expm (B)
>> e x p ( 1 ) B

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

174/215

lgebra de matrices DAlg2.m (II)


Ejemplo de Matlab de funciones de a

Calculamos el logaritmo neperiano de B por dos metodos


>> logm (B)
>> funm (B , l o g )

Calculamos la raz cuadrada de B por tres metodos


>> s q r t m (B)
>> funm (B , s q r t )
>> B . 5

Calculamos el seno y coseno de B


>> funm (B , s i n )
>> funm (B , c o s )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

175/215

n de matrices
Descomposicio

Funci
on
[V,D]=eig(A)
[T,B]=balance(A)
[U,T]=schur(A)
[L,U,P]=lu(A)
R=chol(A)
[Q,R,P]=qr(A)
[V,J]=jordan(A)
pinv
poly

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
AV = VD, D diagonal
TB = AT , eig(A) eig(B)
UT = AU, U 0 U = I , T triangular superior
PA = LU, P permutaci
on, L triangular inferior,
U triangular superior
R 0 R = A para A definida positiva, R triangular superior
AP = QR, P permutaci
on, Q ortogonal,
R triangular superior
AV = VJ, J matriz de Jordan
Pseudoinversa de una matriz
Polinomio caracterstico de una matriz

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

176/215

n de matrices DAlg3.m (I)


Ejemplo de descomposicio

Formamos una matriz cuadrada aletoria de dimensi


on 3
>> A=r a n d n ( 3 )

Calculamos su descomposici
on en valores propios con svd
>> [ V , D]= s v d (A)

Comprobamos la descomposici
on:
>> AVVD

Calculamos la matriz balanceada de A


>> [ T , B]= b a l a n c e (A)

Comprobamos la descomposici
on
>> [ B T\AT ]
>> e i g (A)
>> e i g (B)

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

177/215

n de matrices DAlg3.m (II)


Ejemplo de descomposicio
Calculamos la descomposici
on de Schur de A
>> [ U , T]= s c h u r (A)

Comprobamos la descomposici
on
>> [ UTU A ]
>> UU

Calculamos la descomposici
on QR de A
>> [ Q, R , E]= q r (A)

Comprobamos la descomposici
on
>> [QR AE ]
>> QQ

Calculamos la descomposici
on LU de A
>> [ L , U , P]= l u (A)

Comprobamos la descomposici
on
>> [ LU PA ]

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

178/215

n de matrices DAlg3.m (III)


Ejemplo de descomposicio
Calculamos la descomposici
on SVD de A
>> [ U , S , V]= s v d (A)

Comprobamos la descomposici
on
>> [ USV A ]
>> U U
>> VV

Para calcular el factor de Choleski necesitamos una matriz definida


positiva que calculamos premultiplicando A por su transpuesta
>> AA=A A
>> R=c h o l (AA)

Comprobamos la descomposici
on
>> [ R R AA ]

Comprobamos que si la matriz no es definida positiva no tiene factor de


Choleski y se obtiene un error
>> R=c h o l (A)

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

179/215

n de sistemas de ecuaciones
Solucio

Funci
on
X=A/B
X=A\B
X=lsqnonneg(A,b)
X=linsolve(A,B)
r=roots(p)
p=poly(r)
x=fzero(fun,x0)

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Resuelve XA = B
Resuelve AX = B por mnimos cuadrados
Soluci
on de mnimos cuadrados de Ax = b, x 0
Resuelve AX = B, A matriz cuadrada, B matriz
Races de un polinomio p
Polinomio de races v
Calcula un cero de la funci
on fun pr
oximo a x0

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

180/215

n de sistemas DAlg4.m (I)


Ejemplo solucio
Obtenemos las races del polinomio p(x) = x 3 + 2x 2 3x + 1
>> v = r o o t s ( [ 1 2 3 1 ] )

Obtenemos el polinomio que tiene races 1, +2, +j y j


>> p = p o l y ([ 1 2 j j ] )

Sea el sistema de ecuaciones lineales


x + 2y + 3z

2x + 3y + z

x + y + 5z

Para resolverlo se forman las matrices A y b


>> A = [ 1 2 3 ; 2 3 1 ; 1 1 5 ]
>> b = [ 3 1 5 ]

La soluci
on es:
>> X=A\b

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

181/215

n de sistemas DAlg4.m (II)


Ejemplo solucio

La soluci
on de mnimos cuadrados no negativa es:
>> Xn=n l s q n o n e g (A , b )

La ecuaci
on x sin(x) = 1/2 puede resolverse con fzero en el entorno de
los puntos 2, 4 y 6:
>> [ f z e r o ( x s i n ( x ) .5 , 2 ) f z e r o ( x s i n ( x ) .5 , 4 )
>> f z e r o ( x s i n ( x ) .5 , 6 ) ]

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

...

182/215

lgebra de matrices
Ejercicios de a
En un fichero script de nombre Gejer1.m realizar el siguiente ejercicio.
Dada la siguiente matriz:

A=

2/3
2/5
2/7
2/9
2/11

2/5
2/7
2/9
2/11
2/13

2/7
2/9
2/11
2/13
2/15

2/9
2/11
2/13
2/15
2/17

2/11
2/13
1/15
2/17
1/19

Autovalores, autovectores, polinomio caracterstico y n


umero de la
condici
on.
Hallar al inversa de la matriz.
Hallar la descomposici
on por los siguientes m
etodos: Jordan, Schur, LU,
QR, Choleski y SVD. Comprobar si es posible la descomposici
ony si los
valores obtenidos son ciertos.
Si b = [1, 3, 5, 7, 9]0 resolver el valor de debe tener x para que se cumpla
la ecuaci
on Ax = b.

En un fichero script de nombre Gejer2.m realizar el siguiente ejercicio.


Sea x y n dos vectores aleatorios de distribuci
on uniforme entre [0, 1] de
100 elementos.
Fijar un valor para los par
ametros [a, b, c].
Obtener el valor de y de la formula y = a x + b x 2 + c x 3 + 0,1 n.
Estimar el valor de los par
ametros [a, b, c] a partir del valor de x e y
usando mnimos cuadrados. Se considera que n es un ruido.
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

183/215

Curso 2010/2011

184/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

n y filtros.
Funciones de relacio

Funci
on
cov
corrcoef
conv
diff
gradient
del2
filter
ltitr

Comentario
Varianza de un vector
Coeficientes de correlaci
on (normalizados)
Convoluci
on de datos, producto de polinomios
Diferencias entre elementos de un vector
Derivadas parciales numericas de una matriz
Laplaciano discreto de una matriz
Filtro FIR y IIR de datos
Respuesta lineal

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

185/215

cticas con funciones de relacio


n y filtros, Bscript2.m (I)
Pra

Varianza de un vector
>> l o a d c o u n t . d a t
>> a= c o v ( c o u n t ( : , 1 ) ) ;

Coeficiente de correlaci
on:
>> b= c o r r c o e f ( c o u n t ) ;

Convoluci
on entre dos vectores:
>> c= c o n v ( [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ) ;
>> d= c o n v ( c o u n t ( : , 1 ) , c o u n t ( : , 2 ) ) ;

Diferencial., Derivada aproximada:


>> a= d i f f ( c o u n t ) ;
>> s i z e ( a ) , s i z e ( c o u n t )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

186/215

cticas con funciones de relacio


n y filtros, Bscript2.m (II)
Pra

Gradientes, derivada parcial aproximada:


>> [ px , py ]= g r a d i e n t ( c o u n t ) ;

Laplaciano discreto de un vector del 2 u = (d 2 u/dx 2 + d 2 /dy 2 ):


>> l p= d e l 2 ( c o u n t )

Filtro FIR y IIR de vectores:


>> b = [ 1 , 1 , 1 ] / 3 ; a =1;
>> f= f i l t e r ( b , a , c o u n t ) ;

Simulaci
on de un sistema lineal en ecuaciones de estado:
>> A= [ 0 . 9 , 0 ; 0 , 0 . 9 ] ; B = [ 0 , 1 ] ;
>> x= l t i t r (A , B , o n e s ( 1 0 0 , 1 ) ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

187/215

lisis en frecuencia
Ana

Funci
on
fft
fft2
ifft
ifft2
abs
angle
fftshift

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Transformada de Fourier discreta
Transformada de Fourier en dos dimensiones
Inversa transformada de Fourier
Inversa transformada de Fourier en dos dimensiones
Magnitud

Angulo
Mueve el retraso cero al centro del espectro

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

188/215

cticas de ana
lisis en frecuencia,Bscript3.m
Pra

Toma de datos:
>> l o a d s u n s p o t . d a t ;
>> y e a r= s u n s p o t ( : , 1 ) ; w o l f e r= s u n s p o t ( : , 2 ) ;

Transformada de Fourier, se le quita el primer dato:


>> y= f f t ( w o l f e r ) ; y ( 1 ) = [ ] ;

Gr
aficas con eje frecuencia [0, nf, 0] y [nf, 0,nf]:
>> f i g u r e ; s u b p l o t ( 2 , 1 , 1 ) ; p l o t ( a b s ( y ) )
>> s u b p l o t ( 2 , 1 , 2 ) ; p l o t ( f f t s h i f t ( a b s ( y ) ) ) ;

Gr
aficas en funci
on de la frecuencia de Nyquist:
>>
>>
>>
>>

N= l e n g h t ( y ) ; power = a b s (Y ( 1 : N/ 2 ) ) . 2 ;
n y q u i s t = 1 / 2 ; f r e q = ( 1 : N/ 2 ) / (N/ 2 ) n y q u i s t ;
f i g u r e ; s u b p l o t ( 2 , 1 , 1 ) ; p l o t ( f r e q , power ) ;
s u b p l o t ( 2 , 1 , 2 ) ; p l o t ( f r e q , unwrap ( a n g l e ( y ( 1 : N/ 2 ) ) ) ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

189/215

Ejercicios de filtro y transformada de Fourier

En un fichero script de nombre Hejer1.m responder a las siguientes


preguntas.
Obtener una se
nal de [0, 3] segundos con periodo de muestreo 0,001 s.
y = sin(2 2 t) + 0,5 sin(2 5 t + /3) + 0,1 sin(2 50 t)
Filtrar la se
nal para eliminar el componente de alta frecuencia, producto
del acoplamiento con la red a 50 Hz. Proponer para ello diferentes tipos
de filtros.
Obtener la transformada de Fourier de la se
nal filtrada y sin filtrar viendo
las diferencias. Se precisa que la frecuencia cero est
e en el centro de la
gr
afica.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

190/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

191/215

Funciones para polinomios

Funci
on
conv
deconv
poly
polyder
polyfit
polyval
polyvalm
residue
roots

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Producto de polinomios
Divisi
on de polinomios
Definici
on de polinomios por races
Derivada de polinomios
Interpola por mnimos cuadrados
Valor polinomio en un punto
Valor polinomio con matrices
Fracciones parciales
Races de un polinomio

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

192/215

cticas con funciones de polinomios, Cscript1.m (I)


Pra

Polinomio y sus races. Coeficientes a partir de races:


>> p = [ 1 0 2 5]; r= r o o t s ( p ) ;
>> p o l y ( r )

Polinomio caracterstico:
>> A = [ 1 . 2 3 0 . 9 ; 5 1 . 7 5 6 ; 9 0 1 ] ;
>> p o l y (A)

Valor del polinomio en un n


umero o matriz:
>> p o l y v a l ( p , 5 )
>> p o l y v a l m ( p , A) % p (A)= A32A5 I

Convoluci
on (producto) y deconvoluci
on:
>> a= [ 1 , 2 , 3 ] ; b= o n e s ( 1 , 5 ) ; c= c o n v ( a , b ) ;
>> [ q , r ]= d e c o n v ( c , a ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

193/215

cticas con funciones de polinomios, Cscript1.m (II)


Pra

Derivada de un polinomio, del producto y de la divisi


on:
>> q = p o l y d e r ( p )
>> c = p o l y d e r ( a , b ) % d e r i v a d a d e l p r o d u c t o
>> [ q , d ] = p o l y d e r ( a , b ) % d e r i v a d a s de l a d i v i s i o
n

Residuos de un polinomio:
>> b = [4 8 ] ; a = [ 1 6 8 ] ;
>> [ r , p , k ] = r e s i d u e ( b , a )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

194/215

cticas regresiones basadas mnimos cuadrados, Cscript2.m (I)


Pra
Datos para la regresi
on:
>> t = [ 0 . 3 . 8 1 . 1 1 . 6 2 . 3 ] ; y = [ 0 . 5 0 . 8 2 1 . 1 4 1 . 2 5
1.35 1 . 4 0 ] ;
>> p l o t ( t , y , o ) , g r i d on ;

Regresi
on, y = a(0) + a(1) t + a(2) t 2 :
>> X= [ o n e s ( s i z e ( t ) ) , t , t . 2 ] ; a= X\ y ;
>> t h a t = ( 0 : 0 . 1 : 2 . 5 ) ; y h a t = [ o n e s ( s i z e ( t h a t ) ) t h a t
that .2] a ;
>> p l o t ( t h a t , y h a t , , t , y , o ) , g r i d on ;

Soluci
on: a = inv (X 0 X ) X 0 y
Regresi
on exponencial: y = a(0) + a(1) exp(t) + a(2) t exp(t):
>> X = [ o n e s ( s i z e ( t ) ) e xp ( t ) t . e x p ( t ) ] ; a = X\ y ;
>> t h a t = ( 0 : 0 . 1 : 2 . 5 ) ;
>> y h a t = [ o n e s ( s i z e ( t h a t ) ) e x p ( t h a t ) t h a t . e x p ( t h a t )
] a ;
>> f i g u r e ; p l o t ( t h a t , y h a t , , t , y , o ) , g r i d on ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

195/215

cticas regresiones basadas mnimos cuadrados, Cscript2.m (II)


Pra

Regresiones multiples: y = a(0) + a(1) x1 + a2 x2:


>> x1 = [ . 2 . 5 . 6 . 8 1 . 0 1 . 1 ] ; x2 = [ . 1 . 3 . 4 . 9 1 . 1
1.4] ;
>> y = [ . 1 7 . 2 6 . 2 8 . 2 3 . 2 7 . 2 4 ] ;
>> X = [ o n e s ( s i z e ( x1 ) ) x1 x2 ] ; a = X\ y ;

y estimada y error m
aximo:
>> y h a t = X a ; MaxErr = max ( a b s ( y h a t y ) )

Obtenci
on de los coeficientes de un polinomio que se aproxime:
>>
>>
>>
>>

x = [ 1 2 3 4 5 ] ; y = [ 5 . 5 4 3 . 1 128 2 9 0 . 7 4 9 8 . 4 ] ;
p = polyfit (x , y ,3)
x2 = 1 : . 1 : 5 ; y2 = p o l y v a l ( p , x2 ) ;
p l o t ( x , y , o , x2 , y2 ) ; g r i d on

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

196/215

mios y regresio
n
Ejercicios de polino

Sea x un vector aleatorio uniforme de 1000 componentes. Comprobar en


un fichero script de nombre Iejer1.m que la convoluci
on de ese vector
con el polinomio [1, 1, 1]/3 da el mismo resultado que la se
nal obtenida
con y= filter([1,1,1]/3,1,x). Dar una explicaci
on a este hecho.
En un fichero script de nombre Iejer2.m realizar el siguiente ejercicio.
Sea t un intervalo de tiempo entre [0, 3] con un periodo de muestreo de
0,1 s y n un vector aleatorio de distribuci
on uniforme entre [0, 1] del
mismo n
umero de elementos.
Fijar un valor para los par
ametros [a, b, c].
Obtener el valor de y de la formula y = a + b x + c x 2 + 0,1 n.
Estimar el valor de los par
ametros [a, b, c] a partir de la funci
on polyfit
y con mnimos cuadrados.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

197/215

Funciones para interpolar datos, splines

Funci
on
interp1
inter2, inter3
interpft
mkpp
spline
pchip
ppval
unmkpp
mmppint, mmppder

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Interpolaci
on en una dimensi
on
Interpolaci
on en dos y tres dimensiones
Interpolaci
on una dimensi
on fft.
Compone un spline a partir de propiedades
Genera splines cubicos
Genera splines c
ubico de Hermite
Valor de un spline en puntos
Propiedades de un spline
Spline integral y derivada

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

198/215

cticas con funciones para interpolar datos


Pra
Interpolaci
on de datos en una dimensi
on por distintos metodos:
>>
>>
>>
>>
>>
>>
>>
>>

x = [ 1 2 3 4 5 ] ; y = [ 5 . 5 4 3 . 1 128 2 9 0 . 7 4 9 8 . 4 ] ;
s= i n t e r p 1 ( x , y , 2 . 5 , l i n e a r )
s= i n t e r p 1 ( x , y , 2 . 5 , c u b i c )
s= i n t e r p 1 ( x , y , 2 . 5 , s p l i n e )
s= i n t e r p 1 ( x , y , 2 . 5 , n e a r e s t )
x h a t= l i n s p a c e ( 1 , 5 , 1 0 0 ) ;
y h a t= i n t e r p 1 ( x , y , x h a t , s p l i n e ) ;
p l o t ( x h a t , y h a t , , x , y , o ) ;

Interpolaci
on de datos en dos dimensiones por distintos metodos:
>>
>>
>>
>>
>>
>>
>>
>>
>>

[ x , y ] = meshgrid ( 3:1:3) ;
z = peaks ( x , y ) ; s u r f ( x , y , z )
[ xi , y i ] = meshgrid ( 3:0.25:3)
zi1 = interp2 (x , y , z , xi , yi
s u r f ( xi , yi , zi1 ) ;
zi2 = interp2 (x , y , z , xi , yi
s u r f ( xi , yi , zi2 ) ;
zi3 = interp2 (x , y , z , xi , yi
s u r f ( xi , yi , zi1 ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

;
,

nearest ) ;

bilinear ) ;

bicubic ) ;

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

199/215

cticas splines, Cscript3.m (I)


Pra
Datos:
>> x= 0 : 1 2 ; y= t a n ( p i x / 2 5 ) ;
>> x i= l i n s p a c e ( 0 , 1 2 , 1 0 0 ) ;

Interpola datos:
>> yp= s p l i n e ( x , y , x i ) ;
>> p l o t ( x , y , o , x i , yp ) ;

Genera los coeficientes de spline, interpola y propiedades:


>>
>>
>>
>>

pp= s p l i n e ( x , y )
yp= p p v a l ( pp , x i ) ;
[ b r e a k , c o e f s , n p o l y s , n c o e f s , dim ]= unmkpp ( pp )
pp= mkpp ( b r e a k s , c o e f s ) % c o m p o s i c i o
n

Spline con el metodo de Hermite:


>> x = [ 0 , 2 , 4 , 5 , 7 . 5 , 1 0 ] ; y= e xp (x / 6 ) . c o s ( x ) ;
>> ch= p c h i p ( x , y ) ; y c h= p p v a l ( ch , x i ) ;
>> p l o t ( x , y , o , x i , yp , : , x i , y c h ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

200/215

cticas splines, Cscript3.m (II)


Pra

Spline integral y derivada de otro:


>> p p i= mmppint ( pp ) ; ppd= mmppder ( pp ) ;
>> y i= p p v a l ( p p i , x i ) ; yd= p p v a l ( ppd , x i ) ;
>> p l o t ( x , y , o , x i , yp , , x i , y i , , x i , yd ,
. ) ;

Splines para dos dimensiones:


>>
>>
>>
>>
>>
>>

t= l i n s p a c e ( 0 , 3 p i , 1 5 ) ;
x= s q r t ( t ) . c o s ( t ) ; y= s q r t ( t ) . s i n ( t ) ;
ppxy= s p l i n e ( t , [ x ; y ] )
t i = l i n s p a c e ( 0 , 3 p i , 1 0 0 0 ) ;
xy= p p v a l ( ppxy , t i ) ;
p l o t ( x , y , d , xy ( 1 , : ) , xy ( 2 , : ) ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

201/215

Funciones para interpolar superficies e hiperplanos

Funci
on
meshgrid
ndgrid
surf, mesh
slide
griddata
griddata3
griddatan
interpn

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Mallado de dos o tres dimensiones
Mallado de dimensi
on n
Dibuja superficies y mallados
Dibuja cortes dentro de un volumen
Interpolaci
on una superficie
Interpolaci
on una hipersuperficie, datos orden 3
Interpolaci
on una hipersuperficie, datos orden n
Interpolaci
on en n dimensiones

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

202/215

cticas para interpolar superficies e hiperplanos, Cscript5.m


Pra

Datos X , Y reales e interpolados:


>>
>>
>>
>>

x1 = 2 : 0 . 2 : 2 ; x2 = 2 : 0 . 2 5 : 2 ;
[ X1 , X2 ] = n d g r i d ( x1 , x2 ) ;
xi1 = 2:0.1:2; xi2 = 2:0.1:2;
[ Xi1 , X i 2 ] = n d g r i d ( x i 1 , x i 2 ) ;

Z real e interpolada:
>>
>>
>>
>>

Z = X2 . e x p (X1 . 2 X2 . 2 ) ;
Z i = g r i d d a t a ( X1 , X2 , Z , Xi1 , X i 2 )
s u b p l o t ( 2 , 1 , 1 ) ; mesh ( X1 , X2 , Z ) ;
s u b p l o t ( 2 , 1 , 2 ) ; mesh ( Xi1 , Xi2 , Z i ) ;

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

203/215

cticas de interpolacio
n de datos.
Pra

Representar en un script de nombre Iejer3.m la diferencia entre el


polinomio interpolador c
ubico hermitiano a trozos y el polinomio
interpolador spline cuando x y t varan entre 3 y 3 (t varia entre decima
y decima) y x = [1, 1, 1, 0, 1, 1].
Se considera un conjunto de temperaturas medidas sobre las cabezas de
los cilindros de un motor que se encuentra en perodo de pruebas para
utilizar en coches de carreras. Los tiempos de funcionamiento del motor
en segundos y las temperaturas en grados Fahrenheit son las siguientes:
Tiempo = [0, 1, 2, 3, 4, 5]
Temperaturas = [0, 20, 60, 68, 77, 110]
Realizar una regresi
on lineal en un fichero Iejer4.m que ajuste las
temperaturas en funci
on de los tiempos. Realizar tambien el ajuste
mediante regresiones polin
omicas de grados 2, 3 y 4 representando los
resultados.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

204/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

205/215

n e integracio
n
Funciones de optimizacio

Funci
on
fplot
fminbnd
fminsearch
fzero
optimset, optimget
quad
quadl
dblquad
triplequad

A. Herreros, E. Baeyens, DISA/EII (UVa)

Comentario
Dibuja la funci
on
Minimiza funci
on con una variable con restricciones
Minimiza funci
on con varias variables
Encuentra el cero en funci
on con una variable
Par
ametros de resoluci
on
Integraci
on numerica, Simpson
Integraci
on numerica, Lobatto
Integraci
on numerica, doble integral
integraci
on numerica, triple integral

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

206/215

cticas funciones de optimizacio


n, Dscript1.m (I)
Pra
Par
ametros de la optimizaci
on:
>> h e l p o p t i m s e t

Funci
on definida como an
onima (versi
on 7):
>> humps= @( x ) 1 . / ( ( x 0 . 3 ) . 2 + 0 . 0 1 ) + 1 . / ( ( x 0.9)
. 2 + 0 . 0 4 ) 6;

Funci
on definida como an
onima (versiones anteriores):
>> humps= i n l i n e ( 1 . / ( ( x 0 . 3 ) . 2 + 0 . 0 1 ) + 1 . / ( ( x 0.9)
. 2 + 0 . 0 4 )6 ) ;

Entradas y salida de la funci


on, representaci
on:
>> x= l i n s p a c e ( . 5 , 1 . 5 , 1 0 0 ) ; y= humps ( x ) ;
>> f p l o t ( humps ,[ 5 5 ] ) ; g r i d on ;

Ejemplo de modificaci
on de par
ametros (ver valor en cada iteraci
on):
>> o p t i o n= o p t i m s e t ( D i s p l a y , i t e r ) ; o p t i m g e t

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

207/215

cticas funciones de optimizacio


n, Dscript1.m (II)
Pra

Algorithmo: Nelder-Mead simplex, x [0,3 < x < 1], espacio de


b
usqueda de una dimensi
on:
>> x = f m i n b n d ( humps , 0 . 3 , 1 , o p t i o n ) ;

Espacio de b
usqueda de varias dimensiones:
>> t v a r= @( x ) x ( 1 ) . 2 + 2 . 5 s i n ( x ( 2 ) ) x ( 3 ) 2 x ( 1 ) 2
x (2) 2;

Mnimo cercano a v , valor desde donde se empieza a buscar:


>> v = [ 0.6 1.2 0 . 1 3 5 ] ;
>> [ vmin , v a l u e s , f l a g , o u t p u t ] = f m i n s e a r c h ( t v a r , v )

Punto f (x) = sin(3 x) = 0 cercano a x = 2, donde se empieza a buscar:


>> x = f z e r o (@( x ) s i n ( 3 x ) , 2 )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

208/215

cticas funciones de optimizacio


n, Dscript1.m (III)
Pra

Funci
on de control del algoritmo:
>> o p t i o n s = o p t i m s e t ( OutputFcn , @ o u t f u n ) ;

Forma de la funci
on de control, saca gr
aficos en cada iteraci
on:
function stop = outfun (x , optval , state )
% o p t v a l campos : f u n c o u n t , f v a l , i n t e r a t i o n , p r o c e d u r e
% s t a t e : i n i t , i n t e r r u p t , i t e r , done
% stop : false , true
s t o p = [ ] ; h o l d on ;
plot ( x (1) , x (2) , . ) ;
drawnow

Prueba con la minimizaci


on anterior:
>> v = [ 0.6 1.2 0 . 1 3 5 ] ; % Empieza a b u s c a r en v
>> [ vmin , v a l u e s , f l a g , o u t p u t ] = f m i n s e a r c h ( t v a r , v ,
options )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

209/215

cticas funciones de integracio


n, Dscript1.m
Pra

Integral simple:
>> quad ( humps , 1, 2 ) %I n t e g r a c i
on simple
>> q u a d l ( humps , 1, 2 ) %I n t e g r a c i o
n , mayor e x a c t i t u d

Integral doble:
>> o u t= @( x , y ) y s i n ( x ) + x c o s ( y ) ;
>> xmin= p i ; xmax= 2 p i ; ymin= 0 ; ymax= p i ;
>> r e s u l t = d b l q u a d ( out , xmin , xmax , ymin , ymax )

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

210/215

n con restricciones: Funciones peso


Optimizacio

Restricci
on del problema: mnx {f (x)}, g (x) > 0,
if g (x) < 0, cost = f (x),
else cost = f (x) P(g (x)), P(g (x)) > 0.
Problema minimax: mnx {m
axf {[f1 (x), . . . , fn (x)]}},
cost = m
ax([f1 (x), . . . , fn (x)]).
Sistema de ecuaciones no lineales: {f1 (x) = 0, . . . , fn (x) = 0}:
cost = m
ax(abs([f1 (x), . . . , fn (x)])).
Problema multiobjetivo: mnx [f1 (x), . . . , fn (x)].
P
cost = i pi fi (x).
La soluci
on depende de los pi elegidos.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

211/215

cticas con funciones de optimizacio


n (I)
Pra

Minimizar la funci
on f (x) = (x 3)2 1 en el intervalo (0, 5).
Encontrar el valor de x que minimiza el valor m
aximo de [f1 (x), . . . , f5 (x)],
f1 (x) = 2x12 + x22 48 x1 40x2 + 304
f2 (x) = x22 3x22
f3 (x) = x1 + 2x2 18
f4 (x) = x1 x2
f5 (x) = x1 + x2 8
Minimizar la funci
on siguiente f (x) = 3x12 + 2x1 x22 .

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

212/215

cticas con funciones de optimizacio


n (II)
Pra
Encontrar en un fichero script de nombre Jejer1.m los valores de x
que minimizan la funci
on f (x) sujeta a las restricciones k1 (x, w1 ) y
k2 (x, w2 con w1 y w2 en [1, 100]. La funci
on y las restricciones se definen
en el problema y el punto inicial es (0,5, 0,2, 0,3),
f (x) = (x1 0,5)2 + (x2 0,5)2 + (x2 0,5)2
k(x, w1 ) = sin(w1 x1 ) cos(w2 x2 ) 1/100(w1 50)2 sin(w1 x3 ) x3 1
k(x, w2 ) = sin(w2 x2 ) cos(w2 x1 ) 1/100(w2 50)2 sin(w2 x3 ) x3 1
Dado el conjunto de datos:
xdata = [3,6, 7,7, 9,3, 4,1, 8,6, 2,8, 1,3, 7,9, 10,0, 5,4]
ydata = [16,5, 150,6, 263,1, 24,7, 208,5, 9,9, 2,7, 163,9, 325,0, 54,3]
se trata de encontrar los coeficientes x que minimizan la funci
on ydata(i)
del tipo,
ydata(i) = x(1)xdata(i)2 + x(2) sin(xdata(i)) + x(3)xdata(i)2
Los resultados se escribir
an en un fichero script de nombre Jejer2.m.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

213/215

Curso 2010/2011

214/215

Contenidos
1

Introducci
on

Programaci
on con Matlab

Optimizaci
on del c
odigo de programaci
on

Gr
aficas en dos y tres dimensiones

Programaci
on orientada a objetos

Simulaci
on en Matlab y Simulink

GUIDE: Interface gr
afico de matlab

Funciones para tratamiento de datos

Funciones para
algebra de matrices

10 Filtros y an
alisis en frecuencia
11 Funciones para polinomios e interpolaci
on de datos
12 Funciones de funciones: Optimizaci
on e integraci
on
13 Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Bibliografa

Matlab y sus aplicaciones en la ciencia y la ingeniera, (Cesar Perez).


Prentice Hall.
Mastering Matlab 7, (Duane Hanselman, Bruce Littlefield). Prentice Hall,
Internaltional Edition.

A. Herreros, E. Baeyens, DISA/EII (UVa)

Curso de Programaci
on en Matlab y Simulink

Curso 2010/2011

215/215

Anda mungkin juga menyukai