You are on page 1of 48

Departamento de Electrnica

Universidad de Alcal

Introduccin a MATLAB, Toolbox de


Control y Simulink

Ingeniera Tcnica de Telecomunicacin


Especialidad Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

1. QU ES MATLAB?.
Paquete software orientado al clculo numrico, matrices,
procesamiento y anlisis de la seal y grficas
Distintos campos de accin (aplicaciones):
Teora de control
Tratamiento de seales
Inteligencia artificial
Diseo de sistemas de potencia
Control de procesos mecnicos, de aviacin, automocin, etc.
Financiero
Mapeo y tratamiento de imgenes
Instrumentacin y adquisicin de datos
Identificacin de sistemas
...
Varios programas incluidos
MATLAB: Ncleo operativo de la herramienta matemtica
Toolboxes: Libreras de funciones MATLAB asociadas a las
diferentes aplicaciones (Stateflow y Sisotool, interfaz grfico,
control neuronal y borroso)
Simulink: Interfaz grfico para el modelado y simulacin de
sistemas
Blocksets: Bloques Simulink para aplicaciones especficas
Real Time Workshop, xPC Tarjet y desarrollo sobre DSPs y
FPGAs

Pg 2

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin 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 diseados 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
visualizacin de variables internas
Editor de ficheros *.mdl: Editor
grfico para disear modelos de
Simulink
Eleccin
del
directorio
de
trabajo: Explorador de Windows
Figuras: Potente editor de figuras
con posibilidad de incluir textos,
cambiar el formato, etc.

Pg 3

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Pg 4

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

2. EL USO DE MATLAB
MANIPULACIN Y FORMATO DE DATOS
Se trabaja con matrices de nmeros reales o/y complejos.
Los nmeros 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 tamao 1x1
Un escalar es una matriz de tamao 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 dgitos, punto fijo
Short e: 5 dgitos, punto flotante
Long: 15 dgitos, punto fijo
Long e: 15 dgitos, punto flotante
Hex: Hexadecimal
Para indicar que se va a trabajar con uno u otro formato de datos
se utiliza la funcin de MATLAB format

GENERACIN DE MATRICES
Cmo generar una fila?
A=[a b c d e]

Pg 5

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

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Cmo generar una columna?

B=[a; b; c; d; e]

a
b

B = c

d
e

Cmo generar una matriz?


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

a b c
A = d e f
g h i

Cmo 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 notacin A(i,j)
dnde i es la i-sima fila y j es la j-sima columna.

Pg 6

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin 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 notacin:
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)

Pg 7

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

VARIABLES
A la hora de definir una variable (matriz, submatriz, array o escalar)
se distingue entre maysculas y minsculas.
Cuando se llama a una funcin de MATLAB sin especificar variable
de salida, se vuelca el resultado en la variable por defecto ans. La
notacin ; omite la presentacin del resultado en pantalla al final de
un comando

COMANDOS Y FUNCIONES DE MATLAB


MATLAB posee gran nmero de funciones provenientes de:
MATLAB: Juego de funciones y operadores bsico
Toolbox: Dependiendo del tipo aadir funciones especiales
Generadas por el usuario: funciones o scripts
Operadores de uso general (help general)
help
who (s)
what (o dir)
clear
load
save
cd
!
...
%
demo
mex

Comando de ayuda
Lista de variables (con s indica info sobre variable)
Lista de ficheros .M y .MAT
Borrar variables
Carga de variables desde un fichero
Guardar variables a un fichero *.mat
Cambiar de directorio de trabajo
Ejecutar funciones DOS
Contina en la lnea siguiente
Comentario en una funcin
Llamada a los ejemplos de uso de MATLAB
Compilar ficheros de MATLAB

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


Pg 8

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Operadores para matrices y arrays y variables especiales (help


ops)
ans
eps
realmax
realmin
pi
i, j
inf
NaN
isnan
isinf
isfinite
why

Most recent answer.


Floating point relative accuracy.
Largest positive floating point number.
Smallest positive floating point number.
3.1415926535897....
Imaginary unit.
Infinity.
Not a number
True for Not a number
True for infinite elements.
True for finite elements.
Succinct answer.

Nota: Es importantsimo tener en cuenta la propiedad conmutativa en


algunas operaciones aritmticas de matrices.

ya que
Pg 9

