-
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