Taller No 9 UDI A2011
description
Transcript of Taller No 9 UDI A2011
-
1
CURSO DE SEALES Y SISTEMAS
MAESTRIA EN INGENIERIA DE CONTROL INDUSTRIAL
UNIVERSIDAD DE IBAGUE
Con algunas soluciones
TALLER GUIA No 9. Tema: Seales y Sistemas Discretos
Docente: MSc. Ing. Ricardo E. Troncoso H.
SEALES Y SISTEMAS EN TIEMPO DISCRETO
El objetivo principal del presente taller es utilizar la teora de las seales y los
sistemas discretos en la solucin de varios ejercicios. Las soluciones para los
ejercicios de la parte A se realizan exclusivamente en Matlab mientras que las
de los ejercicios de las partes B y C se desarrollan a mano y en Matlab.
PARTE A. SEALES DISCRETAS NOTA: Indicar, comentar en su cdigo en Matlab la versin del mismo
utilizada.
8.1
Escribir la representacin analtica y realizar un cdigo en Matlab que
grafique la seal discreta mostrada en la figura de abajo.
Ayuda: Como ejemplo, como gua, vea al final de este taller, una de las
muchas posibles maneras de describir y graficar esta seal.
-
2
8.2
Para la anterior seal o sea la del ejercicio No 8.1, realizar la siguiente
operacin de desplazamiento:
[ ] [ 1]w k v k
Escribir la representacin analtica para la seal [ ]w k y realizar un cdigo en Matlab que grafique dicho desplazamiento o traslacin de la seal.
8.3
Escribir la representacin analtica y realizar un cdigo en Matlab que
grafique la seal discreta mostrada en la figura de abajo.
Ayuda: Nuevamente, como ejemplo, como gua, vea al final de este taller, una
de las muchas posibles maneras de describir y graficar esta seal.
-
3
8.4
Para la anterior seal o sea la del ejercicio No 8.3, realizar la siguiente
operacin:
[ ] 5 [ 3]x k u k Escribir la representacin analtica para la seal [ ]x k y realizar un cdigo en Matlab que grafique dicha seal discreta.
8.5
Una seal de tiempo discreto esta representada analticamente as:
2( ) 10(0.9) .cos
16 4
k kh k
Crear un cdigo en Matlab que grafique la seal [ ]h k . La seal se muestra a continuacin:
-
4
PARTE B. CONVOLUCION DISCRETA
8.6
La convolucin en tiempo discreto se define mediante la siguiente relacin:
( ) ( ) ( )n
y k x n h k n
Un sistema de tiempo discreto tiene como entrada ( )x k la seal mostrada:
0, para 0
1, para 0
es decir, ( ) 1, para 1
2, para 2
0, para 3.
k
k
x k k
k
k
-
5
Y si la respuesta impulso ( )h k es como la que se muestra en la siguiente
figura, hallar la salida ( )y k del sistema ante dicha entrada ( )x k .
Utilizar tres mtodos: Mtodo analtico, el tabular y el computacional.
Ayuda: En las soluciones, al final de las preguntas, encontrara como se usan
estos mtodos de convolucin.
0, para 0
1, para 0
es decir, h( ) 2, para 1
3, para 2
0, para 3.
k
k
k k
k
k
-
6
8.7
La respuesta impulso ( )h k puede determinarse por medio de la convolucin
discreta cuando la seal de entrada ( )x k y la seal de salida ( )y k del sistema son conocidas.
As, dadas ( )x k y ( )y k , encuentre la respuesta impulso ( )h k :
1 para 0
1 para 0 1 para 1
1 para 1 3 para 2( ) ( )
2 para 2 1 para 3
0 para otro valor de 6 para 4
0 para otro valor de
k
k k
k kx k y k
k k
k k
k
Realizarlo por los 3 mtodos; tome como ejemplo el ejercicio anterior, 8.6.
-
7
PARTE C. SOLUCION DE ECUACIONES DE DIFERENCIAS Y
CALCULO DE LA RESPUESTA DE UN SISTEMA DE TIEMPO
DISCRETO UTILIZANDO LA TRANSFORMADA Z.
Utilizando el Symbolic Math Toolbox es possible hallar la transformada z y la transformada z inversa de una funcin. Como ejemplo, hallemos la
transformada z y su inversa de la siguente funcin:
( ) 5 3kv k k
El cdigo en Matlab es el siguiente:
clear all;
close all;
clc;
syms k
fn = (5^k)+ k + 3;
'Transformada Z'
Z = ztrans(fn);
pretty(Z)
'AntiTransformada Z'
Fz = iztrans(Z);
pretty(Fz)
figure(1)
subplot(211)
ezplot(fn)
subplot(212)
ezplot(Fz)
La respuesta que da el Matlab son las siguientes, incluyendo las graficas:
-
8
ans =
Transformada Z
z z z
1/5 --------- + -------- + 3 -----
1/5 z - 1 2 z - 1
(z - 1)
ans =
AntiTransformada Z
n
5 + n + 3
-
9
8.8
Se conoce la ecuacin de diferencias. Las condiciones iniciales son
diferentes de cero.
Resolver (unicamente en Matlab) la siguiente ecuacin de diferencias para
0,1,...,10n usando la funcin recur que se le entrega a usted.
donde
y las condiciones iniciales son ( 2) 1y , ( 1) 2y , y ( 2) 0x ,
( 1) 0x .
La ecuacin recursiva que se utiliza en el cdigo es:
1 0
( ) ( 1) ( 1)N M
i i
i i
y n a y n b x n
Nota: la funcin recur , que se va a utilizar exclusivamente para esta clase de
ecuaciones de diferencias, debe estar ubicada en la subcarpeta work del
Matlab.
Ayuda: En las soluciones, al final de las preguntas, encontrara el cdigo que
resuelve, soluciona, la anterior ecuacin de diferencias.
( ) 0.6 ( 1) 0.08 ( 2) ( 1)y n y n y n x n
1 para 0,1,2,...( )
0 para 0
kx n
k
-
10
8.9
Resolver la siguiente ecuacin de diferencias (unicamente en Matlab) para
0,1,...,50n usando la funcin recur tal como se hizo en el ejercicio anterior.
donde ( )x n es la funcin escaln o paso unitaria.
Las condiciones iniciales son ( 2) 2y , ( 1) 3y , y ( 2) 0x ,
( 1) 0x .
8.10
Como se conoce la respuesta impulso del sistema y la entrada al mismo
entonces se puede utilizar la convolucin y tambien la transformada z y su
inversa. Las condiciones iniciales deben ser iguales a cero
Un sistema de tiempo discreto tiene como condiciones iniciales
(2) (1) 0.y y
La respuesta impulso del sistema es ( ) 5 0.4 0.2 ( )k kh k u k . La seal de entrada ( ) ( )x k u k es un paso unitario.
Hallar la salida ( )y k del sistema
a) Usando la convolucin (unicamente en Matlab)
b) Utilizando la funcin filter (unicamente en Matlab). Debe hallar antes
( ) ( ) ( )Y z H z X z , teniendo la precaucin de trabajar con ( )Y z
z
c) Usando la transformada z y su inversa (unicamente a mano)
No olvide que ( ) ( ) ( )Y z X z H z y que 1 1( ) Z ( ( )) ( ( ) ( ))y k Y z Z X z H z
Ayuda: En las soluciones, al final de las preguntas, encontrara los cdigos para
las partes a) y b).
( ) 1.5 ( 1) 0.7 ( 2) ( )y n y n y n x n
-
11
8.11
Hallar la salida ( )y k de un sistema conociendo que la entrada al mismo es
1, para 0,1,2,...( )
0, para 0
kx k
k
y que su respuesta impulso es
( ) (0.9) (0.8)k kh k
Resolver :
a) Usando la convolucin (unicamente en Matlab)
b) Utilizando la funcin filter (unicamente en Matlab). Debe hallar antes
( ) ( ) ( )Y z H z X z , teniendo la precaucin de trabajar con ( )Y z
z
c) Usando la transformada z y su inversa (unicamente a mano)
No olvide que ( ) ( ) ( )Y z X z H z y que 1 1( ) Z ( ( )) ( ( ) ( ))y k Y z Z X z H z
8.12
Se conoce la funcin de transferencia del sistema, obtenida a partir de una
ecuacin de diferencias, con condiciones iniciales iguales a cero
Hallar la respuesta paso unitaria de un sistema de tiempo discreto que tiene
como modelo matemtico la siguiente ecuacin de diferencias;
Resolverlo a mano y en Matlab.
Ayuda: Puede usar la funcin dstep o la funcin filter del Matlab.
( ) 0.6 ( 1) 0.08 ( 2) ( 1)y k y k y k x k
-
12
SOLUCIONES
PARTE A. SEALES DISCRETAS
1. La grafica se muestra nuevamente en la siguiente figura:
La representacin analtica de esta seal es:
0, si 2
[ ] 2 4, si 2 4
4 , si 4
k
v k k k
k k
Uno de los muchos cdigos en Matlab que se pueden escribir para hacer una
representacin grafica de [ ]v k es el siguiente:
misusibu1213Nota adhesivaSOLUCIONES
-
13
% Ejercicio No 8.1
% Se utilizo la VERSION 7.2 de Matlab.
% Seal discreta No 1
close all;
clear all;
clc;
k1 = -6:1;
v1 = zeros(size(k1));
k2 = 2:3;
v2 = 2 * k2 - 4;
k3 = 4:8;
v3 = 4 - k3;
k = [k1 k2 k3];
v = [v1 v2 v3];
figure(1)
stem(k,v)
% Para cambiar el color, el tamao
% de las lineas, el tipo de letra, etc,
% en la pestaa o menu view pueden abrir el
% el Property Editor
xlabel('k')
ylabel('v(k)')
title('Ejercicio No 8_1')
grid
axis([-8 10 -6 4])
8.2 Ustedes lo solucionan.
8.3 La grafica dada se muestra en la figura:
-
14
Su representacin analtica es:
1, para 0,1,2,3,...[ ]
0, para 0
ku k
k
Un posible cdigo que grafique esta funcin o seal, sin usar una funcin de
Matlab creada especficamente para tal propsito (como la funcin stepfun),
sera el siguiente:
% Ejercicio No 8.3
% Se utilizo la VERSION 7.2 de Matlab.
% Seal discreta No 3
k = -10:1:20; % k = [-10 -9...19 20]
q = size(k); % Tamao del arreglo (size of array),1 a 31
u = zeros(q(1), q(2)); % u = [0 (en n = -10)0...0 0 (en n = 20)]
q = size(11:31); % Tamao del arreglo (size of array),1 a 21
u(11:31) = ones(q(1), q(2));% u = [1 (en n=11)1...1 1 (en n=31)]
-
15
% Se grafica la secuencia discreta (discrete sequence or "stem"
plot)
stem(k,u);
axis([-10, 20, -1, 2])
xlabel('numero de muestras, k')
ylabel('u[k]')
title('Ejercicio No 8_3')
grid
8.4 Ustedes lo solucionan.
8.5 Ustedes encuentran la solucin.
-
16
PARTE B. CONVOLUCION DISCRETA
8.6
Mtodo 1: Solucin analtica.
Ahora desarrollamos cada trmino:
(0) ( 1) (1) ( ) (1) ( 1) (2) ( 2) (0) ( 3)h k h k h k h k h k
( ) ( 1) ( 1) (0) ( ) (1) ( 1) (2) ( 2) (3) ( 3)y k x h k x h k x h k x h k x h k
0 ( ) ( 1) 2 ( 2) 0h k h k h k
-
17
( ) :h k
( 1) :h k
-
18
2 ( 2) :h k
Luego sumamos punto a punto para obtener ( ) :y k
-
19
-
20
Entonces ( )y k , la salida (respuesta) del sistema es:
Mtodo 2: Solucin usando una tabulacin.
0, para 0
1, para 0
1, para 1( )
3, para 2
1, para 3
6, para 4
k
k
ky k
k
k
k
-
21
De las sumas diagonales obtenemos la salida ( )y k con la siguiente
secuencia:
Mtodo 3: Solucin computacional (utilizando el Matlab).
% Ejercicio No 8.6
% Se utilizo la VERSION 7.2 de Matlab.
% La convolucin discreta.
% Seal de entrada: x(k) = [1, 1, 2]
% Seal de respuesta impulso: h(k) = [1, -2, 3]
% Hallar la salida (respuesta) del sistem ausando la convolucion
k = 0:1:4;
x = [1, 1, 2];
h = [1, -2, 3];
y = conv(x,h);
stem(k,y);
axis([-1, 6, -4, 8]);
xlabel('numero de muestras, k');
ylabel('y(k)');
title('Ejercicio No 8_6. Convolucion Discreta');
grid;
La grafica se puede observar en la siguiente figura:
(0) 1
(1) 1
(2) 3
(3) 1
(4) 6
(5) 0
(6) 0,...
y
y
y
y
y
y
y
-
22
8.7 Ustedes lo desarrollan.
-
23
PARTE C. SOLUCION DE ECUACIONES DE DIFERENCIAS Y
CALCULO DE LA RESPUESTA DE UN SISTEMA DE TIEMPO
DISCRETO UTILIZANDO LA TRANSFORMADA Z.
8.8
% Ejercicio No 8.8
% Se utilizo la VERSION 7.2 de Matlab.
% solucion de la ecuacin de difeencias
% y(n)-0.6y(n-1)+0.08y(n-2) = x(n-1)
% usando la funcion recur
close all;
clear all;
clc;
a = [-06 0.08]; % a = [a1 a2 ... aN]
b = [0 1]; % b = [b0 b1 ... bM]
x0 = 0; % condiciones iniciales x(-2)=x(-1)=0
y0 = [1 2]; % condiciones iniciales y(-2)= 1, y(-1)=2
n = 0:10;
x = ones(1,11); % x(n) es una seal paso unitaria
y = recur(a, b, n, x, x0, y0)
% este vector y contiene los valores de y(n)para n= 0, 1, ..., 10.
8.9 Ustedes solucionan el ejercicio.
8.10
a) % Ejercicio No 8.10a % Se utilizo la VERSION 7.2 de Matlab.
% la entrada es una seal paso unitaria
% la respuesta impulso es h(k) = 5[(0.4)^k - (0.2)^k]
% Hallar la salida y(k) usando la CONVOLUCION
close all;
clear all;
clc;
k = 0:35;
x = ones(1,36);
h = 5*(0.4).^k - 5*(0.2).^k;
y = conv(x,h);
y = y(1:length(k))
stem(y)
-
24
b) % Ejercicio No 8.10b
% Se utilizo la VERSION 7.2 de Matlab.
% la entrada es una seal paso unitaria
% la respuesta impulso es h(k) = 5[(0.4)^k - (0.2)^k]
% y(z)/z = z/z^2-0.6z+0.08
% Hallar la salida y(k) usando la funcion filter
close all;
clear all;
clc;
syms k
h = 5*[(0.4)^k - (0.2)^k];
Hz = ztrans(h)
simple(Hz)
% escoja combine(trig) y divida todo por el coeficiente
% que acompaa a la potencia mas alta de z, en este caso
% se obtiene 25*z/(25*z^2-15*z+2), entonces se divide por 25
% para obtener z/z^2 - 0.6z + 0.08
% Recuerdan el ejercicio No 8.8 !!
k = 0:1:35;
b = [0, 1, 0];
a = [1, -0.6, 0.08];
x = [ones(size(k))];
y = filter(b,a,x);
plot(k,y,'b')
stem(y)
grid;
-
25
Compare las dos graficas, una se obtuvo usando conv y la otra utilizando
filter.
8.11 Ustedes lo resuelven.
8.12 Ustedes lo solucionan.
NOTA: El Matlab es una poderosa herramienta computacional pero el
ingeniero de control debe estar en capacidad de resolver a mano algunos problemas que se le plantean. Cuando el problema implique clculos tediosos
y/o complicados entonces si se debe acudir a la ayuda del Matlab.
MSc. Ing. RICARDO E. TRONCOSO H.
Feriam Sidera Vrtice
O.D