Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guía de Fundamentos de Matlab para Control-Inicio - 2017A
Guía de Fundamentos de Matlab para Control-Inicio - 2017A
GUÍA DE FUNDAMENTOS
Precaución: Matlab es un software que es sensible a las letras mayúsculas y minúsculas (case sensitive).
Recomendación para comenzar un nuevo programa: Los siguientes comandos son usualmente empleados para
encerar y comenzar un nuevo programa sin tener problemas con variables anteriormente introducidas o confusión
con gráficas anteriormente generadas.
COMANDO FUNCIÓN
clc % limpia la pantalla del command window. (No borra el historial)
POLINOMIOS:
En Matlab, un polinomio se puede definir mediante un vector (fila) que contiene solo sus coeficientes. Estos
coeficientes deben ser introducidos de manera ordenada comenzando por el coeficiente del término de mayor
grado y separados por un espacio en blanco o una coma.
Ejemplo En Matlab
>> p = [4 5 3 8] %todos los elementos de un vector
%deben ir entre corchetes [ ]
𝑝(𝑠) = 4𝑠 3 + 5𝑠 2 + 3𝑠 + 8 p=
4 5 3 8 %resultado
1 0 0 0 0 5 8 %resultado
RAÍCES DE UN POLINOMIO:
Las raíces de cualquier polinomio (sea el polinomio del numerador o el polinomio del denominador de una función
de transferencia) se puede determinar a través del comando: “roots (polinomio)”
Ejemplo En Matlab
Si el siguiente polinomio representa el polinomio del >> num = [4 5 3 8]
numerador de una función, y extraemos sus raíces, esos >> raices= roots(num)
valores corresponderían a los ceros de la función.
raices =
3 2 -1.5779 + 0.0000i
𝑛𝑢𝑚(𝑠) = 4𝑠 + 5𝑠 + 3𝑠 + 8 0.1640 + 1.1138i
0.1640 - 1.1138i
Si el siguiente polinomio representa el polinomio del >> den = [1 0 0 0 0 5 8]
denominador de una función, y extraemos sus raíces, >> raices= roots(den)
esos valores corresponderían a los polos de la función.
raices =
1
1.3248 + 0.8506i
1.3248 - 0.8506i
𝑑𝑒𝑛(𝑠) = 𝑠 6 + 5𝑠 + 8 -0.1965 + 1.4574i
-0.1965 - 1.4574i
-1.1283 + 0.4682i
-1.1283 - 0.4682i
Ejemplo En Matlab
Dadas las siguientes raíces, obtener el >>raices= [-3.3553 0.1777+1.0773i 0.1777-1.0773i]
respectivo polinomio:
>>polinomio=poly(raices)
raices =
-3.3553
0.1777 + 1.0773i polinomio =
0.1777 - 1.0773i 1.0000 2.9999 -0.0003 4.0000 %resultado
• Introducir el numerador y denominador de la función de transferencia por separado y luego unir estos
polinomios mediante el comando: “ tf (numerador , denominador) ”
Ejemplo En Matlab
>>num=[1 -1 1.5]
𝑠 2 − 𝑠 + 1.5 >>den=[1 0 3 0 17]
𝐺𝑝(𝑠) = 4
𝑠 + 3𝑠 2 + 17
>>Gp=tf(num,den)
Gp = % resultado
s^2 - s + 1.5
----------------
s^4 + 3 s^2 + 17
• Una segunda manera es a través de definir directamente a la “s” como el dominio de trabajo de la función
de transferencia: s= tf(‘s’)
Ejemplo En Matlab
>> s= tf(‘s’)
𝑠 2 − 𝑠 + 1.5
𝐺𝑝(𝑠) = 4
𝑠 + 3𝑠 2 + 17 >>Gp=(s^2 - s + 1.5)/(s^4 + 3*s^2 + 17)
Gp = % resultado
s^2 - s + 1.5
----------------
s^4 + 3 s^2 + 17
2
• Si se conocen los polos, ceros y la ganancia de la función de transferencia, se puede emplear el comando:
“zpk( [ceros], [polos], ganancia )”:
Ejemplo En Matlab
>> Gp= zpk( [-1], [0 -3 -2+i -2-i], 4)
Gp =
4 (s+1) % resultado
----------------------
s (s+3) (s^2 + 4s + 5)
4 (𝑠 + 1) o también:
𝐺𝑝(𝑠) =
𝑠 (𝑠 + 3) (𝑠 + 2 − 𝑖) (𝑠 + 2 + 𝑖)
>> ceros=[-1] %1 cero
¿Cuáles son los ceros, polos y la >> polos=[0 -3 -2+i -2-i] % 4 polos
ganancia de este sistema? >> ganancia= 4 %no se define como vector sino un valor
%real.
>>Gp= zpk( ceros,polos,ganancia)
Gp =
4 (s+1) % resultado
----------------------
s (s+3) (s^2 + 4s + 5)
CONVERSIÓN DE FORMATO:
✓ FRACCIONES PARCIALES:
Una función de transferencia puede ser descompuesta en fracciones simples (fracciones parciales) mediante
el comando “residue(numerador,denominador)” . Este comando exige que se introduzcan por separado el
numerador y el denominador de la función (como polinomios).
Al aplicar este comando Matlab calcula tres vectores: r, p, y k. El vector r presenta los valores de residuo (r1, r2,...,
rn), el vector p presenta los valores de los polos (p1, p2,..., pn) y k representa los términos directos de la expansión
de fracciones parciales.
Ejemplo En Matlab
>> num=[1 1]
>> den=[1 5 6]
𝑠+1 𝑠+1
𝐺= = 2 >> G=tf(num,den) %para comprobar
(𝑠 + 2)(𝑠 + 3) 𝑠 + 5𝑠 + 6
3
>>[r,p,k]=residue(num,den)
r=
2.0000
-1.0000
p=
-3.0000
-2.0000
Esta función de transferencia en formato de polos (𝑝𝑛 ), ceros (𝑧𝑛 ) y ganancia (k) sería:
Ejemplo En Matlab
>> num=[4 1]
>> den=[1 5 6]
4𝑠 + 1 4𝑠 + 1
𝐺= = 2 >> G=tf(num,den) %para comprobar
(𝑠 + 2)(𝑠 + 3) 𝑠 + 5𝑠 + 6
>>[ceros,polos,B0]=tf2zp(num,den) %donde B0 representa la
%ganancia estática propia del sistema
ceros =
-0.2500
polos =
-3.0000
-2.0000
B0 =
4
4
4 (𝑠 + 0.25)
𝐺=
(𝑠 + 3)(𝑠 + 2)
Si, por el contrario, lo conocido son los ceros, polos y ganancia y se quiere obtener el numerador y denominador
de la función de transferencia por separado:
num2 =
0 4 1 % polinomio del numerador = 4s+1
den2 =
1 5 6 % polinomio del denominador = s2+5s+6
DIAGRAMA DE BLOQUES
% previamente definir G1 y G2
• Bloques en retroalimentación:
-> negativa: feedback(función1, función2, -1) o feedback(función1, función2) (se considera que por
default si no se coloca el número 1, se reconocerá como -1, es decir retroalimentación negativa).
Ejemplo En Matlab
Negativa:
% previamente definir G1 y G2
% o también
>> Gequivalente= feedback(G1,G2)
5
sus numeradores separados de sus denominadores
para obtener el numerador de la función equivalente
separado del denominador de la misma función
equivalente.
Positiva:
% previamente definir G1 y G2
% previamente definir G1 y G2
❖ ESCALÓN: step(magnitud*función_de_transferencia,opcional:vector_tiempo)
Ejemplo En Matlab
Excitar al sistema ante una % previamente definir G
entrada tipo escalón de 4 %para presentar gráficamente la respuesta del sistema ante una entrada
unidades de magnitud. tipo escalón:
(Ustedes deben escribir la >> step(4*G) %El sistema representado por la función de transferencia G
función de transferencia del %es excitado por una entrada escalón de 4 unidades. Si no
sistema). %se ha colocado explícitamente el tiempo de análisis,
%Matlab escogerá por sí solo el tiempo de estudio.
6
>>tiempo=0:0.1:20 %se define el vector tiempo, el cual comienza en el
%valor de 0, avanza con pasos de 0.1 y finaliza en 20.
>>step(4*G,tiempo)
❖ IMPULSO
Ejemplo En Matlab
Excitar al sistema ante una % previamente definir G
entrada tipo impulso. %para presentar gráficamente la respuesta del sistema ante una entrada
tipo impulso:
>>respuesta=lsim(G,rampa,tiempo)
7
%para graficar la respuesta obtenida:
>>plot(tiempo, respuesta)
Si se desea contraponer dos gráficas para comparar resultados, se puede usar el comando “hold on” al finalizar la
primera gráfica y “hold off” al finalizar la última gráfica.
Si se desea contraponer diferentes respuestas ante una entrada tipo escalón, se puede usar el comando
“step(G1,G2,…,Gn)”; para agregar la leyenda se emplea: “legend(‘título de función 1’,’título de función 2’)”
COMANDO FUNCIÓN
pole(G) % determina los polos de la función de transferencia G
zero(G) % determina los ceros de la función de transferencia G
Introducción de la función de
Ejemplo Polos y ceros en Matlab
transferencia
num= [1 -2 3]
den=[5 1 0 9] >>polos_sistema=pole(G)
G=tf(num,den)
polos =
G= -1.2869 + 0.0000i
2
𝑠 − 2𝑠 + 3 s^2 - 2 s + 3 0.5434 + 1.0504i
𝐺(𝑠) = --------------- 0.5434 - 1.0504i
5𝑠 3 + 𝑠 2 + 9
5 s^3 + s^2 + 9
s=tf('s') >>ceros_sistema=zero(G)
G=(s^2-2*s+3)/(5*s^3+s^2+9)
ceros =
G=
s^2 - 2 s + 3 1.0000 + 1.4142i
--------------- 1.0000 - 1.4142i
5 s^3 + s^2 + 9
8
EJERCICIOS:
Resultado: