Está en la página 1de 7

Introducción al Análisis de Señales y Sistemas

Discretos
Stalin Garcia, Michelle Herrera
Universidad de las Fuerzas Armadas ESPE
Departamento de Eléctrica y Electrónica
Sangolquı́-Ecuador
sagarcia3@espe.edu.ec, mcherrera6@espe.edu.ec

I. I NTRODUCCI ÓN 1 t =[0:0.1:2];


Las señales son todo aquello que tiene información acer- 2 x= c o s ( p i ∗ t + 0 . 6 ) ;
ca de la naturaleza por ende del comportamiento de algún 3 stem ( t , x , ’ g ’ ) ;
fenómeno fı́sico. Una señal se representa matemáticamente por 4 t i t l e ( ’ E j e m p l o comando Stem ’ ) ;
medio de una función que depende de una o más variables in- 5 g r i d on ;
dependientes. Una señal discreta es una señal discontinua que
está definida para todos los puntos de un intervalo determinado
del conjunto de los números enteros. Su importancia en la
tecnologı́a esque, vivimos en un mundo de señales analógicas
como sonido, video, comunicaciones, sensores y procesar esta
señal es complicada; estas señales se las puede procesar en un
sistema discreto lo cual da paso a una tecnologı́a de mayor
velocidad y permite que los circuitos sean de menor tamaño;
los computadores y microchips que son utilizados en este
nuevo mundo Digital en el que vivimos, sólo manejan señales
discretas.

II. O BJETIVOS
Familiarizar al estudiante con el tratamiento de señales
discretas en Matlab.
Entender la funcionalidad de los diversos comandos Fig. 1: Ejemplo comando stem, Matlab R2015a
existentes en Matlab para el procesamiento de señales
discretas.
En el estudio de señales y sistemas discretos MATLAB es una
herramienta muy útil y eficiente.
conv: Desarrolla la convolución de dos secuencias, se
necesita escribir las secuencias como valores de vectores.
III. M ÉTODOS Y M ATERIALES La respuesta de este comando será un vector con el
Computador con Matlab versión R2015a resultado de la convolución de las señales.
Ejemplo:
IV. P ROCEDIMIENTO DE LA PR ÁCTICA
A. Señales y Sistemas en tiempo Discreto con Matlab
1 a =[1 1 1 1 1 ] ;
stem: stem(t, x), bosqueja los datos contenidos en el 2 b =[1 2 3 4 5 6 7 8 9 ] ;
vector x como una señal de tiempo discreto con los 3 c= conv ( a , b ) ;
valores de tiempo definidos por el vector t. Los vectores t 4 stem ( c , ’ g ’ ) ;
y x deben tener dimensiones compatibles, es decir deben 5 t i t l e ( ’ Comando conv ’ ) ;
tener el mismo número de elementos. En la figura 1 se 6 g r i d on
puede ver la gráfica que produce de comando stem en
Matlab.
Ejemplo:
Fig. 4: Ejemplo comando filter, Matlab R2015a

Fig. 2: Ejemplo comando conv, Matlab R2015a

impz: Calcula la respuesta al impulso de un sistema


inicialmente en reposo descrito por un ecuación de dife-
rencias.
Ejemplo: C. Muestreo

1 a = [ 1 −0.22 −0.21 0 . 0 1 7 0 . 0 1 ] ;
2 b =[1 2 1 ] ;
El muestreo consiste en el proceso de conversión de señales
3 h=impz ( b , a , 2 0 ) ;
continuas a señales discretas en el tiempo. Este proceso se rea-
4 stem ( h , ’ g ’ ) ;
lizada midiendo la señal en momentos periódicos del tiempo.
5 t i t l e ( ’ Comando impz ’ )
Considere en 3-Hz de la función coseno f1 (t) = cos (2π3t) y
6 g r i d on ;
la función de 7-Hz f2 (t) = cos (2π7t) ambas muestreadas a
fs = 10 muestras por cada segundo.
Ejemplo:

