Curso de Programacio
Curso 2010/2011
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
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
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
4/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
5/215
3
10
6
15
2
11
7
14
13
8
12
1
34
34
34
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
6/215
obteniendo
ans =
16
3
2
13
5
10
11
8
9
6
7
12
4
15
14
1
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
7/215
Se obtiene
ans =
16
10
7
1
obteniendose
ans =
34
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
8/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
9/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
10/215
3
10
6
15
2
11
7
14
13
8
12
1
0
0
0
17
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
11/215
El operador :
10
es
100
93
86
79
72
65
58
51
y
0: pi /4: pi
es
0
0.7854
1.5708
2.3562
Curso de Programaci
on en Matlab y Simulink
3.1416
Curso 2010/2011
12/215
El operador :
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
13/215
n magic
La funcio
3
10
6
15
13
8
12
1
13
8
12
1
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
14/215
Expresiones
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
15/215
Variables
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
16/215
meros
Nu
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 .
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
17/215
Operadores
( )
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
Funciones m
as avanzadas y funciones de matrices se obtienen con
help specfun
help elmat
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)
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
20/215
Expresiones
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
21/215
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
0
0
F = 5 o n e s ( 3 , 3 )
F =
5
5
5
5
5
5
5
5
5
0
0
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
24/215
Ficheros m
...
3.0
10.0
6.0
15.0
2.0
11.0
7.0
14.0
13.0
8.0
12.0
1.0 ] ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
25/215
n
Concatenacio
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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
26/215
13
8
12
1
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
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 ) ;
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
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
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 )
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 )
dibuja el gr
afico en lnea continua amarilla y situa marcas + en cada
punto.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
33/215
Ayuda en MATLAB
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
35/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
36/215
La ventana de ayuda
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 .
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
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 .
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
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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
42/215
n de Ficheros
Manipulacio
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
43/215
El comando diary
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
44/215
n de programas externos
Ejecucio
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
45/215
Ejercicios 1
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
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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
47/215
Ejercicio 3
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
(Ta Tb ) ln(b/r )
ln(b/a)
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
48/215
Ejercicio 4
9801
(n!)4 3964n
n=0
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
49/215
Ejercicio 5
Calcular la suma de a y b
Calcular la diferencia de a y b.
Calcular el producto ab T .
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
50/215
Ejercicio 6
3.
Sustituir la u
ltima fila por el resultado de sumarle los elementos de la
tercera fila.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
51/215
Ejercicio 7
17 31 5
6 5 4
X =
19 28 9
12 11 10
Calcular la diagonal de H.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
52/215
Ejercicio 8
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
53/215
Ejercicio 9
r sin
r cos
p
cos 2 cos(2)
p
sin 2 cos(2)
Espiral (0 6)
de Arqumedes
x
cos
sin
Logartmica (k = 0,1)
e k cos
e k sin
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
54/215
Ejercicio 10
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
Epicicloide (R = 2,5, a = 2, y 0 6)
x
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
55/215
Ejercicio 11
sin(t/2c) cos(t)
sin(t/2c) sin(t)
cos(t/2c)
c cos(at)
b cos(t)
[b + a sin(ct)] cos(t)
b sin(t)
[b + a sin(ct)] sin(t)
c cos(at)
a cos(ct)
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
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
Workspace en Matlab.
Uso de variables globales, scripts, funciones y objetos.
Ejemplo:
>> a = [ 1 , 2 ; 3 , 4 ] ;
>> whos
>> i n v ( a ) ;
Utiles
para repetir la misma operaci
on varias veces.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
58/215
x = 7.5
y = 3.342
z = myfile (x , y)
whos
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
59/215
Tipos de variables:
Clase
Ejemplo
array
[1,2;3,4]; 5+6i
char
Hola
celda
struct
a.dia=1; a.mes=julio
objeto
tf(1,[1,1])
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
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.
>
>
<=
>=
==
=
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
>> 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
...
Curso de Programaci
on en Matlab y Simulink
>> a&b
...
>> a
...
Curso 2010/2011
62/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
63/215
En el workspace:
>> 3+2
...
>> p i 3
...
>> r e a l m a x
...
>> 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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
65/215
if
sent lo
g 1 ,
% bloque 1
e l s e i f sent lo
g 2
,
% bloque 2
else
% bloque 3
end
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
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
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
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
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 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 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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
69/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
70/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
71/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
73/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
74/215
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= 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
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 .
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 .
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
76/215
del
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
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
Principales usos:
Ficheros de texto con formato
Ficheros binarios para guardar o extraer matrices en su forma vectorial.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
79/215
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 ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
80/215
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
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
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
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 ) ,
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 .
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
84/215
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 .
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 ;
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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
87/215
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 .
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
88/215
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)
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
89/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
90/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
92/215
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
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 .
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
94/215
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
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
Funci
on
figure
subplot
hold
plot
loglog
semilogx, semilogy
xlim, ylim , zlim
tit, xlabel, ylabel
legend, text, gtext
ginput
grid, box
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
Funci
on
bar, bar3, bar3h
errorbar
compass
ezplot, ezpolar
fplot
hist, pareto
pie, pie3
stem, stairts
scatter, plotmatrix
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
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 ) ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
99/215
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 ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
100/215
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
>> 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 ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
102/215
Funci
on
plot3
mesh, meshc, meshz
surf, surfc, surfl
meshgrid, ndgrid
hidden
contour, contour3
trimesh, trisurf
scatter3, stem3
slice
surfnorm
quiver3
patch
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
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 ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
104/215
[ 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 ) ;
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 ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
105/215
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 ] ) ;
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 ] ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
106/215
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
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
109/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
110/215
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
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
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
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)
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
/ y + de c l a s e
tf .
...)
...)
/ , + , m
e todo
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
115/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
116/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
117/215
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 ] ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
118/215
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 ) ) ;
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)
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
119/215
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 ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
120/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
122/215
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 .
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
123/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
124/215
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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
125/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
126/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
127/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
128/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
129/215
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
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.
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
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).
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
133/215
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)}.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
134/215
n de sistema muestreados.
Definicio
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
135/215
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.
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 )
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
137/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
139/215
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];
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
140/215
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 ,
...)
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
141/215
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) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
142/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
143/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
144/215
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 , : ) ) ;
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
147/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
148/215
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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
149/215
s+1
1/100s+1
In1
Transfer Fcn
1
In1
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
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
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
152/215
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
153/215
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) ) ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
154/215
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
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
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
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
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 )
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 )
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
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 )
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
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
163/215
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 )
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
164/215
La desviaci
on tpica se calcula con el comando
>> s t d ( 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 )
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
165/215
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 )
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
166/215
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 ) ) ]
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
167/215
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
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
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
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
Calculamos su traspuesta
>> A
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
172/215
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) )
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
173/215
Calculamos 2 elevado a B
>> 2B
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
174/215
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
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
Calculamos su descomposici
on en valores propios con svd
>> [ V , D]= s v d (A)
Comprobamos la descomposici
on:
>> AVVD
Comprobamos la descomposici
on
>> [ B T\AT ]
>> e i g (A)
>> e i g (B)
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
177/215
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 ]
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
178/215
Comprobamos la descomposici
on
>> [ USV A ]
>> U U
>> VV
Comprobamos la descomposici
on
>> [ R R AA ]
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)
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
2x + 3y + z
x + y + 5z
La soluci
on es:
>> X=A\b
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
181/215
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 ) ]
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
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
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
185/215
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 ) ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
186/215
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 ) ) ;
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
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 ) ;
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 ) ) ) ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
189/215
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
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
Funci
on
conv
deconv
poly
polyder
polyfit
polyval
polyvalm
residue
roots
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
Polinomio caracterstico:
>> A = [ 1 . 2 3 0 . 9 ; 5 1 . 7 5 6 ; 9 0 1 ] ;
>> p o l y (A)
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 ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
193/215
Residuos de un polinomio:
>> b = [4 8 ] ; a = [ 1 6 8 ] ;
>> [ r , p , k ] = r e s i d u e ( b , a )
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
194/215
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 ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
195/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
196/215
mios y regresio
n
Ejercicios de polino
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
197/215
Funci
on
interp1
inter2, inter3
interpft
mkpp
spline
pchip
ppval
unmkpp
mmppint, mmppder
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
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 ) ;
;
,
nearest ) ;
bilinear ) ;
bicubic ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
199/215
Interpola datos:
>> yp= s p l i n e ( x , y , x i ) ;
>> p l o t ( x , y , o , x i , yp ) ;
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
200/215
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 , : ) ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
201/215
Funci
on
meshgrid
ndgrid
surf, mesh
slide
griddata
griddata3
griddatan
interpn
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
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 ) ;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
203/215
cticas de interpolacio
n de datos.
Pra
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
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
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
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 ) ;
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
207/215
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;
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
208/215
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
209/215
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 )
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
210/215
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.
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
211/215
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 .
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
212/215
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
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
Curso de Programaci
on en Matlab y Simulink
Curso 2010/2011
215/215