Documente Academic
Documente Profesional
Documente Cultură
MATLAB - SIMULINK
Dr. Jess Fraile Ardanuy
ETSI Caminos, Canales y Puertos
Universidad Politcnica de Madrid
Dpto. de Ingeniera Civil: Hidrulica y Energtica
Introduccin.
Primeras instrucciones con MATLAB.
Entorno de trabajo.
Vectores.
Matrices.
Ficheros con extensin M.
Operaciones lgicas y de relacin.
Control de flujo.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
Funciones de MATLAB.
Grficos en dos dimensiones.
Grficos en tres dimensiones.
Anlisis de datos.
Polinomios.
Ajuste de datos e interpolacin.
Ecuaciones diferenciales con MATLAB.
Sistemas de control.
Anlisis de sistemas dinmicos con SIMULINK.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
Qu es MATLAB?
MATLAB es un entorno de programacin orientado
al clculo numrico. Especialmente indicado para:
Anlisis numrico.
Clculo matricial.
Procesamiento de seales.
Grficos.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
MATLAB, TOOLBOXES,
SIMULINK y BLOCKSETS
SIMULINK
MATLAB Toolboxes
ENTORNO GRFICO
ENTORNO CLSICO
Blocksets
Introduccin a MATLAB:
Aplicaciones a la ingeniera
Abriendo el programa..
Haced clic sobre el icono
Se abre la siguiente ventana:
Command Window
Launch Pad
Command History
Introduccin a MATLAB:
Aplicaciones a la ingeniera
Introduccin a MATLAB:
Aplicaciones a la ingeniera
ans
7
Variables en MATLAB
MATLAB permite utilizar en cualquier
momento variables:
>> eCinetica=10
>> ePotencial=20
>> eTotal=eCinetica+ePotencial
Introduccin a MATLAB:
Aplicaciones a la ingeniera
Caractersticas de las
variables
No es necesario definir previamente las
variables.
Son sensibles a maysculas o minsculas.
Mximo nmero de caracteres: 31
Deben comenzar por letra, seguida de
letra, nmero o guin de subrayado.
NO SE PUEDEN UTILIZAR SIGNOS DE
PUNTUACIN
Introduccin a MATLAB:
Aplicaciones a la ingeniera
10
Visualizacin de las
variables
Desde Command Window:
>> whos
Name
Size
Bytes
Class
eCinetica
1x1
8 double array
ePotencial
1x1
8 double array
eTotal
1x1
8 double array
Grand total is 3 elements using 24 bytes
Desde Workspace:
Introduccin a MATLAB:
Aplicaciones a la ingeniera
11
Eliminando variables
clear nombreVariable
clear all
Comentarios y signos de
puntuacin
12
EJERCICIO 1
Calcular el valor de la resistencia del
circuito, conocidas las medidas de tensin y
corriente. (V=10 V, A= 20 A).
Calcular la
potencia elctrica
disipada.
Observe las
variables utilizadas
Introduccin a MATLAB:
Aplicaciones a la ingeniera
13
Funciones trigonomtricas:
cos, sin, tan, acos, etc.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
14
Formato
format:
short formato de coma fija con 4
decimales (opcin por defecto)
long formato de coma fija con 15
decimales
rat Aproxima por un nmero racional
long e Notacin cientfica 15 decimales
short e Notacin cientfica 4 decimales
hex Hexadecimal
Introduccin a MATLAB:
Aplicaciones a la ingeniera
15
16
Funciones de redondeo
fix
floor
ceil
round
ms
sign
Introduccin a MATLAB:
Aplicaciones a la ingeniera
17
Entorno de trabajo
Command Window
Launch Pad
Command History
Introduccin a MATLAB:
Aplicaciones a la ingeniera
18
Workspace
Current Dirtectory
Introduccin a MATLAB:
Aplicaciones a la ingeniera
19
Ayuda en MATLAB
Desde el espacio de trabajo:
help NombreFuncion
Probad: help sin
Seleccionando Help en el escritorio
de MATLAB
Introduccin a MATLAB:
Aplicaciones a la ingeniera
20
Vectores
X= 0 0.1
>>x=linspace(primero,ultimo,numeroElementos);
>>x=linspace(0,2*pi,21);
>>x=logspace(10ValorInicial,10ValorFinal,numElement)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
21
Manipulacin de Vectores
X= 0 0.1
X= 0 0.1
length(X)
size(X)
22
Introduccin a MATLAB:
Aplicaciones a la ingeniera
23
Grficos simples
Grficos 2D:
t=[0:.1:2*pi];x=sin(t);y=cos(t);
plot(t,x)
plot(t,x,t,y);
Grficos 3D:
plot3(t,x,y)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
24
EJERCICIO 2
Descomposicin de una funcin
cuadrada peridica en series de Fourier:
t=[-2:.01:2];
w=2*pi;
x1=cos(w*t);
x2=-cos(3*w*t)/3;
x3=cos(5*w*t)/5;
x4=-cos(7*w*t)/7;
x=(x1+x2+x3+x4);
xFin=(4/pi)*x;
plot(t,xFin) Introduccin a MATLAB:
Aplicaciones a la ingeniera
25
MATRICES
1
A=
A(:,1)
2
4
8
3
5
9
6 A(2,3)
26
EJERCICIO 3
Construir las matrices A y B,
conocidas las matrices C y D.
C=[1 2 3];D=[4;5;6];
A= 1 2 3
B= 1 4 3 6
456
2525
321
3614
C=[1 2 3];D=[4;5;6];
A=[C;D;C(3:-1:1)];
B=[C D]
B=[B Introduccin
B(3:-1:1,:)]
a MATLAB:
Aplicaciones a la ingeniera
27
Matrices especiales
Introduccin a MATLAB:
Aplicaciones a la ingeniera
28
Manipulacin de matrices
A=[1 2 3;4 5 6;7 8 0];
Probad las
siguientes
instrucciones
rot90(A)
fliplr(A)
flipud(A)
triu(A)
tril(A)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
29
30
Ficheros *.M
Son grupos de instrucciones de
MATLAB que se ejecutan en bloque.
Evitan realizar tareas repetitivas.
Para ejecutar este fichero, basta
con llamarlo (sin extensin!) desde
el Espacio de Trabajo.
Es un fichero ASCII pero MATLAB
dispone de un editor propio.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
31
Ficheros *.M
Introduccin a MATLAB:
Aplicaciones a la ingeniera
32
Ficheros *.M
Introduccin a MATLAB:
Aplicaciones a la ingeniera
33
Operaciones lgicas y de
relacin
Vector=[1 2 3 4 5 6];
Vector>3
Vector==2
(Vector>3)&(Vector<6)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
34
Control de flujo
Bucles for-end. Repiten un grupo de
instrucciones un nmero fijo de veces:
for n=1:4
x(n)=n.*n;
end;
NO UTILIZAR i,j como ndices!
Introduccin a MATLAB:
Aplicaciones a la ingeniera
35
Control de flujo II
Bucles while-end. Repiten un
grupo de instrucciones hasta que
se cumpla una condicin:
a=0;
for a<10
a=a+1;
end;
Introduccin a MATLAB:
Aplicaciones a la ingeniera
36
t=0:.1:2*pi;
Y=sin(t);Z=Y;
for n=1:length(t)
if Y(n)<=0
Z(n)=0;
end;
end;
plot(t,Y,t,Z);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
37
Creacin de Funciones
Similares a los archivos *.M
Se comunican con MATLAB a travs de
las variables que se pasan a la funcin.
Su estructura es:
function[VarSalida]=NombrFun(VarEntrada)
Se edita la funcin con el editor de archivos
*.M y se graba. El nombre de la funcin,
NombrFun, y el nombre del archivo deben
coincidir.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
38
Creacin de Funciones II
El nombre est limitado a 31 caracteres y debe comenzar por
una letra.
El nombre no es sensible a las letras maysculas /
minsculas, en Windows.
La primera lnea: DECLARACIN DE FUNCIN (debe contener
la palabra function).
Las siguientes lneas son comentarios y sirven para explicar
el funcionamiento cuando se solicita a travs de help
NombrFun.
Las variables definidas dentro de una funcin son locales.
Para acceder a ellas desde el espacio de trabajo, hay que
definirlas como variables globales:
global Variable1 Variable2
Se pueden agrupar para formar una TOOLBOX personalizada.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
39
Ejemplo Creacin de
Funciones
%
%
%
%
%
%
Funcion CUBO
Esta funcion eleva al cubo cualquier escalar,
vector o matriz.
Jesus Fraile Ardanuy
function y=cubo(x)
y=x.*x.*x;
Introduccin a MATLAB:
Aplicaciones a la ingeniera
40
Ejemplo Creacin de
Funciones (II)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
41
Ejemplo Creacin de
Funciones (III)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
42
Grficos
Introduccin a MATLAB:
Aplicaciones a la ingeniera
43
Grficos 2 dimensiones
La instruccin principal es plot.
x=linspace(0,2*pi,20);
y=sin(x);z=cos(x);
plot(x,y,b:,x,z,rv);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
44
Grficos 2 dimensiones
Tratamiento del TEXTO sobre los grficos.
xlabel(EjeX);
ylabel(EjeY);
title(Curvas);
grid
text(pX,pY,Texto)
gtext(Texto);
legend(Curva1,Curva2)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
45
Grficos 2 dimensiones
Utilizacin de la ventana grfica de MATLAB:
Introduccin a MATLAB:
Aplicaciones a la ingeniera
46
Grficos 2 dimensiones
Modificacin de:
Tipo de letra.
Tamao de letra.
Anchura de las lneas.
Letras griegas.
t=0:.05:2*pi;
w=1;
x=cos(w*t);
plot(t,x,r,LineWidth,4);
title(Grafica x_1 con \omega=1);
text(2,0.2,COS,fontname,arial
,fontsize,14);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
47
Grficos 2 dimensiones
hold on/off
Introduccin a MATLAB:
Aplicaciones a la ingeniera
48
Grficos 2 dimensiones
semilogx
semilogy
loglog
x=[0.1:.1:2*pi];
y=sin(x);
z=2+sin(5*x);
subplot(2,1,1);
semilogx(x,y);
subplot(2,1,2);
loglog(x,z);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
49
Grficos 2 dimensiones
Grficos polares:
T=0:0.01:2*pi;
R=sin(2*T).*cos(2*T);
polar(T,R);
T=0:pi/90:2*pi;
R=2*sin(T).^2;
polar(T,R);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
50
Grficos 2 dimensiones
Otras instrucciones de dibujos en dos dimensiones:
pie Representa grficos de tarta.
bar Grficos de barras.
bar3 Grficos de barras en 3 D.
stairs
Grficos de escalera.
hist Histogramas.
plotyy
Representa en la misma grfica
2 funciones con el mismo eje X.
Complejos:
compass
feather
Introduccin a MATLAB:
Aplicaciones a la ingeniera
51
Grficos 3 dimensiones
plot3(x,y,z)
t=0:0.2:10*pi;
E=exp(-0.05*t);
Dib1=E.*sin(t);
Dib2=E.*cos(t);
plot3(Dib1,Dib2,t);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
52
EJERCICIO 4
Dibujar
la
siguiente
curva
tridimensional. Con los siguientes
parmetros a=10, b=1,c=0.3, 0 t2.
a=10;
b=1;
c=0.3;
t=0:.05:2*pi;
x=b*cos(t);
y=b*sin(t);
z=c*cos(a*t);
plot3(x,y,z);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
53
Dibujo de superficies
Evala la funcin Z=f(x,y).
La fila i-sima de la matriz Z ser f(x,y(i)),
donde se mantiene constante la variable x
durante toda la evaluacin de la fila.
Del mismo modo, la columna j-sima
corresponde a f(x(j),y), donde se mantiene
constante la variable y.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
54
Dibujo de superficies
Z=f(x,y)
x = [-2 1 0]
y=[1 2 3]
Z debe evaluarse en:
Z=
x
Constante la variable
Constante la
Introduccin a MATLAB:
Aplicaciones a la ingeniera
55
Dibujo de superficies
Dados los mrgenes de variacin de
las variables independientes x e y, es
necesario construir una red de pares
a travs de la funcin:
[X,Y]=meshgrid(x,y)
Y=
X=
x=[-2 1 0]
y=[1 2 3]
[X,Y]=meshgrid(x,y)
-2
-1
-2
-1
-2
-1
56
EJERCICIO 5
Dibujar
mediante
una
malla
tridimensional la superficie generada
por la expresin:
en el intervalo
(7.5, +7.5).
x=-7.5:.5:7.5;y=x;
Z=sin(R)./R;
[X,Y]=meshgrid(x,y);
mesh(X,Y,Z);
R=sqrt(X.^2+Y.^2)+eps;
title('Sombrero
mexicano');
Introduccin a MATLAB:
Aplicaciones a la ingeniera
57
EJERCICIO 5
Z=sin(R)./R;
mesh(X,Y,Z);
title('Sombrero
mexicano');
Introduccin a MATLAB:
Aplicaciones a la ingeniera
58
Superficies
El color de la superficie est relacionado con el
valor de la variable Z (azul, valores pequeos y
rojo para los mayores).
meshc(Z)
Dibuja la malla
tridimensional y
las curvas de nivel.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
59
Superficies
waterfall(Z)
Genera la malla
tridimensional con las
lneas dispuestas a lo
largo del eje x.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
60
[X,Y,Z]=sphere(15);
mesh(X,Y,Z);
hidden on;
axis square;
title('Esfera opaca');
Introduccin a MATLAB:
Aplicaciones a la ingeniera
61
cylinder(n)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
62
Superficies
tridimensionales slidas
surf(Z)
x=-1.5:.1:1.5;y=x;
[X,Y]=meshgrid(x,y);
Z=sqrt(9-X.^2-Y.^2);
figure(1);
surf(Z);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
63
Tabla de colores
colormap(hot)
colormap(cool
)
colormap(pink
)
colormap(flag
)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
64
Introduccin a MATLAB:
Aplicaciones a la ingeniera
65
Introduccin a MATLAB:
Aplicaciones a la ingeniera
66
Grficos de contorno
Muestran las lneas de nivel en 2 y 3 D.
contour(X,Y,Z,numLin) contour3(X,Y,Z,numL)
[X,Y,Z]=peaks(25);
contour(X,Y,Z,20);
[X,Y,Z]=peaks(25);
contour3(X,Y,Z,20);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
67
68
69
Anlisis de datos
MATLAB dispone de una serie de
instrucciones para realizar anlisis
estadsticos bsicos.
Adems, dispone del Statistics
Toolbox.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
70
EJERCICIO 6
Se dispone de la medida de la cotizacin (media mensual) de
la bolsa en los ltimos 12 meses. Para introducir las
funciones especficas de anlisis de datos y como se
desconoce los valores exactos de los niveles burstiles, se
crea un vector con valores aleatorios comprendidos entre
6000 y 8000
meses=1:12;
aleat=rand(1,12)*2e3;
bolsa=aleat+6e3;
plot(meses,bolsa);
title('Cotizacin');
xlabel('Meses');
ylabel('Valor');
Introduccin a MATLAB:
Aplicaciones a la ingeniera
71
Instrucciones bsicas de
estadstica
Valor medio
mean(bolsa)
Desviacin tpica
std(bolsa)
Mximo
max(bolsa)
Mnimo
min(bolsa)
Suma acumulada
cumsum(bolsa)
Histogramas
hist(bolsa)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
72
Polinomios
MATLAB representa los polinomios
como vectores cuyos elementos
son los coeficientes del polinomio
dispuestos en orden descendente.
Polinomio=[1 2 3 4 5];
Introduccin a MATLAB:
Aplicaciones a la ingeniera
73
Polinomios
Races:roots(polinomio)
Construccin del polinomio a partir
de sus races: poly([raices])
p1=-1;
p2=-3;
p3=-3+4*j;
p4=conj(p3);
polinomio2=poly([p1 p2 p3 p4])
Introduccin a MATLAB:
Aplicaciones a la ingeniera
74
Suma:
del
75
polNum=[1 4 3 1];
polDer=[1,0,-1];
[r,p,k]=residue(polNum,polDer)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
76
Introduccin a MATLAB:
Aplicaciones a la ingeniera
77
Ajuste de datos e
interpolacin
Ajuste de curvas mediante polinomios:
Funci
n
polyfit(x,y,ordenPolinomio)
x=-3:.5:3;
y=3*x.^2+2*x+2*randn(1,length(x));
Ruido aleatorio
aadido
n1=1;
n2=2;
pol1=polyfit(x,y,n1)
pol2=polyfit(x,y,n2)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
78
79
Interpolacin
unidimensional
Tiempo
9
9.5
10
horas= 1:12;
temps =[ 5 8 9 15 25 29 31 30 22 25 27 24 ];
temperatura=interp1(horas,temps, 9.5)
Introduccin a MATLAB:
Aplicaciones a la ingeniera
80
Ecuaciones Diferenciales
La resolucin de ecuaciones
diferenciales con MATLAB se realiza en
tres
pasos:mediante una funcin de
Se define,
MATLAB, la ecuacin diferencial.
Se resuelve la ecuacin diferencial,
empleando uno de los mtodos de
integracin numrica disponibles.
-Se representa la evolucin temporal
de las variables de estado.
Introduccin a MATLAB:
Aplicaciones a la ingeniera
81
Resolucin de ecuaciones
diferenciales
Se quiere resolver el sistema de ecuaciones
diferenciales ordinarias siguientes:
Aplicaciones a la ingeniera
82
Resolucin de ecuaciones
diferenciales (II)
SEGUNDO PASO. RESOLUCIN DE LA FUNCIN ec1.m
Tini=0;
Tfin=10;
Cond_Inic=[1;1]; % Las cond. ini. son un vector
[t,y]=ode23(@ecuacion1,[Tini,Tfin],Cond_Inic);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
83
Resolucin de ecuaciones
diferenciales (III)
TERCERO PASO. DIBUJANDO las variables de ec1.m
x_t=y(:,1);
y_t=y(:,2);
plot(t,x_t,'b',t,y_t,'r');
legend('x(t)','y(t)');
xlabel('Tiempo');
Introduccin a MATLAB:
Aplicaciones a la ingeniera
84
Resolucin de ecuaciones
diferenciales (IV)
DIBUJANDO el plano de fase de ec1.m
plot(x_t,y_t,'b','LineWidth',2);
xlabel('x(t)');ylabel('y(t)');
title('Plano de fase de la ec. dif.');
Introduccin a MATLAB:
Aplicaciones a la ingeniera
85
EJERCICIO 7
Resolver la ecuacin del atractor de Lorentz definida
por el sistema de EDOs:
Introduccin a MATLAB:
Aplicaciones a la ingeniera
86
EJERCICIO 7 (resolucin)
function yprima=caos(t,u)
yprima=zeros(3,1);
x=u(1);
y=u(2);
z=u(3);
xprima=-3*(x-y);
yprima=-x*z+26.5*x-y;
zprima=x*y-z;
yprima=[xprima;yprima;zprima];
Introduccin a MATLAB:
Aplicaciones a la ingeniera
87
EJERCICIO 7 (resolucin)
Tini=0;Tfin=20;
Cond_Inic=[0;1;0];
[t,y]=ode23(@caos,[Tini,Tfin],Cond_Inic);
x_t=y(:,1);
y_t=y(:,2);
z_t=y(:,3);
plot3(x_t,y_t,z_t);
Introduccin a MATLAB:
Aplicaciones a la ingeniera
88
EJERCICIO 8
Este ejemplo de ecosistema fue propuesto por el italiano Vito Volterra
(1860-1940). Considrense dos poblaciones; una de conejos (c(t)) y otra
de zorros (z(t)), que estn relacionadas mediante las siguientes
ecuaciones diferenciales:
Introduccin a MATLAB:
Aplicaciones a la ingeniera
89
EJERCICIO 8 (resolucin)
function
yprima=ecosistema(t,y)
alfa=0.01;
yprima=zeros(2,1);
c=y(1);
z=y(2);
yprima(1)=2*c-alfa*c*z;
yprima(2)=-z+alfa*c*z;
Introduccin a MATLAB:
Aplicaciones a la ingeniera
90
EJERCICIO 8 (resolucin)
[t,y]=ode23(@ecosistema,[0,25],[300;150]);
conejos=y(:,1);
zorros=y(:,2);
plot(t,conejos,'b',t,zorros,'r');
legend('Conejos','Zorros');
Introduccin a MATLAB:
Aplicaciones a la ingeniera
91