Documentos de Académico
Documentos de Profesional
Documentos de Cultura
cursoMATLAB PDF
cursoMATLAB PDF
PROGRAMACIN DE
MATLAB
2010
CAPTULO I
PRIMEROS PASOS CON MATLAB
1.1 INTRODUCCIN.El nombre del programa Matlab viene de Matrix Laboratory (Laboratorio de Matrices),
para Matlab todos los objetos son considerados como matrices.
Este programa es una herramienta de clculo, fundamentalmente, numrico. Aunque
tambin puede realizar clculos simblicos.
El entorno de trabajo fundamental de Matlab es el siguiente:
Donde se presentan:
La ventana de comandos (Command Window) que es donde se trabaja de manera
directa, los comandos son introducidos despus del apuntador (prompt) >>
El historial de comandos (Command History), muestra los comandos utilizados en
por orden.
La ventana de las carpetas actuales (Current Folder).
Se debe quitar la marca de Use system colors, luego en Text se selecciona el color blanco y
en Background. Luego se hace clic en Apply y luego en OK.
1.2 MANEJO FUNDAMENTAL.1.2.1 Entrada de datos y salida de resultados.Matlab funciona como una calculadora de lgica algebraica. Todo resultado de operaciones
es almacenado en la variable ans (answer = respuesta).
>> 45*76
ans =
3420
>> 2+3
ans =
5
Si es que no se quisiera mostrar los resultados, se debe poner un punto y coma al final de la
lnea.
>> 78/3;
>>
El resultado es almacenado internamente, pero no se lo muestra por pantalla. Esto es muy
til cuando no queremos que se muestren resultados intermedios, o que se llene la pantalla
con nmeros que son irrelevantes.
y z
4-D
1x3
192 double
24 double
Attributes
1.3 GUARDADO DEL ESPACIO DE TRABAJO.Una vez que se sale de la sesin de Matlab, todas las variables que se hayan creado son
borradas de la memoria. Si es que queremos recuperar todas las variables y el espacio de
trabajo, este debe ser guardado. Para ello se utiliza el men File, luego Save Workspace As.
Para abrir el espacio de trabajo, guardado con anterioridad, se utiliza File luego Open
CAPTULO II
MANEJO DE MATRICES
2.1 INTRODUCCIN.Una matriz es un arreglo rectangular de elementos. Un caso particular de matriz es un
vector, cuando tiene una sola dimensin. Puede haber vectores fila o vectores columna.
Una forma de introducir una matriz, en Matlab, es utilizando corchetes y dentro de ellos las
filas separadas por ; (punto y coma) y las columnas separadas por espacios.
>> a=[1 2 3;4 5 6;7 8 9]
a=
1
4
7
2
5
8
3
6
9
inicio:paso:final
>> a=[1:2:20]
a=
1 3 5 7
>> b=[-1:.5:1;-1:.5:1]
b=
-1.0000 -0.5000
-1.0000 -0.5000
11
0
0
13
15
0.5000
0.5000
17
19
1.0000
1.0000
Tambin se puede modificar un elemento de una matriz mediante los ndices de la siguiente
manera
>> b(2,1)=8
b=
-1.0000 -0.5000
0 0.5000 1.0000
8.0000 -0.5000
0 0.5000 1.0000
Tambin se puede acceder a un elemento de una matriz mediante un solo ndice que se
constituye en una referencia continua.
8
0 0.5000 1.0000
0 0.5000 1.0000
Matlab tiene incorporada una funcin de generacin de cuadrados mgicos, que no son otra
cosa que matrices cuadradas, que tienen la propiedad de que la suma de cada fila y cada
columna, asimismo que la suma de las diagonales dan un mismo nmero.
As por ejemplo:
>> magic(4)
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Estos cuadrados mgicos tienen siglos de antigedad, un ejemplo muy conocido de ellos
aparece en el grabado del alemn Alberto Durero llamado Melancola I, el cual se lo puede
ver tambin en Matlab, tecleando:
>> load durer;image(X);colormap(map);axis image
En esta imagen aparece un cuadrado mgico en la esquina superior derecha. Para ver el
detalle del mismo se puede teclear:
>> load detail;colormap(hot);image(X)
Que es la misma matriz mgica que presenta Matlab, pero con las columnas centrales
intercambiadas, esto lo hizo Durero, para que aparezca en la parte inferior la fecha en la que
se realiz el grabado 1514.
10
2.2 OPERACIONES FUNDAMENTALES CON MATRICES.2.2.1 Borrar una fila o una columna de una matriz.De la matriz
>> a=magic(4)
a=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
borrar la cuarta fila.
>> a(4,:)=[]
a=
16 2 3 13
5 11 10 8
9 7 6 12
Si ahora se quiere borrar la tercera columna.
>> a(:,3)=[]
a=
16 2 13
5 11 8
9 7 12
Los dos puntos indican todo, lo que quiere decir que se hace referencia a toda la fila o a
toda la columna.
2.2 Aadir una fila o una columna a una matriz.Por ejemplo en la siguiente matriz aumentar una columna con el elemento a(3,6)=8
>> a=magic(5)
a=
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
11
>> a(3,6)=8
a=
17 24 1 8 15 0
23 5 7 14 16 0
4 6 13 20 22 8
10 12 19 21 3 0
11 18 25 2 9 0
Como se puede apreciar, los elementos faltantes son llenados con ceros.
2.3 Sumar los elementos de una matriz.Se utiliza el comando sum, el cual realiza la suma de las columnas de la matriz. Si se aplica
sobre un vector, realiza la suma de todos los elementos del mismo.
As para el siguiente vector:
>> b=[1:5]
b=
1 2 3 4 5
>> sum(b)
ans =
15
Como ejemplo comprobaremos que la matriz mgica, realmente es mgica.
>> a=magic(4)
a=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
La suma de las columnas se la realiza mediante
>> sum(a)
ans =
34 34 34 34
La suma de las filas se la realiza transponiendo la matriz (una matriz transpuesta es cuando
las filas se toman como columnas y viceversa). Para transponer una matriz, se pone un
apstrofe sobre el nombre de la misma a
>> sum(a')
ans =
34 34 34 34
12
13
3
7
11
4
8
12
2.6 Replicado de una matriz.Para esto se utiliza la funcin repmat(matriz,m,n), replica la matriz m veces en las filas y
n veces en las columnas,de la siguiente manera:
Replicar la matriz
1 2
2 3
Dos veces en las filas y tres veces en las columnas
>> repmat([1 2;2 3],2,3)
ans =
1
2
1
2
14
2
3
2
3
1
2
1
2
2
3
2
3
1
2
1
2
2
3
2
3
0
1
0
0
0
0
1
0
0
0
0
1
2.8 Suma de matrices.Para sumar dos matrices, estas deben ser del mismo tamao.
>> a=[1:4;5:8;9:12]
a=
1 2 3 4
5 6 7 8
9 10 11 12
Ahora la matriz b la construimos como el reverso de a, para eso
>> b=a(end:-1:1,end:-1:1)
b=
12 11 10 9
8 7 6 5
4 3 2 1
Luego las sumamos
>> a+b
ans =
13 13 13 13
13 13 13 13
13 13 13 13
2.9 Multiplicacin de matrices.Se debe cumplir que el nmero de columnas de la primera sea igual al nmero de filas de la
segunda, sin esta condicin no se pueden multiplicar dos matrices. El producto matricial no
es conmutativo. La matriz resultante tiene, como tamao, el nmero de filas de la primera
por el nmero de columnas de la segunda.
C(m*p)=A(m*n)*B(n*p)
15
2
5
3
6
>> b
b=
7 8
9 10
11 12
>> a*b
ans =
58 64
139 154
2.10 Inversa de una Matriz.Se calcula mediante la funcin inv(matriz). Solo existe la inversa de matrices cuadradas,
siempre y cuando estas no sean singulares. Se define una matriz inversa como aquella que
multiplicada por su matriz original da como resultado la matriz identidad (este es uno de los
pocos caso en los que se admite la propiedad conmutativa en la multiplicacin).
A-1*A=A*A-1=I
Calcular la inversa de la siguiente matriz y comprobar el resultado.
>> a=magic(5)
a=
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> b=inv(a)
b=
-0.0049 0.0512
0.0431 -0.0373
-0.0303 0.0031
0.0047 -0.0065
0.0028 0.0050
16
0 0.0000 -0.0000
0 0.0000
0
1.0000 0.0000 -0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
>> b*a
ans =
1.0000 -0.0000
0 -0.0000 0.0000
0.0000 1.0000
0 0.0000 0.0000
0 0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 -0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 0.0000 1.0000
2.11 Determinante de una Matriz.Se calcula mediante det(matriz), el resultado es un nmero. El determinante solo existe
para matrices cuadradas, siempre y cuando no sean singulares.
Calcular el determinante de la matriz:
>> a=magic(3)
a=
8 1 6
3 5 7
4 9 2
>> det(a)
ans =
-360
2.12 Reduccin escalonada por filas (reduced row echelon form).Se realiza mediante la funcin rref(matriz). Trabaja sobre matrices rectangulares o
cuadradas.
>> rref(magic(4))
ans =
1 0 0 1
0 1 0 3
0 0 1 -3
0 0 0 0
17
18
0.4898
0.4456
>> randn(3,4)
ans =
0.6277 -0.8637 -1.1135 -0.7697
1.0933 0.0774 -0.0068 0.3714
1.1093 -1.2141 1.5326 -0.2256
2.17 Resolucin de sistemas de ecuaciones lineales.Un sistema de ecuaciones lineales tiene una matriz de coeficientes A, un vector de
incgnitas y un vector de trminos independientes.
AX=B
Para resolver un sistema de ecuaciones lineales se pueden utilizar dos mtodos.
1) X= A-1 B
2) X=A\B
As, por ejemplo, resolver el sistema
19
x1-4 x2 + x3=10
3x1+3x2- 2x3=20
x1+6x2+3x3=30
de las tres formas, para ello primero se guardan los coeficientes n las variables A y B
>> A=[1 -4 1;3 3 -2;1 6 3];B=[10;20;30];
Primera forma
>> X=inv(A)*B
X=
9
1
5
Segunda forma
>> X=A\B
X=
9.0000
1.0000
5.0000
2.18 Operaciones elemento por elemento.Se pueden realizar las operaciones elemento por elemento si es que despus del nombre de
la matriz se pone un punto (.)
As, por ejemplo, si se tienen las siguientes matrices
>> a=[1 2 3;4 5 6;7 8 9];b=[2 3 2;2 3 2;2 3 2];
>> a.*b
ans =
2 6 6
8 15 12
14 24 18
Si no se hubiese puesto el punto, se habra realizado la multiplicacin tradicional de
matrices.
20
1
2
3
4
1
2
3
4
1
2
3
4
2.19 Tabla resumen de operaciones.A continuacin se muestra una tabla que resume algunas de las operaciones con vectores, si
es que se tienen los vectores columna x y y con los siguientes valores
21
22
2.20 Exportar e importar a EXCEL.Para exportar a Excel se utiliza el comando xlswrite(archivo,matriz,hoja,rango). Para
importar de Excel se utiliza el comando xlsread(archivo,hoja,rango).
As, por ejemplo, si se quiere exportar la matriz mgica de tamao 5 a una hoja Excel
llamada magia y ubicada en la unidad c:
>> a=magic(5);
>> xlswrite('c:\magia.xlsx',a)
Si se quiere exportar en una hoja especfica y en un rango especfico
>>xlswrite('c:\magia.xlsx',a,'Hoja2','C3:G7')
Ahora si es que queremos importar a la variable b los datos de la hoja2 del archivo amgia
de Excel, anteriormente guardado, se procede:
>> b=xlsread('c:\magia.xlsx','Hoja2','C3:G7')
b=
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
2.3 EJEMPLOS DE APLICACIONES.Ejemplo2.1: Crear una matriz de 4*4 con nmeros aleatorios entre 15 y 85.
>> 15+fix(70*rand(4))
ans =
69 21 55 72
42 24 19 16
31 80 31 18
43 81 39 26
Ejemplo2.2: Dada una matriz mgica de 5*5 sumar todos los elementos de las columnas
impares.
23
24
60
27
61
72
23
12
30
32
43
51 24
9 46
27 97
81 55
3 53
93 24
74 49
49 63
58 68
>> find(a==max(max(a)))
ans =
50
25
CAPTULO III
GRFICOS
3.1 INTRODUCCIN.Matlab tiene muchas rutinas de alto nivel para grficas. En Matlab las variables
independientes no son generadas de manera automtica, sino que el usuario debe
generarlas.
Los grficos que genera Matlab pueden ser clasificados como en dos y tres dimensiones.
Si se desea mantener un grfico anterior y sobreponer un grfico posterior, se debe tecleat
el comando
>> hold on;
Se mantienen los grficos anteriores, hasta que se teclea
>>hold off;
3.2 GRFICOS 2D.3.2.1 Funcin plot.Esta es la ms usada y simple de las funciones grficas.
La sintaxis es la siguiente:
plot(Y)
plot(X1,Y1,...,Xn,Yn)
plot(X1,Y1,EspecLinea,...,Xn,Yn,EspecLinea)
plot(X1,Y1, EspecLinea,'NombrePropiedad',ValorPropiedad)
plot(axes_handle,X1,Y1, EspecLinea, 'NombrePropiedad',ValorPropiedad)
h = plot(X1,Y1, EspecLinea, 'NombrePropiedad',ValorPropiedad)
Los colores y tipos de lnea vienen dados segn las siguientes tablas:
y amarillo
m magenta
c cyan
r rojo
g verde
b azul
w blanco
k negro
--.
*
.
s
26
Continua
Lnea cortada
Lnea y punto
Estrellas
Puntitos
Cuadrados
crculos
Punteado
Marca
Mas
Tringulo hacia arriba
Tringulo hacia abajo
Tringulo a la derecha
Tringulo a la izquierda
Diamante
Pentagrama
Hexagrama
Ejemplo3.1:
>> x=0:pi/100:3*pi;y=sin(x);
>> plot(x,y,'k-','LineWidth',2);
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
Ejemplo3.2:
>> plot(x,y,'r:','LineWidth',3);
27
10
Ejemplo3.3: Graficar el seno y el coseno, con una rejilla, con un ttulo, una leyenda, una
etiqueta en x y una en y
>> x=0:pi/100:3*pi;y1=sin(x);y2=cos(x);
>> plot(x,y1,'r-',x,y2,'b--');legend('seno','coseno');title('Dos grficas, de 0 a 2\pi');xlabel('Eje
X');ylabel('Eje Y');grid on;
Dos grficas, de 0 a 2
1
seno
coseno
0.8
0.6
0.4
Eje Y
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
5
Eje X
10
Para que aparezca el smbolo se pone dentro de las comillas simples \pi
28
29
-1
-2
-3
-4
-3
-2
-1
Ejemplo3.6: Realizar un grfico, modificando los ejes y las marcas de los ejes.
> x = -pi:.1:pi;
y = sin(x);
plot(x,y)
set(gca,'XTick',-pi:pi/2:pi)
set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-pi
-pi/2
pi/2
pi
3.2.2 Funcin plotyy.Esta funcin grafica con el eje y tanto a la izquierda como a la derecha de la figura.
30
Ejemplo3.7:
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');
200
0.8
150
0.6
100
0.4
50
0.2
-50
-0.2
-100
-0.4
-150
-0.6
-200
10
12
14
16
18
-0.8
20
0.8
150
0.6
100
0.4
50
0.2
-50
-0.2
-100
-0.4
-150
-0.6
-200
10
12
14
16
18
-0.8
20
31
10
10
10
10
10
10
32
10
10
40
10
30
10
20
10
10
10
10
-1
10
10
10
10
33
120
60
0.8
0.6
150
30
0.4
0.2
180
210
330
240
300
270
3.2.6 Funcin compass.La funcin brjula, grafica flechas saliendo del origen. La sintaxis es:
compass(U,V)
compass(Z)
compass(...,EspecLinea)
compass(manejador_ejes,...)
h = compass(...)
Ejemplo3.12: Realizar la grfica tipo brjula de los valores propios de una matriz.
>> Z = eig(randn(20,20));
compass(Z);set(gcf,'Color',[1,1,1])
90
120
60
4
3
150
30
2
1
180
210
330
240
300
270
Ejemplo3.13:
>>line([0 1],[0 1],'Color','r','LineWidth',4)
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Ejemplo3.14:
>> x = -4:0.1:4;
y = randn(10000,1);
hist(y,x)
35
-4
-3
-2
-1
Ejemplo3.15: Cambiar el color del anterior grfico de manera que sea rojo con bordes
blancos.
>> h = findobj(gca,'Type','patch');
set(h,'FaceColor','r','EdgeColor','w')
450
400
350
300
250
200
150
100
50
0
-5
-4
-3
-2
-1
36
Ejemplo3.16:
>> x = -2.9:0.2:2.9;
bar(x,exp(-x.*x),'r')
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-3
-2
-1
Ejemplo3.17:
>> x = -2.9:0.2:2.9;
barh(x,exp(-x.*x),'b')
3
-1
-2
-3
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
37
Ejemplo3.18:
>> pie([1 2 1.4 4 1.5 3])
8%
23%
16%
11%
12%
31%
33%
28%
6%
38
Ejemplo3.20:
>> xdato = [2 2 0 2 5;
2 8 2 4 5;
8 8 2 4 8];
ydato = [4 4 4 2 0;
8 4 6 2 2;
4 0 4 0 0];
zdato = ones(3,5);
patch(xdato,ydato,zdato,'w')
8
7
6
5
4
3
2
1
0
40
indices =
1
2
2
5
2
3
4
5
1
4
4
8
4
6
7
8
1
7
7
11
7
9
10
11
12
11
11
14
11
9
13
14
coorde =
2.0000
1.0000
0
3.5000
2.5000
5.0000
5.0000
6.5000
8.0000
3.5000
6.5000
5.0000
10
4
4
5
6
7
7
8
9
10
10
11
12
13
13
14
15
5.0000
2.5000
0
3.0000
0.5000
1.0000
5.0000
3.0000
5.0000
7.0000
7.0000
9.0000
41
9.5000
7.5000
10.0000
3.2.15 Funcin step.Dibuja la respuesta paso de sistemas lineales invariantes en el tiempo. Su sintaxis es:
step
step(sys)
step(sys,t)
step(sys1,sys2,...,sysN)
step(sys1,sys2,...,sysN,t)
y = step(sys,t)
[y,t] = step(sys)
[y,t,x] = step(sys) % solamente par modelos en el espacio de estados
0.35
0.3
Amplitude
0.25
0.2
0.15
0.1
0.05
Time (sec)
42
0.25
Amplitude
0.2
0.15
0.1
0.05
-0.05
Time (sec)
3.2.17 Funcin rlocus.Grafica la localizacin de races de una funcin de transferencia. Su sintaxis es:
rlocus(sys)
rlocus(sys1,sys2,...)
Imaginary Axis
0.5
-0.5
-1
-1.5
-2.5
-2
-1.5
-1
-0.5
0.5
Real Axis
43
Ejemplo3.26:
>> subplot(2,2,[1 3])
subplot(2,2,2)
subplot(2,2,4)
1
0.9
0.8
0.6
0.8
0.4
0.7
0.2
0.6
0.5
0.5
0.5
1
0.4
0.8
0.3
0.6
0.2
0.4
0.1
0
0.2
0
0.5
Ejemplo3.27:
>> subplot(2,2,1);subplot(2,2,2);subplot(2,2,3);subplot(2,2,4)
44
3.3 GRFICOS 3D.3.3.1 Funcin mesh, meshc, meshz.Realiza la grfica en 3D de mallas. La funcin meshc, dibuja un contorno debajo de la
funcin. La funcin meshz dibuja una cortina debajo del dibujo en 3D.
Su sintaxis es:
mesh(X,Y,Z)
mesh(Z)
mesh(...,C)
mesh(...,'NombreProp',ValorPropiedad,...)
mesh(manejador_ejes,...)
meshc(...)
meshz(...)
h = mesh(...)
Ejemplo3.28:
>> [X,Y] = meshgrid(-2:.1:2, -2:.1:2);
Z = X .* exp(-X.^2 - Y.^2);
mesh(X,Y,Z)
0.5
-0.5
2
1
2
1
-1
-1
-2
-2
Se puede hacer una animacin en tiempo real de la grfica, haciendo clic en el cono
45
0.5
-0.5
2
1
2
1
-1
-1
-2
-2
0.5
-0.5
2
1
2
1
-1
-1
-2
46
-2
Ejemplo3.31:
>> [X,Y] = meshgrid(-2:.1:2, -2:.1:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
0.5
-0.5
2
1
2
1
-1
-1
-2
-2
Ejemplo3.32:
>>t = 0:pi/50:10*pi;plot3(sin(t),cos(t),t);grid on;axis square
47
40
30
20
10
0
1
0.5
1
0.5
-0.5
-0.5
-1
-1
3.3.4 Funcin surfl.Realiza una grfica de una superficie, con iluminacin basada en mapa de colores. Su
sintaxis es:
surfl(Z)
surfl(...,'light')
surfl(...,s)
surfl(X,Y,Z,s,k)
h = surfl(...)
Ejemplo3.33:
>> [x,y] = meshgrid(-3:1/8:3);
z = peaks(x,y);
surfl(x,y,z);
shading interp
colormap(gray);
axis([-3 3 -3 3 -8 8])
48
-5
2
0
-2
-3
-1
-2
3.3.5 Funcin contour.Esta funcion grafica los contornos o curvas de nivel de superficies en el espacio. Su sintaxis
es:
contour(Z)
contour(Z,n)
contour(Z,v)
contour(X,Y,Z)
contour(X,Y,Z,n)
contour(X,Y,Z,v)
contour(...,LineSpec)
contour(axes_handle,...)
[C,h] = contour(...)
Ejemplo3.34:
>>[X,Y] = meshgrid([-2:.25:2]);
Z = X.*exp(-X.^2-Y.^2);
contour(X,Y,Z,30)
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2
-1.5
-1
-0.5
0.5
1.5
49
0
0.1
0.1
-0 .3
0.1
-0 .3
-0
.4
-0 .2
0.1
0
0.2
-0 .2
0.1
-0.1
50
0.3
0.4
0.3
-0.1
-0 .1
100
0.2
150
-0 .1
.2
-0
0.
2
-0.1
200
50
100
150
200
250
50
-1.5
-1
-0.5
0.5
1.5
Ejemplo3.37:
>> [X,Y] = meshgrid([-2:.25:2]);
Z = X.*exp(-X.^2-Y.^2);
contour3(X,Y,Z,30)
surface(X,Y,Z,'EdgeColor',[.8 .8 .8],'FaceColor','none')
grid off
view(-15,25)
colormap cool
0.5
-0.5
2
-2
-2
-1.5
-1
-0.5
0.5
1.5
51
CAPTULO IV
CLCULO NUMRICO Y SIMBLICO
4.1 CLCULO NUMRICO.4.1.1 Funcin roots.Encuentra races de polinomios.
La funcin roots(c) calcula las races de los polinomios cuyos coeficientes son los
elementos del vector c. Si c tiene n+1 componentes el polinomio es c(1)*x^n + ... + c(n)*x
+ c(n+1).
Ejemplo4.1: Hallar las races de x4-3x3-x+6=0
>> roots([1 -3 0 -1 6])
ans =
2.8671
1.4273
-0.6472 + 1.0234i
-0.6472 - 1.0234i
4.1.2 Funcin fzero.Calcula las races de funciones continuas de una variable. La sintaxis es:
x = fzero(fun,x0)
x = fzero(fun,x0,opciones)
[x,fval] = fzero(...)
[x,fval,etiquetasalida] = fzero(...)
[x,fval,etiquetasalida,salida] = fzero(...)
53
160
170
120
-4
Debe hacerse notar que el resultado est normalizado para el coeficiente lder en el
denominador.
4.1.11 Funcin feedback.La sintaxis es:
sys = feedback(sys1,sys2)
56
58
de
estados
la
funcin
de
transferencia
D=
0
4.1.15 Funcin ss2tf.Esta funcin convierte dl espacio de estados a la funcin de transferencia. La sintaxis es:
[num,den] = ss2tf(A,B,C,D,iu)
iu se debe especificar para sistemas con ms de una entrada. Por ejemplo si el sistema tiene
tres entradas (u1,u2,u3), entonces iu debe ser o 1,2 o 3, donde 1 se refiere a u1, 2 a u2 y 3 a
u3.
NUM(s)
-1
H(s) = -------- = C(sI-A) B + D
DEN(s)
Del sistema:
x' = Ax + Bu
y = Cx + Du
Ejemplo4.20: Obtenga la funcin de transferencia del sistema definido por las siguientes
ecuaciones en el espacio de estados:
4.2 CLCULO SIMBLICO.Matlab realiza clculos simblicos, aunque no es la especialidad de este programa. Por lo
tanto presenta algunas limitaciones frente a otros programas como Mathematica, que si es
especialista en clculo simblico.
Para estas funciones, es necesario, declarar las variables como simblicas, esto se realiza
mediante el comando syms, seguido del nombre de la variable.
As, por ejemplo syms x,y declara como simblicas las variables x e y
4.2.1 Funcin limit.Encuentra el lmite de una funcin. Su sintaxis es:
limit(f,x,a) toma el lmite de la expresin simblica f como x -> a.
limit(f,a) usa symvar(f) como la variable independiente.
limit(f) usa a = 0 como el punto lmite.
limit(f,x,a,'right') or limit(f,x,a,'left') especifica la direccin del lmite lateral
60
v)
sym('v'))
n)
v, n)
n, v)
diff(expr)
deriva una expresin simblica expr con respecto a su variable libre (sin
ningn valor asignado) determinada por symvar.
diff(expr, v)
diff(expr, n)
diff(expr, v, n)
Ejemplo4.23:
>> syms x;
>> diff('sin(x)^3',x)
ans =
3*cos(x)*sin(x)^2
4.2.4 Funcin int.Integra una expresin simblica. Su sintaxis es:
int(expr)
int(expr, v)
int(expr, a, b)
int(expr, v, a, b)
int(expr) realiza la integral indefinida de expr con respecto a su variable simblica definida
por symvar.
int(expr, v) realiza la integral indefinida de expr con respecto a su variable simblica
definida por la variable escalar v.
61
>> sym x;
>> int((6*x+1)*sin(sqrt(3*x^2+x-1))/sqrt(3*x^2+x-1))
ans =
(-2)*cos((3*x^2 + x - 1)^(1/2))
4.2.5 Funcin collect.Rene coeficientes. La sintaxis es:
R = collect(S)
R = collect(S,v)
R = collect(S) regresa
arreglo S de polinomios.
R = collect(S,v)
Ejemplo4.26:
>>syms x;
>>expand((x-2)*(x-4))
ans =
x^2 - 6*x + 8
62
Ejemplo4.33:
>>[n, d] = numden(sym(4/5))
n=
4
63
d=
5
Ejemplo4.34:
>>syms x y;
>>[n,d] = numden(x/y + y/x)
n=
x^2 + y^2
d=
x*y
Ejemplo4.35:
>>syms a b
>>A = [a, 1/b]
[n,d] = numden(A)
A=
[a, 1/b]
n=
[a, 1]
d=
[1, b]
Ejemplo4.36:
>>syms x;
>>simplify(sin(x)^2 + cos(x)^2)
ans =
1
Ejemplo4.37:
>>syms a b c;
>>simplify(exp(c*log(sqrt(a+b))))
ans =
(a + b)^(c/2)
Ejemplo4.38:
>>S = [(x^2 + 5*x + 6)/(x + 2), sqrt(16)];
64
4.2.11 Funcin subs.Substituye simblicamente, en una expresin simblica o en una matriz. La sintaxis es:
R = subs(S)
R = subs(S, nuevo)
R = subs(S, viejo, nuevo)
Ejemplo4.40:
>>syms a b;
>>subs(a + b, a, 4)
ans =
b+4
Ejemplo4.41:
>>syms a b;
>>subs(cos(a) + sin(b), {a, b}, {sym('alpha'), 2})
ans =
sin(2) + cos(alpha)
Ejemplo4.42:
Suponiendo que a = 980 y C2 = 3 existen en el workspace.
The statement
>>y = dsolve('Dy = -a*y')
y=
C2/exp(a*t)
65
4.2.12 Funcin dsolve.Resuelve ecuaciones diferenciales ordinarias de manera simblica. La sintaxis es:
dsolve('eq1','eq2',...,'cond1','cond2',...,'v')
dsolve(...,'IgnoreAnalyticConstraints',value)
Ejemplo4.50:
>> syms t
>> laplace(sin(t))
ans =
1/(s^2 + 1)
Ejemplo4.51:
>> syms x t w;laplace(cos(t*w),x)
ans =
x/(w^2 + x^2)
Ejemplo4.52
>> g=laplace(exp(t))
g=
1/(s - 1)
>> ilaplace(g)
ans =
exp(t)
67
Ejemplo4.53:
>> ilaplace(t^(-sym(5/2)),x)
ans =
(4*x^(3/2))/(3*pi^(1/2))
Ejemplo4.54:
>> syms t;
>> fourier(1/t)
ans =
pi*(2*heaviside(-w) - 1)*i
Ejemplo4.55:
>> syms t w x
>> ifourier(w*exp(-3*w)*sym('heaviside(w)'))
ans =
1/(2*pi*(- 3 + x*i)^2)
Ejemplo4.56:
>> syms k n w z
>> ztrans(2^n)
ans =
z/(z - 2)
Ejemplo4.57:
68
Ejemplo4.58:
>> iztrans(z/(z-2))
ans =
2^n
Ejemplo4.59:
>> iztrans(exp(x/z),z,k)
ans =
x^k/factorial(k)
4.2.19 MuPad.Matlab 2010, tiene incorporada una caja de herramientas (toolbox), que contiene el
programa de lgebra computarizada (CAS) MuPad.
Para cargar esta caja de herramientas se debe teclear
>>mupad
Este programa permite realizar diferentes clculos simblicos y grficas muy elaboradas.
Tiene su propia sintaxis independiente de Matlab.
69
70
Sintaxis de MATLAB
Sintaxis de MuPAD
Asignar
:=
Lista de variables
whos
anames(All, User)
double(expression)
float(expression)
Supresin de la salida
[x11,x12,x13;
x21,x22,x23]
matrix([[x11,x12,x13],
[x21,x22,x23]])
{a,b,c}
cell array
set
Autocompletar
Tab
Ctrl-space
Igualdad, Desigualdad en
comparacin
==, ~=
=, <>
Inf
infinity
pi
PI
NaN
undefined
fix
trunc
log
ln
asin
arcsin
71
acos
arccos
atan
arctan
asinh
arcsinh
acosh
arccosh
atanh
arctanh
acsc
arccsc
asec
arcsec
acot
arccot
acsch
arccsch
asech
arcsech
acoth
arccoth
besselj
besselJ
bessely
besselY
besseli
besselI
besselk
besselK
lambertw
lambertW
sinint
Si
cosint
Ci
eulergamma
EULER
conj
conjugate
72
catalan
CATALAN
laplace
transform::laplace
ilaplace
transform::invlaplace
ztrans
transform::ztrans
iztrans
transform::invztrans
nb = mupad;
(Se puede usar cualquier otra variable en lugar de manejador nb) o abrir un archivo de
notebook existente, con
nb = mupad(nombre_archivo);
Para copiar una variable en el espacio de trabajo de Matlab a un notebook de MuPad con el
mismo nombre, se debe introducir, en la lnea de comandos de Matlab:
setVar(notebook_manejador,variable)
Por ejemplo, si nb es el manejador del notebook y z es la variable, se debe teclear
setVar(nb,z)
Para asignar una expresin a una variable en un notebook de MuPad se debe introducir, en
la lnea de comandos de Matlab
setVar(notebook_manejador,'variable',expresin)
73
syms x
setVar(nb,'z',exp(x) - sin(x))
Para copiar una variable simblica en un notebook de MuPad a una variable en el espacio
de trabajo en Matlab, se debe introducir en la lnea de comandos de Matlab
MATLABvar = getVar(notebook_manejador,'variable');
Por ejemplo, si nm es el manejador del notebook, z es la variable en el notebook de MuPad,
y u es la variable en el espacio de trabajo de Matlab, se introduce.
u = getVar(nb,'z')
74
CAPTULO V
PROGRAMACIN EN CDIGO M
5.1 INTRODUCCIN.El lenguaje de programacin de Matlab se llama cdigo M. Este lenguaje tiene las mismas
estructuras bsicas de programacin de cualquier otro lenguaje, es decir, bucles y
condicionales, entradas y salidas, manejo de funciones y procedimientos.
Para entrar al entorno de programacin se debe ir a File, New, Script
Otra forma es teclear en la lnea de comandos del espacio de trabajo de Matlab, la palabra
edit seguida del nombre que se le quiere asignar al programa.
>>edit primero
Luego aparece un mensaje que indica que el archivo no existe y pregunta si es que
debemos crearlo, a lo que se responde que s.
75
76
5.2 COMANDOS BSICOS DE PROGRAMACIN.Matlab tiene muy pocos comandos para la programacin, y son casi los mismos que los
utilizados en otros lenguajes de programacin, como C/C++.
5.2.1 Comando input.Este comando pide la introduccin de datos por parte del usuario. La sintaxis es:
Resulado_evaluado = input(mensaje)
Resultado_cadena = input(mensaje, 's')
Ejemplo5.1:
>> a=input('Introduzca el valor de la hipotenusa: ')
Introduzca el valor de la hipotenusa: 5
a=
5
Ejemplo5.2: Comprobar que el comando input permite evaluar una expresin.
>> a=input('Introduzca el valor de la hipotenusa: ')
Introduzca el valor de la hipotenusa: 8/9
a=
0.8889
Ejemplo5.3:
>> respuesta = input('Quiere mas? S/N : ', 's');
Quiere mas? S/N : s
>> respuesta
respuesta =
s
Ejemplo5.4: Utilizar un mensaje formateado mediante la funcin sprintf.
>> a=2;b=4;c=input(sprintf('Introduzca el dato numero %i, para la matriz %i : ',a,b))
Introduzca el dato numero 2, para la matriz 4 : 9
c=
9
La funcin sprintf da formato a una cadena de texto, donde se encuentren los indicadores
%i reemplaza el correspondiente valor, en este caso a y b. Esta funcin es muy similar a la
77
5.2.2 Comando disp.Este comando permite la salida por pantalla de algn resultado. Si lo expuesto est
almacenado en una variable, se muestra solo el contenido de la variable y no as el nombre
de la variable.
Ejemplo5.5:
>> a=5;disp(a)
5
5.2.3 Comando if-end, if-else-end.Este es comando condicional, por excelencia. Su sintaxis es:
if expresin, declaraciones, end
if expresion1
declaraciones1
elseif expresion2
declaraciones2
else
declaraciones3
end
(a^~b)v(a^c)
78
%_Programa bisiesto
%_Dante Pinto Jeria, P-10-X-2010
n=input('Introduzca un ao: ');
a=mod(n,4);b=mod(n,100);c=mod(n,400);
if (a && ~b) || (a && c)
disp(sprintf('El ao %i, NO es bisiesto',n));
else
disp(sprintf('El ao %i, ES bisiesto',n));
end
Este programa utiliza la funcin mod, que devuelve el residuo de la divisin de los dos
argumentos, as por ejemplo: mod(5,2) da como resultado 1.
79
80
-5
40
30
40
30
20
10
20
10
-5
40
30
40
30
20
10
20
10
81
0.5
0.5
-0.5
0
1
2
x
Grfico 3. Trazado con n = 70 puntos.
-1
0
1
2
x
Grfico 4. Trazado con n = 100 puntos.
0.5
0.5
-0.5
-2
82
-2
-2
-0.5
-1
-0.5
-1
0
x
-2
-1
0
x
Ejemplo5.11: Realizar un programa que forme una matriz mgica impar. Las matrices
mgicas son aquellas que suman el mismo nmero en filas, columnas y diagonales. Utilizar
el algoritmo de Loubere.
%_Programa para matriz mgica de nmeros impares
%_Dante Pinto Jeria, P-6-X-2010
clc;
n=input('Introduzca el numero impar, del tamao de la matriz: ');
n = floor(real(double(n(1))));
if mod(n,2)==0
disp('EL NUMERO INTRODUCIDO NO ES IMPAR');
else
M=rand(n)*0;c=1;I=n;J=ceil(n/2);M(I,J)=c;
while c<n^2,
c=c+1;I=I+1;J=J-1;
if I>n && J<1
I=I-2;J=J+1;
end
if I>n && J>0
I=1;
end
if I<=n && J==0
J=n;
end
if M(I,J)~=0
I=I-2;J=J+1;
end
M(I,J)=c;
end
disp(sprintf('La matriz mgica de tamao %g, es:',n));
disp(M);
end
La funcin floor da como resultado el redondeo hacia abajo, as por ejemplo, floor(5/2) da
como resultado 2. La funcin ceil da como resultado el redondeo hacia arriba, as por
ejemplo ceil(5/2) da como resultado 3.
La ejecucin de este programa da como resultado:
Introduzca el nmero impar, del tamao de la matriz: 5
La matriz mgica de tamao 5, es:
83
11
10
4
23
17
5.2.6 Comando switch.Este comando conmuta entre muchos casos basados en expresiones. Su sintaxis es:
switch switch_expr
case case_expr
declaracion, ..., declaracion
case {case_expr1, case_expr2, case_expr3, ...}
declaracion, ..., declaracion
otherwise
declaracion, ..., declaracion
end
Ejemplo5.12:
>> indicador= 'Bueno';
switch lower(indicador)
case {'bueno','regular'}
disp('Es aceptable')
case 'malo'
disp('Es malo')
case 'excelente'
disp('Es excelente')
otherwise
disp('No s qu es lo que sea')
end
La funcin lower convierte un a cadena de texto a minsculas. En contraposicin existe la
funcin upper, que convierte una cadena de texto a maysculas.
La ejecucin de este programa da como resultado:
Es aceptable
5.2.7 Comando error.Este comando expone un mensaje y aborta una funcin. Su sintaxis es:
error('msgIdent', 'msgString', v1, v2, ..., vN)
error('msgString', v1, v2, ...)
error('msgString')
error(msgStruct)
Las variables dentro de la funcin, son variables locales, es decir, solo tienen valides dentro
de la funcin, fuera de ella no valen nada. Si es que se deseara que las variables tengan
valor fuera de la funcin, se las debe declarar como variables globales en el entorno en el
que se llama a la funcin.
Para ello se utiliza el comando global seguido del nombre de la variable.
85
Aqu se utilizan las variables nargin y nargout, que indican el nmero de entradas y
salidas de la funcin respectivamente.
86
-1.5
-1
-0.5
0.5
1.5
>> [x0,y0]=bueno(2,-2,2,1)
x0 =
-2
-1
y0 =
4
87
CAPTULO VI
USO DE LA INTERFAZ GRFICA DE USUARIO
GUI
6.1 INTRODUCCIN.Matlab permite la creacin de interfaces grficas. De manera muy similar a lenguajes como
Visual Basic, Visual C, etc.
Par entrar al entorno de diseo de las GUI se pueden seguir cualquiera de los siguientes
pasos:
a) Ir a File, New y GUI.
88
89
En el cuadro de dilogo que aparece, se quita la marca del campo Add comments for newly
generated callback functions, luego se presiona Apply y OK. Esto evita que en el entorno de
programacin de los GUI, se generen comentarios de manera automtica. Estos
comentarios muchas veces confunden y llenan toda la pantalla.
Los componentes se arrastran de la paleta hacia el rea de diseo. Haciendo clic en el
componente y definiendo interactivamente el tamao y la posicin en el rea de diseo
mediante el ratn.
Haciendo clic con el botn derecho del ratn, sobre el componente, se despliega el cuadro
de dilogo siguiente:
90
Aqu se pueden realizar los cambios que se crean convenientes, como el color, el mensaje
desplegado, etc.
91
Tambin haciendo clic con el botn derecho del ratn sobre el componente se da acceso a
View Callbacks.
92
Debajo del la lnea resaltada se puede aadir el cdigo correspondiente, que estar asociado
a este componente.
Funcionamiento de la GUI.
Un programa GUI tiene dos partes: un archivo .m y un archivo .fig. El archivo .m es el que
contiene el cdigo fuente y el .fig tiene la parte grfica. Para ejecutar un programa GUI
simplemente se teclea, en el espacio de trabajo de Matlab, el nombre del mismo. As, por
ejemplo, si se ha guardado con el nombre de prueba.fig, simplemente se escribe:
>>prueba ENTER.
Intercambio de datos entre los elementos de la parte grfica y el cdigo fuente.
Los valores de las propiedades de los elementos (color, valor, posicin, etc.) y los valores
de las variables transitorias del programa se almacenan en una estructura, los cuales son
accedidos mediante un nico y mismo puntero para todos.
handles.output = hObject;
Si, por ejemplo, dentro de una subrutina una operacin dio como resultado una variable
valor, para utilizar esta variable desde el programa o desde otra subrutina se la debe guardar
de la siguiente manera:
93
handles.valor=valor;
guidata(hObject,handles);
La primera lnea aade la variable valor a la estructura de datos de la aplicacin apuntada por
handles y la segunda lnea guarda el valor.
6.2 EJEMPLOS DE PROGRAMACIN.Ejemplo6.1: Crear una interfaz grfica de usuario, que permita la entrada de una funcin de
x y realice la integral simblica de esa funcin.
Primero se crea la interfaz grfica con dos Static Text, un Edit Text y dos Push Button. Se
cambian los colores y nombres mediante el Property Inspector, para que quede de la
siguiente manera:
94
% --- Outputs from this function are returned to the command line.
function varargout = integra_OutputFcn(hObject, eventdata, handles)
95
Lo que est resaltado con amarillo es el cdigo que se aade, el resto es generado
automticamente por el programa.
La ejecucin de este programa da como resultado:
96
Ejemplo6.2: Realizar una GUI que simule el juego craps de lanzamiento de dos dados.
Las reglas del juego son las siguientes:
Un jugador gana si saca 7 u 11 en el primer lanzamiento de un par de dados, pierde si saca
2,3 12 en el primer lanzamiento. Sin embargo, si en el primer lanzamiento saca un
4,5,6,8,9 10 contina tirando el dado hasta obtener el nmero que obtuvo en el primer
lanzamiento o hasta obtener un 7. Si obtiene su primer nmero antes de obtener un 7, gana;
en otro caso pierde. Calcular la probabilidad que el jugador gana en dos o menos
lanzamientos.
Lo primero es disear la interfaz grfica, para ello se insertan en el rea de diseo cuatro
Static Text, dos Push Button. Y se cambian los colores y los textos como se muestra a
continuacin.
97
Luego, debajo del cdigo generado automticamente por el programa, se aade el cdigo
fuente asociado a cada uno de los Push Button, para ello usamos los View Callbacks
function lanzar_Callback(hObject, eventdata, handles)
global indi indi1 fin suma
if indi1==1
a=fix(rand(1,1)*6)+1;
b=fix(rand(1,1)*6)+1;
c=num2str(a);
set(handles.primero,'String',c);
d=num2str(b);
set(handles.segundo,'String',d);
fin=0;
set(handles.informe,'String','');
indi = indi+1;
if indi==1
if a+b==2 || a+b==3 || a+b==12
set(handles.informe,'String','PERDISTE');
fin=1;
indi1=0;
end
if a+b==7 || a+b==11
set(handles.informe,'String','GANASTE');
fin=1;
indi1=0;
end
if fin == 0
suma=a+b;
98
6.3 CREACIN DE PROGRAMAS EJECUTABLES .EXE.Matlab permite la creacin de programas con extensin .exe, estos programas pueden
ejecutarse fuera del entorno de Matlab.
Para esto se hace uso del comando mcc, desde la lnea de comandos de Matlab. Por
ejemplo, si se quiere que sea ejecutable el programa integra, se escribe:
99
CAPTULO VII
USO DE SIMULINK
7.1 INTRODUCCIN.Simulink es un programa aadido a Matlab. Sirve para programar visualmente un sistema
dinmico (el cual est gobernado por ecuaciones diferenciales) y observar los resultados.
Simulink est conformado por bibliotecas de bloques de construccin, estos bloques se
conectan unos con otros a travs de lneas, las cuales transmiten la informacin. Simulink,
es en esencia un tipo de lenguaje orientado a bloques.
La principal ventaja es la disponibilidad de plantillas de construccin de bloques, las cuales
evitan la necesidad de escribir cdigo para pequeos procesos matemticos.
Para entrar al entorno de Simulink se pueden realizar cualquiera de los siguientes pasos:
Hacer clic en el cono
.
Desde el men Start, Simulink y Library Browser.
Teclear en la ventana de comandos de Matlab: >>simulink
Despus, de cualquiera de los pasos anteriores, aparece la siguiente ventana:
Se arrastran estos bloques a la ventana de diseo y luego se conectan con lneas. Una
manera rpida de conectar bloques es marcar el bloque de partida y luego presionando la
tecla control hacer clic con el botn izquierdo en el bloque destino.
10
1
Luego se guarda este pequeo modelo, con algn nombre, en este caso IntegradorBasico. Y
se hace correr la simulacin, haciendo clic en el botn
, de la ventana de diseo.
Haciendo doble clic en el cono del osciloscopio, en la ventana de diseo
102
Como se puede apreciar, el coseno est desplazado hacia arriba en una unidad. Para
corregir esto se debe hacer doble clic en el cono del integrador en la ventana de diseo.
Aqu se debe cambiar el campo Initial condition, y cambiarlo de cero a -1, para desplazar
hacia abajo el resultado. Luego presionar Apply y OK.
Haciendo correr de nuevo el simulador y presionando la autoescala, nuevamente, resulta:
10
3
7.2 DISEO DE CONTROLADORES PID CON SIMULINK.Ejemplo7.2: Gobierno de un brazo robtico mediante controladores PID
Se puede utilizar los controladores PID para gobernar (controlar) brazos robticos como el
mostrado en la figura
104
Una pelota es puesta sobre una viga y puede rodar a travs de ella. El brazo robtico hace
que la viga suba o baje un ngulo . El brazo est unido a un mecanismo circular que puede
rotar un ngulo . Cuando se va cambiando el ngulo , la gravedad ocasiona que la pelota
vaya rodando por la viga. Por tanto se necesita disear un controlador que regule la
posicin de la pelota, de manera que esta no se salga de la viga.
Para esta aplicacin se asume que la pelota rueda sin deslizamiento y que la friccin entre
la viga y la pelota es despreciable. Las constantes y variables para este ejemplo estn
definidas como sigue:
M Masa de la pelota
0.11 kg
R Radio de la pelota
0.015 m
d Longitud de descentrado
0.03 m
g Aceleracin de la grav.
9.8 m/s^2
L Longitud de la viga
1.0 m
J Momento de inercia de la pelota 9.99e-6 kgm^2
r Posicin de la pelota
10
5
La ecuacin que relaciona el ngulo de la viga, con el ngulo del brazo es aproximada por:
Reagrupando, se halla la funcin de transferencia del ngulo (s) del brazo a la posicin de
la pelota R(s).
106
=
=
=
=
=
=
0.111;
0.015;
-9.8;
1.0;
0.03;
9.99e-6;
K = (m*g*d)/(L*(J/R^2+m));
num = [-K];
den = [1 0 0];
printsys(num,den)
10
7
De esta grfica se ve claramente que el sistema es inestable en lazo abierto, causando que la
pelota ruede fuera de la viga. Por tanto se requiere de algn mtodo para controlar la
posicin de la pelota.
b) En el espacio de estados.
Las entradas para el espacio de estados son las siguientes:
m
R
g
J
=
=
=
=
0.111;
0.015;
-9.8;
9.99e-6;
H = -m*g/(J/(R^2)+m);
A=[0 1 0 0
0 0 H 0
0 0 0 1
108
110
Se modific el sumador, para que los signos sean + - (mas y menos) en el campo List of
signs
Tambin se modific el bus, para que tenga tres entradas, en el campo Number of inputs
11
1
112
Los parmetros por omisin son: P=1; I=1; D=0. Para el sintonizado del PID se presiona
Tune, y aparece, despus de un momento de clculos
Aqu aparece el sistema ya estable, pero con un tiempo de 2 segundos, si es que nos parece
muy grande, lo modificamos con la barra deslizable. En este caso lo modificamos para un
segundo.
11
3
114
Si es que se quiere sacar los resultados al espacio de trabajo de Matlab, se debe aadir en la
ventana de diseo de Simulink, un bloque que saque datos al workspace . Ese bloque es To
workspace y se encuentra en Sinks.
11
5
0.6
0.5
0.4
0.3
0.2
0.1
0.5
1.5
2.5
3.5
4.5
116