Está en la página 1de 48

Departamento de Electrónica

Universidad de Alcalá

“Introducción a MATLAB, Toolbox de


Control y Simulink”

Ingeniería Técnica de Telecomunicación


Especialidad Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

1. ¿QUÉ ES MATLAB?.

• Paquete software orientado al cálculo numérico, matrices,


procesamiento y análisis de la señal y gráficas

• Distintos campos de acción (aplicaciones):

Teoría de control
Tratamiento de señales
Inteligencia artificial
Diseño de sistemas de potencia
Control de procesos mecánicos, de aviación, automoción, etc.
Financiero
Mapeo y tratamiento de imágenes
Instrumentación y adquisición de datos
Identificación de sistemas
...

• Varios programas incluidos

MATLAB: Núcleo operativo de la herramienta matemática


Toolboxes: Librerías de funciones MATLAB asociadas a las
diferentes aplicaciones (Stateflow y Sisotool, interfaz gráfico,
control neuronal y borroso)
Simulink: Interfaz gráfico para el modelado y simulación de
sistemas
Blocksets: Bloques Simulink para aplicaciones específicas
Real Time Workshop, xPC Tarjet y desarrollo sobre DSPs y
FPGAs

Pág 2 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• Diferentes tipos de archivos:

*.M Ficheros por lotes (*.bat) sobre S.O. MATLAB


*.MAT Fichero de datos de MATLAB
*.DLL Ficheros ejecutables sobre Windows diseñados con
MATLAB
*.MDL Modelos de Simulink
Otros *.fis, *.tbl, etc. para toolboxes de control borroso, stateflow
y otros paquetes

ENTORNO DE TRABAJO

• Varias ventanas de trabajo dentro de MATLAB

Ventana de comandos:
Directamente sobre S.O. MATLAB
Entorno de trabajo (Workspace):
Visualiza las variables definidas en
cada instante
Editor de ficheros *.m: Editor
inteligente (colores e indentado)
con depurador paso a paso y
visualización de variables internas
Editor de ficheros *.mdl: Editor
gráfico para diseñar modelos de
Simulink
Elección del directorio de
trabajo: Explorador de Windows
Figuras: Potente editor de figuras
con posibilidad de incluir textos,
cambiar el formato, etc.

Pág 3 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Pág 4 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

2. EL USO DE MATLAB

MANIPULACIÓN Y FORMATO DE DATOS

• Se trabaja con matrices de números reales o/y complejos.

• Los números complejos se definen gracias a los operadores i y j de


MATLAB. Así se puede escribir en MATLAB x=3+2j, que se definirá
como una matriz de tamaño 1x1

• Un escalar es una matriz de tamaño 1x1

• Una variable fila o columna es un vector, o un array

• Existen distintos formatos de datos con los que puede trabajar


MATLAB:

Short: 5 dígitos, punto fijo


Short e: 5 dígitos, punto flotante
Long: 15 dígitos, punto fijo
Long e: 15 dígitos, punto flotante
Hex: Hexadecimal

• Para indicar que se va a trabajar con uno u otro formato de datos


se utiliza la función de MATLAB “format”

GENERACIÓN DE MATRICES

• ¿Cómo generar una fila?

A=[a b c d e] ó A=[a, b, c, d, e]

Pág 5 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• ¿Cómo generar una columna?


a 
b
 
B=[a; b; c; d; e] ó B = c 
 
d 
 e 

• ¿Cómo generar una matriz?

A= [a, b, c; d, e, f; g, h, i] ó

a b c 
A = d e f 
g h i 

• ¿Cómo generar un serie de datos?

A(punto inicial: incremento: punto final)

Ejemplo:

B=[1:1:8]

Con lo que se define un array B con el siguiente contenido:

B=[1 2 3 4 5 6 7 8 ]

SUBMATRICES Y ELEMENTOS DE UNA MATRIZ

• Para identificar un elemento de una matriz se usa la notación A(i,j)


dónde i es la i-ésima fila y j es la j-ésima columna.

Pág 6 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Sea A la siguiente matriz:

1 2 3 
A = 4 5 6 
7 8 9 

Para identificar al nº 4 dentro de la matriz A se puede indicar como


A(2,1)

• Se puede identificar una parte de una matriz (submatriz) con la


siguiente notación:

A(fila_inicial:fila_final, col_inicial:col_final)

Ejemplo:

A partir de la matriz A definida en el ejemplo anterior, se define la


matriz B de la siguiente forma:

B=A(1:3,1:2)

Entonces B será una nueva matriz de valor:

1 2 
B = 4 5 
7 8 

Truco: El operador : puede utilizarse para identificar a todos los


elementos en una serie de datos. Así en el ejemplo anterior
B=A(1:3,1:2) es lo mismo que B=A(:,1:2)

Pág 7 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

VARIABLES

• A la hora de definir una variable (matriz, submatriz, array o escalar)


se distingue entre mayúsculas y minúsculas.

• Cuando se llama a una función de MATLAB sin especificar variable


de salida, se vuelca el resultado en la variable por defecto ans. La
notación ; omite la presentación del resultado en pantalla al final de
un comando

COMANDOS Y FUNCIONES DE MATLAB

• MATLAB posee gran número de funciones provenientes de:

MATLAB: Juego de funciones y operadores básico


