Está en la página 1de 163

Complementos de Procesado de Seal y Comunicaciones

Mster en Sistemas Multimedia


Introduccin a
Matlab y Simulink
Javier Ramrez Prez de Inestrosa
Dpto. Teora de la Seal, Telemtica y Comunicaciones
Universidad de Granada
Email: javierrp@ugr.es
Este tutorial se puede obtener en:
http://www.ugr.es/~javierrp
Introduccin a Matlab y Simulink
Javier Ramrez
2
Qu es Matlab?
MATLAB es un lenguaje de alto nivel para
realizar clculos cientifico-tcnicos.
Integra las herramientas de clculo
necesarias con otras de visualizacin as
como, un entorno de programacin de fcil
uso.
Introduccin a Matlab y Simulink
Javier Ramrez
3
Aplicaciones tpicas
Clculo matemtico
Desarrollo de algoritmos
Adquisicin de datos
Modelado, simulacin y prototipado
Anlisis de datos y visualizacin
Grficos
Desarrollo de aplicaciones e interfaces
grficas de usuario (GUI)
Introduccin a Matlab y Simulink
Javier Ramrez
4
Ms sobre MatLab
MatLab significa MATrix LABoratory
El tipo bsico de datos es el vector que no
requiere ser dimensionado.
Proporciona unos paquetes de extensin
(toolboxes) para aplicaciones especficas
Estos paquetes incluyen libreras de funciones
MatLab (M-files) que extienden las posibilidades
de MatLab para resolver problemas especficos
Introduccin a Matlab y Simulink
Javier Ramrez
5
El entorno de Matlab
Introduccin a Matlab y Simulink
Javier Ramrez
6
Sintaxis
Algunos ejemplos sencillos
Entrada Salida Comentarios
2 + 3
7-5
34*212
1234/5786
2^5
ans = 5
ans = 2
ans = 7208
ans = 0.2173
ans = 32
Los resultados son los esperados.
Ntese que al resultado se le da el nombre ans.
a = sqrt(2) a = 1.4142 Se puede escoger el nombre de la variable.
Introduccin a Matlab y Simulink
Javier Ramrez
7
b = a, pi, 2 + 3i
b = 1.4142
ans = 3.1416
ans = 2.0000 +
3.0000i
Se pueden introducir varios
comandos en una sola lnea. Pi, i,
y j son constantes.
c = sin(pi)
eps
c = 1.2246e-016
ans = 2.2204e-016
"eps" es el limite actual de
precisin. No se puede operar con
nmeros inferiores a eps.
d =
[1 2 3 4 5 6 7 8 9
]
e = [1:9]
f = 1:9
d = 1 2 3 4 5 6 7 8 9
e = 1 2 3 4 5 6 7 8 9
f = 1 2 3 4 5 6 7 8 9
Definicin de vectores. "d", "e",
son "f" vectores. Son iguales. El
operador : se utiliza para formar
vectores; cuenta desde el nmero
inicial al final de uno en uno.
g = 0:2:10
f(3)
f(2:7)
f(:)
g = 0 2 4 6 8 10
ans = 3
ans = 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9
Otros usos de :. Se utiliza para
acceder a parte o la totalidad de
los datos de un vector o matriz.
Introduccin a Matlab y Simulink
Javier Ramrez
8
h = [1 2 3];
h'
(nada)
ans = 1
2
3
Un punto y coma ";" evita que se
visualice la salida.
Una coma simple " ' " calcula la
traspuesta de una matriz, o en el caso
de vectores, intercambia entre vectores
fila y columna.
h * h'
h .* h
h + h
ans = 14
ans = 1 4 9
ans = 2 4 6
Operaciones con vectores. * es la
multiplicacin matricial. Las
dimensiones deben ser las apropiadas.
" .* " es la multiplicacin componente a
componente.
g = [ 1 2 3;
4 5 6; 7 8 9]
g = 1 2 3
4 5 6
7 8 9
Construccin de matrices.
g(2,3)
g(3,:)
g(2,3) = 4
ans = 6
ans = 7 8 9
g = 1 2 3
4 5 4
7 8 9
Accediendo a los elementos de la
matriz.
":" se utiliza para acceder a una fila
completa.
Introduccin a Matlab y Simulink
Javier Ramrez
9
g^2
g .^ 2
ans = 30 36 42
66 81 96
102 126 150
ans = 1 4 9
16 25 36
49 64 81
Multiplica la matriz por ella misma.
Eleva al cuadrado cada elemento de la
matriz.
Entrada Salida Comentarios
Introduccin a Matlab y Simulink
Javier Ramrez
10
Control de la salida
El comando format
format compact
Controla el espaciado de lneas.
format long
Muestra los 15 dgitos que se utilizan en el clculo.
format short
Muestra nicamente cinco dgitos.
; al final del comando.
No visualizar salida:
help format
Ms informacin.
Introduccin a Matlab y Simulink
Javier Ramrez
11
Ms sobre matrices
Funciones incluidas en MatLab
Entrada Salida Comentarios
rand(2)
rand(2,3)
ans = 0.9501 0.6068
0.2311 0.4860
ans = 0.8913 0.4565 0.8214
0.7621 0.0185 0.4447
Genera una matriz de
nmeros aleatorios entre 0 y 1
zeros(2)
ones(2)
ans = 0 0
0 0
ans = 1 1
1 1
Genera una matriz 2x2 de
ceros o unos.
eye(2) ans = 1 0
0 1
Matriz identidad I.
hilb(3) ans = 1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
Matriz de Hilbert 3x3.
Introduccin a Matlab y Simulink
Javier Ramrez
12
Ms sobre matrices
Concatenacin
Generar nuevas matrices a partir de otras
creadas previamente
Por ejemplo:
Sea la matriz a:
>> a = [1 2; 3 4]
a =
1 2
3 4
Introduccin a Matlab y Simulink
Javier Ramrez
13
Entrada Salida
[a, a, a] ans = 1 2 1 2 1 2
3 4 3 4 3 4
[a; a; a] ans = 1 2
3 4
1 2
3 4
1 2
3 4
[a, zeros(2); zeros(2), a'] ans = 1 2 0 0
3 4 0 0
0 0 1 3
0 0 2 4
Ms sobre matrices - concatenacin
Introduccin a Matlab y Simulink
Javier Ramrez
14
Ms sobre matrices
Programacin
Se pueden construir matrices mediante programacin
for i=1:10,
for j=1:10,
t(i,j) = i/j;
end
end
No se producira salida puesto que la nica lnea que
podra generar salida (t(i,j) =i/j;) termina en ;
Sin el ;, Matlab escribira la matriz t 100 veces!!
Introduccin a Matlab y Simulink
Javier Ramrez
15
Operaciones con matrices
+, -, *, y /
Definen operaciones con matrices.
Debemos distinguir:
.*:
Multiplicacin componente a componente.
*
Multiplicacin matricial.
Introduccin a Matlab y Simulink
Javier Ramrez
16
Escalares
Un escalar es un nmero.
Matlab los almacena como matrices 1x1
Todas las operaciones entre escalares y
matrices se realizan componente a
componente salvo:
La potencia (^).
Introduccin a Matlab y Simulink
Javier Ramrez
17
Escalares
Ejemplos
Entrada Salida Comentarios
b=2 b=2
Define b como un escalar.
a + b
ans = 3 4
5 6
La suma se hace componente a
componente.
a * b
ans = 2 4
6 8
Igual que la multiplicacin.
a ^ b
ans = 7 10
15 22
Potencia matricial - a*a
a .^ b
ans = 1 4
9 16
Potencia componente a
componente.
a = 1 2
3 4
Introduccin a Matlab y Simulink
Javier Ramrez
18
Vectores
Un vector es una matriz de una sola fila o
columna
Entrada Salida Comentarios
v = [1 2 3]
u = [3 2 1]
v = 1 2 3
u = 3 2 1
Define 2 vectores.
v * u Error
Las dimensiones no coinciden.
v * u' ans = 10
Al tomar la traspuesta se corrige el
error.
dot(v,u) ans = 10
Producto escalar (idntico al
anterior).
cross(v,u) ans = -4 8 -4
El producto vectorial slo se emplea
con vectores en 3 dimensiones.
Introduccin a Matlab y Simulink
Javier Ramrez
19
Matrices
Entrada Salida Comentarios
k = [16 2 3;
5 11 10;
9 7 6]
k = 16 2 3
5 11 10
9 7 6
Define una
matriz.
trace(k) ans = 33
Traza de una
matriz
rank(k) ans = 3
Rango de una
matriz.
det(k) ans = -136
Determinante de
una matriz
Matlab tiene numerosas funciones
predefinidas (help matfun).
Introduccin a Matlab y Simulink
Javier Ramrez
20
Matrices
Entrada Salida Comentarios
inv(k)
ans = 0.0294 -0.0662 0.0956
-0.4412 -0.5074 1.0662
0.4706 0.6912 -1.2206
Inversa de una
matriz
[vec,val] =
eig(k)
vec = -0.4712 -0.4975 -0.0621
-0.6884 0.8282 -0.6379
-0.5514 0.2581 0.7676
val = 22.4319 0 0
0 11.1136 0
0 0 -0.5455
Vectores propios
y autovalores de
una matriz.
Las columnas de
"vec" contienen
los vectores
propios;
las entradas de
la diagonal de
"val" son los
autovalores.
Introduccin a Matlab y Simulink
Javier Ramrez
21
Variables en el espacio de trabajo
whos
Lista las variables definidas en el entorno.
>> whos
Name Size Bytes Class
a 100x1 800 double array
b 100x100 80000 double array
c 1x1 8 double array
Grand total is 10101 elements using 80808 bytes
clear
Borra variables del entorno.
Introduccin a Matlab y Simulink
Javier Ramrez
22
Resolucin de sistemas de ecuaciones
Una de las principales aplicaciones de las matrices
es la representacin de sistemas de ecuaciones
lineales.
Si a es una matriz de coeficientes, x es un vector
columna que contiene las incgnitas y b los
trminos constantes, la ecuacin
a x =b
representa el correspondiente sistema de
ecuaciones.
Introduccin a Matlab y Simulink
Javier Ramrez
23
Resolviendo ecuaciones
Para resolver el sistema en MatLab
x = a \ b
x es igual a la inversa de a por b
Ejemplo
a = [1 2 3; 4 5 6; 7 8 10]; b = [1 1 1]';
Solucin:
x =
-1
1
0
Introduccin a Matlab y Simulink
Javier Ramrez
24
Salvar y recuperar datos
Los datos de la sesin se pierden al salir de
MatLab.
Para salvar la sesin (entrada y salida)
Diary(session.txt);
Guarda los comandos introducidos en la sesin.
Diary <ON/OFF> ;
Para salvar una o varias matrices
save datos.mat (guarda todas las variables)
save datos.mat x (slo guarda x)
Introduccin a Matlab y Simulink
Javier Ramrez
25
Salvar y recuperar matrices
save sesion
Salva todas las variables en el archivo binario sesion.mat.
save fichero X
Salva slo la variable X
load sesion
Recupera los datos previamente salvados
Si los ficheros se pueden salvar en formato texto (-
ascii). Pueden verse con un editor de textos.
Introduccin a Matlab y Simulink
Javier Ramrez
26
Grficos
El comando bsico es: plot
plot(y);
plot(x,y);
plot(x,y,b+,x,z,gx);
color (b,g) blue,green
Marcador (+,x)
Personalizacin del grfico:
title, xlabel, ylabel, legend, grid.
Introduccin a Matlab y Simulink
Javier Ramrez
27
Ejemplo
Mes = 1:12;
T_Gr = [-2 0 2 4 8 12 14 14 12 8 4 0];
T_Ma = [-4 -2 0 2 6 14 18 18 16 8 2 -2];
plot(Mes, T_Gr, 'bo', Mes, T_Ma, 'rv');
xlabel('Mes');
ylabel('Temperatura (C)');
title('Temperaturas minimas en Granada y
Madrid');
legend('Granada','Madrid');
grid;
Introduccin a Matlab y Simulink
Javier Ramrez
28
Resultado:
Introduccin a Matlab y Simulink
Javier Ramrez
29
subplot
Mes = 1:12
T_Gr = [-2 0 2 4 8 12 14 14 12 8 4 0];
T_Ma = [-4 -2 0 2 6 14 18 18 16 8 2 -2];
subplot(2,1,1);
plot(Mes, T_Gr, 'bo-');
xlabel('Mes');
ylabel('Temperatura (C)');
title('Temperaturas minimas en Granada');
grid;
subplot(2,1,2);
plot(Mes, T_Ma, 'rv-');
xlabel('Mes');
ylabel('Temperatura (C)');
title('Temperaturas minimas en Madrid');
grid;
Introduccin a Matlab y Simulink
Javier Ramrez
30
Resultado
Introduccin a Matlab y Simulink
Javier Ramrez
31
Grficos tridimensionales
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
mesh(z);
Introduccin a Matlab y Simulink
Javier Ramrez
Grficos tridimensionales
Z = X.*exp(-X.^2-Y.^2);
contour3(X,Y,Z,30)
surface(X,Y,Z,'EdgeColor',[.8 .8.8],'FaceColor','none')
grid off
view(-15,25)
colormap cool
32
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
-2
-1
0
1
2
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
Introduccin a Matlab y Simulink
Javier Ramrez
33
Programacin
Ficheros de comandos (scripts)
Secuencias de comandos.
Al invocarlos se ejecutan en el entorno.
Las variables creadas son globales.
Ficheros de funcin
Permiten definir funciones propias.
Variables locales.
La informacin se pasa como parmetros.
Se pueden definir subfunciones.
Introduccin a Matlab y Simulink
Javier Ramrez
34
Un ejemplo de funcin
function y = media (x)
% Valor medio de x.
% Para vectores, media(x) devuelve el valor medio.
% Para matrices, media(x) es un vector fila
% que contiene el valor medio de cada columna.
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
Introduccin a Matlab y Simulink
Javier Ramrez
35
Argumentos de funciones
nargin y nargout
Nmero de argumentos de entrada y salida con
los que se llama a la funcin.
Ejemplo:
function c = testarg1(a,b)
if (nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = a + b;
end
Introduccin a Matlab y Simulink
Javier Ramrez
36
Subfunciones
function [media,mediana] = estadistica(u) % Funcin principal
% ESTADISTICA Calcula la media y la
% mediana utilizando funciones internas.
n = length(u);
media = mean(u,n);
mediana = median(u,n);
function a = mean(v,n) % Subfuncin
% Calcula la media.
a = sum(v)/n;
function m = median(v,n) % Subfuncin
% Calcula la mediana.
w = sort(v);
if rem(n,2) == 1
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end
Introduccin a Matlab y Simulink
Javier Ramrez
37
Bifurcaciones
Condicin
Sentencias
false
true
Condicin
true
Bloque 1 Bloque 2
false
Condicin 1
false
Condicin 2
Bloque 1
Bloque 2
true
Bloque 3
false
true
Introduccin a Matlab y Simulink
Javier Ramrez
38
if
Sentencia if
if condicin
sentencias
end
Bifurcacin multiple
if condicin1
bloque1
elseif condicin2
bloque2
elseif condicin3
bloque3
else
bloque4
end
Ejemplo
if rem(a,2) == 0
disp('a is par')
b = a/2;
end
Introduccin a Matlab y Simulink
Javier Ramrez
39
switch
switch expresion
case case1,
bloque1
case {case2, case3, ...}
bloque2
...
otherwise,
bloque3
end
switch valor
case -1
disp('negativo');
case 0
disp('cero');
case 1
disp('positivo');
otherwise
disp('otro');
end
Introduccin a Matlab y Simulink
Javier Ramrez
40
Bucles
Condicin
Sentencias
false
true
Condicin
Sentencias
true
false
Introduccin a Matlab y Simulink
Javier Ramrez
41
for
for i = 1:n
sentencias
end
for i = n:-0.2:1
sentencias
end
for i = 1:m
for j = 1:n
sentencias
end
end
for i = vector
sentencias
end
Introduccin a Matlab y Simulink
Javier Ramrez
42
while {continue, break}
while condicin
sentencias
end
Sentencia continue
Hace que se pase
inmediatamente a la
siguiente iteracin
del bucle for o while
Sentencia break
Hace que termine
la ejecucin
n = 1;
while prod(1:n) < 1e100
n = n + 1;
end
Introduccin a Matlab y Simulink
Javier Ramrez
43
Toolboxes
Toolboxes para DSP y comunicaciones:
Communications Toolbox
Filter Design Toolbox
Image Processing Toolbox
Signal Processing Toolbox
Statistics Toolbox
System Identification Toolbox
Wavelet Toolbox
Introduccin a Matlab y Simulink
Javier Ramrez
44
Procesamiento de seales y comunicaciones
Matlab dispone de unas libreras para
tratamiento digital de seales.
Signal Processing Toolbox
Communications Toolbox
Introduccin a Matlab y Simulink
Javier Ramrez
45
Filtrado de seales
y= filter(b,a,x);
Filtra la secuencia x con el filtro descrito por b y a.
Introduccin a Matlab y Simulink
Javier Ramrez
46
Respuesta en frecuencia
[H,w] = freqz(b,a,N);
Calcula N puntos de la
respuesta en frecuencia del
filtro definido por b y a.
Para el filtro:
y(n)= 0.8y(n-1) + x(n)
freqz(1,[1 -0.8],256);
0 0.2 0.4 0.6 0.8 1
-60
-40
-20
0
Normalized Frequency ( rad/sample)
P
h
a
s
e

(
d
e
g
r
e
e
s
)
0 0.2 0.4 0.6 0.8 1
-10
0
10
20
Normalized Frequency ( rad/sample)
M
a
g
n
i
t
u
d
e

(
d
B
)
Introduccin a Matlab y Simulink
Javier Ramrez
47
Diseo de filtros
B = FIR1(N,Wn);
Filtro FIR paso baja de orden N.
Wn es la frecuencia de corte normalizada (0<Wn<1).
B = FIR1(N,Wn,'high');
Filtro paso alta.
Wn = [W1 W2]; B = FIR1(N,Wn,'bandpass');
Filtro paso banda.
Wn = [W1 W2]; B = FIR1(N,Wn,'stop');
Filtro rechaza banda (notch).
Introduccin a Matlab y Simulink
Javier Ramrez
48
Ejemplo: Filtros FIR paso banda
% Parametros.
N= [8 16 32 64]; % Coeficientes del filtro
Wn = [0.4 0.6]; % Frecuencias de corte.
NFFT= 256; % Respuesta en frecuencia
L = length(N);
H = zeros(NFFT,L);
for i=1:L
B = FIR1(N(i),Wn,'bandpass'); % Diseo.
[H1,W]= freqz(B,1,NFFT); % Respuesta.
H(:,i)= H1;
end
% Visualizacion de la respuesta en frecuencia.
subplot(2,1,1);
plot(W/pi,20*log10(abs(H)));
xlabel('w en unidades de \pi');
ylabel('|H|');
legend('N=8','N=16','N=32','N=64');
grid;
subplot(2,1,2);
plot(W/pi,unwrap(angle(H)));
xlabel('w en unidades de \pi');
ylabel('Fase de H (rads)');
legend('N=8','N=16','N=32','N=64');
grid;
0 0.2 0.4 0.6 0.8 1
-80
-60
-40
-20
0
w en unidades de
|
H
|
N=8
N=16
N=32
N=64
0 0.2 0.4 0.6 0.8 1
-30
-20
-10
0
10
w en unidades de
F
a
s
e

d
e

H

(
r
a
d
s
)
N=8
N=16
N=32
N=64
Introduccin a Matlab y Simulink
Javier Ramrez
49
Diseo y anlisis de filtros (fdatool)
Introduccin a Matlab y Simulink
Javier Ramrez
50
Signal Processing Tool (SPTool)
Introduccin a Matlab y Simulink
Javier Ramrez
51
Signal Processing Tool (SPTool)
Introduccin a Matlab y Simulink
Javier Ramrez
52
Signal Processing Tool (SPTool)
Introduccin a Matlab y Simulink
Javier Ramrez
53
Signal Processing Tool (SPTool)
Introduccin a Matlab y Simulink
Javier Ramrez
54
Diezmado e interpolacin
Y = DECIMATE(X,R)
Ejemplo: Decimacin en un factor 4.
t = 0:.00025:1; % Vector de tiempos
x = sin(2*pi*30*t) + sin(2*pi*60*t);
y = decimate(x,4);
stem(x(1:120)); %Original
axis([0 120 -2 2])
title('Seal original')
figure
stem(y(1:30)); %Decimada
title('Seal decimada')
0 20 40 60 80 100 120
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Seal original
0 5 10 15 20 25 30
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Seal decimada
Introduccin a Matlab y Simulink
Javier Ramrez
55
Diezmado e interpolacin
Y = INTERP(X,R)
t = 0:0.001:1; % Time vector
x = sin(2*pi*30*t) + sin(2*pi*60*t);
y = interp(x,4);
stem(x(1:30));
title('Seal original');
figure
stem(y(1:120));
title('Seal interpolada');
0 5 10 15 20 25 30
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Seal original
0 20 40 60 80 100 120
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Seal interpolada
Introduccin a Matlab y Simulink
Javier Ramrez
56
Densidad de potencia espectral
periodogram
Fs = 1000; t = 0:1/Fs:.3;
% Una seal coseno de 200Hz ms ruido
x = cos(2*pi*t*200)+randn(size(t));
periodogram(x,[],'twosided',512,Fs);
% Se usa la ventana por defecto
pwelch
Fs = 1000; t = 0:1/Fs:.296;
% Una seal coseno de 200 Hz ms ruido
x = cos(2*pi*t*200)+randn(size(t));
pwelch(x,[],[],[],Fs,'twosided');
% Ventana por defecto, solapamiento y NFFT.
Introduccin a Matlab y Simulink
Javier Ramrez
57
Ejemplos
0 100 200 300 400 500 600 700 800 900
-50
-45
-40
-35
-30
-25
-20
-15
-10
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Periodogram PSD Estimate
0 100 200 300 400 500 600 700 800 900
-34
-32
-30
-28
-26
-24
-22
-20
-18
-16
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Welch PSD Estimate
Introduccin a Matlab y Simulink
Javier Ramrez
58
Estimacin espectral paramtrica
Mtodo de covarianza
pcov(X,ORDER,NFFT,Fs)
randn('state',1);
x = randn(100,1);
y = filter(1,[1 1/2 1/3 1/4 1/5],x);
pcov(y,4,[],1000);
Mtodo de covarianza modificado
pmcov(X,ORDER,NFFT,Fs)
randn('state',1);
x = randn(100,1);
y = filter(1,[1 1/2 1/3 1/4 1/5],x);
pmcov(y,4,[],1000);
Introduccin a Matlab y Simulink
Javier Ramrez
59
Ejemplos
0 100 200 300 400 500
-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Covariance PSD Estimate
0 100 200 300 400 500
-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Modified Covariance PSD Estimate
0 100 200 300 400 500
-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Burg PSD Estimate
0 100 200 300 400 500
-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Yule-Walker PSD Estimate
Introduccin a Matlab y Simulink
Javier Ramrez
60
Modelado. Prediccin lineal
Predictor lineal:
Estima la muestra siguiente utilizando N muestras
anteriores.
[A,E] = LPC(X,N)
Calcula:
Los coeficientes del predictor, A.
La varianza del error, E.
) (n x
Predictor
lineal


N
i
i n x i A n x
1
) ( ) 1 ( ) (

) (

n x
) (

) ( ) ( n x n x n e
Minimizando J= E{|e(n)|
2
}
Introduccin a Matlab y Simulink
Javier Ramrez
61
Comunicaciones
Funciones principales:
Generacin de seales aleatorias
Anlisis de errores
Codificacin de la fuente (escalar, diferencial)
Codificacin para el control de errores
(convolucional, codificacin lineal de bloques)
Modulacin y demodulacin (analgica y digital)
Filtrado mediante filtros especiales
Aritmtica en cuerpos de Galois
Introduccin a Matlab y Simulink
Javier Ramrez
62
Modulacin analgica y digital
Introduccin a Matlab y Simulink
Javier Ramrez
63
Funciones utilizadas frecuentemente
randint
Genera una matriz de nmeros aleatorios enteros
uniformemente distribuidos.
out = randint; % Un solo valor [0,1]
out = randint(N); % Matriz cuadrada NN
out = randint(M,N); % Matriz MN
out = randint(M,N,rg); % Se especifica el rango.
Introduccin a Matlab y Simulink
Javier Ramrez
64
Modulacin/demodulacin digital
Introduccin a Matlab y Simulink
Javier Ramrez
65
Modulacin/demodulacin digital
Mapping+modulacin/demodulacin
dmodce/ddemodce
y = dmodce(x,Fd,Fs,'method/nomap'...);
y = dmodce(x,Fd,Fs,'ask',M);
y = dmodce(x,Fd,Fs,'fsk',M,tone);
y = dmodce(x,Fd,Fs,'msk');
y = dmodce(x,Fd,Fs,'psk',M);
y = dmodce(x,Fd,Fs,'qask',M);
y = dmodce(x,Fd,Fs,'qask/arb',inphase,quadr);
y = dmodce(x,Fd,Fs,'qask/cir',numsig,amp,phs);
y = dmodce(x,Fd,[Fs initphase],...);
Slo mapping
modmap/demodmap
modmap('method',...);
y = modmap(x,Fd,Fs,'ask',M);
y = modmap(x,Fd,Fs,'fsk',M,tone);
y = modmap(x,Fd,Fs,'msk');
y = modmap(x,Fd,Fs,'psk',M);
y = modmap(x,Fd,Fs,'qask',M);
y = modmap(x,Fd,Fs,'qask/arb',inphase,quadr);
y = modmap(x,Fd,Fs,'qask/cir',numsig,amp,phs);
Introduccin a Matlab y Simulink
Javier Ramrez
66
Ejemplo
M = 16; % Modulacin M-aria.
Fd = 1; % Se muestrea el mensaje original
% a una muestra por segundo.
Fs = 3; % La seal modulada se muestrea
% a una frecuencia de 3 muestras por segundo.
x = randint(100,1,M); % Mensaje digital aleatorio.
% Modulacin M-ary PSK
y = dmodce(x,Fd,Fs,'psk',M);
% Adicin de ruido Gaussiano.
ynoisy = y + .04*randn(300,1) + .04*j*randn(300,1);
% Diagrama de dispersin a partir de las observaciones ruidosas.
scatterplot(ynoisy,1,0,'b.');
% Demodulacin para recuperar el mensaje
z = ddemodce(ynoisy,Fd,Fs,'psk',M);
s = symerr(x,z) % Comprobar la tasa de error de los smbolos.
Introduccin a Matlab y Simulink
Javier Ramrez
67
Grfico de dispersin (ruido)
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Q
u
a
d
r
a
t
u
r
e
In-Phase
Scatter plot
Introduccin a Matlab y Simulink
Javier Ramrez
68
Anlisis de errores
biterr
Calcula el nmero de bits errneos y la tasa de error.
[number,ratio] = biterr(x,y);
[number,ratio] = biterr(x,y,k);
[number,ratio] = biterr(...,flg);
[number,ratio,individual] = biterr(...)
Introduccin a Matlab y Simulink
Javier Ramrez
69
Ejemplo
x = randint(100,100,4); % Seal original
% Introduccin de errores.
% Los errores pueden ser 1, 2, o 3 (no 0).
% Colocacin de los errores
errorplace = (rand(100,100) > .9);
errorvalue = randint(100,100,[1,3]); % Valor error
errors = errorplace.*errorvalue;
y = rem(x+errors,4); % Seal y error sumadas mod 4
% Anlisis de errores
format short
[num_bit,ratio_bit] = biterr(x,y,2)
[num_sym,ratio_sym] = symerr(x,y)
Introduccin a Matlab y Simulink
Javier Ramrez
70
Ejercicio:
Estudiar mediante Matlab/Simulink el efecto
del ruido en los sistemas de comunicacin
digital.
Construir el diagrama de bloques de simulacin.
Simular el sistema:
Diferentes esquemas de modulacin (ASK, PSK, FSK,
MSK).
Obtener las curvas de error en funcin de la SNR.
Adicionalmente, considrese PSK con M= 4 y 8
smbolos y comprese las curvas de error frente a la
SNR.
Introduccin a Matlab y Simulink
Javier Ramrez
71
Introduccin a Simulink
Simulink es una herramienta para modelado,
simulacin y anlisis de sistemas dinmicos.
Soporta tanto sistemas lineales como no
lineales:
en tiempo continuo,
muestreados,
hbridos y
sistemas multifrecuencia (contienen sistemas
muestreados a diferente frecuencia).
Introduccin a Matlab y Simulink
Javier Ramrez
72
Entorno de trabajo
Introduccin a Matlab y Simulink
Javier Ramrez
73
Construccin del diagrama de bloques
Introduccin a Matlab y Simulink
Javier Ramrez
74
Resultado de la simulacin
0 500 1000 1500 2000 2500 3000
-1
-0.5
0
0.5
1
0 0.5 1 1.5 2 2.5 3
x 10
4
-1
-0.5
0
0.5
1
Introduccin a Matlab y Simulink
Javier Ramrez
75
Ejemplo
Introduccin a Matlab y Simulink
Javier Ramrez
76
Simulacin
Introduccin a Matlab y Simulink
Javier Ramrez
77
Anlisis/sntesis LPC de la seal de voz
Introduccin a Matlab y Simulink
Javier Ramrez
78
Estimacin espectral
Introduccin a Matlab y Simulink
Javier Ramrez
79
Resultado de la simulacin
Introduccin a Matlab y Simulink
Javier Ramrez
80
Sistema de comunicacin digital
8-PSK (Gray)
Introduccin a Matlab y Simulink
Javier Ramrez
Procesado de imgenes
Lectura de imgenes:
A = imread(filename, fmt)
Lee una imagen en escala de grises o en color
fmt especifica el formato de imagen (BMP, JPEG, PNG, TIFF, etc)
[X, map] = imread(...)
map Mapa de color
Visualizacin de la imagen imshow
imshow(I)
imshow(I,[low high])
imshow(RGB)
imshow(BW)
imshow(X,map)
81
Introduccin a Matlab y Simulink
Javier Ramrez
Lectura de imgenes
A= imread('texto.tif');
imshow(A);
size(A); size(A);
500500
[B map]=
imread('flor.tif');
imshow(B); size(A);
5005003
82
Introduccin a Matlab y Simulink
Javier Ramrez
Transformaciones espaciales
Modificacin del tamao
B = imresize(A, scale)
B = imresize(A, [mrows ncols])
Rotar una imagen
B = imrotate(A,angle)
B = imrotate(A,angle,method)
method -> Interpolacin {nearest}, bilinear, bicubic
B = imrotate(A,angle,method,bbox)
bbox -> Bounding box {crop} loose
Recortar una imagen
B= imcrop(A); Herramienta interactiva
B= imcrop(A,rect);
83
Introduccin a Matlab y Simulink
Javier Ramrez
Filtrado 2D
B= imfilter(A,h) N= 5;
h = ones(N,N) / (N*N);
Af = imfilter(A,h);
84
Original Filtrada N= 5 Filtrada N= 20
Introduccin a Matlab y Simulink
Javier Ramrez
Respuesta en frecuencia de filtros 2D
[H, f1, f2] = freqz2(h, n1, n2)
[H, f1, f2] = freqz2(h, [n2 n1])
[H, f1, f2] = freqz2(h)
[H, f1, f2] = freqz2(h, f1, f2)
85
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
F
x
F
y
M
a
g
n
i
t
u
d
e
Filtro 55 Filtro 2020
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
F
x
F
y
M
a
g
n
i
t
u
d
e
Introduccin a Matlab y Simulink
Javier Ramrez
Diseo de filtros 2D
h = fwind1(Hd, win)
h = fwind1(Hd, win1, win2)
h = fwind1(f1, f2, Hd,...)
Ejemplo:
[f1,f2] = freqspace(21,'meshgrid');
Hd = ones(21);
r = sqrt(f1.^2 + f2.^2);
Hd((r<0.1)|(r>0.5)) = 0;
colormap(jet(64));
mesh(f1,f2,Hd);
h = fwind1(Hd,hamming(21));
freqz2(h);
86
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.5
1
1.5
F
x
F
y
M
a
g
n
i
t
u
d
e
Introduccin a Matlab y Simulink
Javier Ramrez
Ajuste del nivel de intensidad
87
0 100 200
0
2000
4000
6000
0 100 200
0
5000
10000
15000
0 100 200
0
1000
2000
3000
4000
Introduccin a Matlab y Simulink
Javier Ramrez
Ecualizacin del histograma
88
0 100 200
0
50
100
150
200
250
0 100 200
0
50
100
150
200
250
0 100 200
0
50
100
150
200
250
Introduccin a Matlab y Simulink
Javier Ramrez
Ecualizacin del histograma
89
0 50 100 150 200 250
0
2000
4000
6000
0 50 100 150 200
0
5000
10000
15000
0 50 100 150 200 250
0
2000
4000
0 50 100 150 200 250
0
100
200
0 50 100 150 200 250
0
100
200
0 50 100 150 200 250
0
100
200
0 50 100 150 200 250
0
1000
2000
0 50 100 150 200 250
0
5000
10000
15000
0 50 100 150 200 250
0
1000
2000
Introduccin a Matlab y Simulink
Javier Ramrez
Filtrado de ruido (Filtro de Wiener)
J = wiener2(I, [m n], noise)
[J, noise] = wiener2(I, [m n])
Wiener2 estima la media y la varianza entorno a cada pixel
A continuacin crea un filtro pixel a pixel basado en estas estimaciones
v
2
es la varianza del ruido
90
Introduccin a Matlab y Simulink
Javier Ramrez
Matlab para reconocimiento de patrones
Asignacin de una clase a un vector de
caractersticas x del objeto a clasificar:
Ejemplo: Fisher Iris dataset:
http://en.wikipedia.org/wiki/Iris_flower_data_set
503 = 150 muestras de flores Iris de tres especies
Iris setosa, Iris virginica, Iris versicolor
4 caractersticas de cada ejemplo:
Longitud y anchura de los ptalos y spalos
91
Introduccin a Matlab y Simulink
Javier Ramrez
Matlab para reconocimiento de patrones
Anlisis discriminante:
class = classify(sample,training,group)
class = classify(sample,training,group,type)
class = classify(sample,training,group,type,prior)
knn:
Class = knnclassify(Sample, Training, Group)
Class = knnclassify(Sample, Training, Group, k)
Class = knnclassify(Sample, Training, Group, k, distance)
Class = knnclassify(Sample, Training, Group, k, distance, rule)
Mquinas de vectores de soporte:
Group = svmclassify(SVMStruct, Sample)
Group = svmclassify(SVMStruct, Sample, 'Showplot,ShowplotValue)
SVMStruct = svmtrain(Training, Group)
SVMStruct =svmtrain(..., 'Kernel_Function', Kernel_FunctionValue)
92
Introduccin a Matlab y Simulink
Javier Ramrez
Anlisis discriminante: Ejemplo
load fisheriris
SL = meas(51:end,1);
SW = meas(51:end,2);
group = species(51:end);
h1 = gscatter(SL,SW,group,'rb','v^',[],'off');
set(h1,'LineWidth',2)
legend('Fisher versicolor','Fisher virginica','Location','NW')
93
4.5 5 5.5 6 6.5 7 7.5 8
2
2.2
2.4
2.6
2.8
3
3.2
3.4
3.6
3.8
SL
S
W


Fisher versicolor
Fisher virginica
Introduccin a Matlab y Simulink
Javier Ramrez
Anlisis discriminante: Ejemplo
Clasificamos una
matriz de datos 2-D:
[X,Y] =
meshgrid(linspace(4.5,8)
,linspace(2,4));
X = X(:); Y = Y(:);
[C,err,P,logp,coeff] =
classify([X Y],[SL SW],
group,'quadratic');
Visualizar la
clasificacin:
hold on;
gscatter(X,Y,C,'rb','.',1,'off');
K = coeff(1,2).const;
L = coeff(1,2).linear;
Q = coeff(1,2).quadratic;
f = sprintf('0 =
%g+%g*x+%g*y+%g*x^2+%g*x.*y+%g*y.^2',
...
K,L,Q(1,1),Q(1,2)+Q(2,1),Q(2,2));
h2 = ezplot(f,[4.5 8 2 4]);
set(h2,'Color','m','LineWidth',2)
axis([4.5 8 2 4])
xlabel('Sepal Length')
ylabel('Sepal Width')
title('{\bf Classification with Fisher
Training Data}')
94
Introduccin a Matlab y Simulink
Javier Ramrez
Anlisis discriminante: Ejemplo
95
4.5 5 5.5 6 6.5 7 7.5 8
2
2.2
2.4
2.6
2.8
3
3.2
3.4
3.6
3.8
4
SL
S
W
Classification with Fisher Training Data


Fisher versicolor
Fisher virginica
Introduccin a Matlab y Simulink
Javier Ramrez
Seleccin de caractersticas
[IDX, Z]= rankfeatures(X, Group)
[IDX, Z]= rankfeatures(X, Group,'Criterion', CriterionValue)
load fisheriris;
X= meas(1:100,:);
Group= species(1:100);
[IDX, Z] = rankfeatures(X',Group);
% Selecionamos las variables ms discriminativas
data= X(:,[IDX(1) IDX(2)]);
% Seleccin aleatoria de subconjuntos de entrenamiento y test
[train, test] = crossvalind('holdOut',Group);
cp = classperf(Group);
% Entrenamiento de una mquina de vectores de soporte
svmStruct = svmtrain(data(train,:),Group(train),'showplot',true);
% Aadimos ttulo.
title(sprintf('Kernel Function: %s',...
func2str(svmStruct.KernelFunction)),...
'interpreter','none');
% Clasificacin del conjunto de test
classes = svmclassify(svmStruct,data(test,:),'showplot',true);
% Evaluacin a partir de la tasa de correctas.
classperf(cp,classes,test);
cp.CorrectRate
96
Introduccin a Matlab y Simulink
Javier Ramrez
Seleccin de caractersticas
97
data= X(:,[IDX(1) IDX(2)]); data= X(:,[IDX(3) IDX(4)]);
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Kernel Function: linear_kernel


setosa (training)
setosa (classified)
versicolor (training)
versicolor (classified)
Support Vectors
4 4.5 5 5.5 6 6.5 7
2
2.5
3
3.5
4
4.5
Kernel Function: linear_kernel


setosa (training)
setosa (classified)
versicolor (training)
versicolor (classified)
Support Vectors
Introduccin a Matlab y Simulink
Javier Ramrez
98
Estas transparencias se pueden obtener en:
http://www.ugr.es/~javierrp
Para cualquier consulta:
Javier Ramrez (javierrp@ugr.es)
Dpto. Teora de la Seal, Telemtica y Comunicaciones
Despacho 22
ETSII
Gijn - Octubre 2006 1
Simulacin de sistemas de control continuos con
MATLAB y SIMULINK
Ayuda
BibIioteca de SIMULINK
SeIeccin de carpetas
de trabajo
VisuaIizacin de
variabIes deI espacio de
trabajo
Crear, abrir y guardar archivos
de funciones o de variabIes deI
espacio de trabajo
Lnea de comandos
Gijn - Octubre 2006 2
Comandos bsicos de MATLAB para las prcticas de Regulacin
1. Comandos bsicos. Variables, vectores y matrices.
Matlab es un programa de calculo matematico muy Ilexible y potente, con posibilidades
graIicas para la presentacion de los datos, por lo que se utiliza en muchos campos de la ciencia y la
investigacion como herramienta de calculo matematico. Los comandos y Iunciones que se describen a
continuacion Iuncionan generalmente en todas las versiones de MATLAB, aunque algunos solo lo
hacen en las versiones mas modernas y otros han quedado obsoletos. En este ultimo caso las versiones
mas modernas disponen de otros comandos o Iunciones que los sustituyen. Algunos de ellos estan
disponibles bajo botones o menus en las nuevas versiones.
NOTA: En este documento se recogen unos pocos ejemplos de entre las inmensas posibilidades que
oIrece Matlab. Se deben consultar las ayudas de Matlab u otros documentos si se desea un
conocimiento mas amplio. Se deben utilizar y modiIicar los ejemplos aqui incluidos para
adquirir las destrezas basicas que permitiran utilizar el programa como herramienta para la
asignatura. Tengase en cuenta que algunos ejemplos estan encadenados, es decir, es necesario
ejecutar determinados comandos anteriores para que los siguientes Iuncionen correctamente.
Realizar operaciones algebraicas es
muy sencillo,
>> a 2
>> b 3
>> suma a + b
suma
5
o simplemente:
>> 2 + 3
ans
5
La variable 'ans contiene el resultado de la ultima operacion realizada y puede consultarse en
cualquier momento asi como el resto de las variables que se vayan creando:
>> suma
suma
5
>> ans
ans
5
Si se quiere ver el nombre de todas las variables que se estan utilizando se pueden usar los
comandos who y whos. Con save y load se pueden guardar las variables que se estan usando y
recuperarlas posteriormente. El comando help proporciona ayuda y combinado con otro comando,
ayuda sobre ese comando en concreto (p.ej. help who). Para abandonar el programa se pueden usar los
comandos quit o exit. (En versiones bajo Windows se dispone de los correspondientes menus y
botones para estas Iunciones)
Matlab maneja matrices, y como casos particulares de las mismas, vectores Iila y vectores
columna:
>> matriz 1 2 3
4 5 6
7 8 9]
>> matriz 1,2,3;4,5,6;7,8,9]
>> vectorfila 1 2 3]
>> vectorfila 1,2,3]
>> vectorcolumna 1,2,3]' (' transposicion)
>> vectorcolumna 1;2;3]
2. Valores complejos.
>> c 2 + 3`j -> se utilizan 'j o 'i como valores imaginarios
>> modulo abs(c) -> se obtiene el modulo
Gijn - Octubre 2006 3
>> argumento angle(c) -> el valor del argumento esta en radianes
>> grados argumento ` 180 / pi -> pero se convierte Iacilmente a grados
NOTA: obviamente "i", "j", "ans", "pi", "help", "sin", etc. son nombres que ya estan deIinidos para
variables, constantes, comandos o Iunciones de Matlab y no se deben usar para nombrar
nuevas Iunciones o variables del usuario. Matlab distingue entre mayusculas y minusculas!
3. Polinomios.
Los polinomios se introducen en Iorma de vectores Iila que contienen los coeIicientes del
polinomio.
>> p 1 -6 0 -27] -~ s
3
-6s
2
-27
>> raices roots(p) -~ da las raices del polinomio en un vector columna
>> polinomio poly(raices) -~ se vuelve a obtener el polinomio original
Se pueden multiplicar y dividir polinomios: c(s)a(s)*b(s); c(s)/a(s) q(s)r(s)/a(s)
>> a 1 2 3] -~ s
2
2s3
>> b 4 5 6] -~ 4s
2
5s6
>> c conv(a,b)
c
4 13 28 27 18 -~ producto de los dos polinomios 4s
4
13s
3
28s
2
27s18
>> q,r] deconv(c,a) -~ division de c(s) por a(s)
q
4 5 6 -~ q(s) es el cociente de la division
r
0 0 0 0 0 -~ r(s) es el resto de la division
Como se puede observar, a veces el resultado de una Iuncion, pueden ser varias variables y sus
argumentos tambien pueden ser varios y de diIerentes tipos. Se debe consultar mediante el comando
help (p.ej. help deconv) cuales son los argumentos que admite cada Iuncion y que variables va a
devolver como resultado.
4. Representaciones grficas 2D y 3D.
Representacion de la Iuncion seno:
>> t 0:1:100] -~ vector tiempo
>> x t -~ eje x
>> y sin(0.1`t) -~ eje y
>> plot(x,y)
Representacion de dos Iunciones:
>> t 0:1:100]
>> x t
>> y sin(0.1`t) ; cos(0.1`t)]
>> plot(x,y)
Representacion en 3D:
>> t 0:1:100] -~ vector tiempo
>> x t -~ eje x
>> y sin(0.1`t) -~ eje y
>> z cos(0.2`t) -~ eje z
>> plot3(x,y,z)
5. Funciones de Transferencia.
Para trabajar con Iunciones de transIerencia, se introducen por separado dos vectores, uno con
los coeIicientes del polinomio del numerador y otro con los del denominador:
Gijn - Octubre 2006 4
>> num 1 2] -~ s2
>> den 1 3 5] -~ s
2
3s5
>> printsys(num,den) -~ muestra la Iuncion de transIerencia
(s+2)/(s^2+3s+5)
>> pzmap(num,den) -~ muestra el mapa de ceros y polos del sistema graIicamente
>> p,z] pzmap(num,den) -~ en los vectores columna 'p y 'z se tendran los polos y
ceros respectivamente del sistema
>> pzmap(p,z) -~ muestra el mapa de ceros y polos del sistema a partir de estos
Para un sistema de segundo orden:
>> wn 30 -~ valor para
n
>> xi 0.3 -~ valor para
>> num2,den2] ord2(wn,xi) -~ Iuncion de transIerencia de segundo orden con
n
y
>> printsys(num2,den2) -~ la Iuncion de transIerencia de segundo orden
1/(s^2+18s+900)
En versiones de MATLAB superiores a
la 5.0 se puede trabajar con el objeto especial
Funcion de TransIerencia, que permite operar
comodamente con ellas .
>> g tf(1 2], 1 3 5]) -~ Iuncion 'tI
(s+2)/(s^2+3s+5)
. o incluso representarlas y operar con ellas
en Iorma simbolica:
~~ s tf(s) -~ crea el objeto 's
>> g (s+2)/(s^2+3`s+5)
(s+2)/(s^2+3s+5)
>> g2 g`g
Estos objetos Funcion de TransIerencia se pueden sumar, multiplicar, etc. y aplicarles las
Iunciones que aqui se describen, validas tambien para un par de polinomios numerador/denominador:
>> num 1 2] -~ s2
>> den 1 3 5] -~ s
2
3s5
>> pzmap(num,den)
Equivale a:
>> g tf(1 2], 1 3 5]) -~g(s+2)/(s^2+3s+5)
>> pzmap(g)
Y para pasar de num/den` a g` y de g` a num/den`:
>> g tf(num,den)
>> p,z] pzmap(g)
>> num dcgain(g`tf(poly(p),poly(z)))`poly(z)
>> den poly(p)
O mas directamente:
>> g tf(num,den)
>> num deal(g.num:])
>> den deal(g.den:])
>> m feedback(g,1,-1) -~ proporciona la Iuncion de transIerencia en bucle cerrado con
realimentacion unitaria '1 y negativa "-1"
6. Respuesta en el tiempo.
>> impulse(g) -~ representa graIicamente la respuesta en el tiempo del sistema
ante una entrada impulso
>> step(g) -~ representa graIicamente la respuesta en el tiempo del sistema
ante una entrada escalon unitario. Un clic con el raton sobre
las graIicas proporciona inIormacion sobre sus valores
>> y,x,t] step(g) -~ almacena en "y" la respuesta del sistema, en "x" la evolucion
de las variables de estado y en "t" el vector de tiempo
>> maximo max(y) -~ da el valor maximo que alcanza la respuesta del sistema
Gijn - Octubre 2006 5
7. Respuesta en frecuencia.
>> bode(g) -~ dibuja el diagrama de bode del sistema
>> mag,fase] bode(g,3) -~ da los valores de magnitud (no esta en decibelios) y de Iase
(en grados) del sistema para 3
>> mag,fase,w] bode(g) -~ devuelve los valores de magnitud, Iase y pulsacion, en tres
vectores, para utilizarlos posteriormente con otras Iunciones
como por ejemplo:
>> maximo max(mag) -~ valor en el pico de resonancia de la relacion de amplitudes
>> resonancia 20`log10(maximo) -~ valor en el pico de resonancia expresado en decibelios
>> Gm,Pm,wg,wp] margin(g) -~ Resultados extraos ???
Gm Indica que el margen de Iase y de ganancia son inIinito,
Pm y que no se puede determinar un valor de para ellos
wg NaN (NaN Not a Number)
wp NaN
>> g1 10/((s+1)`(s+2)`(s+3)) -~ se crea una nueva FdT para probar la Iuncion 'margin
>> Gm1,Pm1,wg1,wp1] margin(g1)
Gm1 -~ margen de ganancia (no esta en decibelios)
Pm1 -~ margen de Iase en grados
wg1 -~ pulsacion (Irecuencia en rad/s) para el margen de ganancia
wp1 -~ pulsacion (Irecuencia en rad/s) para el margen de Iase
>> margin(g1) -~ representa graIicamente el margen de ganancia y de Iase
>> nichols(g) -~ diagrama magnitud-Iase
>> ngrid(new) -~ superpone el abaco de Nichols al diagrama anterior
>> shg -~ muestra la pantalla graIica
>> clf -~ limpia la pantalla graIica (en versiones antiguas "clg")
>> hold on -~ bloquea la pantalla graIica para superponer un nuevo trazado
>> hold off -~ desbloquea la pantalla graIica para realizar nuevos trazados
>> nyquist(g) -~ diagrama de Nyquist del sistema. El tramo con valores de
~0 es el 'Diagrama Polar del sistema
>> ltiview(g) -~ permite representar conjuntamente las graIicas ya descritas
para varios sistemas simultaneamente
8. Lugar de las races.
>> rlocus(g) -~ lugar de las raices del sistema
>> polos rlocus(num,den,3) -~ polos del sistema en bucle cerrado para "k3"
>> hold on -~ Iija la pantalla graIica para seguir trabajando sobre ella
>> rlocus(num,dem,3 4]) -~ dibuja la posicion de las raices (polos) del sistema en bucle
cerrado para los valores de "k3" y "k4"
>> rltool -~ herramienta para el diseo de reguladores basado en el L.R.
>> sisotool -~ herramienta de diseo mas generica que 'rltool
NOTA: Las unidades de los resultados (grados, radianes, decibelios, etc.) pueden variar segun las
versiones de Matlab.
Gijn - Octubre 2006 6
Elementos bsicos de SIMULINK
1. La biblioteca de Simulink.
Simulink proporciona un entorno graIico al usuario que Iacilita enormemente el analisis,
diseo y simulacion de sistemas (de control, electronicos, etc.), al incluir una serie de rutinas que
resuelven los calculos matematicos de Iondo, junto con una sencilla interIaz para su uso.
Proporciona un entorno de usuario graIico que permite dibujar los sistemas como diagramas de
bloques tal y como se haria sobre un papel.
El conjunto de componentes incluidos junto al programa Simulink, incluye bibliotecas de
Iuentes de seal, dispositivos de presentacion de datos, sistemas lineales y no lineales, conectores y
Iunciones matematicas. En caso de que sea necesario, se pueden crear nuevos bloques a medida por
el usuario.
El programa Simulink se inicia desde el boton "Simulink Library Browser" (Biblioteca de
Simulink, ver imagen de portada) de la ventana de comandos de Matlab, o desde la linea de
comandos mediante la orden:
~~ simulink
Una vez iniciado el programa el entorno de trabajo queda dividido en tres partes.
La ventana de comandos de Matlab (Matlab command window): desde la que se puede ejecutar
cualquier comando del mismo, dar valores a variables y controlar la ejecucion de las
simulaciones.
Conjunto bsico de
bIoques de funcin de
SimuIink
Crear un nuevo modeIo
Busqueda de BIoques
Abrir un modeIo
La ventana de la biblioteca de Simulink (Simulink Librarv Browser): desde la que se seleccionan
los componentes que se van a insertaren el sistema a simular.
La o las ventanas de los modelos: en las que se dibujan los modelos y se realizan y controlan las
simulaciones. Estas ventanas aparecen cuando se abre un modelo ya existente o se crea una
ventana en blanco para dibujar un nuevo modelo. Para ello, se pueden utilizar los botones de la
ventana de la libreria de Simulink.
Gijn - Octubre 2006 7
Todos los componentes basicos de Simulink, se pueden encontrar en su biblioteca de
componentes. A continuacion se describen los componentes basicos de la biblioteca de Simulink:
Continuous: Bloques que pueden ser representados como
una funcin continua en el tiempo.
Derivative: La salida del bloque se corresponde con la
derivada de la entrada.
Integrator: La salida del bloque se corresponde con la
integral de la entrada. Los parametros del bloque permiten
controlar el valor inicial de la salida, asi como la existencia
de limites superiores e inIeriores en la salida.
Transfer Fcn: Permite expresar una Iuncion de transIerencia
mediante su expresion en la variable compleja s. Sus
parametros son los polinomios del numerador y del
denominador de la Iuncion, expresados como vectores Iila.
Transport Delay: La salida del bloque se corresponde con la
entrada al mismo retrasada una cantidad de tiempo, que se
Iija como parametro en el bloque.
Zero-Pole: Funcion de transIerencia expresada en Iuncion de
la ganancia en regimen permanente, y la situacion de los
polos y ceros del sistema.
Math: Bloques que realizan operaciones matemticas
sobre sus entradas.
Abs: Calcula el valor absoluto de su entrada.
Gain: Aplica una ganancia constante a la entrada.
Math Function: Este bloque incluye la mayor parte de las
Iunciones matematicas tipicas, con la excepcion de las
Iunciones trigonometricas.
Product: Calcula el producto escalar de sus entradas. Un
parametro del bloque permite regular el numero de entradas
del mismo.
Sign: Calcula el signo de la entrada. 1 indica positivo, -1
negativo, y 0 un valor nulo.
Sum: Calcula la suma de todas sus entradas. Un parametro
permite indicar el numero de entradas, y si estas deben ser
invertidas antes de la suma. Ejemplo: un valor para el
parametro "-" indicaria que el bloque tiene 4 entradas, y
que la tercera de ellas debe ser invertida antes de sumarla.
Trigonometric Function: En este bloque se incluyen todas
las Iunciones trigonometricas tipicas.
Nonlinear: Bloques no lineales.
Dead Zone: Incluye una :ona muerta en el sistema, centrada
en torno a cero. El sistema no responde ante estos valores. La
magnitud de la zona muerta puede ser modiIicada, y echa
asimetrica por medio de los parametros del sistema.
Relay: La salida pasa al estado on1 cuando la entrada
supera un valor umbral, y a estado oII0 cuando cae por
debajo de un umbral distinto. El estado inicial es oII.
Saturation: La seal de salida no sobrepasa un valor umbral,
conIigurable con los parametros del bloque.
Switch: Una entrada del sistema permite escoger cual de las
otras dos entradas se presenta en la salida.
Signals&Systems: Manejo de sistemas y seales.
Subsystem: Permite la realizacion de sistemas jerarquicos. Al
abrir el subsistema, nos permite incluir en su interior, nuevos
bloques constructivos, e incluso anidar nuevos subsistemas.
In1: Por deIecto un subsistema no contiene entradas. Por
cada entrada que se desee aadir se le debe incluir uno de
estos bloques.
Out1: Por deIecto un subsistema no contiene salidas. Por
cada entrada que se desee aadir se le debe incluir uno de
estos bloques.
Mux: Permite la inclusion de un conjunto de seales en una
unica linea de transmision (que transmite datos vectoriales),
lo que Iacilita la representacion en el dibujo. Parametros:
numero de entradas. Admite tanto entradas escalares como
vectoriales.
Demux: Permite la descomposicion de los datos puesto en
Iorma vectorial en una linea mediante un multiplexador.
Parametros: numero de salidas.
Data Store Memory: DeIine una variable del entorno de
trabajo que se va a usar como lugar de almacenamiento de
datos util para evitar tener que hacer conexiones complejas
que compliquen el diagrama de bloque que se esta usando.
Data Store Read: Lee el valor actual de una variable de
almacenamiento, que debe estar previamente deIinida
mediante un bloque Data Store Memory
Data Store Write: Cambia el valor actual de una variable de
almacenamiento, que debe estar previamente deIinida
mediante un bloque Data Store Memory
Sinks: Sumideros de seales.
Display: Representa numericamente el valor de una variable.
Scope: Representa graIicamente la evolucion en el tiempo de
una variable.
To Workspace: Guarda el valor de la seal indicada en una
variable del entorno de trabajo del Matlab. Se puede escoger
el nombre de la misma, y limitar su tamao.
To File: Guarda en un Iichero de tipo ".mat" los datos de la
seal de entrada al bloque.
Stop Simulation: Detiene la simulacion si el valor de la
entrada es distinto de 0.
Sources: Fuentes de seales.
Chirp Signal. Genera una seal senoidal, modulada en
Irecuencia, entre un valor inicial y un valor Iinal.
Clock: Tiempo que se lleva de simulacion.
Constant: Proporciona una seal de valor constante.
From Workspace: Proporciona una secuencia de datos
tomadas del entorno de trabajo del Matlab. La variable
elegida debe contener una matriz indicando los valores de la
seal, y los instantes en los que la seal toma estos valores.
From File: Proporciona datos tomados de un Iichero ".mat",
en el que debe estar el valor de la variable, junto a los
instantes de tiempo en que toma cada valor.
Pulse Generator: Genera una onda cuadrada, de la que se
puede controlar la amplitud, el periodo y el tiempo de dutv
(relacion entre el tiempo que la onda toma su valor maximo y
el tiempo que toma el valor minimo).
Ramp: Genera una seal de tipo Rampa.
Random Number: Genera numeros aleatorios distribuidos
segun una Iuncion normal.
Signal Generator: Simula un generador de seales
electronico, permitiendo generar ondas dientes de sierra,
ondas cuadradas y senoidales.
Sine Wave: Generador de ondas senoidales.
Step: Genera una seal de tipo escalon.
Uniform Random Number: Genera numeros aleatorios
distribuidos segun una Iuncion uniIorme.
Gijn - Octubre 2006 8
2. Creacin de un modelo.
Para simular un sistema, se deben insertar en las ventanas de simulacion los distintos
componentes con los que se va a construir el modelo. Se pueden seguir los siguientes pasos:
Descripcin deI BIoque
1
2
3
4
5
Representacin grfica
deI BIoque
Crear un modeIo nuevo
Buscar un bIoque
Situar un bIoque
Conectar
bIoques
Crear una
bifurcacin
6
7
1) Crear un nuevo modelo: Para abrir una nueva ventana de simulacion se debe pulsar el
boton "nuevo modelo".
2) Buscar un bloque: Se puede buscar un bloque expandiendo el arbol de la biblioteca o
buscandolo directamente por su nombre en la ventana de busqueda. En este caso, si hay
mas de un bloque que pueda corresponder a ese nombre, iran apareciendo a medida que
se pulse la tecla "enter" (retorno).
3) Situar un bloque: Para situar un bloque, se mantiene pulsado el boton izquierdo del
raton sobre el icono en Iorma de rombo que hay junto al nombre del bloque y se arrastra
hacia la posicion deseada en la ventana de simulacion.
4) Conectar bloques: En cada bloque, las puntos de salida aparecen indicados mediante
una Ilecha saliente del bloque ",~", mientras que los puertos de entrada a cada bloque se
indican con una Ilecha entrante al mismo "~,". Se conecta la entrada de un bloque a la
salida de otro, manteniendo pulsado el boton izquierdo del raton mientras se arrastra
desde el simbolo de entrada de uno de los bloques hasta el de salida de otro o viceversa.
5) Crear una bifurcacin: Si se desea llevar la salida de un bloque a la entrada de mas de
uno se necesita crear una biIurcacion en la conexion. Para hacerlo, se arrastra con el
raton desde la entrada del nuevo bloque a conectar hasta la linea de la conexion que se va
a biIurcar.
6) Modificar los bloques: Se pueden rotar o aplicar simetrias a los bloques usados, segun
convenga la colocacion de entradas/salidas para el esquema que se este realizando,
pulsando sobre el el boton derecho del raton y utilizando los menus desplegables o
mediante la opcion "Formar" del menu principal ("Format\Flip Block", "Format\Rotate
Block", etc.). Tambien mediante los menus o haciendo doble clic sobre el bloque, se
pueden modiIicar sus parametros.
7) Insercin de textos: Se puede incluir un texto aclaratorio o inIormativo en cualquier
parte de la ventana del modelo, haciendo doble clic en una zona libre y escribiendo
directamente el texto.
Gijn - Octubre 2006 9
Tambien se pueden cambiar los nombres y posiciones de los bloques que se empleen para la
simulacion antes o despues de conectarlos. Asimismo los enlaces de las conexiones pueden
moverse o modiIicarse. Para eliminar cualquier elemento basta con seleccionarlo con un clic y
eliminarlo con la tecla "sup" o "delete", o utilizar alguno de los menus.
Conviene guardar ("File\Save as") periodicamente el modelo, incluso antes de terminarlo,
para evitar perder el trabajo realizado.
Un ejemplo trivial incluiria la seleccion de dos componentes: "Simulink\Sources\Sine
Wave" y "Simulink\Sinks\Scope" de la ventana "Simulink Library Browser", y el arrastre de los
mismos hasta la ventana de dibujo. En el caso de nuestro ejemplo basico, para conectar el generador
de seales y el osciloscopio, simplemente se debe situar el raton sobre el punto de salida del
generador, pulsar el boton izquierdo, arrastrar el raton hasta el punto de entrada del osciloscopio y
soltar el boton del raton.
ControIes de zoom
1
2
3
4
5
Nmero de entradas deI
osciIoscopio
ControI de Ia simuIacin
Duracin de Ia simuIacin en segundos
6
7
Botn de propiedades
3. Control de la simulacin y visualizacin de resultados.
Antes de poder ejecutar la simulacion, es necesario seleccionar los parametros apropiados
para la misma (1). Desde el menu: "Simulation\Parameters", se puede desplegar un cuadro de
dialogo, en el que se controlan parametros de la simulacion de entre los cuales el que se modiIica
Gijn - Octubre 2006 10
mas habitualmente es el tiempo Iinal de la simulacion. (Otros parametros accesibles son el tiempo
de inicio de la simulacion, el metodo matematico que se empleara para llevarla a cabo, o las
variables que se tomaran/guardaran de/en el espacio de trabajo). La simulacion se puede poner en
marcha o detener mediante el menu anterior o los botones de la ventana (2).
Para visualizar los resultados de la misma son muy utiles los bloques se encuentran en el grupo
"Sinks" de la biblioteca de Simulink. De entre ellos, quizas el mas util es el bloque "Scope" que simula
el comportamiento de un osciloscopio. Tras realizar una simulacion se pueden ver los resultados que
ha registrado haciendo un doble clic sobre el (3). Para ver correctamente los resultados se utilizan los
controles de zoom (4), siendo conveniente pulsar siempre tras una simulacion el boton de autoescala
(el de los prismaticos) para ver el total de los datos registrados. Los otros tres botones de zoom
permiten respectivamente ampliar un area sealada con un arrastre del raton, ampliar el eje "X" de la
misma manera o ampliar el eje "Y".
El bloque "Scope" tiene una serie de propiedades a las que se accede a traves del boton
correspondiente de la ventana "Scope" (5). Dos de las mas utiles son la que permite elegir el numero
de entradas que se desean para el osciloscopio (6) "Number oI axes" (que sera tambien el numero de
graIicos que representara) y la que determina si el osciloscopio almacena todos los datos de la
simulacion o solo los ultimos obtenidos (7) "Limit rows to last". Respecto a este ultimo control, es
conveniente eliminar la marca "" del cuadradito blanco para que el osciloscopio mantenga todos los
datos registrados durante la simulacion completa.
A
B
Mux
Si se desea visualizar mas de una seal en un osciloscopio, existen dos posibilidades:
A) Aumentar el numero de entradas del osciloscopio como se comento anteriormente.
B) Utilizar un bloque "Mux" para que ambas seales aparezcan en el mismo graIico.
Gijn - Octubre 2006 11
E1EMPLO 1
Simular la respuesta de un sistema descrito por su Iuncion de transIerencia ante una
determinada seal de entrada con Matlab o Simulink es muy sencillo:
Y(s)
X(s)
x(t)
y(t)
9 4
8
) (
2

s s
s G
Con Matlab se puede
obtener la respuesta ante un
inpulso de Dirac, un
escalon, etc.:
>> g tf(8], 1 4 9])
g8/(s^2+4s+9)
>> impulse(g)
>> step(g)
Con Simulink se construye el modelo del sistema, pudiendo optarse por introducir sus
parametros de Iorma explicita o dejarlos como parametros a los que se les puede asignar un valor
como variables desde la ventana de comandos de Matlab. Una vez ejecutada la simulacion se obtendra
en el bloque 'Scope el resultado de la misma.
A B
Gijn - Octubre 2006 12
E1EMPLO 2
Si se desea simular un sistema mas complejo basta con trasladar las ecuaciones de su modelo a
un modelo de bloques de Simulink.
Modelo del sistema:
q
r
(t)q
a
(t)q
p
(t)
q
r
(t)Ri
2
(t)
q
a
(t)Cdt
i
(t)/dt
q
p
(t)(t
i
(t)-t
a
(t))/R
t
Simulink puede simular sistemas no lineales, como se puede ver en el siguiente modelo,
siendo necesario en muchos casos deIinir los valores iniciales de algunas de las variables del
sistema (en bloques como los 'integrator). Los valores del modelo representado que se han dejado
como parametros son asignados en la ventana de comandos de Matlab (debe tenerse cuidado con el
uso de mayusculas y minusculas en la denominacion de estos parametros). Los archivos de ejemplo
indicados contienen el modelo representado y el espacio de trabajo con los valores asignados a los
parametros para la ventana de comandos de Matlab.
Archivos: calentadornolineal.mdl, calentador.mat
Qp(t)
Qr(t) Qa(t)
i(t)
ta(t)
ti(t)
ti(t)
ta(t)
i(t)
Modelo no lineal del calentador
nitial=Tio
time=2000
inicial=1
final=1.5
time=6000
inicial=20
final=15
Parmetros
R=20 ohm
C=4184 julio/C
Rt=0.1 Cs/julio
Modelo no lineal del calentador
(Simulation->Parameters->Solver: Stop Time=10000)
Qr(t)=Qa(t)+Qp(t)
Qr(t)=Ri(t)^2
Qa(t)=Cdti(t)/dt
Qp(t)=(ti(t)-ta(t))/Rt
(Crear en la ventana de comandos de Matlab)
Equilibrio nicial
(RRto^2=Tio-Tao)
o=1 A
Tao=20
Tio=22
s
1
1/Rt
1/C R u^2
0
Display
Scope
ntegrator
Step 1
Step 2
Gain 2 Gain 1
Gain 3
Fcn
Tambien se puede linealizar el modelo respecto a un punto de Iuncionamiento y construir el
modelo en transIormadas de Laplace. Luego se trasladan las ecuaciones del modelo linealizado a un
modelo de Simulink mediante, por ejemplo, bloques 'Funcion de TransIerencia (TransIerFcn).
Calentador
Fuente de
corriente
i(t)
t
i
(t)
t
a
(t)
q
a
(t)
q
r
(t)
q
p
(t)
R
C
R
t
Gijn - Octubre 2006 13
Modelo linealizado del sistema en TransIormadas de Laplace:
Q
r
(s)Q
a
(s)Q
p
(s)
Q
r
(s)2RI
o
I(s)
Q
a
(s)CsT
i
(s)
Q
p
(s)(T
i
(s)-T
a
(s))/R
t
Archivos: calentadorlineal.mdl, calentador.mat
Qr(s) Qa(s)
Qp(s)
Ti(s)
ti(t)
i(t)
ta(t)
Ta(s)
(s)
Modelo lineal del calentador
(Simulation->Parameters->Solver: Stop Time=10000)
time=2000
inicial=0
final=0.5
time=6000
inicial=0
final=-5
Equilibrio nicial
(RRto^2=Tio-Tao)
o=1 A
Tao=20
Tio=22
Parmetros
R=20 ohm
C=4184 julio/C
Rt=0.1 Cs/julio
Qr(s)=Qa(s)+Qp(s)
Qr(s)=2Ro(s)
Qa(s)=CsTi(s)
Qp(s)=(Ti(s)-Ta(s))/Rt
(Crear en la ventana de comandos de Matlab)
1
Rt
0
Display
2*R*o
1
1
C.s
Step 2
Step 1
Transfer Fcn 1
Transfer Fcn 2
Transfer Fcn 3
Scope
Al comparar los resultados de la simulacion de ambos modelos, se puede observar el error
que introduce la linealizacion del modelo.
+2.5
-5
+2
-5
22
Gijn - Octubre 2006 14
E1EMPLO 3
Una vez diseado un regulador para un sistema, basandose en su modelo linealizado, se puede
comprobar con Simulink si el comportamiento Iinal del sistema es adecuado. Basta con aadir los
bloques que representan el sistema de control diseado.

Selector de
temperatura
Regulador
Accionador
Sensor de
temperatura
Proceso
Filtrado y ampliIicacion
Comparador
Calentador
Archivos: calentadorlinealregulador.mdl, calentadorregulador.mat
Qr(s) Qa(s)
Qp(s)
Ti(s)
ti(t)
r(t)
ta(t)
Ta(s)
(s)
Modelo lineal del calentador con un regulador PD
(Simulation->Parameters->Solver: Stop Time=2500)
time=500
inicial=0
final=5
time=1500
inicial=0
final=-5
Equilibrio nicial
(RRto^2=Tio-Tao)
o=1 A
Tao=20
Tio=22
Parmetros
R=20 ohm
C=4184 julio/C
Rt=0.1 Cs/julio
Qr(s)=Qa(s)+Qp(s)
Qr(s)=2Ro(s)
Qa(s)=CsTi(s)
Qp(s)=(Ti(s)-Ta(s))/Rt
(Crear en la ventana de comandos de Matlab)
R(s)
Regulador PD
Realimentacin unitaria
K(s+a)(s+c)/(s(s+b))
K=2.57
a=0.05
b=0.023
c=0.0025
Corriente i(t)
1
Rt
5
Display
K
1
s +(a+c)s+a*c
2
s +b.s
2
2*R*o
1
1
C.s
Sin embargo, siempre que sea posible, es conveniente comprobar el comportamiento del
sistema de control sobre el modelo no lineal del sistema. Pueden tenerse en cuenta, por ejemplo,
limitaciones en la evolucion de determinadas variables del sistema. En el siguiente ejemplo, a parte
de utilizar el modelo no lineal que se tenia para el sistema, se ha supuesto que la corriente maxima
i(t) que se puede conseguir es de 10 A y que su valor nunca es negativo. Esto se ha reIlejado en el
modelo mediante un bloque denominado 'Saturation.
Gijn - Octubre 2006 15
Archivos: calentadornolinealregulador.mdl, calentadorregulador.mat
Qp(t)
Qr(t) Qa(t)
r(t)
ta(t)
ti(t)
ti(t)
ta(t)
r(t)
nitial=Tio
time=500
inicial=22
final=27
time=1500
inicial=20
final=15
Parmetros
R=20 ohm
C=4184 julio/C
Rt=0.1 Cs/julio
Modelo no lineal del calentador con un regulador PD
(Simulation->Parameters->Solver: Stop Time=25000)
Qr(t)=Qa(t)+Qp(t)
Qr(t)=Ri(t)^2
Qa(t)=Cdti(t)/dt
Qp(t)=(ti(t)-ta(t))/Rt
(Crear en la ventana de comandos de Matlab)
Equilibrio nicial
(RRto^2=Tio-Tao)
o=1 A
Tao=20
Tio=22
Realimentacin unitaria
Regulador PD
K(s+a)(s+c)/(s(s+b))
K=2.57
a=0.05
b=0.023
c=0.0025
Saturation
s
1
K
1/Rt
1/C R u^2
27
Display
s +(a+c)s+a*c
2
s +b.s
2
i(t)
Corriente i(t)
Los resultados muestran (aunque no son exactamente iguales en una y otra simulacion) que
el sistema de control sigue comportandose correctamente.
22
1 A
Gijn - Octubre 2006 16
E1ERCICIO 1: Visualizacin de la respuesta de un sistema
Construir una Iuncion de transIerencia sustituyendo los digitos ABCDEFGH con los numeros
de su D.N.I., ajustados a la derecha y rellenando con un cero por la izquierda si es necesario:
DNI: . . 1AB*s+2CD
-- --- --- G(s)= ----------------
AB CDE FGH s
3
+1E*s
2
+5F*s+1GH
Por ejemplo:
DNI: 09.345.678 109*s+234
-- --- --- G(s)= ----------------
AB CDE FGH s
3
+15*s
2
+56*s+178
Incluir en el inIorme los siguientes datos y resultados:
(Indicar todos los comandos y el diagrama de bloques del modelo en Simulink utilizados para
obtener los datos que se solicitan, los resultados numricos correspondientes, y los dibujos a mano
alzada de los grficos solicitados)
1. Apellidos, Nombre y DNI del alumno.
2. La Iuncion de TransIerencia G(s) creada.
3. Los ceros y polos del sistema G(s).
4. Respuesta ante un impulso. (con Matlab)
4.1. Dibujo de la respuesta.
4.2. Maximo de la respuesta.
4.3. Valor en Regimen permanente.
5. Respuesta ante un escalon. (con Simulink)
5.1. Dibujo de la respuesta.
5.2. Maximo de la respuesta.
5.3. Valor en Regimen permanente.
Gijn - Octubre 2006 17
E1ERCICIO 2: Creacin de un modelo de simulacin
Ri
K u (t)
i
u (t)
m
M.
D.T.
=cte.
e
J
B
P (t)
m
P (t)
r
w(t)
i (t)
i
u (t)
c
Li
El sistema de la Iigura esta compuesto por los siguientes elementos:
- Un rectiIicador controlado que alimenta a un motor CC con una tension continua u
i
(t) proporcional a
la tension u
c
(t), con constante de proporcionalidad K.
- Un motor CC con corriente de excitacion constante de parametros: R
i,
L
i,
cte. contraelectromotriz K
b
y cte. de par del motor K
p.
- El conjunto rotor-eje del motor y de la D.T. tiene una inercia J y un coeIiciente de rozamiento
viscoso B (que se representan en la Iigura). En el extremo del eje existe un par resistente variable, p
r
(t),
debido a los elementos mecanicos que mueve el motor y que no aparecen en la Iigura.
Modelo matematico del sistema:
u
i
(t) Ku
c
(t)
u
i
(t) R
i
i
i
(t) L
i
di
i
(t)/dt u
m
(t)
u
m
(t) K
b
w(t)
p
m
(t) K
p
i
i
(t)
p
m
(t) p
r
(t) Jdw(t)/dt Bw(t)
En transIormadas de Laplace:
U
i
(s) KU
c
(s)
U
i
(s) R
i
I
i
(s) L
i
sI
i
(s) U
m
(s)
U
m
(s) K
b
W(s)
P
m
(s) K
p
I
i
(s)
P
m
(s) P
r
(s) JsW(s) BW(s)
Obtenga el valor de los parametros de las ecuaciones sustituyendo convenientemente los digitos de su
D.N.I. en las expresiones siguientes:
D.N.I.: A B . C D E . F G H
A B . C D E . F G H
K =1+A
K
b
=0.2-0.01B [Vs/rad]
K
p
=1+0.2C [Nm/A]
R
i
=10-D []
L
i
=0.01+0.02(E+F) [H]
J =10+G [Kgm
2
]
B =5-(0.1H) [Kgm
2
/s]
Por ejemplo:
D.N.I.: 0 9 . 3 4 5 . 6 7 8
A B . C D E . F G H
K =1+0=1
K
b
=0.2-0.019=0.11 [Vs/rad]
K
p
=1+0.23=1.6 [Nm/A]
R
i
=10-4=6 []
L
i
=0.01+0.02(5+6)=0.23 [H]
J =10+7=17 [Kgm
2
]
B =5-(0.18)=4.2 [Kgm
2
/s]
Construir el modelo del sistema en Simulink considerando a u
c
(t) como entrada, p
r
(t) como
perturbacion y w(t) como salida.
Gijn - Octubre 2006 18
Incluir en el inIorme los siguientes datos y resultados:
(Dibujar el diagrama de bloques del modelo en Simulink utilizado para obtener los datos que se
solicitan, los resultados numricos correspondientes, y los dibujos a mano alzada de los grficos
solicitados)
1. Apellidos, Nombre y DNI del alumno.
2. Dibujo del diagrama de bloques usado en las simulaciones.
3. Valores de las Constantes utilizadas (K, Kp, Li, ....).
4. Simular la respuesta del sistema a un escalon de cinco unidades en la entrada Uc(t).
4.1. Obtener el valor al que tiende la respuesta en regimen permanente.
4.2. Determinar la constante de tiempo T del sistema.
5. Aadir a la simulacion el eIecto de un escalon de cinco unidades en la perturbacion, una vez que
la respuesta al escalon del apartado 4 ha alcanzado el regimen permanente.
5.1. Dibujar aproximadamente la respuesta.
5.2. Obtener el valor al que tiende la respuesta en regimen permanente.
6. Simular la respuesta del sistema ante una entrada senoidal en Uc(t) de pulsacion w1 rad/s y
amplitud 5. (Recuerde anular la perturbacion introducida en el apartado 5)
6.1. Dibujar las senoides en regimen permanente.
6.2. Obtener el valor de la amplitud de la senoide de la salida una vez alcanzado el regimen
permanente.
6.3. Obtener la diIerencia de Iase entre la entrada y la salida una vez alcanzado el regimen
permanente.
Gijn - Octubre 2006 19
E1ERCICIO 3: Estudio de la respuesta en frecuencia de un sistema y bucle cerrado
Construir una Iuncion de transIerencia sustituyendo los digitos ABCDEFGH con los numeros
de su D.N.I., ajustados a la derecha y rellenando con un cero por la izquierda si es necesario:
DNI: . . 1AB*s+2CD
-- --- --- G(s)= ----------------
AB CDE FGH s
3
+1E*s
2
+5F*s+1GH
Por ejemplo:
DNI: 09.345.678 109*s+234
-- --- --- G(s)= ----------------
AB CDE FGH s
3
+15*s
2
+56*s+178
Incluir en el inIorme los siguientes datos y resultados:
(Indicar todos los comandos utilizados para obtener los datos que se solicitan, los resultados
numricos correspondientes, y los dibujos a mano alzada de los grficos solicitados)
1. Apellidos, Nombre y DNI del alumno.
2. Indicar la Iuncion de TransIerencia G(s) creada.
3. Obtener ceros y polos del sistema G(s).
4. Dibujar el diagrama de Bode y obtener el valor del modulo (en decibelios) y la Iase (en grados) de la
respuesta en Irecuencia para 5 rad/s de G(s).
5. Obtener el valor del modulo (en decibelios) en el pico de resonancia y la Irecuencia de resonancia
de G(s). (!ATENCION Puede que el pico de resonancia no exista o no coincida con el valor maximo
en modulo del diagrama de Bode. Indicar si suceden estas situaciones).
6. Cuanto vale 'M
r
?
7. Obtener la Iuncion de transIerencia M(s) resultado de realimentar unitaria y negativavente a G(s)
con K1.
X(s)
G(s)

Y(s)
K
M(s)
8. Obtener los polos del sistema en bucle cerrado M(s) para K 5.
9. Obtener los margenes de ganancia y de Iase y las Irecuencias correspondientes a esos margenes para
G(s) (En algunos casos pueden ser inIinito).
Gijn - Octubre 2006 20
E1ERCICIO 4: Diseo de un regulador para un modelo de simulacin
Se pretende disear un regulador para el sistema del ejercicio 2 cuando este se realimenta
negativamente mediante una tacodinamo. La tacodinamo proporciona una tension de salida de un
voltio por cada 1.000 r.p.m. con una respuesta dinamica semejante a un sistema de primer orden con
constante de tiempo T0.1 segundos.
Sistema sin realimentacion: (Obtener los valores de los parametros como en el ejercicio 2)
W(s)
G
2
(s)
P
r
(s)

G
1
(s)
U
c
(s) L
i
sR
i
JL
i
s
2
(BL
i
JR
i
)s(R
i
BK
p
K
b
) L
i
sR
i
KK
p

EspeciIicaciones para el regulador:
Tiempo de establecimiento: t
s
_ 0.4 segundos Sobreoscilacion: M
p
_ 5
Anular el error de posicion, e
p
, en regimen permanente.
Eliminar el eIecto de perturbaciones en el par p
r
(t) sobre el regimen permanente del sistema.
Sistema realimentado:
W(s)
G
2
(s)
H(s)
P
r
(s)

G
1
(s)
U
c
(s) L
i
sR
i
JL
i
s
2
(BL
i
JR
i
)s(R
i
BK
p
K
b
) L
i
sR
i
KK
p
R(s)

V(s)
Ts1
K
t

Incluir en el inIorme los siguientes datos y resultados:


(Dibujar el diagrama de bloques del modelo en Simulink utilizado para obtener los datos que se
solicitan, los resultados numricos correspondientes, y los dibujos a mano alzada de los grficos
solicitados)
1. Apellidos, Nombre y DNI del alumno.
2. Valores de las Constantes utilizadas (K, Kp, Li, ....) incluyendo las de la tacodinamo.
3. Regulador diseado para el control incluyendo los calculos realizados para obtenerlo. Utilizar a
ser posible el criterio de la vertical para el diseo: si el angulo de compensacion obtenido para el
regulador sale negativo cambiar la especiIicacion de t
s
por t
s
_ 0.2 segundos y si sale mayor de 90
cambiar por t
s
_ 1. Si persisten los problemas consulte con el tutor.
4. Dibujo del diagrama de bloques en bucle cerrado que incluye el regulador utilizado con Simulink.
5. Simular la respuesta del sistema a un escalon de cinco unidades en la entrada v(t).
5.1. Obtener aproximadamente el valor de la sobreoscilacion Mp.
5.2. Obtener aproximadamente el valor del tiempo de pico t
p
.
5.3. Obtener el valor al que tiende la respuesta del sistema, w(t), en regimen permanente.
6. Simular el eIecto de un escalon de 2.000 unidades en la perturbacion p
r
(t) una vez que la
respuesta anterior ha alcanzado el regimen permanente y dibujar la respuesta del sistema.

1




SIMULINK MATLAB
CONTENIDO
1. ELEMENTOS BSICOS
2. EL MOTOR DC
3. SUBSISTEMAS
4. ECUACIONES DIFERENCIALES
5. SIMULACIN DE SISTEMAS

INTRODUCCIN

Simulink es una extensin de Matlab utilizado en el modelamiento y simulacin de
sistemas. Para arrancar Simulink se puede hacer desde el prompt de Matlab
digitando el comando >>Simulink o utilizando el icono . Se abre la ventana
Simulink Library Browser como se indica abajo y se puede diagramar un nuevo
modelo activando el botn New Model , o sea el icono o de













2



Un modelo es un conjunto de bloques que representa un sistema y como archivo
tiene extensin *.mdl

1. ELEMENTOS BSICOS

Los elementos bsicos son lneas y bloques. Los bloques estn agrupados en:
Sources, Links, Discrete, Continuos, Math, etc., tal como aparecen en la ventana
anterior. Cada bloque tiene entradas y salida para realizar su interconexin. Por
ejemplo, haga clic en Discrete y luego clic en Discrete Transfer Fcn y arrastre el
bloque a la ventana en blanco. Si quiere modificar la funcin de transferencia del
bloque haga doble clic en l y digite los coeficientes del numerador y denominador
en la nueva ventana que aparece. Para la funcin 1/(z
2
+2z +4) con tiempo de
muestreo de 1 seg, quedara:













Para realizar el diagrama en bloques de un sistema se hace lo siguiente:


3


Lo primero es arrastrar los bloques a la pgina en blanco de forma que, Step es
la funcin paso o escaln que se obtiene de Sources, Scope es el osciloscopio
que se obtiene de Sinks, Transfer Fcn se obtiene de Continuos, Sum y Gain se


obtienen de Math. Modifique los bloques dando doble clic sobre cada uno de ellos
para cambiar sus parmetros o valores e interconctelos.


Lo segundo es cambiar los nombres a los bloques y asignar las vari ables o
seales haciendo doble clic en el lugar en que se van a colocar y salvar el modelo
especificndole un nombre, por ejemplo ejem1.mdl


Por ltimo se debe simular el sistema. Para ello se configura la seal de entrada,
en este caso la funcin paso. Dar doble clic y asignar los siguientes parmetros:
Step time=0, Inicial value=0, Final value=1, Sample time=0. Para simular el
sistema de control se escoge del men o el icono .y luego
se hace doble clic en Scope para ver su respuesta o salida del sistema. Para
observar adems la entrada se puede colocar otro Scope a la salida de Step y se
puede probar para varios pasos variando su amplitud, tiempo de inicio y tiempo de

4


iniciacin del paso. Para observar mejor la respuesta se usa el botn Autoscale
(binoculares ) de la ventana del Scope. Si quiere observar mejor la
respuesta o parte de ella se pueden cambiar los parmetros de simulacin,
Simulation Simulation parameters. Por ejemplo cambiar el Start time y el Stop
time y correr nuevamente la simulacin.




2. EJEMPLO: MODELAR UN MOTOR DC

Un actuador comn en sistemas de control es el motor DC. Provee directamente
movimiento rotatorio y acoplado con poleas o correas puede proveer movimiento
transnacional.

2.1 ECUACIONES DINMICAS


El circuito elctrico de la armadura y el diagrama de cuerpo libre del rotor es
mostrado en la figura con sus ecuaciones dinmicas.

5





(1) Leyes de Newton




(2) Leyes de Kirchhoffs




Los parmetros fsicos tienen los siguiente valores :

Momento de inercia del rotor : J = 0.01kg.m
2
/sg
2

Rata de amortiguamiento del sistema mecnico: b = 0.1 N.m.sg
Constante de la fuerza electromotriz: Ke = Kt = 0.01 Nm/Amp
Resistencia elctrica: R = 1 ohm
Inductancia elctrica: L =0.5H
Fuente de voltaje de entrada: V
Posicin angular:
Se asume que el rotor y el eje son rgidos



6




2.2 MODELADO DEL MOTOR EN VELOCIDAD





2.3 EXTRAER MODELO LINEAL

Para obtener la funcin de transferencia del motor primero se trasladan los
parmetros del motor al modelo creando un archivo en Matlab (*.m) de la siguiente
forma:

% VALORES DE LOS PARMETROS DEL MOTOR
J = 0.01;
b = 0.1;
Ke = 0.01;

7


Kt = 0.01;
R = 1;
L = 0.5;

Se ejecuta este archivo y se simula el modelo para una entrada de paso unitario
de valor V = 0.01, con los siguientes parmetros de simulacin: Stop time = 3 sg.
Arranque la simulacin y observe la salida (velocidad del motor).

Como segundo paso se debe obtener el modelo lineal de Matlab del motor. Para
esto, borre el bloque Scope y cmbielo por Out obtenido de la librera de
Signals&Systems. Haga lo mismo para Step cambindolo por In de esta misma
librera. Los bloques In y Out definen la entrada y salida del sistema que le
gustara extraer. Salve este modelo. El sistema quedar as:



Como tercero y ltimo paso, despus de desarrollado el modelo y salvarlo por
ejemplo con el nombre MotorDcVel.mdl se ejecutan los siguientes comandos:


8


% OBTENER EL MODELO LINEAL DEL SISTEMA
[num, den] = linmod('MotorDcVel')
Gps = tf(num, den)
La respuesta es :




3. SUBSISTEMAS

Abra una nueva ventana y arrastre de la librera Signals&Systems el bloque
SubSystem , haga doble clic en este bloque, abra el modelo MotorDcVel.mdl (el
que tiene In y Out como terminales) cpielo y pguelo en la nueva ventana de
subsistema anterior. Cierre ventanas y aparece una nueva con el bloque con los
terminales del subsistema creado. Dle el nombre MotorDcVel. Si a este bloque
de subsistema se le da doble clic aparece el modelo completo diseado
anteriormente. Otra forma es sealar los bloques de inters, ir a men Edit -->
create Subsytem





3.1 SISTEMA EN LAZO ABIERTO

Al subsistema creado que constituye la planta de un sistema de control se le va a
adicionar un controlador y obtendremos la funcin de transferencia en lazo abierto
y lazo cerrado.

9





% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_abierto = tf(num, den)


Respuesta:




3.2 SISTEMA EN LAZO CERRADO



% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_cerrado= tf(num, den)

Respuesta:


10




3.3 SISTEMA DISCRETO

DIAGRAMA EN SIMULINK





PROGRAMA MATLAB

% SISTEMA DISCRETO DISCRETO
T=0.1;
[num,den]=dlinmod('MotorDigital',T)
Glazo_cerradoz=tf(num,den,T)

Respuesta:









11





4. SOLUCIN DE ECUACIONES DIFERENCIALES

Ejemplo:

Resolver la siguiente ecuacin diferencial:

y y t y t y y y t y
dt
dy
dt
y d
6 ' 3 4 ' ' 4 6 ' 3 ' ' 4 6 3
2
2
= = + + = + +

Diagrama Simulink:





Respuestas:


12





Ejemplo:

Comprobar la integracin por Simulink.





13









5. SIMULACIN DE SISTEMAS

5.1 INTERCAMBIO DE MATLAB A SIMULINK

Para utilizar seale de Matlab a Simulink de la librers Sources se utiliza el bloque
From Workspace.





14



Ejemplo: Resolver la ecuacin y + y = e
t
, y(0) = 0, y(0) =3



El vector [ t x ] se ejecuta en Matlab en el workspace de la siguiente forma:


>> t = 0:0.001:0.999;
>> t = t;
>> x = exp(t)

Al ejecutarse Simulink toma los datos entregados por Matlab. No olvidar colocar
condicin inicial y(0) = 3 en el integrador.

5.2 INTERCAMBIO DE SIMULINK A MATLAB

Para enviar datos de Simulink a Matlab se utiliza de la librera Sinks el bloque To
Workspace.

Ejemplo:

Resolver la ecuacin: f(t) = Mx + Bx + Kx, M=1, B=1, K= 10, F(t) = 5


15



Diagrama Simulink:


En Matlab:
>> plot(t,y)

5.3 EJERCICIOS

Ejercicio1:



16


Si la entrada es una seal senoidal, encontrar las salidas referidas a vC y iL.

Ejercicio2:

Para el siguiente problema hallar la variacin de h si el caudal normal Q es de 10
lit/min y en t=5 seg se aplica una perturbacin de 2 lit/min. El valor de K=10, A= 2
m
2
.

h K t q
dt
dh
A = ) (



Diagrama Simulink:


17





EJERCICIO3: LA BOLA MAGNTICA


Ecuaciones:

iR V
h
i
mg
dt
h d
m = =
dt
di
L (2) ) 1 (
2
2
2
|


Valores:

m=0.1 Kg; g=9.81; R=2 Ohm; L=0.02 H; |=0.001

Diagrama simulink:


18




Controlador:




zeros=[-11.5+7.9i, -11.5-7.9i]
polos=[0 -1000]
ganancia=-3.3057e+004

Planta:



i(0) = 0; h(0)=0.05; h(0)=0




19














20




EJERCICIO4: TANQUE DE AGUA




Ecuacin del modelo:

h a bV
dt
dh
A
dt
dVol
= =

Diagrama simulink:








21




Controlador:

Planta:



EJERCICIO5: MOVIMIENTO PARABLICO





22





Ecuaciones:


acelerado Movimiento ' '
unforme Movimiento 0 ' '
g y
x
=
=


Condiciones iniciales:

Vo=100 m/sg; u = 30




23










24




EJERCICIO6: PNDULO SIMPLE





Ecuacin:

0 ' ' ' = + + u u u wsen BL mL


Valores:

w (peso) = 2; L (longitud) = 0.6; B (amortiguacin) = 0.08;

Condiciones iniciales: u(0) = -2 rad/sg; u(0) = t /2







25




Diagrama simulink:







26



EJEMPLO: SISTEMA MECANICO





Parmetros:

m1=40; m2=60; k1=400; k2=400; b1=180; b2=220;

Ecuaciones dinmicas:

1 ) 2 1 ( ) 2 1 ( 1
1
1 ) ( b v v dt v v k
dt
dv
m t f + + =
}


