1. MATLAB Y SIMULINK
MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software
matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación
propio (lenguaje M). Está disponible para las plataformas Unix, Windows y Apple Mac OS X.
Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de
datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la
comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete
MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber,
Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario -
GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas
(toolboxes); y las de Simulink con los paquetes de bloques (blocksets).
1. Transformada de Laplace
Matlab permite obtener transformadas y antitransformadas de Laplace mediante su módulo
de matemática simbólica.
Procedimiento:
Declarar una variable simbólica con la instrucción syms.
Obtener la transformada para una expresión definida utilizando la variable
simbólica anterior.
Instrucciones de Matlab correspondientesa cada una de las transformadas:
laplace: transformada de Laplace
ilaplace: transformada inversa de Laplace
Para calcular transformadas de Laplace, MATLAB utiliza el comando laplace(f(t)) que se
encuentra en el toolbox simbólico. Por defecto la variable de integración es 't' y sólo es necesario
definir las variables y constantes simbólicas que se utilicen por medio del comando sym.
Para calcular la transformada inversa de Laplace, MATLAB utiliza el comando
ilaplace(f(s)), siendo s la variable independiente por deecto. Este comando devuelve el resultado en
2. función de 't', también aquí es necesario definir las variables y constantes simbólicas que se utilicen
por medio del comando sym.
Ejemplo 1: Calcular la transformada de Laplace de 𝑓( 𝑡) = 4 − 4𝑒−0.5𝑡
%------------------------------------------------------------------------
%REG.AUTOMATICA Y MATLAB
%En este ejemplo calcularemos la transformada de Laplace de una función
%------------------------------------------------------------------------
% Primero definimos la variable t
syms t;
% Luego introducimos la función que queremos transformar
f=(4-4*exp(-0.5*t));
%introducimos el comando laplace
ans=laplace(f)
% para arreglar el resultado
pretty(ans)
4/s-4/(s+1/2)
El primer resultado nos lo da el matlab directamente, si queremos que se vea
mejor utilizamos el comando pretty(ans)
3. Ejemplo 2: Calcular la transformada inversa de la siguiente función 𝐹( 𝑠) =
𝑠+5
𝑠2+3𝑠+2
%------------------------------------------------------------------------
%REG.AUTOMATICA Y MATLAB
%En este ejemplo veremos como se calcula la antitransformada de una
función
%------------------------------------------------------------------------
% Definimos la variable s
syms s
%introducimos la función que queremos antitranformar
f=(s+5)/(s^2+3*s+2);
%Aplicamos el comando ilaplace
ans=ilaplace(f)
ans=ilaplace(f)
ans =
-3*exp(-2*t)+4*exp(-t)
La antitransformada de la función dada
2. Función de Transferencia
Existen dos maneras básicas de representar la función de transferencia en Matlab:
A. Usando el comando tf:
Para introducir una FT del tipo 𝐺( 𝑠) =
𝑌(𝑠)
𝑋(𝑠)
, usando el comando tf, escribir
>>G=tf(num,den)
4. donde num y den son vectores representando los coeficientes de los polinomios n(s) y d(s),
respectivamente. El resultado de la variable W es un objeto del tipo TF, conteniendo el numerador y
el denominador.
Ejemplo: Tenemos 2 sistemas (sys1, sys2) cuyas FT son 𝐺1( 𝑠) =
𝑠2+2𝑠+3
𝑠3+4𝑠2 +5𝑠+6
y 𝐺2( 𝑠) =
3𝑠2
2𝑠2+6𝑠+3
%------------------------------------------------------------------------
% REG.AUTOMATICA Y MATLAB
% En este ejemplo introduciremos las Fdts de los sistemas sys1, sys2
% mediante el comando tf(num,den)
%------------------------------------------------------------------------
%Definicion del sistema sys1:
num1=[1 2 3];% Aqui se define la variable vector del numerador
den1=[1 4 5 6]; % y del denominador.
sys1=tf(num1,den1); % Creacion del sistema sys1
%Definicion del sistema sys2:
num2=[3 0 0]; % Atencion con los ceros
den2=[2 6 3];
sys2=tf(num2,den2);
% Visualizacion de las Fdts
sys1
sys2
Transfer function:
s^2 + 2 s + 3
---------------------
s^3 + 4 s^2 + 5 s + 6
Transfer function:
3 s^2
---------------
2 s^2 + 6 s + 3
B. Mediante modelosZPK (Zero-Pole-Gain)
Una forma alternativa de representar la Fdt, es mediante la factorización del numerador y del
denominador:
5. 𝐻( 𝑠) =
( 𝑠 − 𝑧1) …(𝑠 − 𝑧 𝑚)
( 𝑠 − 𝑝1)… (𝑠 − 𝑝𝑛 )
La ventaja de esta forma es que los ceros (z) y los polos (k) de la FdT son fáciles de visualizar.
La sintaxis para especificar este tipo de modelos es:
>>H=zpk(z,p,k)
donde,
z: Son los ceros de la FT en forma de vector.
p: Son los polos de la FT en forma de vector.
k: Es la ganancia del sistema.
Ejemplo: Tenemos 2 sistemas (sys1, sys2) cuyas FT son
𝐺1( 𝑠) =
−2𝑠
( 𝑠−2)(𝑠2−2𝑠+2)
y 𝐺1( 𝑠) =
( 𝑠+1)(𝑠+3)
𝑠( 𝑠+2)(𝑠+4)
% %------------------------------------------------------------
% REG.AUTOMATICA Y MATLAB
% En este ejemplo introduciremos las FDTs G1(s) y G2(s)
% como modelos zpk (zero-pole-gain)
%--------------------------------------------------------------
% G1(s)
% Primero definimos los ceros:
z=[0];
% Despues los polos:
p=[1-i;1+i;2];
% y la ganancia
k=[-2]
% Finalmente el comando
G1=zpk(z,p,k);
% G2(s)
z=[-1 -3];
p=[0 -2 -4];
k=1
G2=zpk(z,p,k);
% Visualizacion
G1
G2
G1(s)=
Zero/pole/gain:
-2 s
--------------------
(s-2) (s^2 - 2s + 2)
G2(s)=
Zero/pole/gain:
(s+1) (s+3)
-------------
s (s+2) (s+4)
6. C. Pasar de ZPK a TF
La función zp2tf convierte la función cero-polo-ganancia:
𝐻( 𝑠) = 𝐾
( 𝑠 − 𝑧1)… (𝑠 − 𝑧 𝑚)
( 𝑠 − 𝑝1) …(𝑠 − 𝑝𝑛)
En la función de transferencia polinómica:
𝐻( 𝑠) =
𝑏0 𝑠 𝑛 + 𝑏1 𝑠 𝑛−1 + ⋯+ 𝑏 𝑛−1 𝑠 + 𝑏 𝑛
𝑎0 𝑠 𝑚 + 𝑎1 𝑠 𝑚−1 + ⋯+ 𝑏 𝑚−1 𝑠+ 𝑏 𝑚
Su sintaxis es: [num,den]=zp2tf(z,p,k)
Ejemplo: Transformar la siguiente función ZPK a TF 𝐺( 𝑠) =
( 𝑠+1)(𝑠+3)
𝑠( 𝑠+2)(𝑠+4)
% %------------------------------------------------------------
% REG.AUTOMATICA Y MATLAB
% En este ejemplo introduciremos la FDT G(s)
%--------------------------------------------------------------
% Primero definimos los ceros:
z=[-1;-3];
% Despues los polos:
p=[0;-2;-4];
% y la ganancia
k=1;
% Finalmente el comando
[num,den]=zp2tf(z,p,k);
% Para visualizarlo como FT
G=tf(num,den)
G(s)=
s^2 + 4 s + 3
-----------------
s^3 + 6 s^2 + 8 s
C. Pasar de TF a ZPK
La función tf2zp convierte la función de transferencia:
𝐻( 𝑠) =
𝑏0 𝑠 𝑛 + 𝑏1 𝑠 𝑛−1 + ⋯+ 𝑏 𝑛−1 𝑠 + 𝑏 𝑛
𝑎0 𝑠 𝑚 + 𝑎1 𝑠 𝑚−1 + ⋯+ 𝑏 𝑚−1 𝑠+ 𝑏 𝑚
7. En la función de transferencia cero-polo-ganancia:
𝐻( 𝑠) = 𝐾
( 𝑠 − 𝑧1)… (𝑠 − 𝑧 𝑚)
( 𝑠 − 𝑝1) …(𝑠 − 𝑝𝑛)
Su sintaxis es: [z,p,k]=tf2zp(num,den)
Ejemplo: Transformar la siguiente función TF a ZPK 𝐺( 𝑠) =
𝑠2−2𝑠+3
𝑠3−3𝑠2−5𝑠
% %------------------------------------------------------------
% REG.AUTOMATICA Y MATLAB
% En este ejemplo introduciremos la FDT G(s)
%--------------------------------------------------------------
% Primero definimos el numerador:
num=[1,-2,-3];
% Despues el denominador:
den=[1,-3,-5,0];
% Finalmente el comando
[z,p,k]=tf2zp(num,den);
% Para visualizarlo como FT
G=zpk(z,p,k)
G(s)=
Zero/pole/gain:
(s-3) (s+1)
---------------------
s (s-4.193) (s+1.193)
3. Diagramas de Bloque
Para hacer mucho más fácil la reducción de los diagramas de bloque utilizaremos la
herramienta Simulink incluida en MatLab.
Ejemplo:
8. Primeramente entramos en MatLab y hacemos click en la barra en el icono de Simulink:.
Una vez en el programa seleccionamos File – New – Model
Creamos el modelo que queremos representar:
1- Inserta la entrada (In1) y la salidad (Out1) desplegando Commmonly Used Blocks.
De igual forma inserta el punto de suma arrastrándolo a la derecha.
2- Para insertar una función de transferencia, despliega Continuous y selecciona
Transfer Fcn y arrastrala a la derecha.
3- Doble click sobre el bloque y puedes cambiar los valores del numerador y
denominador.
4- Para invertir el bloque de posición selecciona Format – Flip Block.
5- Para unir con flechas selecciona un extremo y arrastra hasta el siguiente.
6- El resultado debe ser así:
9. Guardamos el proyecto, en este caso “Prueba” en el directorio que él nos indica.
Luego escribimos en Matlab el comando [num,den]=linmod('Prueba')
% %------------------------------------------------------------
% REG.AUTOMATICA Y MATLAB
% Reducción de Diagraas de Bloque
%--------------------------------------------------------------
% Primero el comando
[num,den]=linmod('Prueba');
% Finalmente el comando para vizualizarlo
G=tf(num,den)
Transfer function:
s^3 + 4.885e-015 s^2 - s + 6
------------------------------
s^4 + 4 s^3 + 4 s^2 - 12 s + 9