Toolbox: Dependiendo del tipo añadirá funciones especiales
Generadas por el usuario: funciones o scripts

• Operadores de uso general (help general)

help Comando de ayuda


who (s) Lista de variables (con s indica info sobre variable)
what (o dir) Lista de ficheros .M y .MAT
clear Borrar variables
load Carga de variables desde un fichero
save Guardar variables a un fichero *.mat
cd Cambiar de directorio de trabajo
! Ejecutar funciones DOS
... Continúa en la línea siguiente
% Comentario en una función
demo Llamada a los ejemplos de uso de MATLAB
mex Compilar ficheros de MATLAB

Truco: Es muy recomendable el uso de la help de MATLAB


Pág 8 Laboratorio de Sistemas Electrónicos de Control Continuo
I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• Operadores para matrices y arrays y variables especiales (help


ops)

ans Most recent answer.


eps Floating point relative accuracy.
realmax Largest positive floating point number.
realmin Smallest positive floating point number.
pi 3.1415926535897....
i, j Imaginary unit.
inf Infinity.
NaN Not a number
isnan True for Not a number
isinf True for infinite elements.
isfinite True for finite elements.
why Succinct answer.

Nota: Es importantísimo tener en cuenta la propiedad conmutativa en


algunas operaciones aritméticas de matrices.

A/B ≠ B/A
ya que A/B= A*B-1 y B/A= B*A-1

Pág 9 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• Otras funciones especiales, que se organizan en diferentes


categorías. Las que no pertenecen a ninguna toolbox ni blockset
específico se muestran en la siguiente tabla:

MATLAB\lang Programming language constructs.


MATLAB\elmat Elementary matrices & matrix manipulation.
MATLAB\elfun Elementary math functions.
MATLAB\specfun Specialized math functions.
MATLAB\matfun Matrix functions
MATLAB\datafun Data analysis and Fourier transforms.
MATLAB\audio Audio support.
MATLAB\polyfun Interpolation and polynomials.
MATLAB\funfun Function functions and ODE solvers.
MATLAB\sparfun Sparse matrices.
MATLAB\graph2d Two dimensional graphs.
MATLAB\graph3d Three dimensional graphs.
MATLAB\specgraph Specialized graphs.
MATLAB\graphics Handle Graphics.
MATLAB\uitools Graphical user interface tools.
MATLAB\strfun Character strings.
MATLAB\iofun File input/output.
MATLAB\timefun Time and dates.
MATLAB\datatypes Data types and structures.
MATLAB\verctrl Version control.
MATLAB\demos Examples and demonstrations.

De entre ellas se pueden remarcar algunas más interesantes:

• Polinomios (help polyfun)

roots Find polynomial roots.


poly Convert roots to polynomial.
polyval Evaluate polynomial.
polyvalm Evaluate polynomial with matrix argument.

Pág 10 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

residue Partial fraction expansion (residues).


polyfit Fit polynomial to data.
polyder Differentiate polynomial.
polyint Integrate polynomial analytically.
conv Multiply polynomials.
deconv Divide polynomials.

Además de éstas, en esta categoría, hay funciones específicas para


análisis geométrico y de interpolación.

• Estructuras del lenguaje MATLAB (help lang) (solo las más


representativas)

if Conditionally execute statements.


else IF statement condition.
elseif IF statement condition.
end Terminate scope of FOR, WHILE, SWITCH, TRY and IF
for Repeat statements a specific number of times.
while Repeat statements an indefinite number of times.
break Terminate execution of WHILE or FOR loop.
continue Pass control to the next iteration of FOR or WHILE loop.
switch Switch among several cases based on expression.
case SWITCH statement case.
otherwise Default SWITCH statement case.
try Begin TRY block.
catch Begin CATCH block.
return Return to invoking function.
error Display error message and abort function.
warning Display warning message.
lasterr Last error message.
lastwarn Last warning message.
disp Display an array.
display Overloaded function to display an array.
fprintf Display formatted message.

Pág 11 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

sprintf Write formatted data to a string.


input Prompt for user input.
keyboard Invoke keyboard from M file
pause Wait for user response.
uimenu Create user interface menu.
uicontrol Create user interface control.

• Generación de matrices (help elmat)

zeros Zeros array.


ones Ones array.
eye Identity matrix.
repmat Replicate and tile array.
rand Uniformly distributed random numbers.
randn Normally distributed random numbers.
linspace Linearly spaced vector.
logspace Logarithmically spaced vector.
freqspace Frequency spacing for frequency response.
meshgrid X and Y arrays for 3 D plots.

Pág 12 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• Funciones Elementales.

sin Sine.
sinh Hyperbolic sine.
asin Inverse sine.
asinh Inverse hyperbolic sine.
cos Cosine.
cosh Hyperbolic cosine.
acos Inverse cosine.
acosh Inverse hyperbolic cosine.
tan Tangent.
tanh Hyperbolic tangent.
atan Inverse tangent.
atan2 Four quadrant inverse tangent.
atanh Inverse hyperbolic tangent.
sec Secant.
sech Hyperbolic secant.
asec Inverse secant.
asech Inverse hyperbolic secant.
csc Cosecant.
csch Hyperbolic cosecant.
acsc Inverse cosecant.
acsch Inverse hyperbolic cosecant.
cot Cotangent.
coth Hyperbolic cotangent.
acot Inverse cotangent.
acoth Inverse hyperbolic cotangent.
exp Exponential.
log Natural logarithm.
log10 Common (base 10) logarithm.
log2 Base 2 logarithm and dissect floating point number.
pow2 Base 2 power and scale floating point number.
sqrt Square root.
nextpow2 Next higher power of 2.
abs Absolute value.

