Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes de MatLab para Control
Apuntes de MatLab para Control
Apuntes de MatLab para Control
Eléctrica Página 1 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
Albert Einstein
Control Automático – Ing. Eléctrica Página 2 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
1 – Introducción a MatLab: El nombre es una abreviatura de las palabras MATrix
LABoratory. MatLab es un sistema interactivo para cálculos científicos y de ingeniería
basado en las matrices. Con el se pueden resolver complejos problemas numéricos sin
necesidad de escribir un programa especifico para ello, aunque también es posible
programar. Además, el programa MatLab dispone, dependiendo de la versión, de
diferentes módulos (Toolboxes) que permiten resolver problemas específicos.
Debido a que MatLab es un programa de Calculo Numérico, la forma de producir
gráficos es completamente distinta de la de programas de Calculo Simbólico como
Derive, Mathematica o Maple. En MatLab se tienen que calcular mediante comandos
adecuados los puntos que después se representaran en la grafica.
Todas las operaciones que realiza MatLab se basan en una estructura de datos matricial.
Dentro del entorno de trabajo de MatLab se pueden definir nuevos comandos o
funciones, programadas por el propio usuario, a través de los archivos *.m. Este tipo de
archivos se encuentran en las llamadas toolbox de MatLab, que son una colección de
funciones ya programadas y disponibles para el usuario. En este sentido, MatLab
funciona como un lenguaje interpretado, es decir, reconoce y ejecuta los comandos que
se le pasan a través del editor de comandos (Command Windows). Todas estas
funciones o comandos se agrupan en la toolboxes y abarcan diferentes campos, como
son el análisis y adquisición de datos, procesamiento de imágenes y de señales, análisis
y diseño de sistemas de control, comunicaciones, simulaciones en tiempo real y también
herramientas de finanzas, estadísticas, economía o lógica difusa.
Al comando se le incorpora un grupo de datos (dato1, dato2, etc.) con los que realizara
un determinado cálculo; el resultado podrá ser grafico, con lo cual MatLab generara la
Control Automático – Ing. Eléctrica Página 4 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
figura correspondiente, o bien numérico, en cuyo caso el resultado se guardara en la
variable por defecto ans.
Es de similar ejecución que el anterior, devuelve dos o mas resultados que se guardaran
en las variables indicadas por el usuario (variable1 variable2…etc.).
Suma:
Resta:
Después de escribir cada comando hay que pulsar Enter para que lo ejecute. Si después
de esta primera sesión con MatLab se quiere salir del programa, se puede hacer de dos
formas, escribiendo exit a continuación del prompt, o bien con File Exit MatLab.
El valor que se quiere calcular también se puede asignar a una variable. Por ejemplo:
>>x=3^2
x=
9
Hay que tener en cuenta que MatLab distingue entre mayúsculas y minúsculas, por lo
tanto, se distingue entre la variable X y la variable x.
Control Automático – Ing. Eléctrica Página 5 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
La notación para las operaciones matemáticas elementales es la habitual en todos los
programas de cálculo simbólico:
• Se definen con letras que pueden ir seguidas de números y guión bajo (_).
• La longitud máxima es de 63 caracteres.
• La letra ñ y las vocales acentuadas no son caracteres validos.
• El primer carácter debe ser siempre una letra, no un número.
• Se distinguen las mayúsculas de las minúsculas.
>> vector=[3 2 1 0]
vector =
3 2 1 0
matriz =
1 2 3
4 5 6
7 8 9
Para obtener listas completas de todas las funciones que puede utilizar MatLab, así
como para saber el uso de cada una de ellas o de cualquier comando, siempre se puede
acudir al help. Esto se puede hacer de varias formas, poniendo >>helpwin, siendo el
propio programa quien nos ofrece la ayuda (como en cualquier otro programa), o
poniendo >>helpdesk, con lo que ofrece ayuda interactiva, conectándose a Internet si
este recurso esta disponible en el ordenador.
Control Automático – Ing. Eléctrica Página 7 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
Si se conoce el nombre del comando, y se quiere saber para que sirve, se puede poner:
>>help comando
>>help rotate3d
Ofrece información sobre el comando rotate3d, comando que sirve para rotar figuras
tridimensionales utilizando el ratón. Otra forma de buscar ayuda es utilizar el comando
lookfor, por ejemplo, poniendo >>lookfor cos, aparecerá una lista con todos los
comandos que tienen que ver con la función coseno.
Algunas consideraciones: Con las flechas del cursor se pueden recuperar las órdenes
anteriores, sin tener que volver a teclearlas. Esto resulta útil en el caso de una
equivocación o cuando se quiere repetir un comando con alguna pequeña modificación.
A veces, puede resultar necesario, hasta imprescindible, que el resultado de un cálculo
no aparezca en pantalla. Por ejemplo, si se genera una matriz de orden muy alto con el
objeto de hacer después una grafica. El hecho de que aparezca la matriz en pantalla
puede resultar un poco engorroso. Para conseguir esto se pone un punto y coma al final
de la instrucción. Por ejemplo,
>>x=sin(3);
>>x=sin(10),y=cos(10),...
z=tan(10)
x=
-0.5440
y=
-0.8391
z=
0.6484
Control Automático – Ing. Eléctrica Página 8 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
Hay algunas variables especiales que se utilizan por defecto:
pi: El numero pi. (No hay una variable para el numero e, pero se podría definir
>>e=exp(1)).
eps: Es el numero mas pequeño que utiliza el ordenador tal que, cuando se le suma 1,
crea un numero en coma flotante mayor que 1.
Los vectores y las matrices son los elementos básicos con los que trabaja MatLab. Un
vector es un conjunto de datos agrupados entre corchetes, formado por una fila y varias
columnas (vector fila de 1xn) o varias filas y una columna (vector columna mx1). Una
matriz es un conjunto de vectores formado por mas de una fila y columna (mxn); los
elementos que forman una matriz se agrupan entre corchetes, siendo el punto y coma el
carácter que marca la separación de filas.
>> x=[1 2 3]
x=
1 2 3
Si se quiere definir un vector columna, se separan las filas por puntos y comas, o bien se
calcula el transpuesto de un vector fila con >>x'.
Otra forma de crear vectores es la siguiente: Se especifica el Valor Inicial, el
Incremento y el Valor Final:
>> x=1:0.5:3
x=
1.0000 1.5000 2.0000 2.5000 3.0000
Control Automático – Ing. Eléctrica Página 9 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
Genera un vector que va desde 1 hasta 3 con un paso de 0.5 unidades. Exactamente el
mismo resultado se conseguiría con el comando linspace: Se especifica el Valor Inicial,
el Valor Final y la Cantidad de elementos del vector.
>>x=linspace(1,3,5)
>> vector_de_unos=ones(1,6)
vector_de_unos =
1 1 1 1 1 1
>> vector_de_ceros=zeros(1,6)
vector_de_ceros =
0 0 0 0 0 0
2.6.1.2 – Matrices: Una matriz se puede definir introduciendo sus filas (consideradas
como vectores), separadas por puntos y comas, entre corchetes:
>>A=[3 2 1; 6 5 4; 9 8 7]
A=
3 2 1
6 5 4
9 8 7
Matrices Predefinidas: En MatLab hay varios comandos que sirven para definir con
gran facilidad matrices de tipos particulares. Algunas de estas funciones son las
siguientes:
2.6.2 – Operaciones básicas con vectores: Las operaciones entre vectores se realizan
elemento a elemento y deben ser, por lo tanto, de la misma dimensión, es decir, deben
tener el mismo número de elementos. Se estudiaran las operaciones con ejemplos:
Control Automático – Ing. Eléctrica Página 10 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
Suma:
Resta:
Producto:
El producto de dos vectores o dos matrices elemento a elemento será muy importante
cuando se quiera representar graficas de funciones.
División:
ans =
2.0000 1.5000 1.0000 0.5000
ans =
1.0000 0.6000 0.3333 0.1429
Control Automático – Ing. Eléctrica Página 11 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
Potencia:
Nota: En las operaciones producto, división y potencia, el punto (.) indica a MatLab que
ha de operar elemento a elemento, si no producirá un error.
2.6.3 – Operaciones básicas con matrices: Las operaciones con matrices deben seguir
las reglas del algebra matricial en cuanto a dimensión de aquellas con las que se va a
operar. Se estudiaran las operaciones con ejemplos:
Suma:
>>A+B
Ans =
0 3 2
5 4 6
0 4 4
Resta:
>>A-B
ans =
2 -1 2
1 4 6
4 -2 -4
Producto:
>>A*B
ans =
-3 8 8
-7 24 24
0 4 0
Potencia:
>>A^3
ans =
45 44 58
162 157 204
43 39 46
Control Automático – Ing. Eléctrica Página 12 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
2.7 – Polinomios:
Los Polinomios en MatLab son, básicamente, vectores cuyos elementos son los
términos de los que consta el Polinomio.
>> Raices1=roots(Poli1)
Raices1 =
-4.8385
-1.5592
0.3977
Nota: Las Raíces que devuelve MatLab vienen dadas en un vector columna.
2.7.2 – Operaciones entre Polinomios: Las operaciones entre Polinomios requiere que
estos tengan la misma dimensión, completándose con ceros los términos del polinomio
de potencias que no existen para mantener la misma dimensión. Se estudiaran las
operaciones con ejemplos:
Suma:
>> PoliSuma=Poli1+Poli2 % El resultado es 2x^4+x^3+7x^2+4x-2
PoliSuma =
2 1 7 4 -2
Control Automático – Ing. Eléctrica Página 13 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
Convolución:
>> PoliMult=conv(Poli1,Poli2) % Usa el comando conv
PoliMult =
0 2 12 11 -1 0 -2 8 -3
División:
>> [Cociente,Resto]=deconv(PoliMult,Poli2) % Usa el comando deconv
Cociente =
0 1 6 5 -3
Resto =
0 0 0 0 0 0 0 0 0
Derivación:
>> PoliDeriv=polyder(Poli1) % Usa el comando polyder
PoliDeriv =
3 12 5
Resolución de Polinomios:
>> polyval(Poli1,1) % Evalúa Poli1 para x=1
ans =
9
>> polyval(Poli1,[1 2 3]) % Evalúa Poli1 para x=1, 2 y 3
ans =
9 39 93
3 – Características Adicionales:
3.1 Creación de Gráficos: Para graficar funciones de la forma y = f(x) con MatLab se
usa el comando plot, que representa parejas de valores sobre unos ejes coordenados.
Estos valores se definen mediante vectores que deben tener la misma dimensión; en
caso contrario se producirá un error.
Por ejemplo, se quiere dibujar la grafica de la función y = sen(x):
Primero se crea una tabla de valores para x
>>x=0:pi/100:2*pi;
Con este comando se formo una tabla (el vector x) con 200 valores entre 0 y 2 pi. Otra
forma de conseguir el mismo resultado seria utilizar el comando
>>x=linspace(0,2*pi,200);
>>plot(x,y)
Realmente lo que se hace es dibujar 200 puntos de la función en el intervalo [0; 2pi], y
posteriormente el programa los ha unido mediante segmentos. Si el número de puntos es
lo suficientemente grande, como en este caso, no se aprecian los vértices.
Se vera un ejemplo algo mas complicado. Se quiere dibujar ahora la grafica de la
siguiente función:
>>x=-3:.01:3;
Es decir, que se dibujara la grafica en el intervalo [-3; 3] con un paso de longitud 0.01.
Se define la función
>>y=x.*exp(-x.^2);
>>plot(x,y)
>>x=linspace(0,2*pi,300);
>>y=sin(x);
>>z=sin(x+pi/3);
>>plot(x,y,'r-',x,z,'g--'),grid on
(La primera en color rojo, con trazo continuo, y la segunda en verde, con trazo
discontinuo).
Además de los comandos descritos antes para etiquetar graficas, existe la posibilidad de
poner un texto en algún otro lugar de la figura. Con el comando >>gtext('texto'), se
abrirá la figura y se podrá indicar con el ratón el lugar donde ha de ir el texto, que se
seleccionara con un clic.
- Obtención de puntos desde el grafico. Una vez que se ha realizado una grafica, se
puede necesitar conocer las coordenadas de algunos puntos de la misma. Por ejemplo, el
lugar aproximado en el que están los máximos y mínimos, o si se quiere añadir alguna
recta o una poligonal al dibujo. Para conseguir esto, se puede utilizar el comando
ginput. Escribiendo
>>[x,y]=ginput(N)
Para dibujar gráficos de funciones de dos variables z = f(x; y), al igual que para
funciones de una variable, en primer lugar hay que generar tablas de valores para las
variables x e y, en realidad, ahora lo que se tiene que hacer es generar un mallado sobre
un rectángulo del plano XY. Para eso se utiliza el comando meshgrid.
Por ejemplo, si se quiere dibujar la grafica de la función
Control Automático – Ing. Eléctrica Página 16 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
en la región del plano -2 < x < 2; -2 < y < 2, habrá que efectuar los pasos siguientes: Se
genera el mallado
>>[x,y]=meshgrid(-2:.5:2);
>>z=exp(-x.^2-y.^2);
>>plot3(x,y,z)
>>mesh(x,y,z)
>>surf(x,y,z)
>>surf(x,y,z),shading flat %efecto de sombreado distinto
Manipulación de gráficos 3D
>>[x,y]=meshgrid(0:.1:1,0:.1:3);
>>[x,y]=meshgrid(linspace(-1,1,50));
>>z=cos((x.*y)./(x.^2+y.^2+1));
>>surf(x,y,z),colorbar
Como se puede observar, los puntos más altos corresponden a los colores mas calientes
y los puntos más bajos de la grafica están coloreados con colores fríos.
EJES. Las longitudes de los ejes coordenados también se pueden modificar con el
comando axes.
Los comandos grid on y axis square también funcionan en este tipo de gráficos.
Control Automático – Ing. Eléctrica Página 17 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
ROTACION DE GRAFICAS. Otro comando interesante en las graficas 3D es
rotate3d, que permite, utilizando el ratón sobre la figura, rotarla de manera interactiva
en tres dimensiones.
CURVAS DE NIVEL. Dada una función z = f(x; y), las curvas sobre el plano XY,
determinadas por f(x; y) = k, donde k es una constante se llaman curvas de nivel. Hay
varias formas de obtenerlas usando MatLab.
Se representara la grafica de la función
>>[x,y]=meshgrid(-2:.1:2);
>>z=x.^2+y.^2;
Esta última orden dibuja un mapa de colores por niveles, la orden colorbar hace
aparecer una escala de valores según el color, es decir, indica el valor de la variable z,
como se describió antes.
Si se usa el comando contour, después se pueden etiquetar las curvas con los valores
correspondientes de la z. Para hacer esto: Primero se dibujan las curvas de nivel con
>>contour(x,y,z,10)
>>cs=contour(x,y,z,30);
O bien
Por otra parte, el comando >>meshc(x,y,z), dibuja la grafica, y por debajo, las curvas de
nivel (algunas veces será necesario modificar los ejes para que la grafica de la función
no tape a las curvas de nivel).
Control Automático – Ing. Eléctrica Página 18 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
3.2 Ficheros de Comandos: Son archivos de texto con la extensión “.m” que ejecutan
línea a línea las ordenes y comandos que aparecen en el. Se pueden construir y
modificar con cualquier editor de texto. Para crearlo seleccionar FileNewM-File; se
abrirá el editor de archivos .m donde se pueden escribir los comandos MatLab, tal y
como se ejecutarían desde el editor de comandos. Ejemplo:
Ganancia_en_Sistemas_de_2_Orden
close all
w=logspace(-1,2,1000); % Vector de frecuencias
% Análisis de la influencia de la ganancia en la respuesta en
frecuencia de un sistema de 2º orden
psi = 0.1; wn=2;
for k=[0.5 1 2];
num=[k*wn^2]; den=[1 2*psi*wn wn^2];
figure(1), hold on
bode(num,den,w), grid minor
title('Influencia de la ganancia en la respuesta en frecuencia de
un sistema de 2º orden');
legend('K=0.5','K=1','K=2');
hold off
figure(2), hold on
step(num,den);grid minor
title('Influencia de la ganancia en la respuesta en el tiempo de
un sistema de 2º orden');
legend('K=0.5','K=1','K=2');
hold off
Para ejecutarlo, basta con escribir el nombre del archivo desde el editor de comandos.
Las variables definidas en el archivo Ganancia_en_Sistemas_de_2_Orden.m pasan a
formar parte de la colección de variables existentes en la sesión de MatLab, quedando
almacenadas en el workspace junto al resto de variables.
4 – Matemática simbólica:
G12s =
1/(s+1)+2*s/(s^2+s+1)
>>pretty(G12s)
1 s
----- + 2 ----------
s+1 2
s +s+1
>>G12s=simplify(G12s)
G12s =
(3*s^2+3*s+1)/(s+1)/(s^2+s+1)
>>pretty(G12s)
2
3s +3s+1
--------------------
2
(s + 1) (s + s + 1)
Se pueden obtener dos variables simbólicas que contengan las ecuaciones del
numerador y denominador de la función mediante el comando numden.
n=
3*s^2+3*s+1
d=
(s+1)*(s^2+s+1)
4.1.1 – Rampa:
>>rampa=t;
>>plot(t,rampa)
4.1.3 – Parábola:
>>parabola=t.^2;
>>plot(t,parabola)
Las señales también se pueden definir mediante funciones simbólicas, para ello basta
con definir la variable tiempo como un símbolo en vez de cómo un vector; de esta
forma, todas las señales construidas con el tiempo simbólico pasaran a ser funciones
simbólicas:
>>escalon_s=sym('1');
>>syms t_s;
Control Automático – Ing. Eléctrica Página 21 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
>>rampa_s=t_s;
>>parabola_s=0.5*(t_s)^2;
>>ezplot(escalon_s)
>>grid on
>>hold on
>>ezplot(rampa_s)
>>ezplot(parabola_s,[0,6])
>>syms a t
>>L = laplace(exp(-a*t))
Otro ejemplo:
>>syms f t
>> f=t;
>> laplace(f)
ans =1/s^2
Otro ejemplo:
>> syms t s
>> F=laplace(f,t,s)
Para hacer más legible la expresión puede usarse el comando pretty. El siguiente es un
ejemplo de función f(t):
>> syms t s
>> f=-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t);
>> F=laplace(f,t,s)
F=
(s-5)/s/(s+2)^2
Control Automático – Ing. Eléctrica Página 22 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
>> pretty(F)
s–5 ;
s (s + 2)^2
la cual corresponde a la F(s):
>>syms t
>>L = laplace(exp(t)) %Se define el punto en el que se quiere particularizar
>>s = 5 + j %Se calcula el valor en dicho punto
>>eval(L)
>> syms t s
>> F=(s-5)/(s*(s+2)^2);
>> ilaplace(F)
ans =
-5/4+1/4*exp(-2*t)*(5+14*t)
Se puede usar el comando simplify para simplificar la respuesta:
>> simplify(ans)
ans =
-5/4+7/2*t*exp(-2*t)+5/4*exp(-2*t)
Control Automático – Ing. Eléctrica Página 23 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
>> pretty(ans)
-5/4 + 7/2 t exp(-2 t) + 5/4 exp(-2 t)
Otro ejemplo:
>> F=10*(s+2)/(s*(s^2+4*s+5));
>> ilaplace(F)
ans =
4+2*(-2*cos(t)+sin(t))*exp(-2*t)
Comando zpk: Sirve cuando la F. de T. esta expresada en función de los polos y ceros
del sistema; se le pasan tres vectores que contengan las posiciones de los ceros (z), las
de los polos (p) y el factor de ganancia (k), en ese orden. Ejemplo: Suponga la siguiente
F. de T.:
>>z = 0; % ceros
>>p = [2 1+i 1-i]; % polos
>>k = -2; % ganancia
>>H = zpk(z,p,k)
En un sistema que no contenga ceros, el vector correspondiente (z) debe estar vacío,
indicándose con [ ]. Ejemplo:
Otro ejemplo:
>>s = zpk('s');
>>H = -2*s / (s - 2) / (s^2 - 2*s + 2)
>>[n d]=ord2(1,0.7)
>>G=tf(n,d)
Las funciones de transferencia de sistemas que incluyen algun retardo del tipo se
construyen con los mismos comandos, añadiendo el tiempo del retardo en la propiedad
'Input Delay'. Ejemplo:
El comando de MatLab que realiza esta aproximación pade, al que se le pasan los
argumentos la F. de T. con retardo y el numero de términos de los que constara la serie
con la que se desea realizar la aproximación.
5.2 - Conversión de Modelos: Matlab permite que los distintos modelos puedan ser
convertidos entre sí, de modo que, por ejemplo, se pueda obtener la forma factorizada
de la función de transferencia cero-polo-ganancia, partiendo de la forma de cociente de
polinomios.
Instrucción:
Esta instrucción determina los vectores r, p, y k de los valores de residuo (r1, r2,..., rn),
los polos (p1, p2,..., pn) y los términos directos de la expansión de fracciones parciales.
Las entradas son los coeficientes de los polinomios B (b0, b1,..., bn-1), numerador de la
expresión polinómica y A (a0, a1,..., am-1), denominador de la expresión polinómica.
Ejemplo: Calcular la función de transferencia de fracciones parciales de la siguiente
función de transferencia polinómica:
Control Automático – Ing. Eléctrica Página 27 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
r=
1.0000
-0.0000
2.0000
>>p
p=
-1.0000
-1.0000
-1.0000
Instrucción:
Esta instrucción determina los ceros (z1, z2, … , zm), los polos (p1, p2,..., pn) y la
ganancia correspondiente (k) de la función de transferencia del tipo cero-polo-ganancia.
Las entradas son los coeficientes en orden descendente de potencias de s del numerador
y denominador de la función de transferencia polinómica a convertir.
Ejemplo: Calcular la función de transferencia cero-polo-ganancia de la siguiente
función de transferencia polinómica:
Control Automático – Ing. Eléctrica Página 28 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
>>% Conversión de función de transferencia en cero-polo-ganancia
>>num=[1,2,3];
>>den=[1,3,3,1];
>>[z,p,k]=tf2zp(num,den)
z=
-1.0000 + 1.4142i
-1.0000 - 1.4142i
p=
-1.0000
-1.0000 + 0.0000i
-1.0000 - 0.0000i
k=
1
Por lo tanto la solución de este Ejemplo es:
Instrucción:
Esta instrucción determina los vectores num y den de los coeficientes en orden
descendente de potencias de s del numerador y denominador de la función de
transferencia polinómica a obtener.
Las entradas son los vectores z, de los ceros (z1, z2, … , zm), p, de los polos (p1, p2,...,
pn) y la ganancia correspondiente (k) de la función de transferencia del tipo cero-polo-
ganancia.
Ejemplo: Calcular la función de transferencia polinómica de la siguiente función de
transferencia cero-polo-ganancia:
Conexión en serie
Usar el operador * o la función series para conectar modelos LTI en serie, por ejemplo:
>>H = H2 * H1
o equivalentemente:
>>H = series(H1,H2)
Control Automático – Ing. Eléctrica Página 30 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
Conexión en paralelo
Use el operador + o la función parallel para conectar los modelos LTI en paralelo, por
ejemplo:
>>H = H1 + H2
o equivalentemente
>>H = parallel(H1,H2)
>>H = feedback(H1,H2)
>>H = feedback(H1,H2,+1);
Transfer function:
0.25 s + 0.1088
-----------------------------------------------------------
s^4 + 3.456 s^3 + 3.457 s^2 + 0.9693 s + 0.1503
0.25 s + 0.1087
-----------------------------------------------------------
s^4 + 3.456 s^3 + 3.457 s^2 + 0.9693 s + 0.1503
Para el diagrama de bloques anterior, los pasos serian (Se supone que ya están definidos
F, C, G y S):
Control Automático – Ing. Eléctrica Página 33 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
>>% Definir las Entradas y las Salidas de los Bloques
>>F.InputName = 'r'; F.OutputName = 'uf ';
>>C.InputName = 'e'; C.OutputName = 'uc';
>>G.InputName = 'u'; G.OutputName = 'ym';
>>S.InputName = 'ym'; S.OutputName = 'y';
>>% Definir los Sumadores
>>Sum1 = sumblk('e','r','y','+-');
>>Sum2 = sumblk('u','uc','uf');
>>% Calcular Funcion de Transferencia r -> ym
>>T = connect(F,C,G,S,Sum1,Sum2,'r','ym');
>>step(T), grid
>>[frec amtg]=damp(G2)
Con damp también se puede conocer la ubicación de los polos poniendo una tercera
variable:
6.1.5 – Estabilidad Absoluta: Se puede preguntar si este sistema es estable (1) o no (0):
>>isstable(G2)
>>impulse(G2)
>>title('Respuesta Impulsional')
>>ylabel('Amplitud')
>>xlabel('Tiempo')
>>step(G2)
6.2.5 – Respuesta ante cualquier tipo de entrada: Se obtiene mediante el comando lsim.
Los parámetros que se le pasan son la F. de T. del sistema, seguido de los vectores de
amplitud y tiempo que forman la señal de entrada. Ejemplo:
Otro ejemplo:
6.3 – Representación de Polos y Ceros: Las posiciones que ocupan los polos y ceros de
un sistema en el plano complejo determinan modos transitorios que puede resultar
interesante conocer para el análisis y / o diseño de los sistemas. Por otro lado, brindan
información valiosa para determinar la estabilidad del sistema. El comando pzmap sirve
para obtener la grafica de polos y ceros en el plano complejo. Ejemplo: Suponga la
siguiente F. de T.:
El comando sgrid superpone en una rejilla con líneas igual valor para Psi (Coeficiente
de Amortiguamiento) y para Wn (Frecuencia Natural); permitiendo así determinar estos
parámetros para cada polo del sistema.
6.4 – El Lugar de las Raíces: Así como es importante conocer las posiciones de los
polos y ceros en lazo abierto, también los es saber cual va a ser la evolución de los polos
cunado el sistema va a trabajar en lazo cerrado y predecir el efecto que puede producir
la variación de algún parámetro del sistema (generalmente el factor de ganancia K). De
esta forma, se puede saber como va a ser el funcionamiento global del sistema y estudiar
cualquier posibilidad de inestabilidad sobre el mismo. Este análisis se lleva a cabo
Control Automático – Ing. Eléctrica Página 36 de 38
F.R. Tucumán – Universidad Tecnológica Nacional Ing. Juan Jesús Luna
mediante el Lugar de la Raíces y en MatLab se puede obtener fácilmente mediante el
comando rlocus.
Este comando se ejecuta pasándole como parámetro el objeto tf que contiene la F. de T.
del lazo abierto; su resultado es una grafica con las trayectorias que seguirán los polos
del sistema en lazo cerrado. Sobre esta grafica, y con el ratón, se puede medir cualquier
punto del lugar, obteniendo información de la posición del polo en ese punto, el factor
de ganancia que se puede añadir al sistema para alcanzar esa posición, y de los
parámetros dinámicos como la Frecuencia natural Wn, el Coeficiente de
Amortiguamiento Psi y la Sobre Oscilación Mp (en %). Ejemplo: Suponer la siguiente
F. de T.:
Del Diagrama de Bode se puede obtener información útil para analizar la Estabilidad
Relativa de los sistemas realimentados. Mediante el comando margin es posible
determinar los parámetros de Margen de Ganancia (en db), Margen de Fase (en grados)
y las respectivas Frecuencias de Cruce de Ganancia y de Fase del sistema realimentado.
>>nyquist(G2)
>>grid on
>>nichols(G2)
>>grid on