1 time = 0 : 0 . 1 : 0 . 9 ;
2 f 1 = cos (2∗ pi ∗3.∗ time ) ;
3 f 2 = cos (2∗ pi ∗7.∗ time ) ;
4 time aux = 0:0.001:(1 −0.001) ;
5 figure (1) ;
6 stem ( time , f 1 ) ;
7 h o l d on ;
8 p l o t ( time aux , cos (2∗ p i ∗3.∗ time aux ) ) ;
9 hold off ;
10 figure (2) ;
11 stem ( time , f 2 ) ;
Fig. 3: Ejemplo comando impz, Matlab R2015a
12 h o l d on ;
13 p l o t ( time aux , cos (2∗ p i ∗7.∗ time aux ) ) ;
B. Sistemas recursivos 14 hold off ;
15 % s u b p l o t ( 2 , 1 , 1 ) ; stem ( time , f 1 ) ;
filter: Se utiliza para aplicar un filtro digital unidimen-
16 % h o l d on ;
sional a una señal.
17 % p l o t ( time aux , cos (2∗ p i ∗3.∗ time aux ) ) ;
Ejemplo: Encuentra la respuesta al impulso del sistema
18 % hold off ;
y[n] − 1/αy[n − 1] = x[n], suponiendo que el sistema
19 % s u b p l o t ( 2 , 1 , 2 ) ; stem ( time , f 2 ) ;
está inicialmente relajado. Para α = 1,15 y 0 ≤ n ≤ 30.
20 % h o l d on ;
1 alpha = 1 . 1 5 ; N = 100; 21 % p l o t ( time aux , cos (2∗ p i ∗7.∗ time aux ) ) ;
2 x = [ 1 z e r o s ( 1 ,N) ] ; 22 % hold off ;
3 y = f i l t e r ( 1 , [ 1 −1/ a l p h a ] , x ) ; 23 g r i d on
4 stem ( y , ’ g ’ ) ;
5 t i t l e ( ’ Comando f i l t e r ’ ) ;
Fig. 5: Señal f1 (t) = cos (2π3t) muestrada a fs = 10Hz,
Matlab R2015a
Fig. 6: Señal sin ruido, Matlab R2015a

Ahora para poder recuperar la señal, sin ruido, lo que se


puede hacer es construir un filtro digital 1-D, en Matlab con
el comando visto anteriormente, filter. Aplicando el filtro que
describe la siguiente ecuación de diferencias.

D. Ruido y Filtrado x[n] + x[n − 1] + · · · + x[n − 1 + N ]


y[n] =
N
Ejemplo:
Ruido se refiriere a cualquier cosa indeseable que opaca una 1 amplitude 1 = 5; freq 1 = 5;
señal legitima y que no está directamente relacionada con ella 2 amplitude 2 = 2; freq 2 = 50;
(en cuyo caso se tratarı́a de una distorsión). De hecho, el ruido 3 f s = 1000; time = 0 : 1 / f s :(1 −1/ f s ) ;
puede ser, por sı́ mismo, otra señal, como las distintas formas 4 sine 1 = amplitude 1 ∗ s i n (2∗ pi ∗ freq 1 .∗
de interferencia que se producen en los circuitos electrónicos. time ) ;
5 sine 2 = amplitude 2 ∗ s i n (2∗ pi ∗ freq 2 .∗
Supongamos la señal x(t) = 5 cos (2π5t) + 2 cos (2π50t)
time ) ;
muestreada con fs = 1000 muestras por segundo, es corrom-
6 noise = randn (1 , l e n g t h ( time ) ) ;
pida con una cantidad pequeña de ruido.
7 x clean = sine 1 + sine 2 ;
Ejemplo: 8 x noisy = x clean + noise ;
9 N= 6 ;
10 b = ones ( 1 , 6 ) ;
1 amplitude 1 = 5; freq 1 = 5; 11 z = f i l t e r (b ,6 , x noisy )
2 amplitude 2 = 2; freq 2 = 50; 12 p l o t ( time , z , ’ r ’ ) ;
3 f s = 1000; time = 0 : 1 / f s :(1 −1/ f s ) ; 13 t i t l e ( ’ S e ñ a l F i l t r a d a ’ ) ;
4 sine 1 = amplitude 1 ∗ s i n (2∗ pi ∗ freq 1 .∗ 14 g r i d on ;
time ) ;
5 sine 2 = amplitude 2 ∗ s i n (2∗ pi ∗ freq 2 .∗
time ) ;
6 noise = randn (1 , l e n g t h ( time ) ) ;
7 x clean = sine 1 + sine 2 ;
8 x noisy = x clean + noise ;
9 subplot (2 ,1 ,1) ;
10 p l o t ( time , x c l e a n ) ;
11 t i t l e ( ’ S e ñ a l s i n r u i d o ’ ) ;
12 g r i d on ;
13 subplot (2 ,1 ,2) ;
14 p l o t ( time , x noisy , ’ red ’ ) ;
15 t i t l e ( ’ S e ñ a l con r u i d o ’ ) ;
16 g r i d on ;