Pág 13 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

angle Phase angle.


complex Construct complex data from real & imaginary parts.
conj Complex conjugate.
imag Complex imaginary part.
real Complex real part.
unwrap Unwrap phase angle.
isreal True for real array.
cplxpair Sort numbers into complex conjugate pairs.
fix Round towards zero.
floor Round towards minus infinity.
ceil Round towards plus infinity.
round Round towards nearest integer.
mod Modulus (signed remainder after division).
rem Remainder after division.
sign Signum.

• Análisis de datos

max Largest component.


min Smallest component.
mean Average or mean value.
median Median value.
std Standard deviation.
var Variance.
sort Sort in ascending order.
sum Sum of elements.
prod Product of elements.
hist Histogram.
histc Histogram count.
trapz Trapezoidal numerical integration.
diff Difference and approximate derivative.
gradient Approximate gradient.
cov Covariance matrix.
filter One dimensional digital filter.

Pág 14 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

filter2 Two dimensional digital filter


conv Convolution and polynomial multiplication.
convn N dimensional convolution
deconv Deconvolution and polynomial division.
fft Discrete Fourier transform.
fftn N dimensional discrete Fourier Transform.
ifft Inverse discrete Fourier transform.
ifftn N dimensional inverse discrete Fourier Transform.

• Manipulación de matrices

norm Matrix or vector norm.


normest Estimate the matrix 2 norm
rank Matrix rank.
det Determinant.
trace Sum of diagonal elements.
null Null space.
orth Orthogonalization.
inv Matrix inverse.
pinv Pseudoinverse.
lscov Least squares with known covariance.
eig Eigenvalues and eigenvectors.
svd Singular value decomposition.
gsvd Generalized singular value decomposition.
eigs A few eigenvalues.
svds A few singular values.
polyeig Polynomial eigenvalue problem.
expm Matrix exponential.
logm Matrix logarithm.
sqrtm Matrix square root.

Pág 15 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

FUNCIONES DE REPRESENTACIÓN GRÁFICA

• La función más importante es “plot”, que abre una ventana de figura


y representa en ella (en general) los datos que le son pasados
como parámetros. Para representar x=f(t) se hará la llamada
plot (t,x)

• Se puede incluir información sobre el formato del gráfico (color, tipo


de línea, etc). Las opciones posibles son las que se muestran a
continuación (help plot):

Tipo de línea
* star
Color + plus
y yellow -- dashed
m magenta x x-mark
c cyan -. dashdot
r red o circle
g green : dotted
b blue . point
w white - solid
k black ^ triangle (up)
< triangle (left)
> triangle (right)
v triangle (down)
d diamond
s square
p pentagram
h hexagram

• Permite realizar representaciones de varias señales en una misma


figura. Para ello simplemente se incluyen todas las variables en una
misma llamada a plot.

Pág 16 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• Funciones asociadas a plot:

loglog Log log scale plot.


semilogx Semi log scale plot.
semilogy Semi log scale plot.
polar Polar coordinate plot.
zoom Zoom in and out on a 2 D plot.
grid Grid lines.
subplot Create axes in tiled positions.
plotedit Tools for editing and annotating plots.
legend Graph legend.
title Graph title.
xlabel X axis label.
ylabel Y axis label.
text Text annotation.
gtext Place text with mouse.

Merece la pena especial atención a la función “subplot” que divide la


pantalla gráfica (ventana de figura) en N filas y M columnas. El formato
función es subplot (N, M, J), donde J es la sub-figura sobre la que se
quiere dibujar.

• Funciones asociadas a las figuras en general

figure Create figure window.


clf Clear current figure.
close Close figure.
subplot Create axes in tiled positions.
cla Clear current axes.
axis Control axis scaling and appearance.
hold Hold current graph.
ishold Return hold state.
line Create line.
text Create text.

Pág 17 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

surface Create surface.


image Create image.
set Set object properties.
get Get object properties.
drawnow Flush pending graphics events.

Ejemplo:

Representar una señal senoidal y otra cosenoidal en la misma figura


entre 0 y 6π (3 periodos de la señal senoidal). Se haría de la siguiente
forma:

t=(0:0.1:6*pi) % el incremento de punto a punto de la


gráfica será de 0.1
x=sin(t) % se crea el vector x, será la salida senoidal
y=cos(t) % se crea el vector y, será salida cosenoidal
plot(t,x,’b’,t,y,’c+’) % se dibujan en la misma gráfica y con
distintos formatos de ploteado (color y
punteado)

Además, con las siguientes líneas de MATLAB se han incorporado los


textos a la figura:

grid
title(‘Ejemplo funcion seno y coseno’)
xlabel(‘tiempo’)
ylabel(‘seno/coseno’)
gtext(‘valor nulo’) % y se coloca el texto en el punto deseado
gtext(‘valor máximo’) % y se coloca el texto en el punto deseado
gtext(‘valor mínimo’) % y se coloca el texto en el punto deseado

