You are on page 1of 9

Informe de Laboratorio

Alex Pachacama
Universidad de las Fuerzas Armadas ESPE
Departamento de El´ectrica y Electr´onica
Procesamiento Digital de Se˜
nales

November 3, 2015
Abstract
In this lab, the realm of discrete time signals using Matlab is explored. Also you can see
the convolution developed in Matlab well as the development of difference equations at discrete
times , in order to exploit the advantages and utilities that can be given to Matlab, and examples
that facilitate the understanding mentioned concepts.

I.

Los parmetros de entrada:
- El eje de ordenadas los valores de t en el que
los datos se trazan;
- Los valores de datos x para trazar.

´n
Introduccio

En este laboratorio, se explora el reino de las
se˜
nales de tiempo discreto utilizando Matlab.
Se le anima a probar el experimentos descritos
a continuaci´
on, tomando nota de todo lo que
se aprende. La extensi´on de los experimentos,
siguiendo la propia curiosidad, es muy conveniente, ya que no hay mejor manera de aprender
el procesamiento de se˜
nales que no sea haciendo
procesamiento de se˜
nales. Y eso es exactamente
lo que Matlab nos permite hacerlo de una manera directa

II.

t = [0: 0.1: 2];
x = cos (pi * t + 0.6);
stem(t,x);

´ rico
Marco teo

Se˜
nales y sistemas con Matlab en tiempo
discreto
La caja de herramientas de procesamiento de
se˜
nal de Matlab tiene varias funciones que ayudan en el tratamiento de los discretos se˜
nales.
En esta secci´on damos un breve resumen de los
que est´an m´as estrechamente relacionados con
el material en este laboratorio

conv
Realiza la convoluci´on discreta de dos secuencias.
Los par´ametros de entrada: los vectores a y b
sosteniendo las dos secuencias.
Par´ametro de salida: el vector y que sostiene la
convoluci´on de a y b.

stem
Parcelas una secuencia de datos como tallos
desde el eje x terminado en c´ırculos, como en
las parcelas de se˜
nales de tiempo discreto se
muestran en este cap´ıtulo

a=[1 1 1 1 1]; % funcion a
b=[1 2 3 4 5 6 7 8 9]; %funcion b
1