2 2 2 2 1 ) 1 2 ( ) 1 2 ( 1
2
2 0 v b dt v k b v v dt v v k
dt
dv
m + + + + =
} }


Ecuaciones de Laplace:

1 ) 2 1 ( ) 2 1 (
1
1 1 ) ( b V V V V
s
K
sV m s F + + =

2 2 2
2
1 ) 1 2 ( ) 1 2 (
1
2 2 0 V b V
s
k
b V V V V
s
k
sV m + + + + =

27



Diagrama simulink:




EJEMPLO: SISTEMA TERMOQUMICO

Se desarrolla una reaccin termoqumica en donde el reaccionante A se convierte
en un producto B.

Velocidad de reaccin: r(t)= k c(t)
Constante de velocidad de reaccin: k = 0,2 min
-1



28



Concentracin de la entrada: c
i
(t)
Para t= 0; c
i
(0)=1.25 lbmol/pie
3

Volumen de la masa reaccionante: V= 5 litros
Flujo de entrada: F= 1 lt/min

Ecuacin dinmica:

) ( ) ( ) (
) (
t KVc t Fc t Fc
dt
t dc
V
i
=

) ( ) ( ) (
) (
t c KV F t Fc
dt
t dc
V
i
+ =

) ( ) (
) (
t c
KV F
F
t c
dt
t dc
KV F
V
i
+
= +
+


Constante de tiempo:
KV F
V
+
= t

Ganancia de estado estacionario:

KV F
F
K
e
+
=

Reemplazando valores: t = 2.5 min; K
e
= 0.5;
Condicin inicial de la concentracin: c(0)

0 = Fc
i
(0) - Fc(0) - KVc(0)

Reemplazando valores: c(0) = 0.625 lbmol/pie
3


29



Programa en Matlab:

%Entrada al paso. Programa pplineal.m
function dy=pplineal(t,y)
global K X tau
dy=(K*X-y)/tau;

% Entrada rampa. Programa rplineal.m
function dy=rplineal(t,y)
global K r tau
dy=(K*r*t-y)/tau;

% Entrada senoidal. Programa splineal.m
function dy=splineal(t,y)
global K tau A w
dy=(K*A*sin(w*t)-y)/tau;

% Programa principal
F=1;
V=5;
K=0.2;
ci0=1.25;
c0=solve('F*ci0-F*c0-K*V*c0=0');
c0=eval(c0)
%Constante de tiempo
tau=V/(F+K*V)
% tau=2.5 minutos
%Ganancia en estado estacionario
Ke=F/(F+K*V)
% Ke=0.5

30



global R K tau X r A w Rango Inicio
Rango=input('Tiempo de simulacion=');
Inicio=input('Condiciones iniciales=');
N=input('ESCRIBA 1=PASO, 2=RAMPA, 3=SENO: ');
disp(' ')
switch N
case 1
X=input('Valor del paso=');
[t,y]=ode45('pplineal',Rango,Inicio);
plot(t,y)

case 2
r=input('valor pendiente de la rampa=');
[t,y]=ode45('rplineal',Rango,Inicio);
plot(t,r*t,t,y/K,'r')

case 3
A=input('Amplitud del seno=');
w=input('Frecuencia del seno=');
[t,y]=ode45('splineal',Rango,Inicio);
disp('Amplitud del perfil de la respuesta')
K*A/sqrt(1+(w*tau)^2)
disp('Fase de la respuesta respecto a la entrada')
atan(-w*tau)
plot(t,A*sin(w*t),t,y,'r')
end





31




Programa en Simulink:




EJEMPLO: SISTEMA HIDRAULICO

% HIDRAULICO UNA ETAPA
C1=3; R1=1; C2=10; R2=2;
qi=2;
keyboard
plot(t,qo)
title('HIDRAULICO')
grid

32



pause
n=1;
while n==1
T=input('Entre tiempo: ')
delta=input('Entre valor delta: ')
i=find(t<=(T+delta)&t>=(T-delta));
tiempo=t(i)
caudal_salida=qo(i)
n=input('Entre 1 para seguir y 0 para parar: ')
end




EJEMPLO: SISTEMA ELCTRICO

% CIRCUITO RC DE DOS ETAPAS
R1=10e3; R2=20e3; C1=1e-6; C2=10e-6;
ei=10;
keyboard
plot(t,eo)
title('CIRCUITO RC')
grid

33


pause
n=1;
while n==1
T=input('Entre tiempo: ')
delta=input('Entre valor de delta: ')
i=find(t<=(T+delta)&t>=(T-delta));
tiempo=t(i)
voltaje_salida=eo(i)
n=input('Entre 1 para seguir y 0 para parar: ')
end



INTRODUCCION A SIMULINK
Matlab (Matrix Laboratory) es un sistema basado en matrices para realizar clculos
matemticos y de ingeniera. Entre las mltiples herramientas que presenta este programa se encuentra
Simulink que es una librera de MATLAB que permite la simulacin de procesos mediante diagramas de
bloques.

1. Acceso a la librera de bloques de Simulink:
Para acceder a la librera de Simulink se debe abrir inicialmente la ventana principal de Matlab
(Matlab Command Window). En esta se puede ejecutar el comando simulink o hacer clic en
el smbolo correspondiente en la barra de herramientas en la parte superior de esta ventana.
Al hacer esto aparecer el listado de las libreras correspondientes a simulink, donde se podr
tener acceso a todos los bloques que brinda esta herramienta. Para abrir una nueva hoja de
trabajo se deber acceder a travs de: File New Model, o hacer clic en el smbolo de hoja
nueva.




Figura 1. Simulink Library Browser


La librera Simulink contiene los bloques necesarios para simular un sistema mediante tcnicas
convencionales, las dems libreras son herramientas adicionales que se utilizan para aplicaciones
especficas de control avanzado. En la Figura 2 se muestra el contenido de la librera Simulink.





Figura 2. Librera Simulink.

En la figura 3 se pueden observar los bloques mas utilizados en la simulacin de procesos. Estos
se encuentran en hacer clic en el signo (+) de cada librera. Pueden ser utilizados al hacer clic sobre ellos
y arrastrndolos sobre la hoja de trabajo. Igualmente en la tabla 1 se pueden observar una descripcin
mas detalladas de algunas de estas funciones.



Figura 3. Bloques mas utilizados en la librera Simulink

Tabla 1. Detalles de algunos bloques de la librera Simulink.
Bloque Funcin Librera Parmetros requeridos
Constante Asigna un valor constante a la
entrada.
Sources Valor de la constante.
Entrada escaln Introduce un escaln de magnitud
especfica en un tiempo dado.
Sources Tiempo del escaln
Valor inicial del escaln,
Valor Final del Escaln
Entrada Rampa Introduce una rampa en un tiempo
especificado.
Sources Tiempo de la rampa,
pendiente
Entrada Senoidal Introduce una seal senoidal
especficada por el usuario.
Sources Amplitud de la onda,
Fase.
Workspace Almacena datos de la seal que llega
al bloque y la convierte en vector. Si
se conecta al reloj se almacena el
vector tiempo.
Sinks Nombre y tipo de la
variable (Save format:
Matrix)
Scope Grafica la seal que se introduzca
con respecto al tiempo.
Sinks
Entradas
XYgraph Grafica la entrada superior en el eje
x y la inferior en el eje y
Sinks
Rango de los ejes
Funcin de
Transferencia
Representa la funcin de
transferencia a lazo abierto.
Contin. Numerador y
Denominador de la FT
Integrador Integra una seal en funcin del
tiempo
Contin. Valor inicial desde el
cual se va a integrar
Retardo de transporte Introduce un retardo en el tiempo en
el cual aparece la seal.
Contin. Valor del retardo (Debe
ser un nmero positivo)
Ganancia Multiplica la seal por cualquier
valor de ganancia que se introduzca.
Math Valor de la ganancia
Sumador Suma dos seales. Math Nmero de entradas a
sumar
Multiplicador Multiplica dos seales. Math Nmero de entradas a
multiplicar
Matlab-Function Aplica cualquier funcin matemtica
conocida por Matlab a la seal.
Functions and
Tables
Funcin a utilizar
PID Es un controlador donde se puede
introducir una parte proporcional,
una integral y una derivativa
Blocksets &
Toolbox.:
Simulink-extras:
Aditional linear
Proporcional: K, Integral:
K/Ti, Derivativo: K.Td

Mux Permite representar dos seales
distintas en una misma grfica.
Signals &System. Nmero de entradas

Obs. Colocando el nombre del bloque de inters en el buscador (Simulink library browser), se puede
ubicar directamente en la librera de bloques.


Notas sobre el uso de Matlab.


- Los bloques pueden ser movidos al arrastrase con el botn izquierdo del mouse y pueden ser
copiados al hacer clic sobre ellos con el botn izquierdo del mouse y arrastrando la copia creada.

- Los bloques se deben unir mediante flechas. Esto se logra haciendo clic en la flecha de salida
del bloque deseado y conectndola (sin soltar el botn), a la flecha del bloque que se desea unir.

- Para que las modificaciones en el programa hagan efecto este deber ser grabado despus de
realizar los cambios.

- Al hacer clic con el botn derecho sobre una seal, se podr obtener una lnea de esta seal
para llevarla o conectarla a un bloque deseado.

- Al barrer el mouse sobre un grupo de bloques se podrn mover estos a la vez y copiarlos en
grupo.

- El save format de los workspace debe ser colocado en array para poder graficar las
variables deseadas posteriormente.


2. Ejemplos de Uso de Simulink


Modelos Matemticos no Linealizados.

a) Simular la siguiente ecuacin diferencial y encontrar su respuesta ante una entrada escaln.