El resultado es una ventana figura como la que se muestra a


continuación:

Pág 18 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Se desea representar ahora las señales senoidal y cosenoidal en la


misma ventana de figuras pero por separado, por lo que se usa
subplot, de este modo:

subplot(2,1,1) % se elige la subfigura primera o superior: fila


1ª, columna 1ª
plot(t,x,'b')
grid
title(‘Ejemplo funcion seno’)
xlabel(‘tiempo’)
ylabel(‘seno’)
subplot(2,1,2) % se elige la subfigura segunda o inferior: fila
2ª, columna 1ª
plot(t,y,'c+')
grid
title(‘Ejemplo funcion coseno’)
xlabel(‘tiempo’)
ylabel(‘coseno’)
Pág 19 Laboratorio de Sistemas Electrónicos de Control Continuo
I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Tal y como se observa todas las funciones de dibujo se refieren a la


sub-figura elegida con la función subplot. El resultado es el que se
muestra a continuación:

Ejemplo funcion seno


1

0.5
seno

-0.5

-1
0 2 4 6 8 10 12 14 16 18 20
tiempo
Ejemplo funcion coseno
1

0.5
coseno

-0.5

-1
0 2 4 6 8 10 12 14 16 18 20
tiempo

FICHEROS *.M: SCRIPTS Y FUNCIONES.

• Son archivos tipo ASCII (se realizan en cualquier editor ASCII,


aunque conviene usar el que tiene MATLAB para ello, pues incluye
un depurador) que contienen una serie de órdenes incluso
llamadas a otros ficheros *. M

• Ambas se pueden llamar desde la línea de comandos de MATLAB


o desde otra estructura similar

Pág 20 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• Los ficheros tipo scripts:

Están compuestos por llamadas a otras funciones de MATLAB


(parecido a las llamadas realizadas por DOS en los ficheros
*.BAT)
Puede utilizar las variables del entorno de trabajo (Workspace) y
devuelve los resultados a este mismo entorno. Se trata por tanto
de trabajo con variables globales
Se suelen utilizar para tareas de inicialización o de definición de
un gran número de variables en el entorno de trabajo

• Por su parte, las funciones:

Comienzan con la palabra clave function en la primera línea del


fichero
Es una aplicación (función) definida por el usuario a la que se le
pasan parámetros y que permite devolver parámetros, de forma
similar a funciones en ‘C’. La sintaxis para el paso de
parámetros es la siguiente:

function [salida1, salida2,...] = nom_función(param1, param2,...)

Las variables que utiliza son, por tanto, locales a la función


(principal diferencia con los scripts)
La función definida por el usuario se podrá invocar desde la
línea de comandos o desde cualquier script
Deben de coincidir el nombre del fichero y el nombre de la
función a implementar
Tras la primera línea (function... ) se inctroducen líneas de
comentario (comienzan por %), que serán la ayuda de la función
que se presente en la ventana de comandos de MATLAB
cuando se invoque a la ayuda de dicha función. Por ejemplo si
se define la función prueba de este modo:

function prueba()
%esta función no tiene parámetros de entrada ni de salida

Pág 21 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Cuando se invoque a la ayuda de la función en la ventana de


órdenes de MATLAB aparecerá lo siguiente:

>> help prueba


>> esta función no tiene parámetros de entrada ni de salida

• Suele ser habitual utilizar sentencias de control (ver help lang) en la


escritura de las funciones y los scrips

• Algunas de las funciones más habituales en las funciones y los


scrips

Input: Asigna un valor introducido por teclado a una variable.


Muestra una cadena de caracteres.
Keyboard: Introduce un punto de ruptura en la secuencia de
ejecución de la función. En ese momento se le permite acceder
al usuario a las variables locales y globales del sistema. Se sale
de este modo tecleando RETURN
Pause: Introduce una pausa en la ejecución de la función. Se
continua con la ejecución pulsando cualquier tecla

Ejemplo:

Crear una función llamada MEDIA que calcule el valor medio de un


array.

function y=media(x)

[m,n]=size(x);
if m==1 %es por tanto un vector
y=sum(x)/n;
else
error ('Debes de introducir un vector');
end

Pág 22 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Realizar una función en MATLAB que permita resolver un sistema


lineal de ‘n’ ecuaciones con ‘n’ incógnitas (siendo ‘n’ un valor
cualquiera). El formato de llamada a la función debe ser el siguiente:

[sol,n_sol]=sistema(S)

donde:
• sol= vector que contiene las soluciones al sistema
• N_sol= número de soluciones del sistema
• S=matriz que contiene los coeficientes y términos independientes de
las n ecuaciones en el siguiente formato:

3 − 1 1 - 2 
3a − b + c − 2 = 0
S = 5 2 3 - 1
5a + 2b + 3c − 1 = 0
- 1 5 - 2 - 5
− a + 5b − 2c − 5 = 0

function [sol,n_sol]=prac2_1(S)

%FUNCION QUE RESUELVE UN SISTEMA DE ECUACIONES

[filas,columnas]=size(S);

if (filas>columnas)
error('Sistema de ecuaciones no correcto')

else
%vector formado por la ultima col
Aux_1=S(:,columnas);

%Se convierten los términos independientes a valor


% positivo ya que el usuario los introduce como valor negativo
Aux_1=Aux_1*(-1);
columnas=columnas-1;

