Professional Documents
Culture Documents
Universidad de Alcal
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
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
Pg 4
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]
B=[a; b; c; d; e]
a
b
B = c
d
e
a b c
A = d e f
g h i
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 ]
Pg 6
Ejemplo:
Sea A la siguiente matriz:
1 2 3
A = 4 5 6
7 8 9
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
Pg 7
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
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
ya que
Pg 9
A/B B/A
y B/A= B*A-1
A/B= A*B-1
residue
polyfit
polyder
polyint
conv
deconv
sprintf
input
keyboard
pause
uimenu
uicontrol
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.
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.
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.
filter2
conv
convn
deconv
fft
fftn
ifft
ifftn
Manipulacin de matrices
norm
normest
rank
det
trace
null
orth
inv
pinv
lscov
eig
svd
gsvd
eigs
svds
polyeig
expm
logm
sqrtm
Pg 15
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
Pg 16
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)
Pg 18
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)
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
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
Pg 20
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
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
[n_sol, a]=size(sol);
end
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
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
Pg 26
Pg 27
Ejemplo
Realizar el diagrama de bloques de la figura:
Pg 28
[1 2]
[1 2 5]
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
Pg 31
Ejemplo:
Visualizar el resultado de la simulacin del modelo del ejemplo anterior
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
Desde MATLAB:
>>plot(tout, Salida);
o
>>plot(tiempo, Salida);
Pg 33
Ejemplo:
Realizar el siguiente diagrama de bloques y representar desde
MATLAB la seal de salida
Pg 34
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
Ejemplo:
Obtenga el modelo MATLAB del siguiente sistema en formato FT:
3s 2 + 2s + 1
H(s) = 2
(s + 4s + 1)(s + 5)
FORMATO POLOCERO
El formato polocero corresponde con representaciones del
siguiente tipo:
H(s) = k
Pg 36
Ejemplo:
Obtenga el modelo MATLAB del siguiente sistema en formato ceropolo:
H(s) = 4
(s + 1)(s + 2)
(s + 3)(s + 4)(s + 5)
Pg 37
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);
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
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
Pg 39
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
Pg 40
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
Pg 41
Ejemplo:
Dado el siguiente sistema determinar su respuesta al impulso y al
escaln:
H ( s) =
1
s +1
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)
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)
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
%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
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
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
20
Pg 48