A/B B/A
y B/A= B*A-1
A/B= A*B-1

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Otras funciones especiales, que se organizan en diferentes


categoras. Las que no pertenecen a ninguna toolbox ni blockset
especfico se muestran en la siguiente tabla:
MATLAB\lang
MATLAB\elmat
MATLAB\elfun
MATLAB\specfun
MATLAB\matfun
MATLAB\datafun
MATLAB\audio
MATLAB\polyfun
MATLAB\funfun
MATLAB\sparfun
MATLAB\graph2d
MATLAB\graph3d
MATLAB\specgraph
MATLAB\graphics
MATLAB\uitools
MATLAB\strfun
MATLAB\iofun
MATLAB\timefun
MATLAB\datatypes
MATLAB\verctrl
MATLAB\demos

Programming language constructs.


Elementary matrices & matrix manipulation.
Elementary math functions.
Specialized math functions.
Matrix functions
Data analysis and Fourier transforms.
Audio support.
Interpolation and polynomials.
Function functions and ODE solvers.
Sparse matrices.
Two dimensional graphs.
Three dimensional graphs.
Specialized graphs.
Handle Graphics.
Graphical user interface tools.
Character strings.
File input/output.
Time and dates.
Data types and structures.
Version control.
Examples and demonstrations.

De entre ellas se pueden remarcar algunas ms interesantes:

Polinomios (help polyfun)


roots
poly
polyval
polyvalm
Pg 10

Find polynomial roots.


Convert roots to polynomial.
Evaluate polynomial.
Evaluate polynomial with matrix argument.

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

residue
polyfit
polyder
polyint
conv
deconv

Partial fraction expansion (residues).


Fit polynomial to data.
Differentiate polynomial.
Integrate polynomial analytically.
Multiply polynomials.
Divide polynomials.

Adems de stas, en esta categora, hay funciones especficas para


anlisis geomtrico y de interpolacin.

Estructuras del lenguaje MATLAB (help lang) (solo las ms


representativas)
if
else
elseif
end
for
while
break
continue
switch
case
otherwise
try
catch
return
error
warning
lasterr
lastwarn
disp
display
fprintf
Pg 11

Conditionally execute statements.


IF statement condition.
IF statement condition.
Terminate scope of FOR, WHILE, SWITCH, TRY and IF
Repeat statements a specific number of times.
Repeat statements an indefinite number of times.
Terminate execution of WHILE or FOR loop.
Pass control to the next iteration of FOR or WHILE loop.
Switch among several cases based on expression.
SWITCH statement case.
Default SWITCH statement case.
Begin TRY block.
Begin CATCH block.
Return to invoking function.
Display error message and abort function.
Display warning message.
Last error message.
Last warning message.
Display an array.
Overloaded function to display an array.
Display formatted message.

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

sprintf
input
keyboard
pause
uimenu
uicontrol

Write formatted data to a string.


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

Generacin de matrices (help elmat)


zeros
ones
eye
repmat
rand
randn
linspace
logspace
freqspace
meshgrid

Pg 12

Zeros array.
Ones array.
Identity matrix.
Replicate and tile array.
Uniformly distributed random numbers.
Normally distributed random numbers.
Linearly spaced vector.
Logarithmically spaced vector.
Frequency spacing for frequency response.
X and Y arrays for 3 D plots.

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Funciones Elementales.
sin
sinh
asin
asinh
cos
cosh
acos
acosh
tan
tanh
atan
atan2
atanh
sec
sech
asec
asech
csc
csch
acsc
acsch
cot
coth
acot
acoth
exp
log
log10
log2
pow2
sqrt
nextpow2
abs
Pg 13

Sine.
Hyperbolic sine.
Inverse sine.
Inverse hyperbolic sine.
Cosine.
Hyperbolic cosine.
Inverse cosine.
Inverse hyperbolic cosine.
Tangent.
Hyperbolic tangent.
Inverse tangent.
Four quadrant inverse tangent.
Inverse hyperbolic tangent.
Secant.
Hyperbolic secant.
Inverse secant.
Inverse hyperbolic secant.
Cosecant.
Hyperbolic cosecant.
Inverse cosecant.
Inverse hyperbolic cosecant.
Cotangent.
Hyperbolic cotangent.
Inverse cotangent.
Inverse hyperbolic cotangent.
Exponential.
Natural logarithm.
Common (base 10) logarithm.
Base 2 logarithm and dissect floating point number.
Base 2 power and scale floating point number.
Square root.
Next higher power of 2.
Absolute value.

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