%matriz cuadrada formada por los coeficientes de las variables


Aux=S(:,1:columnas);
Aux_inv=inv(Aux); %Aux_inv=Aux-1
sol=Aux_inv*Aux_1; %matriz solucion

Pág 23 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

[n_sol, a]=size(sol); %retorno del resultado


end

Ejemplo:

Crear una función llamada MAXIMO que devuelva el mayor de los


elementos de un vector.

N=maximo(A)

• N= número mayor de A;
• A= vector enviado;

function x=maximo(A)

% Se introduce un vector y se obtiene el valor maximo de él

[m,n]=size(A); %Se saca el numero de columnas y filas


if m==1 %Se trata de un vector
long=length(A);
i=2;
sol=A(1);
while (i<=long)
if A(i)>=sol %Se compara si el valor actual es
%mayor que el anterior. Si lo es
sol=A(i); %se acumula
end %fin del if
i=i+1;
end %fin del while
x=sol;

else
error ('Introduce un vector y no una matriz');
end %fin del if principal

Pág 24 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

3. EL USO DE SIMULINK

• Herramienta gráfica incorporada a Matlab, que permite de forma


más fácil definir el modelo de sistemas de muy diferentes tipos (no
solo LTI) y aplicaciones

• Los elementos de trabajo de un modelo de Simulink son objetos o


iconos, agrupados en librerías que proporciona el paquete
integrado de Matlab para las distintas aplicaciones

• El fichero asociado a cada modelo es un *.MDL, que puede ser


abierto como un fichero *.M cualquiera (tiene una estructura
especial pero el funcionamiento es el mismo)

• Se puede llamar a la librería de bloques de Simulink (ventana


Simulink) desde la ventana de comandos tecleando “Simulink”, o
abrir directamente un fichero *.MDL

• Pasos a seguir para trabajar con Simulink:

1. Definición gráfica del modelo a simular con las librerías de


Matlab para Simulink
2. Simulación del modelo y análisis de resultados, que se pueden
mostrar directamente en Simulink o a través de Matlab enviando
los resultados al entorno de trabajo

• Librerías de Simulink Posee librerías distribuidas en función de la


aplicación. Tiene una librería básica, llamada Simulink, con el
siguiente contenido:

Sources (fuentes de señal)


Sinks (sumideros o almacén de resultados)
Continuous
Discrete
No linear

Pág 25 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Signals&Systems (buses, multiplexores y demultiplexores,


puertos para enviar señales de un modelo a otro, etc.)
Math (trigonométricas, aritméticas, etc.)
Funciones y tablas (llamadas a funciones de Matlab o de usuario
y tablas de look-up)
...

• Hay librerías específicas para cada aplicación (Blocksets y


Toolboxes):

Control (controladores ya diseñados)


Control Borroso
Control Neuronal
Identificación
Power
DSP
Fixed Point
Comunicaciones
RTW y xPC Tarjet
Stateflow
User Interface
...

• El usuario puede definir nuevas librerías a partir de algún modelo


realizado, mediante los bloques S-function

Pág 26 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

OBJETOS BÁSICOS DE SIMULINK

• Fuentes: Emisores de información (Generadores de señales, señal


rampa, impulso, ...)

• Procesos: Bloques de E/S de todos los tipos antes mencionados

• Destinos: Receptores de información

Pág 27 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• Conexiones: Son unidireccionales. Hipotéticos cables.

CREACIÓN DE UN MODELO SIMULINK

• Para generar un diagrama de bloques, una vez abierto un fichero


*.MDL nuevo y con ventana de Simulink, se sigue el siguiente
proceso:

1. Se abre la librería donde se encuentra el elemento necesario.


2. Para copiar un objeto de la sesión de trabajo, basta con
seleccionar el objeto y arrastrarlo
3. Para hacer una conexión entre una salida y una entrada, se
posiciona el cursor sobre la salida de la fuente o la entrada, se
pulsa el botón izquierdo del ratón y sin soltarlo se desplaza el
cursor hasta el otro punto que se desea unir
4. Haciendo doble click sobre los elementos copiados se modifican
los parámetros de éste. (Admiten parámetros que sean variables
de Workspace)

Ejemplo

Realizar el diagrama de bloques de la figura:

1. Se entra en Simulink y se abre una ventana nueva.

Pág 28 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

2. Se abre la librería continuous y se copian los bloques sumador y


F.T.
3. Se abre la librería sources y se copia el bloque escalón (step
input)
4. Se abre la librería sinks y se copia el bloque scope
5. Se unen mediante el ratón los bloques.
6. Se editan los bloques para que aparezcan como en la figura (en
el bloque “Trasnfer Fcn” Numerator y Denominator han de
contener los coeficientes del polinomio correspondiente en
potencias decrecientes de ‘s’). En el ejemplo:

Numerator [1 2]
Denominator [1 2 5]

7. Se salva el fichero (*.MDL).

Truco: Probar a definir los parámetros de configuración de los bloques


mediante variables definidas previamente en el entorno de trabajo de
MATLAB. De este modo se facilita el diseño de sistemas en base a un
modo de funcionamiento prueba-error

CONFIGURACIÓN DE LA SIMULACIÓN

• Es importante configurar la simulación antes de realizarla. Para