1 ) ( *
60
exp 5
) (
=


+ t X
T dt
x d
Donde, X
0
= 0 en T=500


Solucin:

- Seleccionar los bloques necesarios para representar el modelo y llevarlos a la hoja de
trabajo. Para ello debe buscar los bloques en las libreras correspondientes (Ver tabla 1 y
figuras 2 y 3), seleccionar cada uno haciendo "click" sobre l para marcarlo y arrastrarlo con
el "mouse" hasta la ventana.



Figura 4. Bloques necesarios para la representacin de la ecuacin.

- Armar el modelo. Las ecuaciones diferenciales pueden representarse en bloques de
"Simulink" como funcin del tiempo sin linealizarlas ni llevarlas al dominio de Laplace. En
primer lugar, se debe despejar la derivada temporal para expresarla en funcin de los dems
trminos de la ecuacin:
) ( *
60
exp 5 1
) (
t X
T dt
x d


= (1)
Luego, se debe establecer qu valores en la ecuacin son constantes y cules son funcin del
tiempo, en este caso, la conversin X depende del tiempo, pero la temperatura T es constante.
El primer trmino del lado derecho de la ecuacin (1) se puede representar como un escaln
unitario o como una entrada constante.
En el segundo trmino [5exp(-60/T).X(t)], la temperatura se representa, igualmente, como una
entrada escaln o como una entrada constante, luego se invierte con un bloque Matlab Function, donde se
especifica la funcin 1/u, se multiplica por una ganancia de 60 con un bloque Gain, y se introduce
nuevamente en una Matlab Funcin para obtener la exponencial, que va a ser multiplicada por 5 con otro
bloque Gain, como se muestra en la figura 5.
La variable X(t) no se conoce porque es el resultado de integrar el lado derecho de la ecuacin,
esta variable debe multiplicarse con la exponencial con un bloque producto para formar el segundo
trmino de la ecuacin diferencial, luego ambos trminos se combinan con un bloque Sum para obtener la
ecuacin (dX(t)/dt) completa que pasa por un integrador para obtener la variable X(t), que se realimenta
al bloque producto.
Se debe colocar igualmente un bloque de reloj para que el simulador contabilice el tiempo.
Todas las seales que se deseen guardar o ser posteriormente llamadas para graficar, deben ser
alimentadas a un bloque workspace (Save format : Array)

Figura 5. Diagrama de bloques de la simulacin de la ecuacin diferencial.

Haciendo clic en cada bloque se pueden cambiar sus parmetros y sus nombres. En este caso se
colocan los siguientes:

Entrada Escaln (T) Integrador Matlab Function (1/T)
Matlab Function
Exp(E/KT)
Step Time = 0
Valor Inicial = 500
Valor Final = 500
Inicial Value = 0 Fuction = 1/u Fuction = exp
De esta forma tenemos:





Figura 6. Diagrama de Bloques con sus parmetros.
















- A continuacin se abre el men Simulation Simulation Parameters y se modifica el
tiempo de parada. En este caso se pondr 8 seg. Posteriormente se simula la ecuacin
diferencial apretando el botn o smbolo de play en la parte superior de la pantalla y se
espera a que la maquina realice el calculo (indicado en la parte inferior derecha de la
ventana)

- Despus de realizar la simulacin se regresa a la ventana principal de Matlab y se grafican
los resultados colocando el comando: plot(T,X) y se obtiene:



Figura 7. Simulacin de la respuesta de la ecuacin diferencial.


Para observar la respuesta del sistema ante una perturbacin se coloca:



Entrada Escaln (T)

Step Time = 4
Valor Inicial = 500
Valor Final = 1000





Para que el simulador acepte el cambio, el archivo debe ser guardado (no debe aparecer un
asterisco al lado del nombre del programa en la parte superior de la ventana). Despus de simular
y graficar, se obtiene:



Figura 8. Respuesta del sistema de la ecuacin diferencial ante entrada escaln.

Se observa la perturbacin del sistema en el tiempo = 4 seg.


Ecuaciones Diferenciales Acopladas

b) Simular el siguiente sistema de ecuaciones diferenciales.


) ( * ) 1 ( Ta T B Fo To T A
dt
dT
= A = 0.08 B = 0.05


) ( * ) 2 ( T Ta D Fp To Ta C
dt
dTa
+ = C = 0.5 D = 0.01

Donde Fo, To1 y To son posibles perturbaciones cuyos valores son:
Fo = 0.01 m3/min, To1 = 280K, To2 = 350K

Solucin:
- Los Bloques seleccionados son:

Figura 9. Bloques usados para la representacin del sistema.
- Armar el modelo. Las ecuaciones diferenciales se "escriben en bloques de Simulink" como
funcin del tiempo sin realizar ninguna modificacin de las mismas para linealizarlas o
llevarlas al dominio de Laplace.



Figura 10. Diagrama de bloques del proceso con sus parmetros.


Los parmetros iniciales de los bloques y simulacin sern:

Entrada Escaln
(T01)
Entrada Escaln
(T02)
Entrada Escaln (Fo) Integrador (T)
Integrador
(Ta)
Stop
Time
Step Time = 0
Valor Inicial = 280
Valor Final = 280
Step Time = 0
Valor Inicial = 350
Valor Final = 350
Step Time = 0
Valor Inicial = 0.01
Valor Final = 0.01
Initial Value =
280
Initial Value =
350
200


- Despus de Simular y Graficar usando: Plot(t,[T,Ta]) se obtiene,


Figura 11. Simulacin del sistema de ecuaciones diferenciales
Funciones de transferencia a lazo abierto y lazo cerrado

c) Dada la siguiente funcin de trasferencia obtenga la respuesta del sistema a lazo abierto ante
una entrada escaln.