. A ilustrar esa idea..N)]. N. . por qu´e? Muestreo El proceso de muestreo puede ser visto como una asignaci´on de una funci´on de tiempo continuo en un conjunto muestras de tiempo discreto . Par´ ametro de salida: un vector h sosteniendo la respuesta de impulso del sistema a=[1 -0..01].[1 -1/alpha].. N = 30. M. + aN y[n − N ] = b0 x[n] + b1 x[n − 1] + .x). el comando Matlab y = f ilter([b0 b1 . 1. utilizando el siguientes comandos Matlab impz: alpha = 1. sin embargo. En general.Un vector a que contiene los valores ai . considere una . Para l = 0. 15y0?n?30.c=conv(a.15. .a. %gr\’afico respuesta al impulso En general. . Calcula la respuesta de impulso de un sistema relajada inicialmente descrito por una ecuaci´on diferencial Los parmetros de entrada: .. .017 0.bM ]. hay infinitas funciones que pueden generar el mismo conjunto de muestras.. 1..22 -0. Para i = 0. y = filter(1.aN ]. Son lo mismo? Si no son el mismo. [1a1 . . x = [1 zeros(1. b=[1 2 1]. .. Una soluci´ on num´erica para este problema se puede determinar. + bM x[n − M ] cuando se proporciona la seal de entrada en el vector x y el vector Zi contiene su condiciones iniciales.20). h=impz(b. .b). %respuesta al impulso stem(h). x. Comparar los resultados obtenidos con ambas alternativas. Sistemas recursivos Ejemplo N1 Encuentra la respuesta de impulso del sistema y[n] − α1 y[n − 1] = x[n] suponiendo que es inicialmente relajado. para α = 1. Zi ) determina la solucin de la ecuacin de diferencia general y[n] + a1 y[n − 1] + .21 0.Un vector b que contiene los valores bl . stem(y).. % convolucion 2 funciones stem(c)..

un conjunto de muestras no especifica la funci´ on original de tiempo continuo en una manera u ´ nica. plot(time_aux. plot(time_aux. cos(2*pi*7. Obtenemos Ts = f1s = Ts . el proceso de muestreo se obtiene la funcin de tiempo discretof1 (nTs ).*time) f2 (t) = cos(2π7t) Una lista muestra id´entica se puede obtener.9. los comandos hold on permiten trazar m´as de una funci´on en la misma figura y la variable time − aux se utiliza para emular un contador de tiempo continuo en los comandos de la trama para dibujar las funciones de fondo. Ilustremos este caso mediante la emulaci´on de un procedimiento de muestreo utilizando Matlab.001). figure(2). una u ´ ltima candidata que deben ser eliminadas para evitar ambigedades. f1 (t) = cos(2π3t) Considere la funci´ on coseno de 3 Hz f1 (t) = cos(2π3t) muestreados en fs = 10 muestras por segundo. sin embargo. f_1 = cos(2*pi*3. Al hacerlo.*time_aux)).*time_aux)). hold off. Usando una frecuencia de muestreo de fs muestras por segunda.1:0.funcin en general f1 (t). Hay. stem(time.f2 (nTs ) = F1 ((nTs )) = F1 (nTs ). debemos especificar la frecuencia de muestreo empleada para generar las muestras dadas. Con Ts = f1s yenteron. ya que el m´ınimo frecuencia de muestreo en este caso debe estar por encima de .001:(1-0. stem(time. Compruebe las muestras resultantes despu´es de ejecutar el siguiente comandos: time_aux = 0:0. hold on. figure(1). con el comando Matlab: time = 0:0. Muestreo cualquier funci´on de la forma f2 (t) = f1 (t). hold on.*time) Con el tiempo variable especificada como anteriormente. con cualquier positivo.f_2). hold off. con la misma velocidad y tiempo de muestreo de intervalo. en general. de un 7-Hz funci´on coseno f2 (t) = cos(2π7t)dada por: f_2 = cos(2*pi*7.f_1). para un 1 intervalo de tiempo seg. hay que hacer referencia al teorema de muestreo. Que corresponde a la mismo conjunto de muestras como antes Por lo tanto. En esta secuencia. Ese resultado indica que una funci´on coseno 7 Hz no se tomar´an muestras con fs = 10Hz. el razonamiento algebraico anteriormente se rompe y que elimina (casi) todo funciones candidatas en tiempo continuo para un conjunto muestra dada. Para eliminar la ambigedad se ilustra en este ejemplo. Para reducir esta incertidumbre.P orlotanto. utilizando una frecuencia de muestreo Fs = fs . cos(2*pi*3.

x_noisy). la muestra con fs = 1000 muestras por segundo.x_noisy).fs = 14Hz.x_clean). Ruido y Filtrado Supongamos que la se˜ nal x(t) = 5cos(2?5t) + 2cos(2π50t). x_clean = sine_1 + sine_2. + X[N − N + 1] N . noise = randn(1..length(time)). plot(time. plot(time. Podemos minimizar el efecto ruidoso promediando N sucesivas muestras de x[n] = x ruidosos. freq_1 = 5. no es s´olo una funci´on de tiempo continuo asociado con un determinado conjunto de muestras de tiempo discreto y una frecuencia de muestreo particular.*time). es corrompido por una pequea cantidad de ruido. sine_1 = amplitude_1* sin(2*pi*freq_1. podemos realizar dicho tratamiento especificando el valor de N y el uso de los comandos de Matlab b = ones(1. y = filter(b. x_noisy = x_clean + noise. f_s = 1000. N=3 N=6 Sin Ruido x[n] + x[n − 1] + . Por lo tanto. amplitude_2 = 2.N).*time).. implementando la siguiente ecuacin en diferencias: y[n] = Como se mencion´o en la secci´on 3. si criterio de muestreo de Nyquist es satisfecho. time = 0:1/f_s:(1-1/f_s). figure(2). Con Ruido En particular. freq_2 = 50. de acuerdo con los comandos siguientes: amplitude_1 = 5. sine_2 = amplitude_2* sin(2*pi*freq_2.1. el comando randn genera el nmero especificado de muestras de un pseudoaleatoria la seal con una distribucin gaussiana con media cero y varianza unidad. figure(1).

0. nuestra presentaci´ on sigue un camino formal y t´ecnicamente justificadas. mayor ser´ a la capacidad de eliminar el componente de ruido. seleccionar la herramienta adecuada para cada aplicaci´on particular. Al final. 7 ≤ n ≤ 8   0. N=20 Calcule la suma de convoluci´ on de la siguiente par de secuencias utilizando la funci´ on conv Matlab:  1. b=[0 1 2 3 4 5 6 7 8]. c=conv(a. Sin embargo. N = 6. 0 ≤ n ≤ 2    0. si N es demasiado grande. En los siguientes laboratorios. Tal vez un procesamiento m´as elaborado puede preservar mejor los componentes sinusoidales. 1≤n≤4 sino a=[1 1 1 0 0 0 0 1 1]. stem(c). Ejercicios adicionales 1. N = 10 y N = 20. sino y  Si se trazan las cifras para N = 3. La teor´ıa y el dise˜ no de herramientas para responder a este tipo de pregunta es el tema principal de este curso. A pesar de que la intuici´on es importante en algunas situaciones pr´ acticas. el mayor es el valor de N. como se ilustra en este experimento.N=10 reducir el componente de ruido sin afectar la se˜ nal original de manera significativa. el estudiante puede ser capaz no s´olo de emplear los m´etodos presentados durante todo el curso. se ver´a que el promedio tecnicamente es muy eficaz para reducir la cantidad de ruido de la se˜ nal da˜ nada. . se investigan varias t´ecnicas para el procesamiento de una amplia gama de se˜ nales. 3 ≤ n ≤ 6 x[n] =  1. entonces el procedimiento de promediado casi elimina la componente sinusoidal de alta frecuencia. sino tambi´en para entender. En este caso.b). Uno puede entonces argumentan si es posible h[n] = n.

N)].[1 2 1]. Escriba un programa Matlab para calcular las respuestas de impulso de los sistemas descritos siguiendo ecuaciones en diferencias: y[n] + y[n − 1] + y[n − 2] = x[n] N = 20. x = [1 zeros(1.N)]. . stem(y).[1 2 1]. Calcular y[n] = x[n] ∗ x[n] ∗ x[n] ∗ x[n] usando la funci´ on conv Matlab para la secuencia:  1. stem(c). y[n]+y[n−1]+2y[n−2] = 0.b). y = filter(1. x = [1 zeros(1.2. c=conv(a. stem(y).x).N)]. x = [1 zeros(1. y[−1] = 1ey[0] = 1 N = 20. y = filter(0. 4.x. y[0] = 1ey[1] = 0 N = 20. sino a=[1 1]. Escriba un programa Matlab para trazar las muestras de las soluciones de las siguientes ecuaciones en diferencias de n = 0 a n = 20: y[n] + 2y[n − 1] + y[n − 2] = 0. 0 ≤ n ≤ 1 x[n] = 0. y = filter(0. stem(y).[1 1]).x.[1 0]). b=[0 1].[1 1 1]. 3.

else y(u)=x(u-2)+x(u-1)+x(u).hold on.’b’). for g=1:31 if (g>=1 && g<=10) x(g)=0.hold off. stem(n. y=[1:21].’b’).’r’).y. Configure ω = π/3yω = π : y[n] = x[n − 2] + x[n − 1] + x[n] 4y[n] + y[n − 1] + 3y[n − 2] = x[n] + x[n − 4] n=0:20. stem(n.title ’Grafica respuesta al impulso y(n)’. else x(g)=sin((pi/3)*(g-11)) end end for u=1:31 if (u>=1 && u<=10) y(u)=0. x=[1:21]. end end stem(n. n=-10:20. Escriba un programa Matlab para trazar la respuesta de estado estable para la entrada x [n] = sen (?n) ? [n] del filtros descritos por los siguientes tres ecuaciones en diferencias.5.hold off.x.y.title ’Grafica respuesta al impulso y(n)’. x=[1:31]. y=[1:31]. ω= π 3 ω=π .x. end end for u=1:21 if (u>=1 && u<=10) y(u)=0.hold on. else x(g)=0. end end stem(n. else y(u)=(x(u)+x(u-4)-y(u-1)-3*y(u-2))/4. for g=1:21 if (g==11) x(g)=1.’r’).

Sugerencias: . Escribir un programa Matlab para llevar a cabo una simulaci´on de la soluci´ on de este problema e interpretar el efecto que esto tiene sobre el procesamiento de la se˜ nal de entrada. es decir.ω=π 1 y[n] − y[n − 1] = x[n] 2 ω= π 3 6. El muestreo proceso para generar la seal de . las muestras de la salida y[n] se convierten de nuevo de forma continua en el tiempo. El tiempo discreto transformaci´ on aplicada en las muestras de la se˜ nal x [n] es descrito por la siguiente ecuaci´on en diferencias y[n] = x[n] + x[n − 2]. La frecuencia de muestreo utilizada es de 4000 muestras por segundo. Despu´es de la transformaci´on.Simular las seales de tiempo continuo xa (t) en Matlab usando secuencias obtenidas mediante muestreo ellos en 100 veces la frecuencia de muestreo. como fs (m) = fa (m(T /100)). ω=π y[n] = x[n − 2] + 2x[n − 1] + x[n] ω= π 3 Supongamos que queremos procesar la se˜ nal de tiempo continuo x0 (t) = 3cos(2π1000t)7sin(2π1100t) utilizando un sistema de tiempo discreto.

La interpolaci´on de y la (t) se puede aproximar por truncar cada funci´ on consider´andolos sea cero fuera del intervalo de tiempo nT − 10T ?t?nT + 10T . Tenga en cuenta que. t=-10:0.*cos(2*pi. formando la seal f (n) = fs (100n) = fa (nT ).’r’).*pi. . B da Silva Sergio L. xa=3.*1100. n=-10:0. Netto 2do Edici´on.*sin(2.*1000. Bibliograf´ıa .*sin(2.R. Por u ´ ltimo.04:10. hold off La interpolaci´on de la ecuaci´on se puede aproximar mediante el truncamiento de cada funci´on III. la suma para la interpolaci´on necesita se llevar´a a cabo s´ olo por unos t´erminos.tiempo discreto es entonces equivalente a mantener 1 de 100 muestras de la secuencia original.*t)+ 7.*pi.’b’). x=3. la condiciones necesarias para llevar a cabo el procesamiento en tiempo discreto de se˜ nales de tiempo continuo sin perder la informaci´on que llevan han sido estudiados.x. plot(t. presentamos algunas funciones de Matlab y algunos experimentos pr´acticos que son u ´tiles en el tratamiento de las se˜ nales discretas de tiempo.*pi.hold on plot(n.*1100.*n)+ 7.Digital Signal Processing System Analisys and design Paulo S. title ’Grafica de seal muestrada xa(t) y x(n)’. IV.xa.01:10. Tenemos tambi´en introdujo ecuaciones en diferencias como otra manera de caracterizar los sistemas de tiempo discreto. ya que estamos truncando las funciones de interpolaci´on. . ´n Conclusio En esta pr´actica hemos visto los conceptos b´asicos referidos a los sistemas de tiempo discreto. En primer lugar.*cos(2. Diniz Eduardo A.*1000.*t).*n). Sistemas lineales invariantes en el tiempo se han caracterizado usando sumas de convoluci´ on.