Fig. 7: Señal filtrada con N = 6, Matlab R2015a


V. E JERCICIOS A DICIONALES 7 y2= conv ( y , y1 ) ;
1. Calcular la suma de convolución de la siguiente par de 8 n =1:1:13;
secuencias utilizando la función conv de Matlab: 9 s t e m ( b , y2 ) ;
 10 t i t l e ’y [ n ] ’

 1, 0 ≤ n ≤ 2 11 g r i d on ;

0, 3 ≤ n ≤ 6
x[n] = En este ejercicio se debe tener en cuenta la regla de la
1, 7 ≤ n ≤ 8

 distribución para la convolución. Generamos los vectores
0, otherwise

en este caso sera el mismo pero utilizado en dos pro-
( cesos de convolución, al tener ya las dos convoluciones
n, 1 ≤ n ≤ 4
h[n] = hacemos una tercera convolución esta sera la salida de
0, otherwise nuestro sistema y[n] que se observa en la figura 9.

1 x =[1 1 0 0 0 0 1 1 0 0 0 0 ] ;
2 h =[1 2 3 4 0 0 0 0 0 0 0 0 ] ;
3 y= conv ( x , h ) ;
4 stem ( y , ’ b ’ ) ;
5 t i t l e ’ y [ n ]= x [ n ]∗ h [ n ] ’
6 g r i d on ;
Este ejercicio se muestra los comandos de Matlab nece-
sarios para realizar una convolución y su gráfica. Con el
comando conv generamos los valores de la convolución
y por último graficamos la salida y[n] mostrado en la
figura8 usando el comando stem.
Fig. 9: Salida al sistema y[n], Matlab R2015a

3. Escribir un programa de Matlab que obtenga la respuesta


a los impulsos para el sistema descrito por las siguientes
ecuaciones de diferencia para valores desde n = 0 a
n = 20:
y[n]+2y[n−1]+y[n−2] = 0, y[0] = 1 y y[1] = 1

1 A= [ 1 , 2 , 1 ] ;
2 B=[0 ,0 ,0];
3 z= z e r o s ( 1 , 2 0 ) ;
4 i n i = f i l t i c (B,A, [ 1 , 0 ] ) ;
5 y= f i l t e r ( B , A, z , i n i ) ;
6 stem ( 1 : 2 0 , y , ’ p ’ ) ;
7 t i t l e ’ Salida y[n] ’
8 g r i d on ;

Fig. 8: Salida del Sistema y[n], Matlab R2015a

2. Calcular y[n] = x[n]∗x[n]∗x[n]∗x[n] usando la función


conv para la secuencia:
(
1, 0 ≤ n ≤ 1
x[n] =
0, otherwise

1 x =[1 1 0 0 ] ;
2 x1 = [ 1 1 0 0 ] ;
3 y= conv ( x , x1 ) ;
4 x2 = [ 1 1 0 0 ] ;
5 x3 = [ 1 1 0 0 ] ;
6 y1= conv ( x2 , x3 ) ; Fig. 10: Salida del Sistema y[n], Matlab R2015a
y[n] + y[n − 1] + 2y[n − 2] = 0

1 K= [ 1 , 1 , 2 ] ;
2 S= [ 0 , 0 , 0 ] ;
3 v= z e r o s ( 1 , 2 0 ) ;
4 i n i = f i l t i c ( S ,K, [ 1 , 0 ] ) ;
5 y = f i l t e r ( S , K, v , i n i ) ;
6 stem ( 1 : 2 0 , y )
7 t i t l e ’ Salida y[n] ’ ;
8 g r i d on ; Fig. 12: Respuesta al impulso, Matlab R2015a

Generamos los vectores para poder trabajar , en este 4y[n] + y[n − 1] + 3y[n − 2] = x[n] + x[n − 4]
ejercicio el coeficiente de la ecuación de diferencia nos
dara el valor del vector. Con el comando filtic nos per- 1 N= 2 0 ; a = [ 4 1 3 ] ; b = [ 1 0 0 1 ] ;
mite dar los valores iniciales de reposo. Con el comando 2 z=impz ( b , a , N) ;
filter y utilizando una función de transferencia racional 3 figure (1) ;
definida por el numerador y denominador coeficientes 4 stem ( z ) ;
B y A respectivamente. Tenemos la salida del sistema 5 g r i d on
caracterizado por y[n] y como se observa en la figura 6 xlabel ( ’n ’ ) ; ylabel ( ’h [ n ] ’ ) ;
10 y 11. 7 aux = [ 1 z e r o s ( 1 , N−1) ] ;
8 y= f i l t e r ( b , a , aux ) ;
9 figure (2) ;
10 stem ( y ) ;

Fig. 11: Salida del Sistema y[n], Matlab R2015a

4. Escribir un programa en Matlab que calcule la respuesta


al impulso de los sistemas descritos por las siguientes
ecuaciones de diferencia
Fig. 13: Respuesta al impulso, Matlab R2015a

y[n] + y[n − 1] + y[n − 2] = x[n] En los dos códigos anteriores, tanto el comando impz,
como el comando filter, nos producen la misma respues-
ta al impulso, pero recordando que se aplican diferentes
1 N= 2 0 ; a = [ 1 1 1 ] ; b = 1 ; parámetros para cada una.
2 z=impz ( b , a , N) ; 5. Escriba un programa en Matlab para graficar la res-
3 figure (1) ; puesta de estado estacionario para la entrada x[n] =
4 stem ( z , ’ g ’ ) ; sin (ωn)µ[n] de los filtros descritos por las siguientes
5 xlabel ( ’n ’ ) ; ylabel ( ’h [ n ] ’ ) ; tres ecuaciones. Considere ω = π/3 y ω = π.
6 aux = [ 1 z e r o s ( 1 , N−1) ] ; y[n] = x[n − 2] + x[n − 1] + x[n]
7 y= f i l t e r ( b , a , aux ) ;
8 t i t l e ( ’ Respuesta a l Impulso ’ ) ; 1 N= 2 0 ;
9 g r i d on ; 2 f o r i = 1 :N
3 x a ( i ) = s i n ( p i / 3 ∗ ( i −1) ) ;
4 end
5 f o r i = 1 :N
6 x b ( i ) = s i n ( p i ∗ ( i −1) ) ;
7 end
8 y a= f i l t e r ( [ 1 1 1 ] , 1 , x a ) ;
9 y b= f i l t e r ( [ 1 1 1 ] , 1 , x b ) ;
10 subplot (2 ,1 ,1) ;
11 stem ( 0 : 1 9 , y a , ’ r ’ ) ;
12 t i t l e ( ’Y[ n ] p a r a x [ n ] = s i n ( p i / 3 ) u [ n ]
’) ;
13 g r i d on
14 subplot (2 ,1 ,2) ;
15 stem ( 0 : 1 9 , y b , ’ b ’ ) ;
16 t i t l e ( ’Y[ n ] p a r a x [ n ] = s i n ( p i ) u [ n ] ’ )
; Fig. 15: Respuestas a la señal x[n] para π/3 y π, Matlab
17 g r i d on R2015a

y[n] = +x[n − 2] + 2x[n − 1]x[n]

1 t =30;
2 f o r i =1: t
3 x 1 ( i ) = s i n ( p i / 3 ∗ ( i −1) ) ;
4 end
5 f o r i =1: t
6 x 2 ( i ) = s i n ( p i ∗ ( i −1) ) ;
7 end
8 y 1= f i l t e r ( [ 1 2 1 ] , 1 , x 1 ) ;
9 y 2= f i l t e r ( [ 1 2 1 ] , 1 , x 2 ) ;
10 s u b p l o t ( 2 , 1 , 1 ) ; stem ( 0 : 2 9 , y 1 , ’ r ’ ) ;
11 t i t l e ( ’ P a r a w1= p i / 3 ’ ) ;
12 g r i d on
13 s u b p l o t ( 2 , 1 , 2 ) ; stem ( 0 : 2 9 , y 2 , ’ b ’ ) ,
14 t i t l e ( ’ P a r a w2= p i ’ ) ;
Fig. 14: Respuestas a la señal x[n] para π/3 y π 15 g r i d on

1
y[n] − y[n − 1] = x[n]
2

1 N= 3 0 ;
2 f o r i = 1 :N
3 x 1 ( i ) = s i n ( p i / 3 ∗ ( i −1) ) ;
4 end
5 f o r i = 1 :N
6 x 2 ( i ) = s i n ( p i ∗ ( i −1) ) ;
7 end
8 y 1= f i l t e r ( [ 1 1 1 ] , 1 , x 1 ) ;
9 y 2= f i l t e r ( [ 1 1 1 ] , 1 , x 2 ) ;
10 s u b p l o t ( 2 , 1 , 1 ) ; stem ( 0 : 2 9 , y 1 , ’ r ’ ) ; Fig. 16: Respuestas a la señal x[n] para π/3 y π, Matlab
11 g r i d on R2015a
12 t i t l e ’ P a r a w1= p i / 3 ’ ;
13 s u b p l o t ( 2 , 1 , 2 ) ; stem ( 0 : 2 9 , y 2 , ’ b ’ ) ; 6. Suponga que se quiere procesar una señal contı́nua
14 t i t l e ’ P a r a w2= p i ’ ; xa (t) = 3 cos (2π1000t) + 7 sin (2π1100t) usado un
15 g r i d on sistema discreto. La frecuencia de muestreo usada es
4000 muestras por segundo. El sistema que se usa para
procesar la señal es y[n] = x[n] + x[n − 2]. Después del
procesamiento, las muestras de la señal y[n] se convierte
de vuelta a una señal continua. Escriba un programa
en Matlab para simular la solución de este problema e
interprete el efecto que este procesamiento tiene sobre
la señal de entrada.
1 na = 0 : 1 0 0 0 0 ;
2 xa =3∗ c o s ( 2 ∗ p i ∗ 0 . 0 0 2 5 ∗ na ) +7∗ s i n ( 2 ∗ p i
∗ 0 . 0 0 2 7 5 ∗ na ) ;
3 x= xa ( 1 : 1 0 0 : l e n g t h ( xa ) ) ;
4 y= f i l t e r ( [ 1 0 1 ] , 1 , x ) ;
5 n = 0 : 1 0 0 : l e n g t h ( na ) ;
6 h= s i n c ( − 1 0 : . 0 1 : 1 0 ) ;
7 f o r i =1: l e n g t h ( n ) ,
8 ya ( i , 1 0 0 ∗ i −99:100∗ i −100+ l e n g t h ( h ) ) =h∗
y( i ) ;
9 end ;
10 yc =sum ( ya ) ; Fig. 18: Señales analógicas x[n] e y[n] respectivamente,
11 ya = yc ( 1 0 0 1 : l e n g t h ( yc ) −1000) ; Matlab R2015a
12 figure (1) ;
13 subplot (2 ,1 ,1) ;
14 s t e m ( x , ’m’ ) ; R EFERENCIAS
15 g r i d on [1] Paulo Diniz, Eduardo da Silva, and Sergio Netto. Digital Signal Proces-
16 subplot (2 ,1 ,2) ; sing: System Analysis and Design, 2nd Edition. Cambridge University
Press, ISBN 978-0-521-88775-5, 2010.
17 stem ( y , ’ k ’ ) ;
18 g r i d on
19 Ta = 1 / 4 0 0 0 0 0 ;
20 figure (2) ;
21 subplot (2 ,1 ,1) ;
22 p l o t ( na . ∗ Ta , xa , ’ y ’ ) ;
23 g r i d on
24 subplot (2 ,1 ,2) ;
25 p l o t ( na ∗Ta , ya , ’ c ’ ) ;
26 g r i d on

Fig. 17: Secuencias x[n] e y[n] respectivamente, Matlab


R2015a

También podría gustarte