ello, en el menú principal de la ventana del modelo (*.MDL) creado
con Simulink ir a Simulation Parameters

• Permite configurar diferentes características sobre la simulación, a


saber:

La forma de resolver el sistema de ecuaciones diferenciales que


componen el modelo diseñado en Simulink y al tiempo de
simulación

Pág 29 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Las variables de salida que ha de generar la simulación en el


entorno de trabajo de MATLAB

Otros parámetros avanzados de simulación, como la


configuración de los avisos y errores que ha de generar la
simulación por conexiones incorrectas, o la configuración de la
compilación del modelo con la herramienta RTW

Pág 30 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• Con respecto al paso de SIMULACIÓN, es necesario tener en


cuenta ciertos aspectos básicos

El paso de simulación es el intervalo de integración de los


algoritmos de resolución del modelo
Se puede definir variable (lo fija Simulink en función del modelo
concreto a simular) en todos los casos excepto en la generación
de código RTW
Si el paso de simulación es muy bajo el tiempo de ejecución
elevado (puntos excesivos), y si es muy bajo la resolución es
peor (se pierde definición del sistema), pudiendo incluso llegar a
no representar correctamente le comportamiento del sistema al
no cumplir la teoría de sistemas muestreados (al fin y al cabo la
simulación de sistemas continuos con Simulink pretende
representar su comportamiento real en el tiempo)
Una regla práctica es hacer que el paso de simulación sea al
menos de la décima parte del tiempo de subida de la respuesta
del sistema

• Con respecto a las variables de salida de Simulink, es necesario


comentar también un punto:

Se pueden pasar las respuestas de las simulación al Workspace


de MATLAB a través de los bloques “to Workspace” de Simulink
Convendrá también tener en el entorno de trabajo el array de
tiempo con el que se ha generado la simulación
Éste se puede generar con un bloque “Clock” de Simulink y
pasarlo a MATLAB del mismo modo, pero también se puede
usar la variable tout que se genera automáticamente si así se
indica en la configuración de la simulación
La variable yout que se genera del mismo modo contiene el
resultado de las señales conectadas a puertos de salida del
modelo de Simulink

Pág 31 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Visualizar el resultado de la simulación del modelo del ejemplo anterior

Nota: Prestar atención a que la respuesta coincida exactamente con


la aquí mostrada y modificar la configuración de los bloques de
Simulink correspondientes para que así sea

Ejemplo:

Variar el modelo anterior para implementar el siguiente sistema.


Visualizar desde MATLAB y desde Simulink los resultados (variable
Salida frente al tiempo)

Desde Simulink: con el bloque Scope:

Pág 32 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Desde MATLAB:

>>plot(tout, Salida);

>>plot(tiempo, Salida);

Pág 33 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Truco: Se puede arrancar la simulación de un modelo preexistente


(fichero *.MDL) con la función sim de MATLAB, con la siguiente
sintaxis:

[T,X,Y] = sim('modelo', [TInicio TFin] ,OPTIONS,UT)

Donde los parámetros 2º al 4º de la llamada a sim son opcionales

Ejemplo:

Realizar el siguiente diagrama de bloques y representar desde


MATLAB la señal de salida

¿Para qué sirve el multiplexor?

Pág 34 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

4. LA TOOLBOX DE CONTROL DE MATLAB

• Funciones de aplicación específica para ingeniería de control de


sistemas. Son ficheros *.M

• Sirve tanto para control continuo como para control discreto,


clásico (en espacios transformados sobre sistemas LTI) y de otros
tipos (variables de estado, borroso, neuronal, robusto, no lineal,
etc.)

• En los dos campos permite realizar tareas de: modelado,


conversión de modelos y análisis de respuesta temporal,
frecuencial y en espacios transformados

• Las herramientas para obtención de los modelos de los sistemas


se encuentran en otra Toolbox: la de identificación

• Todas las funciones de control se encuentran en la demo de


control que se ejecuta con el comando MATLAB: ctrldemo

MODELADO DE SISTEMAS DE CONTROL CONTINUO

• Las funciones de la toolbox en MATLAB permiten trabajar solo


sobre sistemas lineales e invariantes continuos y discretos en el
tiempo, y en espacio transformado

• Permiten representar los sistemas LTI mediante 4 modelos


diferentes en los espacios transformados (‘s’ para sistemas
continuos y ‘z’ para sistemas discretos):

Función de transferencia
Función Polo-Cero
Descomposición en fracciones simples
Variables de Estado

Pág 35 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

FUNCIÓN DE TRANSFERENCIA

• El formato Función de Transferencia (FT) corresponde con


representaciones del siguiente tipo:

num(s) a1 * sm -1 + a 2 * s m - 2 + ... + a ns m -n
H(s) = =
den(s) b1 * s j−1 + b 2 * s j- 2 + ... + b t * s j- t

• ¿Cómo se introduce en MATLAB una FT?: creando dos vectores


que contengan el valor de los coeficientes del numerador y
denominador del sistema en el espacio transformado
correspondiente

Ejemplo:

Obtenga el modelo MATLAB del siguiente sistema en formato FT:


3s 2 + 2s + 1
H(s) = 2
(s + 4s + 1)(s + 5)

A través de un fichero script, o de comandos de MATLAB:

num=[3 2 1]; %numerador