angle
complex
conj
imag
real
unwrap
isreal
cplxpair
fix
floor
ceil
round
mod
rem
sign

Phase angle.
Construct complex data from real & imaginary parts.
Complex conjugate.
Complex imaginary part.
Complex real part.
Unwrap phase angle.
True for real array.
Sort numbers into complex conjugate pairs.
Round towards zero.
Round towards minus infinity.
Round towards plus infinity.
Round towards nearest integer.
Modulus (signed remainder after division).
Remainder after division.
Signum.

Anlisis de datos
max
min
mean
median
std
var
sort
sum
prod
hist
histc
trapz
diff
gradient
cov
filter
Pg 14

Largest component.
Smallest component.
Average or mean value.
Median value.
Standard deviation.
Variance.
Sort in ascending order.
Sum of elements.
Product of elements.
Histogram.
Histogram count.
Trapezoidal numerical integration.
Difference and approximate derivative.
Approximate gradient.
Covariance matrix.
One dimensional digital filter.

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

filter2
conv
convn
deconv
fft
fftn
ifft
ifftn

Two dimensional digital filter


Convolution and polynomial multiplication.
N dimensional convolution
Deconvolution and polynomial division.
Discrete Fourier transform.
N dimensional discrete Fourier Transform.
Inverse discrete Fourier transform.
N dimensional inverse discrete Fourier Transform.

Manipulacin de matrices
norm
normest
rank
det
trace
null
orth
inv
pinv
lscov
eig
svd
gsvd
eigs
svds
polyeig
expm
logm
sqrtm

Pg 15

Matrix or vector norm.


Estimate the matrix 2 norm
Matrix rank.
Determinant.
Sum of diagonal elements.
Null space.
Orthogonalization.
Matrix inverse.
Pseudoinverse.
Least squares with known covariance.
Eigenvalues and eigenvectors.
Singular value decomposition.
Generalized singular value decomposition.
A few eigenvalues.
A few singular values.
Polynomial eigenvalue problem.
Matrix exponential.
Matrix logarithm.
Matrix square root.

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

FUNCIONES DE REPRESENTACIN GRFICA


La funcin ms importante es plot, que abre una ventana de figura
y representa en ella (en general) los datos que le son pasados
como parmetros. Para representar x=f(t) se har la llamada
plot (t,x)
Se puede incluir informacin sobre el formato del grfico (color, tipo
de lnea, etc). Las opciones posibles son las que se muestran a
continuacin (help plot):
Tipo de lnea
Color
y
m
c
r
g
b
w
k

yellow
magenta
cyan
red
green
blue
white
black

*
+
-x
-.
o
:
.
^
<
>
v
d
s
p
h

star
plus
dashed
x-mark
dashdot
circle
dotted
point
solid
triangle (up)
triangle (left)
triangle (right)
triangle (down)
diamond
square
pentagram
hexagram

Permite realizar representaciones de varias seales en una misma


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

Pg 16

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Funciones asociadas a plot:


loglog
semilogx
semilogy
polar
zoom
grid
subplot
plotedit
legend
title
xlabel
ylabel
text
gtext

Log log scale plot.


Semi log scale plot.
Semi log scale plot.
Polar coordinate plot.
Zoom in and out on a 2 D plot.
Grid lines.
Create axes in tiled positions.
Tools for editing and annotating plots.
Graph legend.
Graph title.
X axis label.
Y axis label.
Text annotation.
Place text with mouse.

Merece la pena especial atencin a la funcin subplot que divide la


pantalla grfica (ventana de figura) en N filas y M columnas. El formato
funcin 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
clf
close
subplot
cla
axis
hold
ishold
line
text
Pg 17

Create figure window.


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

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

surface
image
set
get
drawnow

Create surface.
Create image.
Set object properties.
Get object properties.
Flush pending graphics events.

Ejemplo:
Representar una seal senoidal y otra cosenoidal en la misma figura
entre 0 y 6 (3 periodos de la seal senoidal). Se hara de la siguiente
forma:
t=(0:0.1:6*pi)

% el incremento de punto a punto de la