2 4
1
2
+ +
=
s s
FT

Solucin:
- Los Bloques seleccionados son:

Figura 12. Bloques usados para la representacin del sistema.

- Armar el modelo.



Figura 13. Diagrama de bloques del proceso con sus parmetros.


Los parmetros iniciales de los bloques y simulacin sern:



Entrada Escaln
Funcin de
Trasferencia
Parmetros
Simulacin
Step Time = 0
Valor Inicial = 0
Valor Final = 1
Numerador = [1]
Denominador = [1 4 2]
Stop Time = 20

- Despus de Simular y Graficar usando: Plot(T,X) se obtiene,



Figura 14. Respuesta temporal de la funcin de transferencia.


d) Compare la respuesta a lazo cerrado obtenida para la funcin de transferencia del ejemplo
anterior con la respuesta obtenida al aumentar 5 veces la ganancia y con la respuesta obtenida al
usar un controlador de funcin de transferencia:

+ =
Ti
K Gc
1
1 1 Donde, K = 1 y Ti = 0.5


Solucin:

- Los Bloques seleccionados son:



Figura 15. Bloques usados para la representacin del sistema.



- Armar el modelo.


Figura 16. Diagrama de bloques del proceso con sus parmetros.


Los parmetros de los bloques son:


Entrada Escaln Ganancia Mux PID Stop Time
Step Time = 0
Valor Inicial = 0
Valor Final = 1
Gain = 5
Number of inputs
= 3
Proporcional = 1
Integral = 1/0.5
Derivative = 0
20


- Despus de Simular y Graficar usando: Plot(T,s) se obtiene,



Figura 17. Respuesta temporal de la funcin de transferencia.