den1=[1 4 1]; %primer polinomio del denominador
den2=[1 5]; %segundo polinomio del denominador
den=conv(den1,den2); %multiplicación de dos polinomios

FORMATO POLO–CERO

• El formato polo–cero corresponde con representaciones del


siguiente tipo:
(s - z1 )(s - z 2 )(s - z 3 )...(s - z n )
H(s) = k
(s - p1 )(s - p 2 )(s - p 3 )...(s - p n )

Pág 36 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

• ¿Cómo se introduce en MATLAB un sistema en este formato?: en


este caso se crean dos vectores que contengan el valor de los
polos y los ceros (raíces del denominador y del numerador
respectivamente) de la función de transferencia del sistema a
representar

Ejemplo:

Obtenga el modelo MATLAB del siguiente sistema en formato cero-


polo:

(s + 1)(s + 2)
H(s) = 4
(s + 3)(s + 4)(s + 5)
Mediante un fichero script:

K=4; %constante del sistema


Z=[-1 –2]; %ceros del sistema
P=[-3 –4 –5]; %polos del sistema

CONVERSIÓN ENTRE FORMATOS

• Las siguientes funciones permiten realizar conversiones entre los


distintos formatos de representación de sistemas

residue Expansión en fracciones parciales


roots Obtiene las raíces de un polinomio
poly Obtiene un polinomio desde sus raíces
conv Permite multiplicar polinomios
tf2zp De FT a formato polo–cero
zp2tf De formato polo–cero a FT
c2dm, d2c Conversión entre el mundo discreto y el continuo
printsys Imprime la función de transferencia de un sistema

Pág 37 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Transformar de formato función de transferencia a formato polo cero la


siguiente función:

N (s) 20( s + 10)( s 3 + 1)


G( s) = =
D( s ) s ( s + 2) 2 ( s 2 + 10 s + 100)( s 4 + 2 s 3 − 10)

En MATLAB:

num1=10;
num2=[1 10]; %(s+10)
num3=[1 0 0 1]; % (s^3+1)
NUM=conv(num1,(conv(num2,num3)));

den1=[1 0]; % (s)


den2=[1 2]; % (s+2)
den2=conv(den2,den2); %Generando (s+2)^2
den3=[1 10 100]; %(s^2+10s+100)
den4=[1 2 0 0 -10]; %(s^4+2s^3-10)
DEN=conv(den1,conv(den2,conv(den3,den4)));

[Z,P,K]=tf2zp(NUM,DEN); %CONVERSIÓN A CERO POLO

Ejemplo:

Transformar de formato polo-cero a formato función de transferencia la


siguiente función:

( s + 1)3
H ( s) =
( s + 4)( s + 3) 2 ( s 4 + s 3 + s 2 + 2)

Pág 38 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

En MATLAB:

Z=[-1; -1; -1 ]; %(s+1)^3


D1=roots([1 5 2]); %Obtención de las raíces de (s^2+5s+2)
B=[1 3];
D2=roots(conv(B,B)); %(s+3)^2
P=[4; D2; D1];
k=1;
[NUM,DEN]=zp2tf(Z,P,k);

Si una vez hecho esto, se hace desde la ventana de comandos una


llamada a printsys(NUM,DEN), el resultado es el siguiente:

s^3 + 3 s^2 + 3 s + 1
----------------------------------------------------
s^5 + 7 s^4 - 3 s^3 - 107 s^2 - 210 s - 72

GENERACIÓN DE DIAGRAMA DE BLOQUES, CONEXIÓN DE


SISTEMAS

• La toolbox de MATLAB para control incluye también funciones


para resolver las funciones de transferencia expresadas
mediante diagrama de bloques

• Las siguientes funciones permiten realizar conexiones entre los


distintos bloques que conforman un sistema de control

cloop Cierra el lazo realimentación unitaria


feedback Conexión mediante realimentación
series Conexión en serie de modelos
parallel Conexión en paralelo de sistemas

Pág 39 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Obtener la función de transferencia total del sistema que se muestra a


continuación, suponiendo que se parte del conocimiento del
numerador y el denominador de cada bloque del diagrama

+ (s-1)(s-2)(s-3)
- +
Step Input - (s+1)(s+3)(s-4)
Sum Sum1
Zero-Pole Auto-Scale
Graph

25
s+10
Transfer Fcn

en MATLAB, de la siguiente forma:

[NUM,DEN]=feedback(NUMZP, DENZP, NUMTF,DENTF,-1);


[NUM,DEN]=cloop(NUM, DEN,-1);

Pág 40 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

5. FUNCIONES DE ANÁLISIS DE SISTEMAS CONTINUOS DE LA


TOOLBOX DE CONTROL (I)

• Conjunto de instrucciones que facilitan el análisis de la respuesta


temporal, frecuencial y lugar de las raíces de un sistema de control.

• En este punto solo se van a presentar las funciones relacionadas


con el análisis temporal

RESPUESTA TEMPORAL

• Se usa para obtener características temporales del régimen


transitorio y del permanente o estacionario, de la respuesta de un
sistema a entradas diversas

• Las funciones de la toolbox de MATLAB utilizadas para generar


respuestas temporales ante entradas variadas, son las siguientes

step Respuesta a un escalón