grfica 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 grfica y con
distintos formatos de ploteado (color y
punteado)
Adems, con las siguientes lneas 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 mximo) % y se coloca el texto en el punto deseado
gtext(valor mnimo) % y se coloca el texto en el punto deseado
El resultado es una ventana figura como la que se muestra a
continuacin:

Pg 18

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Ejemplo:
Se desea representar ahora las seales 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)
Pg 19

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin 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 funcin subplot. El resultado es el que se
muestra a continuacin:
Ejemplo funcion seno
1

seno

0.5
0
-0.5
-1

10
12
14
tiempo
Ejemplo funcion coseno

16

18

20

16

18

20

coseno

0.5
0
-0.5
-1

10
tiempo

12

14

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 lnea de comandos de MATLAB
o desde otra estructura similar

Pg 20

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Los ficheros tipo scripts:


Estn 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 inicializacin o de definicin de
un gran nmero de variables en el entorno de trabajo
Por su parte, las funciones:
Comienzan con la palabra clave function en la primera lnea del
fichero
Es una aplicacin (funcin) definida por el usuario a la que se le
pasan parmetros y que permite devolver parmetros, de forma
similar a funciones en C. La sintaxis para el paso de
parmetros es la siguiente:
function [salida1, salida2,...] = nom_funcin(param1, param2,...)
Las variables que utiliza son, por tanto, locales a la funcin
(principal diferencia con los scripts)
La funcin definida por el usuario se podr invocar desde la
lnea de comandos o desde cualquier script
Deben de coincidir el nombre del fichero y el nombre de la
funcin a implementar
Tras la primera lnea (function... ) se inctroducen lneas de
comentario (comienzan por %), que sern la ayuda de la funcin
que se presente en la ventana de comandos de MATLAB
cuando se invoque a la ayuda de dicha funcin. Por ejemplo si
se define la funcin prueba de este modo:
function
prueba()
%esta funcin no tiene parmetros de entrada ni de salida
Pg 21

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Cuando se invoque a la ayuda de la funcin en la ventana de


rdenes de MATLAB aparecer lo siguiente:
>> help prueba
>> esta funcin no tiene parmetros 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 ms 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
ejecucin de la funcin. 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 ejecucin de la funcin. Se
continua con la ejecucin pulsando cualquier tecla

Ejemplo:
Crear una funcin 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

Pg 22

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Ejemplo:
Realizar una funcin en MATLAB que permita resolver un sistema
lineal de n ecuaciones con n incgnitas (siendo n un valor
cualquiera). El formato de llamada a la funcin debe ser el siguiente:
[sol,n_sol]=sistema(S)
donde:
sol= vector que contiene las soluciones al sistema
N_sol= nmero de soluciones del sistema
S=matriz que contiene los coeficientes y trminos independientes de
las n ecuaciones en el siguiente formato:
3a b + c 2 = 0
5a + 2b + 3c 1 = 0
a + 5b 2c 5 = 0

3 1 1 - 2
2 3 - 1
S = 5
- 1 5 - 2 - 5

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 trminos 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
Pg 23

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

[n_sol, a]=size(sol);
end

%retorno del resultado

Ejemplo:
Crear una funcin llamada MAXIMO que devuelva el mayor de los
elementos de un vector.
N=maximo(A)

N= nmero 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

Pg 24

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

3. EL USO DE SIMULINK
Herramienta grfica incorporada a Matlab, que permite de forma
ms fcil 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 libreras 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 librera 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. Definicin grfica del modelo a simular con las libreras de
Matlab para Simulink
2. Simulacin del modelo y anlisis de resultados, que se pueden
mostrar directamente en Simulink o a travs de Matlab enviando
los resultados al entorno de trabajo
Libreras de Simulink Posee libreras distribuidas en funcin de la
aplicacin. Tiene una librera bsica, llamada Simulink, con el
siguiente contenido:
Sources (fuentes de seal)
Sinks (sumideros o almacn de resultados)
Continuous
Discrete
No linear

Pg 25

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Signals&Systems (buses, multiplexores y demultiplexores,


puertos para enviar seales de un modelo a otro, etc.)
Math (trigonomtricas, aritmticas, etc.)
Funciones y tablas (llamadas a funciones de Matlab o de usuario
y tablas de look-up)
...
Hay libreras especficas para cada aplicacin (Blocksets y
Toolboxes):
Control (controladores ya diseados)
Control Borroso
Control Neuronal
Identificacin
Power
DSP
Fixed Point
Comunicaciones
RTW y xPC Tarjet
Stateflow
User Interface
...
El usuario puede definir nuevas libreras a partir de algn modelo
realizado, mediante los bloques S-function

