Professional Documents
Culture Documents
Introduccin
Este curso de introduccin a MatLab est orientado a estudiantes de ingeniera
inters por la programacin. Los conocimientos de ingeniera requeridos no
demasiado altos ya que est pensado para estudiantes de todos los cursos. Las
primeras lecciones servirn de repaso para los estudiantes de cursos avanzados y
actuales para los estudiantes de los primeros cursos.
con
son
dos
muy
Los conocimientos que hay que tener sobre ordenadores son los bsicos. Este curso
est pensado para dotar a los asistentes con un instrumento de proceso y clculo. La
razn fundamental por la que esto es importante en el anlisis de ingeniera (al igual
que en otras disciplinas) es que en muchas ocasiones las modernas teoras y los
modelos en las que stas se sustentan no producen soluciones analticas y hay que
buscar por tanto soluciones numricas a los problemas que plantean.
Otra razn de importancia es que incluso en el caso en que la teora produzca
soluciones analticas a veces es conveniente realizar simulaciones de los modelos o
presentar los resultados de un modo que requiere el proceso de datos para problemas
muy particulares.
Un lenguaje de programacin como MatLab permite resolver todos los problemas que
resuelven paquetes de programacin diseados para propsitos generales y adems
permite resolver tambin los problemas particulares que se nos planteen para los
cuales no existen paquetes. MatLab es un lenguaje de programacin tan flexible como
Fortran y, aunque por ser un lenguaje interpretado sea ms lento que Fortran o C,
tiene unas capacidades grficas y una sencillez de manejo que lo hacen perfecto para
iniciarse en la programacin. Adems las ltimas versiones de MatLab permiten el diseo
de interfaces grficas de usuario (gui) que nos permiten disear entornos grficos muy
fciles de usar por aquellos a los que nuestros programas estn dirigidos.
En este curso vamos a ver los comandos bsicos de programacin e iremos amenizando el
aprendizaje con ejercicios de modelos sencillos, para que al tiempo que aprendemos a
manejar el lenguaje vayamos viendo su utilidad con problemas concretos de ingeniera.
Una vez que tengamos los conocimientos bsicos estaremos en condiciones de subir un
nivel con la versin MatLab 6.5 en la que existen una serie de bibliotecas para una
variedad sorprendente de problemas entre los que se encuentran el anlisis de seales,
matemticas control, redes neuronales y un largsimo etctera.
No cabe ninguna duda de que este instrumento de trabajo tiene valor en el mercado y
por tanto es bueno acostumbrarse a manejarlo con soltura. La notacin a utilizar en el
texto indicar en negrita nombres de comandos interpretables por MatLab como disp o
nombres de archivos que MatLab puede leer como programa.m.
El autor
Tabla de contenido
Capitulo I:
Informacin general e introduccin al programa Matlab
(Lo bsico antes de comenzar)
Capitulo II:
ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB
Introduccin
Tratamiento mediante funciones de transferencia. (Sistemas continuos)
Dominio Temporal
Dominio Frecuencial
Respuesta en frecuencia
Mrgenes de estabilidad
Efectos de los retardos
Comandos relacionados con operaciones de bloques
Lugar de las races
Estudio temporal y frecuencial de sistemas de primer y segundo orden
Sistemas de primer orden
Sistemas de segundo orden
Anlisis del efecto de un cero en la respuesta temporal de un sistema de segundo
orden
Influencia de polos adicionales.
Polos dominantes
Tratamiento mediante funciones de transferencia. Sistemas discretos
Tratamiento mediante descripcin en el espacio de estados
Manipulacin mediante objetos
Resumen de los comandos mas importantes del Control System Toolbox
Capitulo III:
Simulink
Simulink
Introduccin al Simulink
Librera de bloques.
Crear un nuevo modelo
Agregar un bloque al rea de trabajo
Unir bloques con una lnea.
Sacar una derivacin
Bloques ms comunes (de inters para la materia Control) de la librera de Simulink.
Ejemplo elemental
Parmetros de simulacin
Iniciar y detener una simulacin.
Capitulo IV:
Complementarios
PID. Descripcin y reglas heursticas de Sintonizacin
Introduccin
El sistema a controlar
Controlador PID
Control a lazo cerrado.
Ajuste del PID. Reglas del Ziegler-Nichols.
Primer mtodo de Ziegler-Nichols
Segundo mtodo de Ziegler-Nichols
Comentarios finales:
Figura 1
Como ejemplo adicional considrese el trabajo que dara resolver una simple matriz
de 3 por tres pero que sus elementos sean decimales y complejos.
Parta este caso, matlab resuelve de igual manera veamos.
>> e=[1+i 3+5i 0.34+9i;5+8i 0+i 1;0+3i 6 2]
e =
Columns 1 through 2
1.0000 + 1.0000i
3.0000 + 5.0000i
5.0000 + 8.0000i
0 + 1.0000i
0 + 3.0000i
6.0000
Column 3
0.3400 + 9.0000i
1.0000
2.0000
>> f=det(e)
f =
-3.9378e+002 +2.2032e+002i
A= rand(6), B= inv(A), B*A
A=
0.9501
0.2311
0.6068
0.4860
0.8913
0.7621
0.4565
0.0185
0.8214
0.4447
0.6154
0.7919
0.9218
0.7382
0.1763
0.4057
0.9355
0.9169
0.4103
0.8936
0.0579
0.3529
0.8132
0.0099
0.1389
0.2028
0.1987
0.6038
0.2722
0.1988
0.0153
0.7468
0.4451
0.9318
0.4660
0.4186
2.7510
-2.5266
-0.6076
-0.7576
-4.6087
3.3088
3.6505
-1.4681
-2.1058
-0.6076
-4.7057
2.9929
B=
5.7430
-4.4170
-1.3917
-1.6896
-3.6417
2.7183
ans =
1.0000 0.0000
0 0.0000 0.0000 -0.0000
0.0000 1.0000
0.0000 0.0000 -0.0000 0.0000
0
0 1.0000 -0.0000 -0.0000 0.0000
0.0000
0 -0.0000 1.0000 -0.0000 0.0000
-0.0000 0.0000 -0.0000 -0.0000 1.0000 0.0000
-0.0000 -0.0000 -0.0000 -0.0000 -0.0000 1.0000
x=-4:.01:4; y=sin(x);
plot(x,y), grid, title('Funcin seno(x)')
En la Figura 3 se puede observar que se abre una nueva ventana en la que aparece
representada la funcin sin(x). Esta figura tiene un ttulo "Funcin seno(x)" y
una cuadrcula o "grid". En realidad la lnea anterior contiene tambin varias
instrucciones separadas por comas o puntos y comas. En la primera se crea un
vector x con 801 valores reales entre -4 y 4, separados por una centsima. A
continuacin se crea un vector y, cada uno de cuyos elementos es el seno del
Figura N 3
10
Figura 5
Figura 6
Respecto a los formatos numricos con que MATLAB muestra los resultados
(recurdese que siempre calcula con la mxima precisin), se pueden activar las
mismas posibilidades por medio de comandos tecleados en la lnea de comandos de
MATLAB. Los ms importantes de estos comandos son los siguientes:
format
format
format
format
format
format
format
format
format
format
format
short
long
hex
bank
short e
short g
long e
long g
loose
compact
rat
MATLAB aplica un factor de escala general a las matrices cuando los elementos ms
grandes o ms pequeos son superiores o inferiores respectivamente a una
determinada cantidad.
11
exige esto, pero puede resultar til). Para definir una matriz no hace falta
establecer de antemano su tamao (de hecho, se puede definir un tamao y cambiarlo
posteriormente). MATLAB determina el nmero de filas y de columnas en funcin del
nmero de elementos que se proporcionan (o se utilizan). Las matrices se definen
por filas; los elementos de una misma fila estn separados por blancos o comas,
mientras que las filas estn separadas por pulsaciones intro o por caracteres
punto y coma (;). Por ejemplo, el siguiente comando define una matriz A de
dimensin (3x3):
A
1
4
7
A=[1 2 3; 4 5 6; 7 8 9]
=
2 3
5 6
8 9
A'
ans =
1 4 7
2 5 8
3 6 9
B
1
2
3
B=A'
=
4 7
5 8
6 9
B*A
ans =
66 78 90
78 93 108
90 108 126
A=[1 4 -3; 2 1 5; -2 5 3]
A =
1 4 -3
2 1 5
-2 5 3
B=inv(A)
B =
0.1803 0.2213 -0.1885
0.1311 0.0246 0.0902
-0.0984 0.1066 0.0574
12
hacer uso de la funcin inv( ) (la precisin o nmero de cifras con que se muestra
el resultado se puede cambiar con el men File/Preferences/General):
B*A
ans =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0
0.0000 1.0000
x=[10 20 30] % vector fila
x =
10 20 30
y=[11; 12; 13] % vector columna
y =
11
12
13
x+y
??? Error using ==> +
Matrix dimensions must agree.
x+y'
ans =
21 32 43
Para
comprobar
que
este
resultado
correcto basta pre-multiplicar A por B;
es
*
'
^
\
/
.*
./ y .\
.^
DESCRIPCION
adicin o suma
sustraccin o resta
multiplicacin
traspuesta
potenciacin
divisin-izquierda
divisin-derecha
producto elemento a elemento
divisin elemento a elemento
elevar a una potencia elemento a elemento
Los operadores anteriores se pueden aplicar tambin de modo mixto, es decir con un
operando escalar y otro matricial. En este caso la operacin con el escalar se
aplica a cada uno de los elementos de la matriz. Considrese el siguiente ejemplo:
13
A
1
3
A=[1 2; 3 4]
=
2
4
A*2
ans =
2 4
6 8
A-4
ans =
-3 -2
-1 0
Los operadores de divisin requieren una cierta explicacin adicional. Considrese
el siguiente sistema de ecuaciones lineales, Ax = b (1) en donde x y b son
vectores columna, y A una matriz cuadrada invertible. La resolucin de este
sistema de ecuaciones se puede escribir en las 2 formas siguientes (Atencin a la
2 forma, basada en la barra invertida (\), que puede resultar un poco extraa):
x = inv(A)*b (2a)
x = A\b (2b)
A
1
b
2
x
0
1
14
15
compan(pol)
vander(v)
Existen otras funciones para crear matrices de tipos particulares. Con Help/Help
Window se puede obtener informacin sobre todas las funciones disponibles en
MATLAB, que aparecen agrupadas por directorios. En matlab\elmat aparecen la mayor
parte de las funciones estudiadas en este apartado.
triu(A)
tril(A)
rot90(A,k)
flipud(A)
fliplr(A)
reshape(A,m,n)
16
1.0/0.0
Warning: Divide by zero
ans =
Inf
0/0
Warning: Divide by zero
ans =
NaN
inf/inf
ans =
NaN
Inf.
MATLAB dispone de tres funciones tiles relacionadas con las operaciones de coma
flotante. Estas funciones, que no tienen argumentos, son las siguientes:
Eps
Realmin
Realmax
17
i=2
i =
2
2+3i
ans =
2.0000 + 3.0000i
2+3*i
ans =
8
2+3*j
ans =
2.0000 + 3.0000i
9.CADENAS DE CARACTERES
MATLAB puede definir variables que contengan cadenas de caracteres. En MATLAB las
cadenas de texto van entre apstrofos o comillas simples (Ntese que en C van
entre comillas dobles: "cadena"). Por ejemplo, en MATLAB:
s = 'cadena de caracteres'
Las cadenas de texto tienen su ms clara utilidad en temas que se vern ms
adelante y por eso se difiere hasta entonces una explicacin ms detallada.
18
las
variables,
incluyendo
las
globales,
las
19
x=1:10
x =
1
2
10
En cierta forma se podra decir que el operador (:) Representa un rango: en este
caso, los nmeros enteros entre el 1 y el 10. Por defecto el incremento es 1, pero
este operador puede tambin utilizarse con otros valores enteros y reales,
positivos o negativos. En este caso el incremento va entre el valor inferior y el
superior, en las formas que se muestran a continuacin:
x=1:2:10
x =
1 3 5 7 9
x=1:1.5:10
x =
1.0000 2.5000 4.0000 5.5000 7.0000 8.5000 10.0000
x=10:-1:1
x =
10
9
8
7
6
5
4
3
2
Puede verse que, por defecto, este operador produce vectores fila. Si se desea
obtener un vector columna basta trasponer el resultado. El siguiente ejemplo
genera una tabla de funciones seno y coseno. Ejectese y obsrvese el resultado
(recurdese que con (;) Despus de un comando el resultado no aparece en
pantalla).
x=[0.0:pi/50:2*pi]';
y=sin(x); z=cos(x);
[x y z]
El operador dos puntos (:) es an ms til y potente y tambin ms complicado
con matrices. A continuacin se va a definir una matriz A de tamao 6x6 y despus
se realizarn diversas operaciones sobre ella con el operador (:).
A=magic(6)
A =
35
1
6
3
32
7
31
9
2
8
28
33
30
5
34
4
36
29
26
21
22
17
12
13
19
23
27
10
14
18
24
25
20
15
16
11
Recurdese que MATLAB accede a los elementos de una matriz por medio de los
ndices de fila y de columna encerrados entre parntesis y separados por una coma.
Por ejemplo:
A(2,3)
ans =
7
El siguiente comando extrae los 4 primeros elementos de la 6 fila:
A(6, 1:4)
ans =
4
36
29
13
20
22
27
Por
ejemplo,
el
20
Para acceder a la ltima fila o columna puede utilizarse la palabra end, en lugar
del nmero correspondiente. Por ejemplo, para extraer la sexta fila (la ltima) de
la matriz:
A(end, :)
ans =
4 36 29 13 18 11
El siguiente comando extrae todos los elementos de las filas 3, 4 y 5:
A(3:5,:)
ans =
31
9
8
28
30
5
2
33
34
22
17
12
27
10
14
20
15
16
26
21
12
19
23
14
24
25
16
En los ejemplos anteriores se han extrado filas y no columnas por motivos del
espacio ocupado por el resultado en la hoja de papel. Es evidente que todo lo que
se dice para filas vale para columnas y viceversa: basta cambiar el orden de los
ndices. El operador dos puntos (:) puede utilizarse en ambos lados del operador
(=). Por ejemplo, a continuacin se va a definir una matriz identidad B de tamao
6x6 y se van a reemplazar filas de B por filas de A. Obsrvese que la siguiente
secuencia de comandos sustituye las filas 2, 4 y 5 de B por las filas 1, 2 y 3 de
A,
B=eye(size(A));
B([2 4 5],:)=A(1:3,:)
B =
1
0
0
0
35
1
6
26
0
0
1
0
3
32
7
21
31
9
2
22
0
0
0
0
0
19
0
23
27
0
0
24
0
25
20
1
21
Descripcin
seno
coseno
tangente
arco seno
arco coseno
arco tangente (devuelve un ngulo entre p/2 y p/2)
atan2(x) arco tangente (devuelve un ngulo entre y ); se le pasan 2 argumentos,
proporcionales al seno y al coseno
sinh(x) seno hiperblico
cosh(x) coseno hiperblico
tanh(x) tangente hiperblica
22
asinh(x)
acosh(x)
atanh(x)
log(x)
log10(x)
exp(x)
sqrt(x)
sign(x)
rem(x,y)
mod(x,y)
round(x)
fix(x)
floor(x)
ceil(x)
gcd(x)
lcm(x)
real(x)
imag(x)
abs(x)
angle(x)
23
3.5.1. FUNCIONES
Comando
B = A'
B = A.'
v = poly(A)
t = trace(A)
[m,n] = size(A)
n = size(A)
nf = size(A,1)
nc = size(A,2)
MATRICIALES ELEMENTALES
Descripcin
calcula la traspuesta (conjugada) de la matriz A
calcula la traspuesta (sin conjugar) de la matriz A
devuelve
un
vector
v
con
los
coeficientes
del
polinomio
caracterstico de la matriz cuadrada A
devuelve la traza t (suma de los elementos de la diagonal) de una
matriz cuadrada A
devuelve el nmero de filas m y de columnas n de una matriz
rectangular A
devuelve el tamao de una matriz cuadrada A
devuelve el nmero de filas de A
devuelve el nmero de columnas de A
Descripcin
Si A=XDX', expm(A)=X*diag(exp(diag(D)))*X'
devuelve una matriz que multiplicada por s misma da la matriz A
es la funcin recproca de expm(A)
16. FUNCIONES
MATRICIAL
DE
FACTORIZACIN
Y/O
DESCOMPOSICIN
B = inv(A)
d = det(A)
E = rref(A)
[E,xc] = rref(A)
U = chol(A)
24
Descripcin
descomposicin de Crout (A = LU) de una matriz. La matriz L es una
permutacin de una matriz triangular inferior (dicha permutacin
es consecuencia del pivotamiento por columnas utilizado en la
factorizacin)
calcula la inversa de A. Equivale a B=inv(U)*inv(L)
devuelve el determinante d de la matriz cuadrada A. Equivale a
d=det(L)*det(U)
reduccin a forma de escaln (mediante la eliminacin de Gauss con
pivotamiento por columnas) de una matriz rectangular A
reduccin a forma de escaln con un vector xc que da informacin
sobre una posible base del espacio de columnas de A
descomposicin de Cholesky de matriz simtrica y positivodefinida. Slo se utiliza la diagonal y la parte triangular
c = rcond(A)
[X,D] = eig(A,B)
Descripcin
valores propios (diagonal de D) y vectores propios (columnas de X)
de una matriz cuadrada A. Con frecuencia el resultado es complejo
(si A no es simtrica)
valores propios (diagonal de D) y vectores propios (columnas de X)
de dos matrices cuadradas A y B (Ax = lBx).
Q = orth(A)
Descripcin
descomposicin QR de una matriz rectangular. Se utiliza para
sistemas con ms ecuaciones que incgnitas.
devuelve una base ortonormal del subespacio nulo (kernel, o
conjunto de vectores x tales que Ax = 0) de la matriz rectangular
A
las columnas de Q son una base ortonormal del espacio de columnas
de A. El nmero de columnas de Q es el rango de A
B =
r =
nor
nor
c =
pinv(A)
rank(A)
= norm(A)
= norm(A,2)
cond(A)
Descripcin
Descomposicin
de
valor
singular
de
una
matriz
rectangular(A=U*D*V'). U y V son matrices ortonormales. D es
diagonal y contiene los valores singulares
Calcula la pseudo-inversa de una matriz rectangular A
Calcula el rango r de una matriz rectangular A
Calcula la norma sub-2 de una matriz (el mayor valor singular)
Co mismo que la anterior
Condicin numrica sub-2 de la matriz A. Es el cociente entre el
mximo y el mnimo valor singular. La condicin numrica da una
idea de los errores que se obtienen al resolver un sistema de
ecuaciones lineales con dicha matriz: su logaritmo indica el
nmero de cifras significativas que se pierden
Normas de matrices:
Comando
Descripcin
norm(A)
norma sub-2, es decir, mximo valor singular de A, max(svd(A)).
normest(A)
calcula una estimacin o aproximacin de la norma sub-2. til para
matrices grandes en las que norm(A) necesita demasiado tiempo
norm(A,2)
lo mismo que norm(A)
norm(A,1)
norma sub-1 de A, mxima suma de valores absolutos por columnas, es
decir: max(sum(abs((A))))
norm(A,inf)
norma sub- de A, mxima suma de valores absolutos por filas, es
25
decir: max(sum(abs((A'))))
Normas de vectores:
Comando
norm(x,p)
norm(x)
norm(x,inf)
norm(x,1)
17. MS
Descripcin
norma sub-p, es
norma eucldea;
norma sub-, es
norma sub-1, es
SOBRE
MATRICES
decir sum(abs(x)^p)^(1/p).
equivale al mdulo o norm(x,2).
decir max(abs(x)).
decir sum(abs(x)).
OPERADORES
RELACIONALES
CON
VECTORES
Cuando alguno de los operadores relacionales vistos previamente (<, >, <=, >=, ==
y ~=) acta entre dos matrices (vectores) del mismo tamao, el resultado es otra
matriz (vector) de ese mismo tamao conteniendo unos y ceros, segn los resultados
de cada comparacin entre elementos hayan sido true o false, respectivamente.
A=magic(3)
A=
816
357
492
M=A>4
M=
101
011
010
any(A)
all(x)
all(A)
find(x)
find(A)
Descripcin
funcin vectorial; chequea si alguno de los elementos del vector x cumple una
determinada condicin (en este caso ser distinto de cero). Devuelve un uno un
cero
se aplica por separado a cada columna de la matriz A. El resultado es un vector
de unos y ceros
funcin vectorial; chequea si todos los elementos del vector x cumplen una
condicin. Devuelve un uno un cero
se aplica por separado a cada columna de la matriz A. El resultado es un vector
de unos y ceros
busca ndices correspondientes a elementos de vectores que cumplen una
determinada condicin. El resultado es un vector con los ndices de los
elementos que cumplen la condicin
cuando esta funcin se aplica a una matriz la considera como un vector con una
columna detrs de otra, de la 1 a la ltima.
26
llamada
deconv().
Las
funciones
Descripcin
polinomio caracterstico de la matriz A
races del polinomio pol
evaluacin del polinomio pol para el valor de x. Si x es un
Polyval(pol,x)
vector, pol se evala para cada elemento de x
polyvalm(pol,A)
evaluacin del polinomio pol de la matriz A
conv(p1,p2)
producto de convolucin de dos polinomios p1 y p2
divisin del polinomio p por el polinomio q. En c se devuelve
[c,r]=deconv(p,q)
el cociente y en r el resto de la divisin
descompone el cociente entre p1 y p2 en suma de fracciones
Residue(p1,p2)
simples(ver help residue)
Polyder(pol)
calcula la derivada de un polinomio
Polyder(p1,p2)
calcula la derivada de producto de polinomios
calcula los coeficientes de un polinomio p(x) de grado n que se
Polyfit(x,y,n)
ajusta a los datos p(x(i)) ~= y(i), en el sentido de mnimo
error cuadrtico medio.
27
con cadenas de
C/C++ y Java.
de caracteres
sub-directorio
28
Las funciones
siguientes:
ms
importantes
para
manejo
de
cadenas
de
caracteres
son
las
double(c)
char(v)
char(c1,c2)
en
MATLAB
de
una
amplia
29
gama
de
num2str(pi,8)
ans =
3.1415927
Es habitual convertir los valores numricos en cadenas de caracteres para poder
imprimirlos como ttulos en los dibujos o grficos. Vase el siguiente ejemplo:
fahr=70; grd=(fahr-32)/1.8;
title(['Temperatura ambiente: ',num2str(grd),' grados centgrados'])
Descripcin
aade un ttulo al dibujo
aade una etiqueta al eje de abscisas. Con xlabel off
xlabel('tal')
desaparece
aade una etiqueta al eje de ordenadas. Con ylabel off
ylabel('cual')
desaparece
introduce 'texto' en el lugar especificado por las coordenadas
x e y. Si x e y son vectores, el texto se repite por cada par
text(x,y,'texto') de elementos. Si texto es tambin un vector de cadenas de texto
de la misma dimensin, cada elemento se escribe en las
coordenadas correspondientes
Introduce texto con ayuda del ratn: el cursor cambia de forma
gtext('texto')
y se espera un clic para introducir el texto en esa posicin
define rtulos para las distintas lneas o ejes utilizados en
legend()
la figura. Para ms detalle, consultar el Help
grid
activa la inclusin de una cuadrcula en el dibujo. Con grid
30
a.FUNCIN PLOT
Esta es la funcin clave de todos los grficos 2-D
en MATLAB. Ya se ha dicho que el elemento bsico de
los grficos bidimensionales es el vector. Se
utilizan tambin cadenas de 1, 2 3 caracteres para
indicar colores y tipos de lnea. La funcin plot(),
en sus diversas variantes, no hace otra cosa que
dibujar vectores. Un ejemplo muy sencillo de esta
funcin, en el que se le pasa un nico vector como
argumento, es el siguiente:
x=[1 3 2 4 5 3]
x =
31
1 3 2 4 5 3
plot(x)
El resultado de este comando es que se abre una ventana mostrando el grfico de la
Figura. Por defecto, los distintos puntos del grfico se unen con una lnea
continua. Tambin por defecto, el color que se utiliza para la primera lnea es el
azul. Cuando a la funcin plot() se le pasa un nico vector real como argumento,
dicha funcin dibuja en ordenadas el valor de los n elementos del vector frente a
los ndices 1, 2, ... n del mismo en abscisas. Ms adelante se ver que si el
vector es complejo, el funcionamiento es bastante diferente.
En la pantalla de su ordenador se habr visto que MATLAB utiliza por defecto color
blanco para el fondo de la pantalla y otros colores ms oscuros para los ejes y
las grficas.
Una segunda forma de utilizar la funcin plot() es con dos vectores como
argumentos. En este caso los elementos del segundo vector se representan en
ordenadas frente a los valores del primero, que se representan en abscisas. Vase
por ejemplo cmo se puede dibujar un cuadriltero de esta forma (obsrvese que
para dibujar un polgono cerrado el ltimo punto debe coincidir con el primero):
x=[1 6 5 2 1]; y=[1 0 4 3 1];
plot(x,y)
La funcin plot() permite tambin dibujar mltiples curvas introduciendo varias
parejas de vectores como argumentos. En este caso, cada uno de los segundos
vectores se dibujan en ordenadas como funcin de los valores del primer vector de
la pareja, que se representan en abscisas. Si el usuario no decide otra cosa, para
las sucesivas lneas se utilizan colores que son permutaciones cclicas del azul,
verde, rojo, cyan, magenta, amarillo y negro. Obsrvese bien cmo se dibujan el
seno y el coseno en el siguiente ejemplo:
x=0:pi/25:6*pi;
y=sin(x); z=cos(x);
plot(x,y,x,z)
Ahora se va a ver lo que pasa con los vectores complejos. Si se pasan a plot()
varios vectores complejos como argumentos, MATLAB simplemente representa las
partes reales y desprecia las partes imaginarias. Sin embargo, un nico argumento
complejo hace que se represente la parte real en abscisas, frente a la parte
imaginaria en ordenadas. Vase el siguiente ejemplo. Para generar un vector
complejo se utilizar el resultado del clculo de valores propios de una matriz
formada aleatoriamente:
plot(eig(rand(20,20)),'+')
Donde se ha hecho uso de elementos que se vern en la siguiente seccin, respecto
a dibujar con distintos tipos de markers (en este caso con signos +), en vez de
con lnea continua, que es la opcin por defecto. En el comando anterior, el
segundo argumento es un carcter que indica el tipo de marker elegido. El comando
anterior es equivalente a:
z=eig(rand(20,20));
plot(real(z),imag(z),'+')
32
Como ya
ignoran
hay que
como se
tambin
Cuando hay que dibujar varias lneas, por defecto se van cogiendo sucesivamente
los colores de la tabla comenzando por el azul, hacia arriba, y cuando se terminan
se vuelve a empezar otra vez por el azul. Si el fondo es blanco, este color no se
utiliza para las lneas.
33
plot(x)
hold on
plot(x2,'--')
plot(x3,'-.')
hold off
d.COMANDO SUBPLOT
Una ventana grfica se puede dividir en m particiones horizontales y n verticales,
con objeto de representar mltiples grficos en ella. Cada una de estas
subventanas tiene sus propios ejes, aunque otras propiedades son comunes a toda la
figura. La forma general de este comando es:
subplot(m,n,i)
donde m y n son el nmero de subdivisiones en filas y columnas, e i es la
subdivisin
que
se
convierte
en
activa.
Las
subdivisiones
se
numeran
consecutivamente empezando por las de la primera fila, siguiendo por las de la
segunda, etc. Por ejemplo, la siguiente secuencia de comandos genera cuatro
grficos en la misma ventana:
Se puede practicar con este ejemplo aadiendo ttulos a cada subplot, as como
rtulos para los ejes. Se puede intentar tambin cambiar los tipos de lnea. Para
volver a la opcin por defecto basta teclear el comando:
subplot(1,1,1)
mientras que :
axis('auto')
devuelve el escalado de los ejes al valor por defecto o automtico. Otros posibles
usos de este comando son los siguientes:
34
Comando
Descripcin
devuelve un vector v con los valores [xmin, xmax,
v=axis
ymin, ymax]
mantiene los ejes en sus actuales valores, de cara a
axis(axis)
posibles nuevas grficas aadidas con hold on
utiliza ejes de pantalla, con el origen en la
axis('ij')
esquina superior izda. y el eje j en direccin
vertical descendente
utiliza ejes cartesianos normales, con el origen en
axis('xy')
la esquina inferior izda. y el eje y vertical
ascendente
axis('equal') el escalado es igual en ambos ejes
axis('square') la ventana ser cuadrada
la ventana tendr las proporciones de la imagen que
se desea representar en ella (por ejemplo la de una
axis('image')
imagen bitmap que se desee importar) y el escalado
de los ejes ser coherente con dicha imagen
elimina las restricciones introducidas por 'equal' y
axis('normal')
'square'
axis('off')
elimina las etiquetas, los nmeros y los ejes
axis('on')
restituye las etiquetas, los nmeros y los ejes
f.FUNCIN LINE()
La funcin line() permite dibujar una o ms lneas que unen los puntos cuyas
coordenadas se pasan como argumentos. Permite adems especificar el color, grosor,
tipo de trazo, marcador, etc. Es una funcin de ms bajo nivel que la funcin
plot(), pero ofrece una mayor flexibilidad. En su versin ms bsica, para dibujar
un segmento de color verde entre dos puntos, esta funcin se llamara de la
siguiente manera:
line([xini, xend]', [yini, yend]', 'color', 'g')
Se puede tambin dibujar dos lneas a la vez utilizando la forma:
line([xini1 xini2; xend1 xend2], ([yini1 yini2; yend1 yend2]);
Finalmente, si cada columna de la matriz X contiene la coordenada x inicial y
final de un punto, y lo mismo las columnas de la matriz Y con las coordenadas y,
la siguiente sentencia dibuja tantas lneas como columnas tengan las matrices X e
Y:
line([X], [Y]);
Se pueden controlar las caractersticas
parmetro/valor, como por ejemplo:
de
la
lnea
por
medio
de
pares
line(x,y,'Color','r','LineWidth',4,'MarkerSize',12,'LineStyle','','Marker','*')
35
comando). La funcin close cierra la figura activa, mientras que close(n) cierra
la ventana o figura nmero n.
El comando clf elimina el contenido de la figura activa, es decir, la deja abierta
pero vaca. La funcin gcf devuelve el nmero de la figura activa en ese momento.
El comando figure(gcf) (get current figure) permite hacer visible la ventana de
grficos desde la ventana de comandos.
x=[-4*pi:pi/20:4*pi];
plot(x,sin(x),'r',x,cos(x),'g')
title('Funcin seno(x) -en rojo- y funcin coseno(x) -en verde-')
xlabel('ngulo en radianes'), figure(gcf)
ylabel('valor de la funcin trigonomtrica'), figure(gcf)
axis([-12,12,-1.5,1.5]), figure(gcf)
axis('equal'), figure(gcf)
axis('normal'), figure(gcf)
axis('square'), figure(gcf)
axis('off'), figure(gcf)
axis('on'), figure(gcf)
axis('on'), grid, figure(gcf)
RESULTADO
crea diagramas de barras
diagramas de barras horizontales
diagramas de barras con aspecto 3-D
diagramas de barras horizontales con aspecto 3-D
grficos con forma de tarta
grficos con forma de tarta y aspecto 3-D
similar plot(), pero rellenando en ordenadas de 0 a y
funcin anloga a bar() sin lneas internas
representa sobre una grfica mediante barras valores de errores
dibuja los elementos de un vector complejo como un conjunto de vectores
partiendo de un origen comn
dibuja los elementos de un vector complejo como un conjunto de vectores
partiendo de orgenes uniformemente espaciados sobre el eje de abscisas
dibuja histogramas de un vector
histograma de ngulos (en radianes)
dibujo de campos vectoriales como conjunto de vectores
x=[rand(1,100)*10];
plot(x)
bar(x)
stairs(x)
hist(x)
36
hist(x,20)
alfa=(rand(1,20)-0.5)*2*pi;
rose(alfa)
37
se
del
los
ms
26. GRAFICOS 2D Y 3D
Ya hemos venido realizando grficos en 2D como lo son las respuestas de los
ejercicios anteriores, ahora vamos a dibujar grficos en 3D.
38
Supongamos
que
superficie:
Esto lo hacemos
instrucciones:
queremos
con
la
dibujar
la
secuencia
de
x=-5:.4:5;
y=x;
[X,Y]=meshgrid(x,y);
Z=X.^2.*exp(-Y.^2);
surf(X,Y,Z)
Las primeras dos instrucciones dividen
los ejes de x y y en subintervalos
de largo 0.4; la tercera instruccin
genera una rejilla en el conjunto [5,5]x[-5,5] con cuadraditos de lados
0.4.
La cuarta instruccin evala la funcin en los puntos de la rejilla, y finalmente
trazamos la superficie con surf.
Para crear un fichero llamado sombrero
procedemos de la siguiente forma:
>> w=sin(r)./r;
>> mesh(w)
>> u=-8:0.5:8;
>> v=u;
>> [u,v]=meshgrid(u,v);
>> r=sqrt(u.^2+v.^2)+eps;
>> w=sin(r)./r;
>> mesh(w)
si ingresamos el comando surf(w), nos
muestra la misma grafica pero en vez de
lneas aparece ahora una superficie
faceteada
39
t=0:0.1:10;
x=2*cos(t)-cos(2*t);
y=2*sin(t)-sin(2*t);
plot(x,y,'r')
Obtenemos las siguiente salida:
Para realizar graficas en coordenadas polares Matlab cuenta con los siguientes
comandos:
polar(a,r) : Representa la curva en coordenadas polares
polar(a,r,S): Representa la curva en coordenadas polares con el estilo de lneas
especificado por S.
veamos algunos Ejemplos:
a=0:0.01:2*pi;
r=sin(2*a).*cos(2*a);
polar(a,r)
a=0:0.01:2*pi;
r=4*(1+cos(a));
polar(a,r)
40
b. PROGRAMACIN DE MATLAB
Como ya se ha dicho varias veces incluso con algn ejemplo MATLAB es una
aplicacin que se puede programar muy fcilmente. De todas formas, como lenguaje
de programacin pronto ver que no tiene tantas posibilidades como otros lenguajes
(ni tan complicadas...). Se comenzar viendo las bifurcaciones y bucles, y la
lectura y escritura interactiva de variables, que son los elementos bsicos de
cualquier programa de una cierta complejidad.
c. BIFURCACIONES Y BUCLES
Se van a introducir aqu los primeros conceptos de programacin. MATLAB posee
un lenguaje de programacin que como cualquier otro lenguaje dispone de
sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten
realizar una u otra operacin segn se cumpla o no una determinada condicin.
La Figura 12 muestra tres posibles formas de bifurcacin.
Los bucles permiten repetir las mismas o anlogas operaciones sobre datos
41
while en C/C++/Java). En MATLAB no hay bucles con control al final del bucle,
es decir, no existe la construccin anloga a do ... while.
Las bifurcaciones y bucles no slo son tiles en la preparacin de programas o
de ficheros *.m. Tambin se aplican con frecuencia en el uso interactivo de
MATLAB, como se ver ms adelante en algunos ejemplos.
Para la estructura de programacin en MATLAB se requiere conocer por lo menos
los siguientes comandos:
d. Comando END
Determina hasta cual orden llega el efecto
ejemplos de su uso ver if, while y for)
e. Comando IF
de
if,
for,
while.
(Para
] son opcionales.
(verifica si a es igual a b)
a < b
a > b
a <= b
a >= b
else,
n = 1
end;
42
n = 2;
if n == 0,
n
else,
n =1
end;
a == b
(verifica si a es igual a b)
a < b
a > b
(verifica que si a
es mayor que b)
43
end;
La salida que se obtiene al correr el programa anterior es:
n =
0
n =
1
n =
2
n =
3
n =
4
n =
5
g. Comando FOR
Muy parecido al While, pero utiliza un contador, es til si se quiere repetir
una parte del programa un nmero. determinado de veces.
La sintaxis de la orden es:
for (contador), (ordenes) end;
(ordenes) son las ordenes que se realizarn (contador) llega a su valor
final.
(contador) Es de la forma:
variable = a [ , b ] : c
Donde:
variable es el contador en s.
a es el valor inicial del contador (variable).
b es el segundo valor del contador (opcional, si se omite, b=a+1), su funcin
es determinar el incremento del contador.
c es el valor final del contador (variable).
El siguiente ejemplo ilustra el uso de for:
% Ejemplo de uso de for.
for i=0,0.5:2.5,
i
44
0
i =
0.5
i =
1
i =
1.5
i =
2
i =
2.5
h. Comando PLOT
Sirve para obtener resultados grficos en 2D.
La sintaxis de la orden es:
plot(x, y);
x es el vector que contiene los valores de x. y es el vector que contiene los
valores de y, tal que el valor de y en la posicin uno del vector corresponde
al primer valor del vector x. La grfica se realiza uniendo una serie de
rectas entre los puntos incluidos en los vectores X y Y. Si las curvas quedan
muy mal hechas (se notan las rectas) puede ser necesario disminuir el paso de
los vectores (y aumentar el nmero de puntos.
Para claridad, puede ser necesario leer la parte correspondiente a vectores a
la orden FOR.
El siguiente ejemplo ilustra el uso de plot:
% Ejemplo de uso de plot.
for i =1:101,
x(i) = (i-1) /100;
y(i)=x(i) 3 - 1;
end;
plot(x, y);
pause;
%pausa el computador hasta que se presione una teclaesta orden es
necesaria cuando se hace ms de una grfica, para poder ver cada una por
separado. Ya que MATLAB las dibuja en la misma ventana siempre. (a menos que
se use el comando FIGURE).
Al correr el programa se obtiene la grfica de la curva
y=x3 -1 (para 0<=x<=1). La grfica aparecer en una
ventana aparte llamada Figure 1, y la recta se ver
asi:
Otro ejemplo, para la grfica de
y = sin(t) en el
intervalo
t = 0 a
t = 10; donde debemos hacer lo
siguiente:
45
>> t = 0:.3:10;
>> y = sin(t);
>> plot( t , y)
Aqu el resultado grfico:
El comando t = 0: .3 :10; define el vector entre los
componentes desde 0 a 10 incrementados de 0.3. La
expresin y = sin(t); va a definir los valores de los
componentes que son: sin(0), sin(0.3), sin(0.6), etc.
Finalmente, plot(t,y) usa el vector de t y los valores
de y para la construccin del grfico.
z = x .* exp(-x.^2 - y.^2);
>>
mesh(z)
El primer comando crea una matriz para hacer la
entrada de los puntos en el espacio cuadrado de -2
<= x <= 2, -2 <= y <= 2.
Los cuadrados pequeos
que constituyen la reja son de 0.2 unidades ancho
y 0.2 unidades de alto. La segunda orden crea una
matriz cuyas entradas son los valores de la
funcin
z(x,y) a los puntos de la reja. La
tercera orden usa esta informacin para construir
el grfico.
j. Comando DISP
46
11
para
que
el
programa
pida
valores
de
variables
mientras
se
a = input(tex);
a
47
xxx
permiten
definir
funciones
enteramente
anlogas
las
de
nombre, sus argumentos y sus valores de retorno. Los ficheros *.m que definen
funciones permiten extender las posibilidades de MATLAB; de hecho existen
bibliotecas de ficheros *.m que se venden (toolkits) o se distribuyen
gratuitamente (a travs de Internet). Las funciones definidas en ficheros *.m
se caracterizan porque la primera lnea (que no sea un comentario) comienza
por la palabra function, seguida por los valores de retorno (entre corchetes
[ ] y separados por comas, si hay ms de uno), el signo igual (=) y el nombre
de la funcin, seguido de los argumentos (entre parntesis y separados por
comas). Recurdese que un fichero *.m puede llamar a otros ficheros *.m, e
incluso puede llamarse a s mismo de forma recursiva. Los ficheros de
comandos se pueden llamar tambin desde funciones, en cuyo caso las variables
que se crean pertenecen a espacio de trabajo de la funcin. El espacio de
trabajo de una funcin es independiente del espacio de trabajo base y del
espacio de trabajo de las dems funciones. Esto implica por ejemplo que no
puede haber colisiones entre nombres de variables: aunque varias funciones
tengan una variable llamada A, en realidad se trata de variables
completamente distintas (a no ser que A haya sido declarada como variable
global).
A continuacin se ver con un poco ms de detalle ambos tipos de ficheros
*.m.
48
49
den = conv(den1,den2)
Para ver los polos (o los ceros) de la funcin de transferencia, podemos usar:
roots(den) (roots(num)). Una forma mas completa de convertir una funcin de
transferencia dada por dos polinomios numerador y denominador, en un conjunto de
factores de grado 1, correspondientes a los polos (z1, z2, z3) y ceros (c1, c2),
de la forma:
50
2.1.
Dominio Temporal
51
ramp = t;
y = lsim (num,den,ramp,t);
plot (t,y,t,ramp);
title (Respuesta a una rampa);
xlabel (tiempo(seg));
2.2.
Dominio Frecuencial
Respuesta en frecuencia
La respuesta en frecuencia de los sistemas se puede obtener usando las funciones
bode,
52
El
comando
sintaxis:
nyquist
tiene
la
misma
nyquist (num,den,w);
[re,im] = nyquist (num,den,w);
Computa las partes real e imaginaria de
G(jw) y realiza la representacin si no se
le ponen parmetros de salida. Para
obtener la representacin grafica por
nosotros mismos, slo hay que dibujar la
parte real frente a la imaginaria. El
resultado obtenido mediante el ejemplo
anterior puede verse en la Fig. 1.6.
El comando nichols computa el diagrama de
Nichols de un sistema a partir de la
funcin de transferencia en bucle abierto.
Para verlo basta dibujar la magnitud del
bucle abierto en dB (en el eje de
ordenadas) frente a fase del bucle abierto en grados (en eje de abscisas), o
53
Mrgenes de estabilidad
Como es bien sabido en la teora clsica del control, los mrgenes de estabilidad
son el margen de fase y el margen de ganancia. Estos mrgenes se calculan usando
el comando margin.
margin (num,den);
[mg,mf,wmg,wmf] = margin (num,den);
Como tercer parmetro de entrada se le
puede pasar el rango de frecuencias
deseado. En el primer caso indicado, en
el que no se le especifican parmetros
de salida, se realiza la representacin
del diagrama de Bode, junto con una
indicacin, mediante lneas verticales
de los puntos donde se mide cada uno de
los mrgenes y los valores de los
mismos. En la segunda variante, como
salidas se obtienen los valores de los
mrgenes de ganancia (no en dB), el
margen de fase (en grados) y sus
correspondientes frecuencias. Si existen
varias frecuencias de corte marca los
mas desfavorables (ver Fig. 1.8).
54
2.3.
comandos
relacionados
con
las
operaciones
tpicas
en
55
56
1;
= 1;
= K;
= [tau 1];
57
La respuesta a una rampa unitaria de entrada para nuestro sistema de primer orden
se puede simular mediante:
58
donde:
K: ganancia esttica del sistema. Se va a suponer en el anlisis siguiente, sin
perdida de generalidad, que K = 1.
: Coeficiente de amortiguamiento.
wn: Frecuencia natural no amortiguada del sistema.
Del polinomio caracterstico se tiene que las dos races son s1,2 = wnwn2
1, pudiendo distinguirse los siguientes casos:
59
60
61
Se puede tambin analizar para este tercer caso de dos races complejas el efecto
de modificar el factor de amortiguamiento. Se muestra para valores = {0.1, 0.2,
...0.9} (Fig. 1.23).
t = [0:0.2:20];
wn = 1;
vectDelta = [0.1:0.1:0.9];
num = wn^2;
Y = [];
for ind = 1:length(vectDelta)
d = vectDelta(ind);
den = [1,2*d*wn,wn^2];
y = step (num,den,t);
Y = [Y, y];
62
end
plot (t,Y);
title (Respuesta a un escaln unitario);
xlabel (tiempo(seg));
grid;
Se mantiene el valor de = 0.2 para el siguiente anlisis:
d = 0.2;
den = [1,2*d*wn,wn^2];
ye = step (num,den,t);
La salida del sistema viene dada por la ecuacin:
ev1 = 1 + ((exp(-d*wn*t)/(sqrt(1-d^2))));
ev2 = 1 - ((exp(-d*wn*t)/(sqrt(1-d^2))));
plot (t,ye,t,ev1,t,ev2);
title (Respuesta de sist. segundo orden)
xlabel (tiempo (s));
ylabel (salida);
grid;
Los parmetros caractersticos del transitorio vienen dados por:
63
64
Si el cero est entre dos races reales no varia la forma de la respuesta, pero
varia su rapidez (Fig. 1.26), pues se introduce accin derivativa.
65
t = [0:0.2:20];
K=1; wn=1; d=2; c=0.5;
num = K*wn^2;
num2 = K*(wn^2/c)*[1 c];
den = [1 2*d*wn wn^2];
y = step (num,den,t);
y2 = step (num2,den,t);
plot (t,y2,t,y,o);
title(Influencia del cero entre polos reales);
disp Magnitud de los polos:;
abs(roots(den))
Si el cero est mas cerca del eje imaginario que los polos reales, aumenta la
rapidez de la respuesta (Fig. 1.27), pudiendo la salida rebasar ampliamente su
valor de rgimen permanente. Como el efecto derivativo es muy grande, aunque el
sistema sin el cero no sobrepasara el valor de rgimen permanente, el efecto del
cero hace que si sobrepase dicho valor.
t = [0:0.2:20];
K=1; wn=1; d=2; c=0.05;
num = K*wn^2;
num2 = K*(wn^2/c)*[1 c];
den = [1 2*d*wn wn^2];
y = step (num,den,t);
y2 = step (num2,den,t);
plot (t,y2,t,y,o);
title(Influencia del cero cercano al eje imag.);
disp Magnitud de los polos:;
abs(roots(den))
66
3.4.
Polos dominantes
Al rgimen transitorio afectan fundamentalmente los polos y ceros cercanos al eje
imaginario. El efecto de un cero adicional se ha visto anteriormente. Analizamos
ahora el de un polo adicional. Supongamos la funcin de transferencia siguiente:
67
68
4. Tratamiento
mediante
Sistemas discretos
funciones
de
transferencia.
Es
la
69
stairs(y): Para obtener una respuesta como la de que aparece a la derecha en Fig.
1.31, con la forma escalonada tpica de sistemas digitales, simulando que la
salida se mantiene constante entre dos periodos de muestreo, bastara con
reemplazar la instruccin plot(y,.) del ejemplo anterior por stairs(y).
tiempo discreto. Siendo w un vector con las frecuencias donde queremos que se
evalen magnitud y fase de la funcin de transferencia.
embargo, se usa una rejilla distinta para que la representacin tenga en cuenta el
crculo de radio unidad. Por ejemplo, para el sistema discretizado anterior, si
hacemos:
rlocus (Nz,Dz);
zgrid;
70
Podremos obtener analizar el lugar de las races en relacin con los lugares
geomtricos de constante y wn Ts constante, en el plano z (Fig. 1.32).
5.Tratamiento
estados
mediante
Se va a utilizar para
apareci anteriormente:
el
descripcin
anlisis
la
misma
en
funcin
el
espacio
de transferencia
de
que
ya
71
las
matrices
correspondientes
su
72
Como vemos, al pedirle el valor de sys1 nos lo da de una forma monoltica, que
har muy cmoda su manipulacin. Por ejemplo, podramos sumar o poner en serie
ambos sistemas sin mas que:
sys1+sys2
Transfer function:
s^3 + 5 s^2 + 7 s + 3
--------------------s^2 + 3 s + 1
sys12 = sys1*sys2
Transfer function:
s + 2
------------s^2 + 3 s + 1
Por otra parte, las propiedades que estn asociadas a estos objetos pueden verse
mediante:
get(sys1)
num: {[0 0 1]}
den: {[1 3 1]}
Variable: s
Ts: 0
InputDelay: 0
OutputDelay: 0
ioDelayMatrix: 0
InputName: {}
OutputName: {}
InputGroup: {0x2 cell}
OutputGroup: {0x2 cell}
Notes: {}
UserData: []
Nos informa del numerador y denominador de la funcin de transferencia en s. Al
ser continua, su periodo de muestreo es Ts = 0. Se pueden asociar retardos a las
entradas o salidas, asociar nombres a entradas o salidas, etc. Si en un momento
dado, quisiramos cambiar alguna propiedad podramos hacerlo mediante el operador
.:
sys1.Ts = 1;
sys1.num{1} = [0 0 2];
sys1
Transfer function:
2
------------z^2 + 3 z + 1
El nuevo sistema es discreto, con periodo de muestreo Ts = 1 y con un polinomio
ganancia 2 en el numerador (no confundir esta manipulacin con una discretizacin,
en este caso el sistema continuo original y el discreto no tienen porqu guardar
ninguna relacin).
73
Estos objetos tambin estn pensados para poder manipular cmodamente sistemas de
mltiples entradas y mltiples salidas. De hecho, podramos haber creado un
sistema de la siguiente forma:
num1 = 0.5; num2 = [1 1];
den1 = [1 2 1]; den2 = [1 0];
sys = tf ({num1,num2},{den1,den2})
Transfer function from input 1 to output:
0.5
------------s^2 + 2 s + 1
Transfer function from input 2 to output:
s + 1
----s
% O lo que hubiera sido igual:
sys1 = tf (num1,den1);
sys2 = tf (num2,den2);
sys = [sys1, sys2];
7.Resumen de los
System Toolbox
comandos
mas
importantes
del
Control
74
75
Librera de bloques.
Para la elaboracin del diagrama de bloques, se dispone de una
bloques. sta librera se invocar ejecutando el siguiente comando:
librera
de
simulink
En la siguiente figura se puede ver la ventana que se abre en consecuencia.
76
Ms adelante se har una breve descripcin de los bloques ms comunes para el uso
en esta materia.
77
78
79
Ejemplo elemental
Supngase que desee ver una curva senoidal y su integral en el tiempo. Esto
responde a la siguiente ecuacin diferencial:
que puede ser escrita en forma integral:
Se debe considerar que la variable tiempo (t) que aparece en la ltima ecuacin es
una variable implcita del Simulink, por lo que no est relacionado con ninguna
lnea, pero es considerado en el bloque "Integrator". Una vez armado el sistema,
se debern ajustar los parmetros de simulacin como se muestra en la siguiente
seccin.
Parmetros de simulacin
Una vez creado un modelo se deben ajustar los parmetros de simulacin, que se
pueden acceder desde el men "Simulation"->"Simulation parameters...", como se
muestra a continuacin:
80
Por medio de este dilogo se pueden ajustar, entre otros, los siguientes
parmetros:
de la barra de
81
82
Esta funcin
distintos:
de
transferencia
puede
implementarse
en
SIMULINK
de
dos
modos
1) Empleando el bloque PID que proporciona el software para este controlador que
puede encontrarse en Simulink Extras -> Additional Linear Pulsando dos veces sobre
este bloque obtenemos la ventana de dilogo donde podemos introducir los
parmetros del controlador arriba indicados
del
PID
partiendo
de
bloques
83
sistema
propuesto
De este modo a partir de la respuesta a lazo abierto del sistema, calcularemos los
controladores P, PI y PID apropiados para nuestro sistema. Para cada uno de los
tres controladores anteriores se pide:
1) Calcular las respuesta en el dominio temporal y caracterizar la respuesta segn
la ganancia esttica a lazo cerrado (K0), sobreoscilacin (SO), tiempo de subida,
(ts), tiempo de establecimiento (te) y ratio de decaimiento (rd).
84
85
Comentarios finales:
Ante la gran cantidad de material necesario para cubrir en el rea en cuestin y
la gran cantidad de informacin disponible en este manual se pretendi tomar los
aspectos bsicos necesarios para introducir a los participantes del curso a lo que
es este extenso mudo, pero es de hacer notar que como dijo ISAAC NEWTON: Lo que
conocemos es una gota, y lo que ignoramos es el ocano, y por lo tanto,
no
importa cuan largo sea este material y el curso donde se dicta, el aprendizaje, y
las aplicaciones de este sofguard son se podra decir infinitas.
En virtud de lo anterior no queda mas que invitarles a adentrarse cada dia mas en
este mundo, adentrarse segn sus necesidades, sus problemas diarios y tener en
cuenta que el aprendizaje debe ser continuo y constante y sobre todo tener en
cuenta que La practica hace al maestro
Cualquier sugerencia y /o correccin a este material ser bien recibido ya que la
intencin es de mejorar continuamente para que todos aquellos que en un futuro
transiten por estos caminos encuentren mejores opciones y oportunidades que
aquellos que pasamos primero
MF.
86