impulse Respuesta a un impulso
lsim Entrada aleatoria
ginput Averiguar valores de un determinado punto de la gráfica
damp Permite obtener ωn y ξ
dcgain Permite obtener la ganancia estática de una FT

Nota: Las funciones step e impulse generan automáticamente una


gráfica de la respuesta temporal, en caso de no pedir ningún valor de
salida

Pág 41 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Dado el siguiente sistema determinar su respuesta al impulso y al


escalón:
1
H ( s) =
s +1

La respuesta al impulso se obtendrá mediante el siguiente comando:

>>impulse([1],[1 1]);

Impulse Response
1

0.9
0.8

0.7

0.6
Amplitude

0.5
0.4

0.3

0.2

0.1

0
0 1 2 3 4 5 6
Time (sec)

Pág 42 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Posteriormente se llama a la función step, obteniéndose el resultado


gráfico que se muestra a continuación:

>>step([1],[1 1]);

Step Response
1
0.9

0.8
0.7
0.6
Amplitude

0.5
0.4

0.3
0.2
0.1

0
0 1 2 3 4 5 6
Time (sec)

Pág 43 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

6. FUNCIONES DE ANÁLISIS DE SISTEMAS CONTINUOS DE LA


TOOLBOX DE CONTROL (II)

• La toolbox de control de MATLAB posee un conjunto de funciones


que permiten realizar fácilmente trazados del Lugar de las Raíces
de un sistema realimentado, así como sacar información a partir de
éste

• Las funciones relacionadas con el trazado del Lugar de las Raíces


se muestran en la siguiente tabla

rlocus Trazado del Lugar de las Raíces (para ss. continuos y


discretos)
rlocfind Identificación concreta de un punto del lugar
pzmap Representación del diagrama de polos y ceros
sgrid Red de obtener ωn y ξ en el plano ‘s’

Nota: la función rlocus abre directamente una ventana de figura nueva


y dibuja en ella el Lugar de las Raíces del sistema cuya F(s) (o F(z))se
pasa como parámetro. Sin embargo, la función rlocfind necesita de la
ejecución previa de la anterior para operar

Ejemplo:

Se desea conocer el trazado del Lugar de las Raíces del sistema


siguiente:
s+13
K
s+10
Gain Transfer Fcn

1
s2 +1.5s+8
Transfer Fcn1

Pág 44 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Para resolverlo se ejecuta desde MATLAB el siguiente conjunto de


comandos:

NUMG=[1 13] %Numerador de G(s)


DENG=[1 10] %Denominador de G(s)
NUMH=[1] %Numerador de H(s)
DENH=[1 1.5 8] %Denominador de H(s)
N=conv(NUMG,NUMH) %Numerador de G(s)H(s)
D=conv(DENG,DENH) %Denominador de G(s)H(s)
rlocus(N,D)
sgrid
Root Locus
40
40 0.28 0.19 0.135 0.095 0.06 0.03
35
30
30 0.4
25
20
20
15
0.7
10
10
5
Imag Axis

5
-10
10
0.7
15
-20
20
25
-30 0.4
30
35
-40 0.28 0.19 0.135 0.095 0.06 0.03
40
-12 -10 -8 -6 -4 -2 0
Real Axis

Pág 45 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Obtenga para el sistema del ejemplo anterior cuál es el valor de K que


hace al sistema inestable

Dicho valor será aquél que haga que las raíces del lugar representado
anteriormente tengan parte real positiva. Para poder obtener dicho
valor se utiliza la función rlocfind, de esta forma:

>> rlocfind(N,D)

Obteniéndose el siguiente resultado en la ventana de comandos de


MATLAB:

>>Select a point in the graphics window


>>selected_point =
0.0482 +12.6479i
>>ans =
136.2106

Truco: Si se desea conocer además el valor que tienen todas las


raíces del sistema en lazo cerrado para esa K se deberá recoger como
parámetro de salida de rlocfind un vector que contendrá el dichos
valores de este modo:

>>[K,raices]= rlocfind(N,D)

Pág 46 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Ejemplo:

Si se desea que el sistema tenga una respuesta con coeficiente de


amortiguación de valor 0.1, indique cuál sería el valor de K necesario y
compruebe el resultado con la función step

Para conocer el valor de K con ξ=0.1 se redibuja el Lugar de las


Raíces son rejilla y se invoca a la función sgrid de este modo

>> sgrid(0.1,2)

Donde el valor de ωn se ha fijado sin ningún criterio concreto

Después se llama vuelve a llamar a la función rlocfind, y se obtiene el


valor de K que será el fijado en el diagrama de bloques de Simulink
que permite obtener la espuesta al escalón del sistema en lazo
cerrado. El resultado se muestra en la figura siguiente:

20

15

10

-5
0 2 4 6 8 10 12 14 16 18 20

Pág 47 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos
“Introducción a MATLAB, Toolbox de Control y Simulink”

Para comprobar si la respuesta coincide con la de un sistema de


segundo orden típico, se obtiene el valor de Mp correspondiente al
coeficiente de amortiguación comentado. Calculando dicho valor el
resultado es de 72.9%

Como se observa, el Mp es mayor. Esto se debe a que el sistema en


lazo cerrado tiene además un cero y otro polo que no es del todo
dominante

Pág 48 Laboratorio de Sistemas Electrónicos de Control Continuo


I.T.T Sistemas Electrónicos

También podría gustarte