Pg 26

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

OBJETOS BSICOS DE SIMULINK


Fuentes: Emisores de informacin (Generadores de seales, seal
rampa, impulso, ...)

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

Destinos: Receptores de informacin

Pg 27

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Conexiones: Son unidireccionales. Hipotticos cables.

CREACIN 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 librera donde se encuentra el elemento necesario.
2. Para copiar un objeto de la sesin de trabajo, basta con
seleccionar el objeto y arrastrarlo
3. Para hacer una conexin entre una salida y una entrada, se
posiciona el cursor sobre la salida de la fuente o la entrada, se
pulsa el botn izquierdo del ratn 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 parmetros de ste. (Admiten parmetros 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.

Pg 28

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

2. Se abre la librera continuous y se copian los bloques sumador y


F.T.
3. Se abre la librera sources y se copia el bloque escaln (step
input)
4. Se abre la librera sinks y se copia el bloque scope
5. Se unen mediante el ratn 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
Denominator

[1 2]
[1 2 5]

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

Truco: Probar a definir los parmetros de configuracin de los bloques


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

CONFIGURACIN DE LA SIMULACIN
Es importante configurar la simulacin 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 caractersticas sobre la simulacin, a
saber:
La forma de resolver el sistema de ecuaciones diferenciales que
componen el modelo diseado en Simulink y al tiempo de
simulacin

Pg 29

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Las variables de salida que ha de generar la simulacin en el


entorno de trabajo de MATLAB

Otros parmetros avanzados de simulacin, como la


configuracin de los avisos y errores que ha de generar la
simulacin por conexiones incorrectas, o la configuracin de la
compilacin del modelo con la herramienta RTW
Pg 30

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Con respecto al paso de SIMULACIN, es necesario tener en


cuenta ciertos aspectos bsicos
El paso de simulacin es el intervalo de integracin de los
algoritmos de resolucin del modelo
Se puede definir variable (lo fija Simulink en funcin del modelo
concreto a simular) en todos los casos excepto en la generacin
de cdigo RTW
Si el paso de simulacin es muy bajo el tiempo de ejecucin
elevado (puntos excesivos), y si es muy bajo la resolucin es
peor (se pierde definicin del sistema), pudiendo incluso llegar a
no representar correctamente le comportamiento del sistema al
no cumplir la teora de sistemas muestreados (al fin y al cabo la
simulacin de sistemas continuos con Simulink pretende
representar su comportamiento real en el tiempo)
Una regla prctica es hacer que el paso de simulacin sea al
menos de la dcima parte del tiempo de subida de la respuesta
del sistema
Con respecto a las variables de salida de Simulink, es necesario
comentar tambin un punto:
Se pueden pasar las respuestas de las simulacin al Workspace
de MATLAB a travs de los bloques to Workspace de Simulink
Convendr tambin tener en el entorno de trabajo el array de
tiempo con el que se ha generado la simulacin
ste se puede generar con un bloque Clock de Simulink y
pasarlo a MATLAB del mismo modo, pero tambin se puede
usar la variable tout que se genera automticamente si as se
indica en la configuracin de la simulacin
La variable yout que se genera del mismo modo contiene el
resultado de las seales conectadas a puertos de salida del
modelo de Simulink

Pg 31

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Ejemplo:
Visualizar el resultado de la simulacin del modelo del ejemplo anterior

Nota: Prestar atencin a que la respuesta coincida exactamente con


la aqu mostrada y modificar la configuracin 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:

Pg 32

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Desde MATLAB:

>>plot(tout, Salida);
o
>>plot(tiempo, Salida);

Pg 33

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Truco: Se puede arrancar la simulacin de un modelo preexistente


(fichero *.MDL) con la funcin sim de MATLAB, con la siguiente
sintaxis:
[T,X,Y] = sim('modelo', [TInicio TFin] ,OPTIONS,UT)
Donde los parmetros 2 al 4 de la llamada a sim son opcionales

Ejemplo:
Realizar el siguiente diagrama de bloques y representar desde
MATLAB la seal de salida

Para qu sirve el multiplexor?

Pg 34

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

4. LA TOOLBOX DE CONTROL DE MATLAB

Funciones de aplicacin especfica para ingeniera de control de


sistemas. Son ficheros *.M

Sirve tanto para control continuo como para control discreto,


clsico (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,


conversin de modelos y anlisis de respuesta temporal,
frecuencial y en espacios transformados

Las herramientas para obtencin de los modelos de los sistemas


se encuentran en otra Toolbox: la de identificacin

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):
Funcin de transferencia
Funcin Polo-Cero
Descomposicin en fracciones simples
Variables de Estado
Pg 35

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

FUNCIN DE TRANSFERENCIA
El formato Funcin de Transferencia (FT) corresponde con
representaciones del siguiente tipo:
H(s) =

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

Cmo 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 travs 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); %multiplicacin de dos polinomios

