Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
on en Matlab y Simulink
Alberto Herreros (albher@eis.uva.es)
Enrique Baeyens (enrbae@eis.uva.es)
Departamento de Ingeniera de Sistemas y Automatica (DISA)
Escuela de Ingenieras Industriales (EII)
Universidad de Valladolid (UVa)
Curso 2010/2011
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 1/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 2/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 3/215
Qu
e es MATLAB?
Es un lenguaje de alto nivel para computaci on e ingeniera. Integra
computaci on, visualizaci on y programaci on.
Aplicaciones tpicas de MATLAB son:
Matematicas y computacion
Desarrollo de algoritmos
Modelado, simulaci on y prototipado
Analisis de datos, exploraci on y visualizaci on
Gracos cientcos y de ingeniera.
Desarrollo de aplicaciones
Matlab es un sistema interactivo cuyo elemento basico 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 ultimas versiones estan desarrolladas en C y utilizan las libreras
LAPACK y BLAS.
Sobre la base de MATLAB se han construido conjuntos de funciones
especcas para diferentes problemas, denominadas toolboxes.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 4/215
Formas de introducir matrices en MATLAB
Lista explcita de elementos.
Desde un chero de datos externo.
Utilizando funciones propias.
Creando un chero .m
Comenzaremos introduciendo manualmente la matriz de D urer.
Para ello utilizamos las siguientes reglas:
Separar elementos de una la con espacios o comas.
Usar punto y coma; para indicar nal de la.
Incluir la lista completa de elementos dentro de corchetes, [ ].
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 5/215
Trabajando con matrices
Para introducir la matriz de D urer hacemos:
A = [ 16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
Como resultado se obtiene
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Una vez introducida una matriz, queda guardada en el entorno de
trabajo de MATLAB.
La matriz A es un cuadrado magico: Todas sus las, 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 Programacion en Matlab y Simulink Curso 2010/2011 6/215
Trabajando con matrices
Para calcular la suma de las las, podemos calcular la transpuesta
de la matriz.
A
obteniendo
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
la suma de las las, en formato vector columna es
sum(A )
ans =
34
34
34
34
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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.
di ag (A)
Se obtiene
ans =
16
10
7
1
y la suma de los elementos de la diagonal principal es
sum( di ag (A) )
obteniendose
ans =
34
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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( di ag ( 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 Programacion 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
la 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
cticio 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 Programacion 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)
I ndex exceeds mat r i x di me ns i ons .
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 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 17
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 2 3 4 5 6 7 8 9 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 1. 5708 2. 3562 3. 1416
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 12/215
El operador :
Cuando el operador : aparece en los subndices de una matriz se
reere a las las 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) signican todas las las y end
se reer a la ultima columna.
Pregunta: Que esta calculando la siguiente expresion?
sum(A( end , : ) )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 13/215
La funci
on magic
Matlab dispone de una funcion magic que permite calcular
cuadrados magicos
Haciendo
B = magi c ( 4)
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 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
operacion
A = B( : , [ 1 3 2 4 ] )
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 Programacion 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 automaticamente y reserva la cantidad de memoria necesaria. Si la
variable ya existe, MATLAB cambia su contenido y si es necesario
modica la reserva de memoria.
Por ejemplo, la expresi on
num est = 15
crea una matriz 1 por 1 llamada num_est y almacena el valor 25 en su
unico 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 Programacion en Matlab y Simulink Curso 2010/2011 16/215
N
umeros
MATLAB utiliza notaci on decimal convencional, con punto decimal
opcional y signo + o -
Es posible utilizar notaci on cientca. La letra e especica un factor de
escala de potencia de 10.
Los n umeros imaginarios puros se especican con la letra i o j
Los siguientes ejemplos son todos n umeros validos en MATLAB
3 99 0. 0001
9. 6397238 1. 60210 e20 6. 02252 e23
1 i 3.14159 j 3 e 5 i
Internamente, los n umeros se almacenan en formato largo utilizando la
norma IEEE de punto otante. La precisi on es aproximadamente de 16
cifras decimales signicativas y el rango esta entre 10
308
y 10
+308
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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
+ Suma
- Resta
* Producto
/ Division
\ Division por la izquierda
(se explicara)
^ Potencia
Transposicion y conjugacion compleja
( ) Orden de evaluacion
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 18/215
Funciones
MATLAB proporciona un gran n umero de funciones matematicas
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
he l p e l f u n
Funciones mas avanzadas y funciones de matrices se obtienen con
he l p s pe c f un
he l p el mat
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 19/215
Funciones
Algunas funciones estan compiladas con el n ucleo de MATLAB y son muy
rapidas y ecientes. Ej. sqrt, sin
Otras funciones estan programadas en lenguaje de MATLAB (cheros
m). Pueden verse y modicarse
Algunas funciones proporcionan el valor de ciertas constantes utiles.
pi 3.14159265
i
1
j
1
eps Precisi on relativa de punto otante 2
52
realmin N umero en punto otante mas peque no 2
1022
realmax N umero en punto otante mas grande (2 )2
+1023
Inf Innito
NaN Not-a-Number (no es un n umero)
Innito se obtiene al dividir un n umero no nulo por cero, o como
resultado de evaluar expresiones matematicas bien denidas.
NaN se obtiene al tratar de evaluar expresiones como 0/0 o Inf-Inf que no
tienen valores bien denidos
Los nombres de las funciones no estan reservados. Puede denirse 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 Programacion 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 ho = (1+s q r t ( 5) ) /2
r ho =
1. 6180
a = abs (3+4 i )
a =
5
z = s q r t ( b e s s e l k ( 4/3 , rhoi ) )
z =
0.3730+ 0. 3214 i
huge = exp ( l og ( r eal max ) )
huge =
1. 7977 e+308
t oobi g = pi huge
t oobi g =
I n f
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 21/215
Funciones para crear matrices
MATLAB proporciona cuatro funciones para generar matrices
zeros Matriz de ceros
ones Matriz de unos
rand Matriz de elementos uniformemente distribuidos
randn Matriz de elementos normalmente distribuidos
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 22/215
Funciones para crear matrices
Ejemplos
Z = z e r os ( 2 , 4)
Z =
0 0 0 0
0 0 0 0
F = 5 ones ( 3 , 3)
F =
5 5 5
5 5 5
5 5 5
N = f i x (10 r and ( 1 , 10) )
N =
4 9 4 4 8 5 2 6
8 0
R = r andn ( 4 , 4)
R =
1. 0668 0. 2944 0.6918 1.4410
0. 0593 1.3362 0. 8580 0. 5711
0.0956 0. 7143 1. 2540 0.3999
0.8323 1. 6236 1.5937 0. 6900
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 23/215
El comando load
El comando load permite leer cheros binarios que contienen matrices
generadas en sesiones anteriores de MATLAB
Tambien permite leer cheros de texto que contienen datos.
El chero debe estar organizado como una tabla de numeros separados
por espacios, una lnea por cada la, e igual n umero de elementos en
cada la.
Ejemplo: Crear utilizando un editor de texto un chero llamado
magik.dat que contenga los siguientes datos
16. 0 3. 0 2. 0 13. 0
5. 0 10. 0 11. 0 8. 0
9. 0 6. 0 7. 0 12. 0
4. 0 15. 0 14. 0 1. 0
El comando
l oad magi k . dat
crea una variable llamada magik conteniendo la matriz.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 24/215
Ficheros m
Los cheros m son cheros de texto que contienen c odigo de MATLAB.
Para crear una matriz haciendo uso de un chero m, editar un chero
llamado magik.m con el siguiente texto
A = [ . . .
16. 0 3. 0 2. 0 13. 0
5. 0 10. 0 11. 0 8. 0
9. 0 6. 0 7. 0 12. 0
4. 0 15. 0 14. 0 1. 0 ] ;
Ejecutar ahora el comando
magi k
Comprobar que se ha creado la matriz A.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 25/215
Concatenaci
on
Es el proceso de unir dos o mas matrices para formar otra matriz de
mayor dimensi on
El operador concatenaci on es []
Ejemplo:
B = [ A A+32; A+48 A+16]
B =
16 3 2 13 48 35 34 45
5 10 11 8 37 42 43 40
9 6 7 12 41 38 39 44
4 15 14 1 36 47 46 33
64 51 50 61 32 19 18 29
53 58 59 56 21 26 27 24
57 54 55 60 25 22 23 28
52 63 62 49 20 31 30 17
Comprobar que las columnas de esta matriz suman todas lo mismo, pero
no ocurre lo mismo con sus las.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 26/215
Borrado de filas y columnas
Se pueden borrar las y columnas utilizando el operador [].
es la matriz vaca (concatenaci on de nada).
El proceso es sustituir una la o una columna por la matriz vaca [].
Ejemplo: Borrado de la segunda columna de una matriz
X = A;
X( : , 2 ) = [ ]
X =
16 2 13
5 11 8
9 7 12
4 14 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 unico subndice es posible borrar elementos,
aunque el resultado ya no sera una matriz, sino un vector.
X( 2 : 2 : 1 0 ) = [ ]
X =
16 9 2 7 13 12 1
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink 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
calculos.
Ejemplos:
x = [ 4/3 1. 2345 e 6]
f or mat s hor t
1. 3333 0. 0000
f or mat s hor t e
1. 3333 e+000 1. 2345 e006
f or mat s hor t g
1. 3333 1. 2345 e006
f or mat l ong
1. 33333333333333 0. 00000123450000
f or mat l ong e
1. 333333333333333 e+000 1. 234500000000000 e
006
f or mat l ong g
1. 33333333333333 1. 2345 e006
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 28/215
El comando format
f or mat bank
1. 33 0. 00
f or mat r a t
4/3 1/810045
f or mat hex
3 f f 5555555555555 3 eb4b6231abf d271
Ademas format compact suprime espacios y lneas en blanco. Para
obtener mas control sobre la presentacin en pantalla se pueden utilizar
las funciones sprintf y fprintf.
Para que no aparezca el resultado de un calculo en la pantalla, se utiliza ;
A = magi c ( 100) ;
Para dividir expresiones que no caben en una unica 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/12;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 29/215
Comandos de edici
on en pantalla
ctrl-p Comando anterior
ctrl-n Comando siguiente
ctrl-b Caracter atras
ctrl-f Caracter adelante
ctrl- ctrl-r Palabra adelante
ctrl- ctrl-l Patabra atras
home ctrl-a Ir a comienzo de lnea
end ctrl-e Ir a n de lnea
esc ctrl-u Borrar lnea
del ctrl-d Borrar caracter actual
backspace ctrl-h Borrar caracter anterior
ctrl-k Borrar hasta n de lnea
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 30/215
Gr
aficos
MATLAB dispone de recursos para mostrar vectores y matrices en
gracos, as como para incluir texto en los gracos e imprimirlos.
La funcion basica de creaci on de gracos es plot.
Si y es un vector, plot(y) dibuja un graco 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 graco
de los valores de los elementos de y frente a los de x.
Ejemplo:
t = 0: pi /100: 2 pi ;
y = s i n ( t ) ;
p l o t ( t , y )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 31/215
Gr
aficos
Se pueden crear gracos m ultiples con una unica llamada a plot.
MATLAB elige los colores automaticamente siguiendo una tabla
predenida.
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 Programacion en Matlab y Simulink Curso 2010/2011 32/215
Gr
aficos
Se puede especicar el color, tipo de lnea, y marcas con el comando
p l o t ( x , y , c o l o r s t y l e ma r k e r )
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 mas comunes son +, o, * y x.
Ejemplo: El comando
p l o t ( x , y , y:+ )
dibuja el graco en lnea continua amarilla y situa marcas + en cada
punto.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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)
Paginas de referencia en lnea
Pagina Web de The Mathworks, Inc. (www.mathworks.com)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 34/215
El comando help
Es el comando mas basico 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:
he l p magi c
MAGIC Magi c s quar e .
MAGIC(N) i s an NbyN mat r i x c ons t r uc t e d f rom
t he i n t e g e r s 1 t hr ough N2 wi t h e qual row ,
col umn , and di a gona l sums .
Pr oduces v a l i d magi c s quar e s f o r N =
1 , 3 , 4 , 5 . . . .
El nombre de la funcion 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 Programacion en Matlab y Simulink Curso 2010/2011 35/215
Las funciones estan organizadas en grupos l ogicos, as como la estructura
de directorios de MATLAB.
Las funciones de algebra lineal estan en el directorio matfun. Para listar
todas las funciones de este grupo
he l p matfun
Mat r i x f u n c t i o n s nume r i c al l i n e a r a l ge br a .
Mat r i x a n a l y s i s .
norm Mat r i x or v e c t or norm .
nor mest Es t i mat e t he mat r i x 2norm
. . .
El comando help lista todos los grupos de funciones
he l p
matl ab / g e n e r a l
matl ab / ops
. . .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 navegacion
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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
he l p i n v e r s e
i n v e r s e .m not f ound .
entonces bucamos con lookfor
l o o k f o r i n v e r s e
INVHILB I n v e r s e Hi l b e r t mat r i x .
ACOSH I n v e r s e h y p e r b o l i c c o s i ne .
ERFINV I n v e r s e of t he e r r o r f u n c t i o n .
INV Mat r i x i n v e r s e .
PINV Ps e udoi nv e r s e .
IFFT I n v e r s e d i s c r e t e Fo u r i e r t r ans f or m .
IFFT2 Twodi me ns i ona l i n v e r s e d i s c r e t e Fo u r i e r
t r ans f or m .
ICCEPS I n v e r s e compl ex cepst r um .
IDCT I n v e r s e d i s c r e t e c o s i ne t r ans f or m .
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 Programacion 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 pagina de referencia en formato HTML de un comando
especco, se utiliza el comando doc. Ejemplo: doc eval.
Las paginas 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 Pagina
Web the The MathWorks, Inc.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 39/215
El Entorno de MATLAB
El entorno de MATLAB incluye el conjunto de variables denidas durante
una sesion de MATLAB y el conjunto de cheros 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 ademas informaci on
sobre tama no y almacenamiento.
whos
Name Si z e Byt es Cl a s s
A 4x4 128 doubl e a r r a y
D 5x3 120 doubl e a r r a y
M 10x1 3816 c e l l a r r a y
S 1x3 442 s t r u c t a r r a y
h 1x11 22 char a r r a y
n 1x1 8 doubl e a r r a y
s 1x5 10 char a r r a y
v 2x5 20 char a r r a y
Grand t o t a l i s 471 el ement s us i ng 4566 by t e s .
Para borrar variables del espacio de trabajo, usar el comando clear.
c l e a r nombr e v a r i a bl e A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 40/215
El comando save
Permite almacenar los contenidos del espacio de trabajo en un chero
MAT (binario).
s ave 15 oct 02
salva el espacio de trabajo en el chero 15oct02.mat. Para salvar
unicamente ciertas variables
s ave 15 oct 02 no mbr e s v a r i a bl e s
Para recuperar el espacio de trabajo se utiliza el comando load.
l oad 15 oct 02
El formato MAT es binario y no puede leerse, si se desea un chero 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 chero MAT de la versi on 4
-append A nade datos a un chero 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 Programacion en Matlab y Simulink Curso 2010/2011 41/215
La trayectoria de b
usqueda
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 cheros con el mismo nombre de funcion en diferentes
directorios, MATLAB ejecuta el primero que encuentra al seguir la
trayectoria de b usqueda.
Para modicar la trayectoria de b usqueda, ir a Set Path en el
men u File.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 42/215
Manipulaci
on de Ficheros
MATLAB dispone de los comandos dir, type, delete, cd, para
realizar las operaciones usuales de manipulacion de cheros 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 Programacion en Matlab y Simulink Curso 2010/2011 43/215
El comando diary
Crea un diario de la sesi on MATLAB en un chero de texto.
El chero puede editarse con cualquier editor o procesador de textos.
Para crear un chero llamado midiario.txt que contenga todos los
comandos de la sesion y sus resultados en la ventana de comandos, hacer
d i a r y mi d i a r i o . t x t
si no se incluye ning un nombre de chero, el diario de la sesi on se
almacena por defecto en el chero diary.
Para parar la grabacion del diario
d i a r y o f f
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 Programacion en Matlab y Simulink Curso 2010/2011 44/215
Ejecuci
on de programas externos
Para ejecutar programas externos a MATLAB desde la lnea de
comandos, se antepone el caracter de escape !. Por ejemplo, en
UNIX
! v i
Ejecuta el editor de texto visual.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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
= p
max
_
_
1
z
a
tan
1
_
a
z
__
(1 v
1
) 0,5
_
1 +
z
2
a
2
_
1
_
z
=
p
max
1 + z
2
/a
2
siendo
a =
_
3F
8
(1 v
2
1
)/E
1
+ (1 v
2
2
)/E
2
1/d
1
+ 1/d
2
_
1/3
p
max
=
3F
2a
2
v
j
son los coecientes de Poisson, E
j
los modulos de Young de
cada esfera y d
j
son los diametros de las dos esferas.
Escribir las ecuaciones en notacion de MATLAB y evaluarlas para
los siguientes valores: v
1
= v
2
= 0,3, E
1
= E
2
= 3 10
7
, d
1
= 1,5,
d
2
= 2,75, F = 100 lb. y z = 0,01 in.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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:
N
L
=
2
(1
2
) + 16
2
(1
2
)
2
siendo el coeciente de excentricidad. Escribir la ecuacion en
notacion de Matlab y evaluarla para = 0,8.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 supercie interior T
a
y
en la exterior T
b
esta sometido a tensiones.
Las tensiones radial y tangencial se obtienen mediante las
siguientes ecuaciones:
r
=
E(T
a
T
b
)
2(1 v) ln(b/a)
_
a
2
b
2
a
2
_
b
2
r
2
1
_
ln
_
b
a
_
ln
_
b
r
__
t
=
E(T
a
T
b
)
2(1 v) ln(b/a)
_
1
a
2
b
2
a
2
_
b
2
r
2
+ 1
_
ln
_
b
a
_
ln
_
b
r
__
siendo r la coordenada radial del tubo, E el modulo de Young del
material del tubo y el coeciente de dilatacion. La distribucion
de temperaturas a lo largo de la pared del tubo en la direccion
radial es:
T = T
b
+
(T
a
T
b
) ln(b/r )
ln(b/a)
Escribir las ecuaciones en notacion de Matlab y evaluarlas para
los siguientes valores: = 1,2 10
5
, E = 3 10
7
, v = 0,3, T
a
= 500,
T
b
= 300, a = 0,25, b = 0,5, r = 0,375.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 .
1
8
9801
N
n=0
(4n)!(1103 + 26390n)
(n!)
4
396
4n
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 Programacion 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 a
j
= 2j 1 y b
j
= 2j + 1,
j = 1, . . . , 7. Se pide:
1
Calcular la suma de a y b
2
Calcular la diferencia de a y b.
3
Calcular el producto a
T
b y el valor de su traza y determinante.
4
Calcular el producto ab
T
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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:
1
Dividir todos los elementos de la segunda columna por
3.
2
Sustituir la ultima la por el resultado de sumarle los elementos de la
tercera la.
3
Sustituir la primera columna por el resultado de multiplicarle los
elementos de la cuarta columna.
4
Hacer que todos los elementos de la diagonal principal sean 2.
5
Asignar el resultado obtenido a la variable q y mostrarla por pantalla.
6
Mostrar la diagonal principal de qq
T
.
7
Mostar el cuadrado de todos los elementos de la matriz q.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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
X =
17 31 5
6 5 4
19 28 9
12 11 10
Calcular la diagonal de H.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 graca.
1
Onda cuadrada
f () =
4
k=1
1
n
sin(2(2k 1)),
1
2
1
2
2
Diente de sierra
f () =
1
2
+
1
k=1
1
n
sin(2k), 1 1
3
Diente de sierra
f () =
1
2
1
k=1
1
n
sin(2k), 1 1
4
Onda triangular
f () =
2
4
k=1
1
(2k 1)
2
cos((2k 1)), 1 1
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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
y = r cos
2
Lemniscata (/4 /4)
x = cos
_
2 cos(2)
y = sin
_
2 cos(2)
3
Espiral (0 6)
de Arqumedes
x = cos
y = sin
Logartmica (k = 0,1)
x = e
k
cos
y = e
k
sin
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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
y = 2 sin sin 2
2
Astroide (0 2)
x = 4 cos
3
y = 4 sin
3
3
Epicicloide (R = 3, a = 0,5, 1 o2, y 0 2)
x = (R + 1) cos a cos((R + 1))
y = (R + 1) sin a sin((R + 1))
4
Epicicloide (R = 2,5, a = 2, y 0 6)
x = (R + 1) cos a cos((R + 1))
y = (R + 1) sin a sin((R + 1))
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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)
y = sin(t/2c) sin(t)
z = cos(t/2c)
2
Senoide sobre cilindro (a = 10,0,
b = 1,0, c = 0,3, 0 t 2)
x = b cos(t)
y = b sin(t)
z = c cos(at)
3
Senoide sobre esfera (a = 10,0,
b = 1,0, c = 0,3, 0 t 2)
x = cos(t)
_
b
2
c
2
cos
2
(at)
y = sin(t)
_
b
2
c
2
cos
2
(at)
z = c cos(at)
4
Espiral toroidal (a = 0,2, b = 0,8,
c = 20,0, 0 t 2)
x = [b + a sin(ct)] cos(t)
y = [b + a sin(ct)] sin(t)
z = a cos(ct)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 56/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 57/215
Introducci
aticas
Variable estatica: No se pierde su valor y s olo se puede usar en la funci on
denida.
Variable global: No se pierde su valor y se puede usar en todas las
funciones donde este denida. Debe estar denida en el workspace.
Ejemplo funci on myfile4.m:
f u n c t i o n c = my f i l e 4 ( a )
% Output : c . I nput : a
g l o b a l P;
i f i s empt y (P) , P=1; end
c= Pa ; P= P+1;
Variable estatica:
>> P= 10; z= my f i l e ( 3) ; % r e p e t i r
Variable global:
>> g l o b a l P; P=10; z= my f i l e ( 3) ; % r e p e t i r
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 73/215
Funciones en matlab (V): Sub-funciones y funciones privadas
Varias funciones contenidas en un mismo chero.
La funcion principal es la primera. Equivalente a la funcion main del
lenguaje C.
Ejemplo myfile5.m:
f u n c t i o n c = my f i l e 5 ( a , b)
% Output : c . I nput : a y b
c= f un ( a , b) ;
f u n c t i o n z= f un ( x , y )
z=s q r t ( x .2+y . 2) ;
Funciones privadas: Estan 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, funcion en carpeta private,funci on en las carpetas del path.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 74/215
Funciones en matlab (VI):Evaluaci
n=1,3,5,...
1
n
sin(2n)
1
2
1
2
.
Dientes de sierra:
f () =
1
2
+
1
n=1
1
n
sin(2n) 1 1
.
Se nal triangular:
f () =
2
n=1
1
(2n 1)
2
cos((2n 1)) 1 1
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 81/215
Pr
N
n=1
sin na
n
3
sin(n) cos(n).
Crear una funcion *.m para mostrar en graco u(, ). La entrada de la
funci on sera 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 graca si el usuario no pide variables de
salida y devuelve el valor de u(, ) sin dibujar la graca en caso
contrario.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 82/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 83/215
Optimizaci
on del c
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 ( j j , 1 ) ;
>> i i = repmat ( i i , [ s j j , 1 ] ) ; j j = repmat ( j j , [ 1 , s i i ] ) ;
>> [ i i , j j ]= mes hgr 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 Programacion en Matlab y Simulink Curso 2010/2011 86/215
Optimizaci
on del c
10
n=1
n i
2
+ i , i [0, 5],
>> i i =0: 5; n =[ 1 : 1 0 ] ;
>> y= n ones ( s i z e ( n) ) i i .2+ i i ;
Pr actica de optimizacion de programas: Volver a escribir el codigo
de las practica de generaci on de se nales sin usar bucles, Ficheros
Bejer1bis.m, Bejer2bis.m.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 87/215
Matrices tri-dimensionales (I)
Se componen de las, columnas y paginas.
Generaci on de matrices tridimensionales, Ascript12.m
>> a =[ 1 , 2 ; 3 , 4 ] ; % Mat r i z de dos di me ns i one s .
>> a ( : , : , 2 )= [ 5 , 6 ; 7 , 8 ] ; % Mat r i z de t r e s di me ns i one s .
>> a= cat ( 3 , [ 2 , 3 ; 4 , 5 ] , [ 5 , 6 ; 7 , 8 ] ) ; % encadena en dim 3
>> a= repmat ( [ 2 , 3 ; 4 , 5 ] , [ 1 , 1 , 2 ] ) ; % r e p i t e en pagi nas
Re-dimensi on: El array es tomado como vector y re-dimesionado,
>> a= r e s hape ( a , [ 2 , 4 ] ) ; % Conv i e r t e dos pagi nas a
c uat r o col umnas .
Borrado de parte de la matriz,
>> a ( : , : , 2 ) =[ ] ; % Bor r ado de l a pagi na 3.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 88/215
Matrices tri-dimensionales (II)
Eliminaci on de dimensiones,
>> b= s queeze ( a ( : , 1 , 1 ) ) ; % Se obt i e ne un v e c t or dim
( 21)
>> b= s queeze ( a ( 1 , : , 1 ) ) ; % Se obt i e ne un v e c t or dim
( 12)
>> b= s queeze ( a ( 1 , 1 , : ) ) ; % Se obt i e ne un v e c t or dim
( 21)
Cambio de ndices en dimensiones,
>> b= permute ( a , [ 2 , 1 , 3 ] ) ; % Las f i l a s pasan a s e r
col umnas .
>> a= i per mut e ( b , [ 2 , 1 , 3 ] ) ; % Es l a i n v e r s a de permute .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 ] , hol a ; [ 1 , 2 , 3 ] , 2 }; % c e l da de dim
( 22)
>> B= { hol a , [ 1 , 2 , 3 ] ; 2 , 2}; % c e l da de dim ( 22)
>> C= cat ( 3 , A, B) ; % c e l da de dim (222)
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) . al um= pepe ; c l a s e ( 1 , 1 , 1) . not a =10;
>> c l a s e ( 1 , 1 , 2) . al um= j uan ; c l a s e ( 1 , 1 , 2) . not a =10;
>> c l a s e= s queeze ( c l a s e ) ; % Se r educe a dos di me ns i one s
.
>> c l a s e . al um % Muestra l o s nombres de t odos l o s
al umnos .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 90/215
Funciones para estructuras y celdas (I)
Funciones especicas para structuras.
Funcion Descripcion
getfield() Muestra los campos de la estructura.
isfield() Verdadero si un campo de la estructura.
isstruct() Verdadero si es una estructura.
rmfield() Borra el campo marcado de la estructura.
setfield() Cambia los contenidos de campo.
struct() Crea o convierte en una matriz de estructuras.
struct2cell() Convierte una matriz de estructuras en celdas.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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) . al um= pepe ; c l a s e ( 1) . not a =10;
>> c l a s e ( 2) . al um= j uan ; c l a s e ( 2) . not a =10;
>> c l a s e ( 3)= s t r u c t ( al um , j o s e , not a , 7) % Otra
f orma de d e f i n i r
>> g e t f i e l d ( c l a s e ) % Muestra l o s campos de c l a s e
>> i s s t r u c t ( c l a s e ) % Af i r ma t i v o
>> i s f i e l d ( c l a s e , not a ) % Af i r ma t i v o
>> r mf i e l d ( c l a s e , not a ) % El i mi na campo not a .
>> s e t f i e l d ( c l a s e , al um , pepe ) ; % I nt r oduc e pepe
en campo al um
>> p= s t r u c 2 c e l l ( c l a s e )
>> % Pone un el ement o de s t r u c t en una col umna de l a
c e l da .
>> % De un v e c t or e s t r u c t u r a s a l e una mat r i z de c e l d a s
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 92/215
Funciones para estructuras y celdas (III)
Funciones especicas de celdas.
Funcion Descripcion
cell() Crea una matriz de celda.
cell2struct() Convierte celdas en estructuras.
celldisp() Muestra el contenido de la celda.
cellfun() Aplica una celda funcion a matriz.
cellplot() Muestra una graca de la celda.
iscell() Verdadero en caso de que sea celda.
num2cell() Conversi on de matriz numerica en celda.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 da v a c a .
>> a={ pepe , j uan ; 10 , 10}; %Se l l e n a c e l da
>> i s c e l l ( a ) % Af i r ma t i v o
>> c e l l d i s p ( a ) % Muestra e l c ont e ni do de l a c e l da
>> c e l l p l o t ( a ) % Muestra e l c ont e ni do en vent ana .
>> c e l l f u n ( i s r e a l , a ) % Di f e r e n t e s f unc i o ne s
a p l i c a d a s a c e l d a s .
>> c e l l 2 s t r u c ( a , { al um , not a }) % Pasa de c e l da a
e s t r u c t u r a .
>> %Toma l o s campos por f i l a s .
>> num2cel l ( [ 1 , 2 ; 3 , 4 ] ) % Conv i e r t e mat r i z en c e l da .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 94/215
Pr
aficas
Escribir en un chero Fichero Cejer1.m el c odigo para obtener las
siguientes gracas,
Visualizar sobre el rango 2 a 2 la funci on v = e
x
2
y
2
z
2
.
Representar en el intervalo [8, 8] la funcion f (x) =
x
3
x
2
4
.
Gracar 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 decimas. 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 tambien la curva en polares r = 3a para a entre
4 y 4 (espiral).
Representar la curva alabeada de coordenadas parametricas x = cos
2
(t),
y = sin(t) cos(t) y z = sin(t) para t entre 4 y 4.
Escribir en un chero Fichero Cejer2.m el c odigo para obtener las
siguientes gracas,
Representar la supercie, su graco de malla y su graco de contorno
cuya ecuacion es la siguiente:
x = xe
x
2
y
2
2 < x, y < 2
Representar en un graco de curvas de nivel con 20 lneas la supercie de
la ecuacion 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 Programacion en Matlab y Simulink Curso 2010/2011 107/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 108/215
Definici
on de clase y objeto
Una clase es un nuevo tipo de dato, a una estructura, para el que se
pueden denir funciones especicas y redenir los operadores.
Un objeto es un caso particular de una clase.
Los campos de la estructura asociada a una clase se llamaran propiedades
de la clase, y las funciones asociadas a una clase funciones metodo.
>> s= t f ( s ) ; % Cl as e t f , obj e t o s .
>> P= 1/( s +1) ; % Oper ador + y / r e d e f i n i d o s par a P
>> K= zpk ( [ ] , [ 1 , 2] , 1) ; % Cl as e zpk , obj e t o K
>> bode (P) ; % bode metodo de l a c l a s e t f
Caractersticas de la programaci on a objeto:
Redenicion de operadores especcos para la clase.
Datos encapsulados: Las propiedades de un objeto no son visibles y solo
se puede acceder a ellas desde las funciones metodo de la clase.
Herencia: Una clase se puede crear a partir de otra, heredando todas sus
funciones metodo. Las clases tf, zpk y ss derivan de la clase lti.
Agregacion: Un objeto puede contener otros objetos.
Toda la informaci on de una clase, tf, esta en el directorio asociado @tf.
Las propiedades de clase usada quedan en memoria. Se deben limpiar
para poder modicarlas,
>> c l e a r t f
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 109/215
Funciones m
on de operadores (I)
Operacion M-chero Descripcion
a + b plus(a,b) Suma
a - b minus(a,b) Resta
-a uminus(a) Menos unitario
+a uplus(a) Mas unitario
a.*b times(a,b) Multiplicaci on por elemento
a*b mtimes(a,b) Multiplicaci on matricial
a./b rdivide(a,b) Divisi on derecha por elemento
a.\b ldivide(a,b) Divisi on izquierda por elemento
a/b mrdivide(a,b) Divisi on matricial derecha
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 112/215
Redefinici
on de operadores (II)
Operacion M-chero Descripcion
a\b mldivide(a,b) Divisi on matricial izquierda
a.^b power(a,b) Potencia por elemento
a^b mpower(a,b) Potencia matricial
a < b lt(a,b) Menor que
a > b gt(a,b) Mayor que
a <= b le(a,b) Menor que o igual a
a >= b ge(a,b) Mayor que o igual a
a ~= b ne(a,b) Distinto de
a == b eq(a,b) Igual a
a & b and(a,b) Y l ogico
a | b or(a,b) O logico
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 113/215
Redefinici
on de operadores (III)
Operacion M-chero Descripcion
~a not(a) NO l ogico
a:d:b colon(a,d,b) Operador dos puntos
a:b colon(a,b)
a ctranspose(a) Traspuesta conjugada compleja
a. transpose(a) Matriz transpuesta
display(a) Visualizaci on pantalla
[a b] horzcat(a,b,...) Concatenaci on horizontal
[a; b] vertcat(a,b,...) Concatenaci on vertical
a(s1,s2,...sn) subsref(a,s) Referencia por subndices
a(s1,...,sn) = b subsasgn(a,s,b) Asignamiento por subndices
(a) subsindex(a) Conversi on al ser ndice
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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) ; % oper ador / y + de c l a s e t f .
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 ) % Cons t r uc t or
>> P( 1)= 1/( s +1) ; % Oper ador es / , + , metodo
s ubs as i gn
>> P( 2)= 1/( s +2) ;
>> K= P( 1) % metodo s ubs r e f
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 denen las siguientes funciones metodo:
Metodo constructor polynom: Se crea un objeto a partir de los
coecientes del polinomio.
Metodo double: El polinomio se podra convertir a un vector.
Metodo display: El objeto se vera en la pantalla en forma de cadena de
caracteres.
Sobrecarga de operadores: Los operadores suma (+), resta (-) y
multiplicacion (*) son redenidos para polinomios.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 = pol ynom( a )
% pol ynom Cons t r uc t or de l a c l a s e pol ynom .
% p = pol ynom( v ) c r e a un pol i nomi o de un v e c t or .
% Los c o e f i c i e n t e e s t an en or den d e c r e c i e n t e
% de l a s po t e nc i a s de x .
i f na r gi n == 0
p . c = [ ] ;
p = c l a s s ( p , pol ynom ) ;
e l s e i f i s a ( a , pol ynom )
p = a ;
e l s e
p . c = a ( : ) . ;
p = c l a s s ( p , pol ynom ) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 117/215
Ejemplo: Una clase de polinomios (III)
Metodo display:
f u n c t i o n d i s p l a y ( p)
% pol ynom\ d i s p l a y . Comando vent ana par a v e r e l obj e t o .
di s p ( i n t 2 s t r ( p . c ) ) ;
Metodo double:
f u n c t i o n c = doubl e ( p)
% pol ynom\ doubl e . Conv i e r t e pol ynom a un v e c t or doubl e .
% c = doubl e ( p) . Conv i e r t e un pol i nomi o en v e c t or .
c = p . c ;
Operador +:
f u n c t i o n r = pl us ( p , q)
% pol ynom\ pl us . Def i ne p + q par a pol i nomi os .
p = pol ynom( p) ; q = pol ynom( q) ;
k = l e ngt h ( q . c ) l e ngt h ( p . c ) ;
r = pol ynom ( [ z e r os ( 1 , k ) p . c ] + [ z e r os (1, k ) q . c ] ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 = mi nus ( p , q)
% pol ynom\mi nus . I mpl ementa p q e nt r e pol i nomi os .
p = pol ynom( p) ; q = pol ynom( q) ;
k = l e ngt h ( q . c ) l e ngt h ( p . c ) ;
r = pol ynom ( [ z e r os ( 1 , k ) p . c ] [ z e r os (1, k ) q . c ] ) ;
Operador *:
f u n c t i o n r = mti mes ( p , q)
% pol ynom\mti mes . I mpl ementa p q e nt r e pol i nomi os .
p = pol ynom( p) ;
q = pol ynom( q) ;
r = pol ynom( conv ( p . c , q . c ) ) ;
Ejemplo de su uso en workspace:
>> p= pol ynom % Crea un obj e t o v a c i o
>> p= pol ynom( p) % Devuel ve e l obj e t o que s e manda
>> p= pol ynom ( [ 1 , 2 , 3 ] ) % Crea un obj e t o p l l e n o
>> q= p+p
>> t= qp
>> a= doubl e ( p)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 denici on de la nueva clase.
Los objetos de la nueva clase seran ObjetoHijo, y los de la clase
existente ObjetoPadre.
Un ObjetoHijo puede acceder a todos las funciones metodo de la
ClasePadre que no esten denidos en su clase.
La forma de denir un objeto hijo es la siguiente:
Obj et oHi j o= c l a s s ( Obj et oHi j o , Cl a s e Hi j o , Obj et oPadr e ) ;
Con esta denici on Matlab crea un componente
ObjetoHijo.ClasePadre donde se guardara la informacion de la parte
del ObjetoHijo con las mismas propiedades que el ObjetoPadre.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 120/215
Clases derivadas: Herencia (II)
Un objeto hijo puede recibir herencia de varios objetos padres,
Obj et oHi j o= c l a s s ( Obj et oHi j o , Cl a s e Hi j o , Obj etoPadr e1 ,
Obj et oPadr e2 ) ;
Una funcion metodo que no posea la ClaseHijo sera 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 funcion.
Polinomio caracterstico.
Esta 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 redenidos.
Cuando los objetos funcion use funciones metodo de la clase polynom,
se esta trabajando con la parte del objeto funcion heredada, y el
resultado de la operaci on podra ser un objeto polynom o de otra clase ya
denida, pero nunca de la clase funcion.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 121/215
Clases derivadas: Herencia (III)
Funci on metodo constructor de funcion. C odigo.
f u n c t i o n p = f unc i on ( v a r a r g i n )
%FUNCION Cons t r ut or de l a c l a s e f unc i on .
s wi t c h nar gi n
cas e 0
pol y= pol ynom ;
p . nombre = ;
p = c l a s s ( p , f unc i on , pol y ) ;
cas e 1
i f i s a ( v a r a r g i n {1} , f unc i on )
p = v a r a r g i n {1};
e l s e
e r r o r ( Ti po de argumento e r r one o ) ; end
cas e 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};
e l s e
e r r o r ( Arg : nombre , pol i nomi o ) ; end
pol y = pol ynom( v a r a r g i n {2}) ;
p = c l a s s ( p , f unc i on , pol y ) ;
ot he r wi s e
e r r o r ( N umero de ar gumentos e r r one o ) ; end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 122/215
Clases derivadas: Herencia (IV)
Funci on metodo display. C odigo.
f u n c t i o n d i s p l a y ( p)
%POLYNOM/DISPLAY Comando vent ana par a v e r e l obj e t o .
di s p ( ) ;
di s p ( [ Funci on , p . nombre , = ] )
di s p ( ) ;
di s p ( [ char ( p) ] ) ;
Ejemplos en el workspace:
>> p= f unc i on % Obj et o f unc i on nul o
>> p1= f unc i on ( z e t a , [ 1 , 2 , 3 ] )
>> % Obj et o f unc i on con nombre y par amet r os .
>> p2= f unc i on ( et a , [ 2 , 3 , 4 ] )
>> p3= p1+p2
>> % Se usa un metodo de l padr e . El r e s u l t a d o en un
obj e t o pol ynom .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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 funcion, y por ndice el valor de la funci on en un punto. C odigo.
f u n c t i o n b = s u b s r e f ( a , s )
%SUBSREF Muestra , por campos e l c ont e ni do de l
% obj et o , por n d i c e s e l v a l o r en un c i e r t o punto .
s wi t c h s . type ,
cas e . ,
s wi t c h s . s ubs
cas e nombre ,
b= a . nombre ;
cas e pol y ,
b= char ( a . pol ynom) ;
ot he r wi s e
e r r o r ( Campos : nombre , pol y . ) ;
end
cas e ( ) ,
i nd= s . s ubs { : } ;
b= a . pol ynom( i nd ) ;
ot he r wi s e
e r r o r ( Campo o n d i c e e r r one o . ) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 124/215
Clases agregadas (I)
Una clase puede tener de componentes objetos de otras clases ya
denidas.
Con ello, no se heredan directamente sus funciones metodo, pero estas
funciones podran ser usadas en la denici on de las nuevas funciones
metodo.
Ejemplo: La clase transfer tiene las siguientes propiedades:
Polinomio del numerador.
Polinomio del denominador.
Esta 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 construccion seran 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 Programacion en Matlab y Simulink Curso 2010/2011 125/215
Clases agregadas (II)
Funci on metodo constructor. C odigo.
f u n c t i o n p = t r a n s f e r ( v a r a r g i n )
%FUNCION Cons t r ut or de l a c l a s e t r a n s f e r
% Crea una f unc i on de t r a n s f e r e n c i a compuesta de
% dos pol i nomi os , uno en numerador y ot r o en
denomi nador .
s wi t c h nar gi n
cas e 0
p . num= pol ynom ; p . den= pol ynom ;
p = c l a s s ( p , t r a n s f e r ) ; % Obj et o nul o
cas e 1
i f i s a ( v a r a r g i n {1} , t r a n s f e r )
p = v a r a r g i n {1}; % Obj et o f unc i on
e l s e
p . num= pol ynom( v a r a r g i n {1}) ; p . den= pol ynom ( 1) ;
p= c l a s s ( p , t r a n s f e r ) ; % Obj et o s o l o numerador
end
cas e 2
p . num= pol ynom( v a r a r g i n {1}) ; p . den= pol ynom( v a r a r g i n
{2}) ;
p = c l a s s ( p , t r a n s f e r ) ; % Obj et o numerador y
denomi nador
ot he r wi s e
e r r o r ( N umero de ar gumentos e r r one o ) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 126/215
Clases agregadas (III)
Funci on metodo display. C odigo:
f u n c t i o n d i s p l a y ( p)
% t r a n s f e r \ d i s p l a y . Comando vent ana par a v e r e l obj e t o .
num= char ( p . num) ;
den= char ( p . den ) ;
di s p ( ) ;
di s p ( [ i nputname ( 1) , = ] )
di s p ( ) ;
di s p ( [ num] ) ;
di s p ( repmat ( , [ 1 , max ( [ s i z e (num, 2 ) , s i z e ( den , 2 ) ] ) ] ) ) ;
di s p ( den ) ;
Ejemplos en el workspace:
>> g= t r a n s f e r ; % Obj et o nul o
>> g= t r a n s f e r ( [ 1 , 2 , 3 ] ) % Obj et o con num y den= 1.
>> p= pol ynom ( [ 1 , 2 , 3 ] ) % Obj et o pol ynom
>> g= t r a n s f e r ( [ 1 , 2 , 3 ] , [ 3 , 4 , 5 ] ) ; % Obj et o con num y den
>> g= t r a n s f e r ( p , [ 1 , 2 , 3 ] ) ; % Obj et o con num y den
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 127/215
Clases agregadas (IV)
Funci on metodo subsref. C odigo:
f u n c t i o n b = s u b s r e f ( 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 o n de l
obj e t o .
% Por n d i c e s , e l v a l o r de l a f unc i on en un punto .
s wi t c h s . type ,
cas e . ,
s wi t c h s . subs ,
cas e num ,
b= char ( a . num) ; % pol i nomi o num
cas e den ,
b= char ( a . den ) ; % pol i nomi o den
ot he r wi s e
e r r o r ( Campos : num, den ) ;
end
cas e ( ) ,
i nd = s . s ubs { : } ;
b= a . num( i nd ) . / a . den ( i nd ) ; % Val or en x
ot he r wi s e
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 Programacion en Matlab y Simulink Curso 2010/2011 128/215
Clases agregadas (V)
Sobrecarga de operadores. C odigo:
f u n c t i o n r = pl us ( p , q)
% t r a n s f e r \ pl us . Def i ne p + q par a t r a n s f e r .
p = t r a n s f e r ( p) ;
q = t r a n s f e r ( q) ;
r . num= p . numq . den + p . denq . num;
r . den= p . denq . 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 = mi nus ( p , q)
% t r a n s f e r \mi nus . Def i ne p q par a t r a n s f e r .
p = t r a n s f e r ( p) ;
q = t r a n s f e r ( q) ;
r . num= p . numq . den p . denq . num;
r . den= p . denq . 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 = mti mes ( p , q)
% t r a n s f e r \mtime . Def i ne p q par a t r a n s f e r .
p = t r a n s f e r ( p) ;
q = t r a n s f e r ( q) ;
r . num= p . numq . num;
r . den= p . denq . 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 Programacion 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 = mti mes ( p , q)
% t r a n s f e r \ mr di v i de Def i ne p / q par a t r a n s f e r .
p = t r a n s f e r ( p) ;
q = t r a n s f e r ( q) ;
r . num= p . numq . den ;
r . den= p . denq . 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 ; % Obj et o t r a n s f e r
>> g3= g1/g2 % Obj et o t r a n s f e r
>> g3 . num % Cadena de c a r a c t e r e s
>> g3 ( 10) % Val or de c o c i e n t e en x=10
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 130/215
Pr
acticas de la programaci
on orientada a objeto
Modicar la funci on metodo subsref, Fichero Dejer1.m de la clase
funcion, de forma que los ndices sirva para devolver el valor del
coeciente correspondiente. Por ejemplo, p(3) debe devolver el tercer
coeciente.
Modicar 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 coeciente
del numerador, y segundo del denominador.
Denir 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 posicion tercera del polinomio. Ejemplo en la clase
transfer, g(2,3)=[1,2], introduce un 1 en la posicion segunda del
numerador, y un 2 en la posici on tercera de denominador.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 131/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 132/215
Definici
on de sistema continuos.
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
matematicamente mediante una ecuaci on diferencial ordinaria (ODE),
y
(n)
= f (t, y, y
, . . . , y
(n1)
).
Nota: La entrada es una funci on del tiempo u(t).
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 133/215
Definici
on de sistema muestreados.
Un sistema muestreado puede ser representado por una ecuacion 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)+a
1
y(k+n1)+. . .+a
0
y(k) = b
n
u(k+n)+b
n1
u(k+n1)+. . .+b
0
u(k).
Funci on de transferencia de un sistema muestreado lineal es la
transformada Z de su ecuaci on en diferencias,
Y(z)
U(z)
=
z
n
+ a
1
z
n1
+. . . + a
0
b
n
z
n
+ b
n1
z
n1
+. . . + b
0
.
Un sistema, en general puede estar compuesto por partes continuas,
muestreadas, lineales y no lineales.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 135/215
Simulaci
on
La simulacion de un sistema consiste en predecir los datos de salida del
mismo frente a los datos de entrada.
Simulaci on desde Matlab:
Creacion de un chero con la ecuacion diferencial del sistema en forma de
derivadas de primer orden.
Resolucion del ODE por metodos similares a los de Runge-Kutta.
Simulaci on desde Simulink (interface graco):
Dibujo del sistema en un entorno graco, donde se dispone de iconos para
sus partes lineales, no lineales, continuas y discretas.
Creacion de un chero con la informacion de la planta y uso de las
funciones de simulacion de matlab.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 136/215
Simulaci
on con Matlab
La ecuacion ODE del sistema y
(n)
= f (t, y, y
, . . . , y
(n1)
) se debe
transformar a una ecuaci on ODE vectorial de primer orden y
= F(t, y).
Una forma sencilla de conseguirlo es mediante el cambio,
y
1
= y, y
2
= y
, . . . , y
n
= y
(n1)
,
y por tanto
_
_
_
_
_
y
1
y
2
.
.
.
y
n
_
_
=
_
_
_
_
_
y
2
y
3
.
.
.
f (t, y
1
, y
2
, . . . , y
n
)
_
_
.
Condiciones iniciales: Valores iniciales de
_
y
1
(t
0
), . . . , y
n
(t
0
)
_
T
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 137/215
ODE de la funci
1
(1 y
2
1
)y
1
+ y
1
= 0,
en ecuaciones de estado,
_
y
1
y
2
_
=
_
y
2
(1 y
2
1
)y
2
y
1
_
.
Fichero con la relacion de las ecuaciones de estado,
f u n c t i o n dy= pol ( t , y )
% t es e l ti empo
% y es e l v a l o r de l v e c t or par a un t .
% dy es l a de r i v a da de y par a un t dado .
% y ( 3) par amet r o mo 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) (1y ( 1) 2) y ( 2)y ( 1) ; 0 ] ; % Columna
Esta funcion sera 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 Programacion en Matlab y Simulink Curso 2010/2011 138/215
Clasificaci
on de ODEs y formulaci
on
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, tspan , y0 , opt i on )
@F: Nombre o puntero del chero .m donde se guarda la funcion.
tspan:
[ti,tf]: Lmite inferior y superior. Paso y n umero de valores de
salida variables.
linspace(ti,tf,Npuntos): Se ja 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: Especicaciones del algoritmo. Si se pone [] se toman por
defecto.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 139/215
Opciones de las funciones ODE
Consultar con la ayuda:
>> he l p ode s e t
>> opt i on= ode s e t ; % dat os por de f e c t o .
>> x0= [ 0 . 1 , 1. 1 , 0 . 1 ] ; % dos es t ados , un par amet r o
>> s o l = ode45 ( @pol , x0 ) ; % Ve r s i on 7
>> y= de v a l ( s ol , l i n s p a c e ( 0 , 10 , 100) ) ; % s o l . en punt os
Ejemplos:
N umero de datos de salida:
>> opt i on= ode s e t ( Re f i ne , 4) ; % por de f e c t o .
Jacobiano del ODE en funci on jacpol.m:
>> opt i on= ode s e t ( Jacobi an , @j ac pol ) ;
Se precisa una funcion de la forma,
f u n c t i o n j a c= j a c p o l ( t , y )
j a c = [ 0 , 1 , 0;
2y ( 1) y ( 2) , 1y ( 1) 2 , (1y ( 1) 2) y ( 2) ;
0 , 0 , 0 ] ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion 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
= f (t, y, p)
g(y(a), y(b), p) = 0
Se resuelve con la funci on:
>> s o l = bvp4c (@F, @bc , s o l i n i t , opt i on , p1 , p2 , . . . )
@F nombre o puntero a funcion que dene el problema.
@bc nombre o puntero a funcion que dene los valores frontera.
solinit: Fijar el mallado en t y puntos iniciales para y.
option opciones de resolucion bvpset, bvpget.
pi parametros extras.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 141/215
Ecuaciones diferenciales con valores de frontera (II)
Ejemplo: Soluci on de la ecuaci on y
2
u
t
=
x
_
u
x
_
,
sujeto a las condiciones iniciales u(x, 0) = sin(x) y condiciones frontera
u(0, t) = 0, e
t
+
u
x
(1, t) = 0
f u n c t i o n [ c , f , s ]= F( x , t , u , dxdu )
c= pi 2; f= dxdu ; s =0;
f u n c t i o n u0= i n i t ( x )
u0= s i n ( pi x ) ;
f u n c t i o n [ pl , ql , pr , qr ]= f r o n t ( xl , ul , xr , ur , t )
pl=ul ; ql =0; pr= pi exp(t ) ; qr= 1;
>> m= 0; x= l i n s p a c e ( 0 , 1 , 20) ; t= l i n s p a c e ( 0 , 2 , 5) ;
>> s o l = pdepe (m, @F, @i ni t , @f r ont , x , t ) ;
>> u= s o l ( : , : , 1 ) ;
>> f i g u r e ; s u r f ( 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 Programacion en Matlab y Simulink Curso 2010/2011 145/215
Pr
acticas de simulaci
on con matlab
Resolver la ecuaci on de Van del Pol y
+(1 y
2
)y
+ y = 0 para
= 1, con valores iniciales y(0) = 2 e y
(0) = 0, en el intervalo
t = [0, 20] (usando su Jacobiano) por el ode45 y ode23. Generalizar el
resultado para una cualquiera. El chero script con la resoluci on del
problema se llamara 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 chero script con la
resoluci on del problema se llamara Eejer2.m.
x
= (y x)
y
= x(r z) y
z
= xy bz
Dada la ecuaci on y
(0) + y
aticas b
asicas (I)
Funcion Comentario
abs Valor absoluto
acos, acosh Arco coseno y arco coseno hiperb olico
acot, acoth Arco cotangente y arco cotangente hiperb olico
acsc, acsch Arco cosecante y arco cosecante hiperbolico
angle Argumento
asec, asech Arco secante y arco secante hiperb olico
asin, asinh Arco seno y arco seno hiperbolico
atan, atanh Arco tangente y arco tangente hiperb olico
atan2 Arco tangente en el cuarto cuadrante
ceil Redondeo al entero mas pr oximo
complex Forma un n umero complejo
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 157/215
Funciones matem
aticas b
asicas (II)
Funcion Comentario
conj Complejo conjugado
cos,cosh Coseno y coseno hiperb olico
cot,coth Cotangente y cotangente hiperb olica
csc,csch Cosecante y cosecante hiperb olica
exp Exponencial
fix Elimina la parte decimal
floor Mayor entero menor o igual que un real dado
gcd Maximo com un divisor
imag Parte imaginaria de un n umero complejo
lcm Maximo com un m ultiplo
log Logaritmo neperiano
log2 Logaritmo base 2
log10 Logaritmo base 10
mod M odulo
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 158/215
Funciones matem
aticas b
asicas (III)
Funcion Comentario
nchoosek Coeciente binomial
real Parte real de un n umero complejo
rem Resto de la division
round Redondeo al entero mas cercano
sec,sech Secante y secante hiperb olica
sign Signo
sin,sinh Seno y seno hiperb olico
sqrt Raz cuadrada
tan,tanh Tangente y tangente hiperb olica
Pueden consultarse con
>> he l p e l f u n
MATLAB tiene tambien funciones matematicas especiales
>> he l p s pe c f un
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 159/215
Ejemplo de funciones matem
aticas b
asicas DElfun1.m
Combinaciones de 10 elementos tomadas de 4 en 4
_
10
4
_
:
>> nchoosek ( 10 , 4)
Seno y coseno de los angulos entre 0 y 2, incrementando de /2 en /2.
>> s i n ( 0 : pi /2: 2 pi )
>> cos ( 0 : pi /2: 2 pi )
Algunas propiedades de las funciones exponencial y logartmica
>> exp (2 pi i )
>> exp ( l og ( 2) )
>> 2 exp ( i pi )
>> 2( cos ( pi )+i s i n ( pi ) )
>> l og (3+2 i )
Algunas propiedades de las funciones trigonometricas
>> s i n ( pi /4)2+cos ( pi /4) 2
>> ( exp ( 5)+exp(5) ) /2
>> cosh ( 5)
>> cosh ( pi )2s i nh ( pi ) 2
>> 1+t an ( pi /4) 2
>> s ec ( pi /4) 2
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 160/215
Funciones de transformaci
on de coordenadas
Funcion Comentario
cart2pol,pol2cart Transforma cartesianas a polares (cilndricas 3D)
cart2sph,sph2cart Transforma cartesianas a esfericas
Ejemplo de transformacion 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 esfericas:
>> [ c1 , c2 , c3]= c a r t 2 p o l ( 1 , 1 , 1)
>> [ c1 , c2 , c3]=c ar t 2s ph ( 1 , 1 , 1)
Transforma el punto (5, /3) de cilndricas a cartesianas:
>> [ x , y]= p o l 2 c a r t ( 5 , pi /3)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 161/215
Funciones estad
sticas b
asicas (I)
Funcion Comentario
max Maximo de vector
mean Media
median Mediana
min Maximo
perms Permuta las las de una matriz
sort Datos ordenados
sortrows Ordena las de una matriz
std Desviaci on estandar.
var Varianza
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 162/215
Funciones estad
sticas b
asicas (II)
Funcion Comentario
corr Correlaci on entre variables
cov Matriz de covarianzas
corrcoef Matriz de correlaciones
xcorr Correlaci on cruzada entre variables
xcov Covarianzas cruzadas entre variables
cumprod Producto acumulativo
cumsum Suma acumulativa
cumtrapz Integraci on acumulativa trapezoidal
diff Funci on diferencial y aproximaci on acumulativa
find Busca datos en vectores
hist,histc Histograma y contaje de histograma
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 163/215
Ejemplo funciones b
asicas estad
asicas estad
asicas estad
asicas estad
asicas de
algebra matricial (I)
Funcion Comentario
expm Exponencial de una matriz e
A
logm Logaritmo neperiano de una matriz
sqrtm Raz cuadrada de una matriz
funm Cualquier funci on matematica aplicada a una matriz
transpose, () Transpuesta de una matriz
inv Inversa de una matriz
det Determinante de una matriz
rank Rango de una matriz
trace Traza de una matriz
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 170/215
Funciones b
asicas de
algebra matricial (II)
Funcion Comentario
eig Valores propios de una matriz
svd Valores singulares de una matriz
cond N umero de condici on de una matriz
rcond Recproco del n umero de condici on (estimado)
norm Norma de una matriz
null Base ortonormal del n ucleo de una matriz
orth Base ortonormal de la imagen de una matriz
subspace
Angulo entre los subespacios de dos matrices
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 171/215
Ejemplo de Matlab de funciones de
algebra de matrices DAlg1.m (I)
Formamos una matriz cuadrada aletoria de dimensi on 3
>> A=r andn ( 3)
Calculamos su traspuesta
>> A
Calculamos su rango con rank
>> r ank (A)
Calculamos su determinante con det
>> det (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 Programacion en Matlab y Simulink Curso 2010/2011 172/215
Ejemplo de Matlab de funciones de
algebra de matrices DAlg1.m (II)
Comprobamos que el determinante es el producto de los autovalores
>> [ pr od ( e i g (A) ) det (A) ]
Calculamos el n umero de condici on
>> cond (A)
Comprobamos que el n umero de condici on es el cociente entre el maximo
y el mnimo autovalor
>> s q r t ( max( e i g (A A) ) /min ( e i g (A A) ) )
>> max( svd (A) ) /min ( svd (A) )
Estimamos el recproco del n umero de condici on con rcond
>> r cond (A)
Obtenemos el error relativo de estimaci on obtenido con rcond)
>> abs ( cond (A)1/r cond (A) ) /cond (A)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 173/215
Ejemplo de Matlab de funciones de
algebra de matrices DAlg2.m (I)
Formamos una matriz cuadrada compleja aleatoria de dimensi on 3
>> B=r andn ( 3)+j r andn ( 3)
Calculamos B elevada al cubo
>> B3
Calculamos 2 elevado a B
>> 2B
Calculamos la exponencial de B por dos metodos
>> expm(B)
>> exp ( 1) B
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 174/215
Ejemplo de Matlab de funciones de
algebra de matrices DAlg2.m (II)
Calculamos el logaritmo neperiano de B por dos metodos
>> l ogm(B)
>> funm(B, l og )
Calculamos la raz cuadrada de B por tres metodos
>> sqrtm (B)
>> funm(B, s q r t )
>> B. 5
Calculamos el seno y coseno de B
>> funm(B, s i n )
>> funm(B, cos )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 175/215
Descomposici
on de matrices
Funcion Comentario
[V,D]=eig(A) AV = VD, D diagonal
[T,B]=balance(A) TB = AT, eig(A) eig(B)
[U,T]=schur(A) UT = AU, U
U = I , T triangular superior
[L,U,P]=lu(A) PA = LU, P permutaci on, L triangular inferior,
U triangular superior
R=chol(A) R
on de sistemas de ecuaciones
Funcion Comentario
X=A/B Resuelve XA = B
X=A\B Resuelve AX = B por mnimos cuadrados
X=lsqnonneg(A,b) Soluci on de mnimos cuadrados de Ax = b, x 0
X=linsolve(A,B) Resuelve AX = B, A matriz cuadrada, B matriz
r=roots(p) Races de un polinomio p
p=poly(r) Polinomio de races v
x=fzero(fun,x0) Calcula un cero de la funci on fun pr oximo a x0
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 180/215
Ejemplo soluci
on y filtros.
Funcion Comentario
cov Varianza de un vector
corrcoef Coecientes de correlaci on (normalizados)
conv Convoluci on de datos, producto de polinomios
diff Diferencias entre elementos de un vector
gradient Derivadas parciales numericas de una matriz
del2 Laplaciano discreto de una matriz
filter Filtro FIR y IIR de datos
ltitr Respuesta lineal
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 185/215
Pr
alisis en frecuencia
Funcion Comentario
fft Transformada de Fourier discreta
fft2 Transformada de Fourier en dos dimensiones
ifft Inversa transformada de Fourier
ifft2 Inversa transformada de Fourier en dos dimensiones
abs Magnitud
angle
Angulo
fftshift Mueve el retraso cero al centro del espectro
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 188/215
Pr
acticas de an
alisis en frecuencia,Bscript3.m
Toma de datos:
>> l oad s uns pot . dat ;
>> ye ar= s uns pot ( : , 1 ) ; wo l f e r= s uns pot ( : , 2 ) ;
Transformada de Fourier, se le quita el primer dato:
>> y= f f t ( wo l f e r ) ; y ( 1) =[ ] ;
Gracas con eje frecuencia [0, nf, 0] y [nf, 0,nf]:
>> f i g u r e ; s ubpl ot ( 2 , 1 , 1) ; p l o t ( abs ( y ) )
>> s ubpl ot ( 2 , 1 , 2) ; p l o t ( f f t s h i f t ( abs ( y ) ) ) ;
Gracas en funci on de la frecuencia de Nyquist:
>> N= l e nght ( y ) ; power = abs (Y( 1 : N/2) ) . 2 ;
>> ny qui s t = 1/2; f r e q = ( 1 : N/2) /(N/2) ny qui s t ;
>> f i g u r e ; s ubpl ot ( 2 , 1 , 1) ; p l o t ( f r eq , power ) ;
>> s ubpl ot ( 2 , 1 , 2) ; p l o t ( f r eq , unwrap ( angl e ( y ( 1 : N/2) ) ) ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 189/215
Ejercicios de filtro y transformada de Fourier
En un chero 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 ltros.
Obtener la transformada de Fourier de la se nal ltrada y sin ltrar viendo
las diferencias. Se precisa que la frecuencia cero este en el centro de la
graca.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 190/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 191/215
Funciones para polinomios
Funcion Comentario
conv Producto de polinomios
deconv Divisi on de polinomios
poly Denici on de polinomios por races
polyder Derivada de polinomios
polyfit Interpola por mnimos cuadrados
polyval Valor polinomio en un punto
polyvalm Valor polinomio con matrices
residue Fracciones parciales
roots Races de un polinomio
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 192/215
Pr
X) X
y
Regresi on exponencial: y = a(0) + a(1) exp(t) + a(2) t exp(t):
>> X = [ ones ( s i z e ( t ) ) exp(t ) t . exp(t ) ] ; a = X\y ;
>> t hat = ( 0 : 0 . 1 : 2 . 5 ) ;
>> yhat = [ ones ( s i z e ( t hat ) ) exp(t hat ) t hat . exp(t hat )
] a ;
>> f i g u r e ; p l o t ( t hat , yhat , , t , y , o ) , g r i d on ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 195/215
Pr
omios y regresi
on
Sea x un vector aleatorio uniforme de 1000 componentes. Comprobar en
un chero 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 chero 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 parametros [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 parametros [a, b, c] a partir de la funcion polyfit
y con mnimos cuadrados.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 197/215
Funciones para interpolar datos, splines
Funcion Comentario
interp1 Interpolacion en una dimensi on
inter2, inter3 Interpolacion en dos y tres dimensiones
interpft Interpolacion una dimension t.
mkpp Compone un spline a partir de propiedades
spline Genera splines cubicos
pchip Genera splines c ubico de Hermite
ppval Valor de un spline en puntos
unmkpp Propiedades de un spline
mmppint, mmppder Spline integral y derivada
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 198/215
Pr
acticas de interpolaci
on de datos.
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 chero 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 Programacion en Matlab y Simulink Curso 2010/2011 204/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 205/215
Funciones de optimizaci
on e integraci
on
Funcion Comentario
fplot Dibuja la funci on
fminbnd Minimiza funcion con una variable con restricciones
fminsearch Minimiza funcion con varias variables
fzero Encuentra el cero en funci on con una variable
optimset, optimget Parametros de resoluci on
quad Integraci on numerica, Simpson
quadl Integraci on numerica, Lobatto
dblquad Integraci on numerica, doble integral
triplequad integraci on numerica, triple integral
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 206/215
Pr
on, Dscript1.m
Integral simple:
>> quad ( humps , 1, 2) %I n t e g r a c i o n s i mpl e
>> quadl ( humps , 1, 2) %I nt e g r a c i o n , mayor e x a c t i t u d
Integral doble:
>> out= @( x , y ) y s i n ( x ) + x cos ( y ) ;
>> xmi n= pi ; xmax= 2 pi ; ymi n= 0; ymax= pi ;
>> r e s u l t = dbl quad ( out , xmin , xmax , ymin , ymax )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 210/215
Optimizaci
i
p
i
f
i
(x).
La solucion depende de los p
i
elegidos.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 211/215
Pr
on (I)
Minimizar la funci on f (x) = (x 3)
2
1 en el intervalo (0, 5).
Encontrar el valor de x que minimiza el valor maximo de [f
1
(x), . . . , f
5
(x)],
f
1
(x) = 2x
2
1
+ x
2
2
48 x
1
40x
2
+ 304
f
2
(x) = x
2
2
3x
2
2
f
3
(x) = x
1
+ 2x
2
18
f
4
(x) = x
1
x
2
f
5
(x) = x
1
+ x
2
8
Minimizar la funci on siguiente f (x) = 3x
2
1
+ 2x
1
x
2
2
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 212/215
Pr
on (II)
Encontrar en un chero script de nombre Jejer1.m los valores de x
que minimizan la funcion f (x) sujeta a las restricciones k
1
(x, w
1
) y
k
2
(x, w
2
con w
1
y w
2
en [1, 100]. La funci on y las restricciones se denen
en el problema y el punto inicial es (0,5, 0,2, 0,3),
f (x) = (x
1
0,5)
2
+ (x
2
0,5)
2
+ (x
2
0,5)
2
k(x, w
1
) = sin(w
1
x
1
) cos(w
2
x
2
) 1/100(w
1
50)
2
sin(w
1
x
3
) x
3
1
k(x, w
2
) = sin(w
2
x
2
) cos(w
2
x
1
) 1/100(w
2
50)
2
sin(w
2
x
3
) x
3
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 coecientes 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 escribiran en un chero script de nombre Jejer2.m.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 213/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis 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 Programacion en Matlab y Simulink Curso 2010/2011 214/215
Bibliograf
a
Matlab y sus aplicaciones en la ciencia y la ingeniera, (Cesar Perez).
Prentice Hall.
Mastering Matlab 7, (Duane Hanselman, Bruce Littleeld). Prentice Hall,
Internaltional Edition.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 215/215