Sunteți pe pagina 1din 14

LABORATORIO DE PROCESAMIENTO DIGITAL DE SEALES

LABORATORIO 2:
SISTEMAS DISCRETOS LINEALES E INVARIANTES EN EL TIEMPO
I.
OBJETIVO
Al finalizar la presente prctica de laboratorio usted podr caracterizar las
propiedades de los Sistemas Discretos Lineales e Invariantes en el Tiempo
(SDLIT), a partir de la obtencin de las caractersticas de los SDLIT a travs de
su respuesta impulsional, introducir la Convolucin como una herramienta
matemtica que permita conocer la respuesta del sistema ante una entrada
arbitraria. Finalmente introducir la operacin de Correlacin Cruzada entre dos
secuencias.
II.
ASPECTOS TERICOS PREVIOS
Los Sistemas Discretos se pueden caracterizar como una transformacin,
T{x[n]}, que modifica la secuencia de entrada x[n] para convertirla en una
secuencia de salida y[n]. Por lo tanto teniendo en cuenta que cualquier
secuencia puede expresarse como una combinacin lineal de impulsos
desplazados, la salida de un Sistema Discreto puede escribirse como:

Observando esta expresin, y restringiendo el estudio a los Sistemas Lineales


Invariantes en el Tiempo (SDLIT) puede llegarse a conocer la respuesta del
sistema ante cualquier seal de entrada mediante la aplicacin conjunta del
principio de superposicin o propiedad de linealidad y la propiedad de
invarianza temporal.
Aplicando el principio de superposicin se puede obtener la siguiente
expresin:

Donde hk[n] es la respuesta del sistema al impulso desplazado [nk].


Adems, si se considera 2 la invarianza temporal:

Donde h[n] es la respuesta impulsiva del sistema (salida del sistema cuando en
la entrada se aplica la secuencia [n]). Al operador * se le denomina
convolucin. De 2.3 se puede concluir que para conocer la respuesta de un
sistema SDLIT ante cualquier entrada se requiere conocer solamente su
respuesta impulsional.

La convolucin es una herramienta matemtica empleada en el Procesamiento


Digital de Seal. Aunque se ha definido como un operador que permite
determinar la respuesta de un
Sistema SDLIT, tambin se puede operar sobre dos seales arbitrarias.
Ejercicio 2.1
La convolucin de dos secuencias de longitud finita siempre
proporciona una secuencia con un nmero finito de muestras. En este
ejercicio se usarn las siguientes secuencias:
x[n] = u[n] u[n 40]
v[n] = u[n + 25] u[n 32]
w[n] = u[n + 41] u[n + 15]
(a) Calcular las muestras para las que estn definidas las siguientes
secuencias
y1[n] = x[n] * v[n]
y2[n] = v[n] * w[n]
y3[n] = x[n] * w[n]
(b) Obtener una regla con la que se pueda calcular la muestra inicial y
final de la convolucin
de dos secuencias finitas.
function y=convol(x,v)
% completamos la secuencia x
xcom=[x zeros(1,length(v))];
% completamos la secuencia v
vcom=[v zeros(1,length(x))];
% Hacemos el flip a v
v_flip = v_m(length(vcom):-1:1);
% Inicializamos la suma de terminos en 0
suma=0;
for i=1:length(xcom)-1
for j=1:i
suma=suma+xcom(j)*v_flip( length(v_flip)-i +j);
end
y(i)=suma;
suma=0;
end

Secuencia x

1
0.5
0

10

12

14

16

18

20

grafica v

1
0.5
0
-30

-20

-10

10

20

30

40

grafica w

1
0.5
0
-45

-40

-35

-30

-20

-15

Convolucion x*v

50

-25

10

20

30

40

50

60

70

80

90

100

Convolucion v*w

40
20
0

10

20

30

40

50

60

70

80

90

Convolucion x*w

40
20
0

10

20

30

40

50

60

70

2.5 CONVOLUCIN
Una interpretacin de la ecuacin 2.3 es suponer que la seal de salida de un
sistema es la suma de las secuencias que se obtienen al introducir
individualmente las muestras que componen la secuencia de entrada. De esta
manera, la muestra de la seal de entrada correspondiente al instante n = k es
x[k][n k] y su salida asociada es x[k]h[n k].
Para comprender esta interpretacin se puede observar el ejemplo de la Fig.
2.1, donde consideramos un sistema SDLIT con respuesta impulsional
h[n] = u[n] u[n 8] y
x[1] = 1,
x[0] = 2,
x[1] = 0.5,
x[2] = 0.5