FORMATO POLOCERO
El formato polocero corresponde con representaciones del
siguiente tipo:
H(s) = k

Pg 36

(s - z1 )(s - z 2 )(s - z 3 )...(s - z n )


(s - p1 )(s - p 2 )(s - p 3 )...(s - p n )

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Cmo 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 (races del denominador y del numerador
respectivamente) de la funcin de transferencia del sistema a
representar

Ejemplo:
Obtenga el modelo MATLAB del siguiente sistema en formato ceropolo:
H(s) = 4

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

Mediante un fichero script:


K=4;
Z=[-1 2];
P=[-3 4 5];

%constante del sistema


%ceros del sistema
%polos del sistema

CONVERSIN ENTRE FORMATOS


Las siguientes funciones permiten realizar conversiones entre los
distintos formatos de representacin de sistemas
residue
roots
poly
conv
tf2zp
zp2tf
c2dm, d2c
printsys

Pg 37

Expansin en fracciones parciales


Obtiene las races de un polinomio
Obtiene un polinomio desde sus races
Permite multiplicar polinomios
De FT a formato polocero
De formato polocero a FT
Conversin entre el mundo discreto y el continuo
Imprime la funcin de transferencia de un sistema

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Ejemplo:
Transformar de formato funcin de transferencia a formato polo cero la
siguiente funcin:
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);

%CONVERSIN A CERO POLO

Ejemplo:
Transformar de formato polo-cero a formato funcin de transferencia la
siguiente funcin:
( s + 1)3
H ( s) =
( s + 4)( s + 3) 2 ( s 4 + s 3 + s 2 + 2)

Pg 38

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

En MATLAB:
Z=[-1; -1; -1 ];
D1=roots([1 5 2]);
B=[1 3];
D2=roots(conv(B,B));
P=[4; D2; D1];
k=1;
[NUM,DEN]=zp2tf(Z,P,k);

%(s+1)^3
%Obtencin de las races de (s^2+5s+2)
%(s+3)^2

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

GENERACIN DE DIAGRAMA DE BLOQUES, CONEXIN DE


SISTEMAS
La toolbox de MATLAB para control incluye tambin 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
feedback
series
parallel

Pg 39

Cierra el lazo realimentacin unitaria


Conexin mediante realimentacin
Conexin en serie de modelos
Conexin en paralelo de sistemas

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Ejemplo:
Obtener la funcin de transferencia total del sistema que se muestra a
continuacin, suponiendo que se parte del conocimiento del
numerador y el denominador de cada bloque del diagrama

Step Input

+
Sum

+
Sum1

(s-1)(s-2)(s-3)
(s+1)(s+3)(s-4)
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);

Pg 40

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

5. FUNCIONES DE ANLISIS DE SISTEMAS CONTINUOS DE LA


TOOLBOX DE CONTROL (I)
Conjunto de instrucciones que facilitan el anlisis de la respuesta
temporal, frecuencial y lugar de las races de un sistema de control.
En este punto solo se van a presentar las funciones relacionadas
con el anlisis temporal

RESPUESTA TEMPORAL
Se usa para obtener caractersticas temporales del rgimen
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
impulse
lsim
ginput
damp
dcgain

Respuesta a un escaln
Respuesta a un impulso
Entrada aleatoria
Averiguar valores de un determinado punto de la grfica
Permite obtener n y
Permite obtener la ganancia esttica de una FT

Nota: Las funciones step e impulse generan automticamente una


grfica de la respuesta temporal, en caso de no pedir ningn valor de
salida