Ejercicio 2.2
Ejecute el siguiente cdigo y verifique que este es una posible realizacin de la
convolucin en Matlab :
nx = -1:2;
lx = length(nx);
x = [1 2 -0.5 0.5];
nh = 0:7;
lh = length(nh);
h = ones(lh,1);
ly = length(x) + length(h) -1;
ny = nx(1)+nh(1) : nx(lx) +nh(lh);
y = x(1)*[h; zeros(ly-lh,1)] + x(2)*[0; h; zeros(ly-lh-1,1)]+ x(3)*[0;0;h;zeros(lylh-2,1)] + x(4)*[zeros(ly-lh,1); h];
stem(ny, y)

Explicacin del cdigo propuesto:

1.En las tres primeras lneas de comandos definimos un vector x con los
valores de la secuencia de entrada, la longitud de dicho vector y los ndices
temporales en los que est definido. El valor del vector x[1] se corresponde con
la muestra x[1] de la secuencia discreta.
2. En las tres lneas siguientes, definimos el vector h, su longitud y los ndices
temporales
en los que est definido.
3. Calculamos la longitud del vector de salida as como sus ndices temporales.
4. Calculamos la convolucin como la suma del producto de cada muestra del
vector x por el vector h adecuadamente desplazado. Ntese que estos
desplazamientos se efectan mediante concatenaciones de ceros al vector h.
5. Finalmente dibujamos el resultado.
Ejercicio 2.3
En este ejercicio vamos a trabajar con la operacin de convolucin
entre secuencias partiendo del primer mtodo de aadir todas las
contribuciones existentes tal como se acaba de explicar.
(a) Vamos a considerar un sistema SDLIT con respuesta impulsional:
h[n] = 0.95n(u[n] u[n 10])
(2.5)
la que se debe excitar con la secuencia de entrada x1[n] que deber
elaborar en un fichero x1.mat y luego cargarlo. Considerar que el
primer elemento de este vector se corresponda con el valor de la
secuencia de entrada en el instante n = 0. Evalu con Matlab, la
secuencia que corresponde a la salida y1[n]. Represente dicha
secuencia prestando especial atencin al etiquetado del eje
horizontal.
x=[1 2 -0.5 0.5];
% Secuencia h[n]=0.95^n(u[n]-u[n-10])
n=0:10;%el intervalo del escalon unitario
h=0.95.^n;%secuencia n
% Convolucion
y=convolucion_inter(x,h);
figure(1);
subplot(3,1,1);
stem(-1:2,x);
title('grafica x');
subplot(3,1,2);
stem(n,h);
title('grafica h');
subplot(3,1,3);
stem(y);
title('Convolucion x*h');

grafica x

2
0
-2
-1

-0.5

0.5

1.5

grafica h

1
0.5
0

10

Convolucion x*h

4
2
0

10

12

14

(b) Obtenga la secuencia de salida que genera el mismo sistema SDLIT


anterior con la secuencia de entrada del archivo x1.mat pero en este
caso considerando que el primer elemento de x1 se corresponda con
el valor de la secuencia en n = 2. Represente esta nueva secuencia
de salida y2[n].
clc
x=[1 2 -0.5 0.5];
% Secuencia h[n]=0.95^n(u[n]-u[n-10])
n=0:10;%el intervalo del escalon unitario
h=0.95.^n;%secuencia n
% Convolucion
y=convolucion_inter(x,h);
% Graficas
figure(1);
subplot(3,1,1);
stem(-2:1,x);
title('Secuencia x');
subplot(3,1,2);
stem(n,h);
title('Secuencia h');
subplot(3,1,3);
stem(-2:11,y);
title('Convolucion y2');

Secuencia x

2
0
-2
-2

-1.5

-1

-0.5

0.5

Secuencia h

1
0.5
0

10

Convolucion y2

4
2
0
-2

10

12

(c) Para el mismo sistema SDLIT, considere ahora la secuencia de


entrada almacenada en el fichero x1.mat, sabiendo que el primer
elemento se corresponde con el valor de la secuencia x3[n] en el
instante n = +3. Obtenga y represente la correspondiente secuencia
de salida y3[n].
x=[1 2 -0.5 0.5];
% Secuencia h[n]=0.95^n(u[n]-u[n-10])
n=0:10;%el intervalo del escalon unitario
h=0.95.^n;%secuencia n
% Convolucion
y=convolucion_inter(x,h);
% Graficas
figure(1);
subplot(3,1,1);
stem(3:6,x);
title('grafica x');
subplot(3,1,2);
stem(n,h);
title('grafica h');
subplot(3,1,3);
stem(3:16,y);
title('grafica y3');

grafica x

2
0
-2

3.5

4.5

5.5

grafica h

1
0.5
0

10

grafica y3

4
2
0

10

12

14

16

(d) Comprobar los resultados anteriores utilizando la funcin conv de


Matlab.
Atendiendo a la interpretacin anterior, la salida de un sistema SDLIT
se determina mediante la suma de las respuestas individuales de cada
impulso desplazado que compone la seal de entrada. Sin embargo,
esta aproximacin trae una dificultad de tipo computacional para
calcular slo una muestra de la seal de salida, habr que determinar
y sumar todas esas respuestas individuales.

2.5

1.5

0.5

10

12

14

Ejercicio 2.4
Mediante la convolucin grfica de dos secuencias se puede calcular
el valor de la seal de salida en una muestra especfica. Considerar las
secuencias
n

3
u [n]
4

()
3
v [ n]=( )
4
x [n]=

|n|

w[n] = (n + 12) (u[n + 12] u[n 30])


clear all;
clc;
n=-20:20;
n1=-30:30;
x=(3/4).^(n);
v=(3/4).^( abs(n) );
w=(n1) + 12;
% Convolucion x*v
y1=convolucion_1(x,v);
% Convolucion v*w
y2=convolucion_1(v,w);
% Convolucion x*w
y3=convolucion_1(x,w);
% Graficas
figure(1)
subplot(3,1,1);
stem(n,x); grid;
title('grafica x');
subplot(3,1,2);

stem(n,v); grid;
title('grafica v');
subplot(3,1,3);
stem(n1,w); grid;
title('grafica w');
figure(2)
subplot(3,1,1);
grafica x

400
200
0
-20

-15

-10

-5

10

15

20

10

15

20

grafica v

1
0.5
0
-20

-15

-10

-5

0
grafica w

50
0
-50
-30

-20

-10

stem(0:length(y1)-1,y1); grid;
title('Convolucion x*v');
subplot(3,1,2);
stem(0:length(y2)-1,y2); grid;
title('Convolucion v*w');
subplot(3,1,3);
stem(0:length(y3)-1,y3); grid;
title('Convolucion x*w');

10

20

30

Convolucion x*v

1000
500
0

10

20

30

40

50

60

70

80

Convolucion v*w

500
0
-500

10

20

30

40

50

60

70

80

90

100

70

80

90

100

Convolucion x*w

x 10

0
-5

10

20

30

40

50

Notamos que los valor cero no existe

60

2.5.2 CONVOLUCION DE SECUENCIAS COMPLEJAS


Las seales con las que se operan en los sistemas fsicamente realizables son
reales. Sin embargo, para modelar algunos sistemas, las seales complejas
resultan muy tiles. Por ejemplo, en aplicaciones de electrnica de potencia es
muy habitual trabajar con fasores. De igual forma, en sistemas de
comunicaciones, las seales pasa banda suelen caracterizarse como seales
complejas.
Por esta razn se proponen los siguientes ejercicios:
Ejercicio 2.5
Obtenga la parte real e imaginaria de la secuencia resultante de la
convolucin de dos secuencias complejas x[n] = xr[n] + j xi[n] e y[n] =
yr[n] + j yi[n].

x [ n ]y [ n ]=

x [ k ] y [ nk ]

k=

Sabemos que

x [ n ]=xr [ n ] + jxi [ n ] y y [ n ] = yr [ n ] + jy i[n]

Reemplazando

x [ n ]y [ n ]=

( x r [ k ] + j x i [ k ] )( y r [ nk ] + jyi [ nk ] )

k=

x [ n ]y [ n ]=

( x r [ k ] y r [ nk ] + j x r [ k ] y i [ nk ] + j x i [ k ] y r [ nk ] x i [ k ] y i [ nk ] )

k=

Agrupando parte real con parte imaginaria

x [ n ]y [ n ]=

k=

k=

( x r [ k ] y r [ nk ] xi [ k ] y i [ nk ] ) + i ( x r [ k ] yi [ nk ] + x i [ k ] y r [ nk ] )

Ejercicio 2.6
Utilizando el editor de Matlab, programe una funcin conv_comp.m
cuya cabecera sea:
function [sal_re, sal_im] = conv_comp(ent1,ent2)

y=conv(ent1,ent2);%funcion de convolucion
sal_re=real(y);
sal_im=imag(y);
end
clear all;
clc;
x = [5+7i 5+5i 5 2+3i 8i 1-4i -3+2i];
y = [3+6i 3-7i 4+3i 23+2i 5 10i 10+30i];
[y_real, y_img] = conv_comp (x,y);
subplot(2,1,1);
stem(y_real); grid;
title('Parte Real');
subplot(2,1,2);
stem(y_img); grid;
title('Parte Imaginaria');
Parte Real

200
0
-200
-400

10

12

14

10

12

14

Parte Imaginaria

600
400
200
0
-200

Conclusiones
Aprendimos una herramienta importante como lo es la convolucin asi como
tambin las propiedades que conllevan a la convolucin
Bibliografa
Tratamiento Digital de Seales. John G. Proakis; Dimitris G. Manolakis.
Prentice Hall, 3era Edicin, 2000
Tratamiento de Seales en Tiempo Discreto. Alan. V. Oppenheim y
Ronald. W. Schafer. Prentice Hall, 2da. Edicin, 2000.

S-ar putea să vă placă și