Pg 41

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Ejemplo:
Dado el siguiente sistema determinar su respuesta al impulso y al
escaln:
H ( s) =

1
s +1

La respuesta al impulso se obtendr mediante el siguiente comando:


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

1
0.9
0.8

Amplitude

0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

Pg 42

3
Time (sec)

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Posteriormente se llama a la funcin step, obtenindose el resultado


grfico que se muestra a continuacin:
>>step([1],[1 1]);
Step Response

1
0.9
0.8

Amplitude

0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

Pg 43

3
Time (sec)

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

6. FUNCIONES DE ANLISIS DE SISTEMAS CONTINUOS DE LA


TOOLBOX DE CONTROL (II)
La toolbox de control de MATLAB posee un conjunto de funciones
que permiten realizar fcilmente trazados del Lugar de las Races
de un sistema realimentado, as como sacar informacin a partir de
ste
Las funciones relacionadas con el trazado del Lugar de las Races
se muestran en la siguiente tabla
rlocus
rlocfind
pzmap
sgrid

Trazado del Lugar de las Races (para ss. continuos y


discretos)
Identificacin concreta de un punto del lugar
Representacin del diagrama de polos y ceros
Red de obtener n y en el plano s

Nota: la funcin rlocus abre directamente una ventana de figura nueva


y dibuja en ella el Lugar de las Races del sistema cuya F(s) (o F(z))se
pasa como parmetro. Sin embargo, la funcin rlocfind necesita de la
ejecucin previa de la anterior para operar

Ejemplo:
Se desea conocer el trazado del Lugar de las Races del sistema
siguiente:
s+13

s+10

Gain

Transfer Fcn

1
s2 +1.5s+8
Transfer Fcn1

Pg 44

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Para resolverlo se ejecuta desde MATLAB el siguiente conjunto de


comandos:
NUMG=[1 13]
DENG=[1 10]
NUMH=[1]
DENH=[1 1.5 8]
N=conv(NUMG,NUMH)
D=conv(DENG,DENH)
rlocus(N,D)
sgrid

%Numerador de G(s)
%Denominador de G(s)
%Numerador de H(s)
%Denominador de H(s)
%Numerador de G(s)H(s)
%Denominador de G(s)H(s)

Root Locus
40

30

0.28

0.19

0.135

0.095

0.06

0.03

40
35
30

0.4

25
20

20

15
0.7

10

10
Imag Axis

5
0
5
-10

10

0.7

15
-20

20
25

-30

-40

0.4

30
0.28
-12

0.19
-10

-8

0.135
-6

0.095
-4

0.06
-2

0.03

35
40
0

Real Axis

Pg 45

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Ejemplo:
Obtenga para el sistema del ejemplo anterior cul es el valor de K que
hace al sistema inestable
Dicho valor ser aqul que haga que las races del lugar representado
anteriormente tengan parte real positiva. Para poder obtener dicho
valor se utiliza la funcin rlocfind, de esta forma:
>> rlocfind(N,D)
Obtenindose 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 adems el valor que tienen todas las
races del sistema en lazo cerrado para esa K se deber recoger como
parmetro de salida de rlocfind un vector que contendr el dichos
valores de este modo:
>>[K,raices]= rlocfind(N,D)

Pg 46

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

Introduccin a MATLAB, Toolbox de Control y Simulink

Ejemplo:
Si se desea que el sistema tenga una respuesta con coeficiente de
amortiguacin de valor 0.1, indique cul sera el valor de K necesario y
compruebe el resultado con la funcin step
Para conocer el valor de K con =0.1 se redibuja el Lugar de las
Races son rejilla y se invoca a la funcin sgrid de este modo
>> sgrid(0.1,2)
Donde el valor de n se ha fijado sin ningn criterio concreto
Despus se llama vuelve a llamar a la funcin 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 escaln del sistema en lazo
cerrado. El resultado se muestra en la figura siguiente:
20

15

10

-5

Pg 47

10

12

14

16

18

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

20

Introduccin a MATLAB, Toolbox de Control y Simulink

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


segundo orden tpico, se obtiene el valor de Mp correspondiente al
coeficiente de amortiguacin 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 adems un cero y otro polo que no es del todo
dominante

Pg 48

Laboratorio de Sistemas Electrnicos de Control Continuo


I.T.T Sistemas Electrnicos

You might also like