Você está na página 1de 76

UNIVERSIDAD AUTONOMA METROPOLITANA

I .

(1.-

$3 L
,.

ETAPALAPA .

REPORTE FINAL DEL PROYECTO TERMINAL

"USO DEMATLAB.EN TRANSFORMmA DE FOURIER, CONVOLUCIN Y FILTROS FIR"' . .

PROFR. FAUSTO CASCO SANCHEZ

ALUMNOS:
CRUZ OLIVA VALENT~N GARCA TRINIDAD ANDRS

INDICE

INTRODUCCION
I.

MUESTRE0 a) Teorema del muestreo b) Teorema del muestreo en MATLAB


CONVOLUCI~N a) Convolucin en MATLAB
FFT a) Transformada de Fourier b) Transformada Discreta de Fourier c) Ejemplo numrico de una funcin escaln usando la DFT d) Ejemplo para una funcin senoidal deO. 125 Hz usando DFT e) Caractersticas de la Transformada Discreta de Fourier f) Transformada Rpida de Fomier (FFT) g) Transformada de Fourier en MATLAB FILTROS FIR a)FILTROSRIF b) Filtros FIR en MATLAB c) Programa que utilizala funcinfilter y sampling para filtrar tres seales y sumpling para filtrar tressefiales d) Programa que utiliza la funcinfft e) Programa que utiliza la funcin conv y sampling para filtrar tres seales
11

11.

111.

18

IV.

30

CONCLUSIONES
BIBLIOGRAFA

61

62
63

APNDICE

1 .

INTRODUCCION
El Procesamiento de Seales Digitales, es uno de los temas fimdamentales en la Ingeniera
Electrnica actual, con el advenimiento de la electrnica digital, se ha hecho por dems necesario que los estudiantes de carreras afines, contemplen en su formacin como
Hoy en da no se requiere buscar muy

profesionales el estudio de este tema tan central.

lejos para encontrar que muchos de los aparatos electrnicos que nos rodean estn controlados por una lgica digital, por ejemplo soncasosclaros

los sensores de movimiento, temperatura,


debe ser

de cmo la. informacih que provienedelmedioambiente de tal forma que los dispasitivos digitales actuales (como

procesada (digitalizada)

computadoras) sean capaces de procesar dicha informacin p a a los fines que el hombre requiera en cada caso. Es por ello que en el trabajo que hemos realizado abordamos temas relacionados con este tpico tan importante, los cuales adems son parte de la curricula que cubren cursos como el de Comunicaciones I que se imparte en nuestra Universidad Autnoma Metropolitanade Iztapalapa, y que sirven como inicio a una parte del estudio de procesamiento de seales digitales. Tales temas son:

MUESTRE0 CONVOLUCION TRANSFORMADA DISCRETA DE FOURIER (DFT) TRANSFORMABA RAPIDA DE FOURIER (FFT) FILTROS FIR

o
0

L a forma en que se han abordado estos temas es con el auxilio de un software que provee

de herramientas que resultan de mucha utilidad cuando se tratan temas como los que aqu

se estudian. Este software es MATLAB, quien adems cuenta con TOOLBOX especfico para el procesamiento de seales, en donde se proporcionan funciones tales como: FFT, CONV y FILTER, que permiten desarrollar algunas de las actividades que tradicionalmente

11.

..

conlpizypapelpuedenrequerir paquete los clculosyconstruccin

de mis tiempoyesfuerzo,as de grficasresultamucho

can elapoyo de este

ms inmediato,locual

permite hacer exploraciones que pueden promover un mejor entendimiento de lo que se estrealizando,adems rpidas al estudiante. de que conforme se vayaavanzandopermiteaplicacionesms

El formato general del presente documento, es hacer una muy breve introduccih terica de
cada tema, y enseguida una descripcin de la forma en que dicho tpico puede ser abordado en MATLAB con apoyode lasfunciones que ste provee.

Una aplicacin

quese

muestra es

el diseo de filtrosFIR,medianteunarutina

de

programacin, que es otra de las posibilidades que ofrece MATLAB, el diseo de filtros FIR se ejemplifica con un filtro pasabajas, y mediante el uso de tres diferentes herramientas que provee el software: FFT,CONV y FILTER.
Al final se agrega un apndice en el que se hace una muy breve descripcin del uso de las

herramientasde MATLABqueutilizamosenesteproyecto,sinembargo,para profundidad al respecto, se recomienda acudir al manual del usuario.

mayor

De esta forma, pretendemos realizar un acercamiento inicial al uso de MATLAB, como un apoyo de algunos de los temas, que permitenavanzar en el estudiodelProcesamiento Digital de Seales.

MUESTRE0

I.

MUESTRE0

La mayora de las seales usadas por ingenieros y cientficos son originalmente continuas eneltiempo

o elespacio. S estassealas van aserprocesadasusandocomputadoras

digitales, entonces estas seales deben ser convertidas un de formato continuo en el tiempo, a uno que sea discreto en el tiempo, a travs del muestreo, debido a que las computadoras solo procesan sucesiones de nmeros o smbolos. En general, como resultado del muestreo alguna parte de la informacin se pierde, pero si la seal continua en el tiempo es limitada en banda y larazndelmuestreoeslosuficientementealto,entoncespoca informacin se perder.

o ninguna

Idealmente, la seal original xc(t) y la secuencia muestreada x(n) simplemente por x(n) = x,(nT)

son relacionadas

donde T es el perodo de muestreo, lo cual es asumido para propsitos prcticos.

El muestreo usual de una seal continua en el tiempo es el que G(t) es multiplicada por un
tren de impulsoperidico p(t) con periodo T para producir la seal muestreada x&)
= xc0) PO)

donde

-m

y tambin

-m

Haciendo la CTFT de xs(t), y substituyendo x,(nT)

= x(n),

se tiene

Pero esto es justo la DTFT ~ ( 2 " con ) o =n ~ que , implica la relacin CTFT/DTFT

X,(JQ)= X(eJ"">

o alternativamente

X(&" ) = X, (jo/ T )
Se requiere ahorarelacionarel espectro X,(jQ) despus de muestreadoconelespectro

original X,(in) antes de muestrearlo.

por la convolucin La relacin CTFT correspondiente est dada

con

P(jQ) = a,

k=-m

cs
m

(Q -m,)

donde Q, es la frecuenciade muestre0 0, = 2n/T en radianeshegundo, y as

combinando ecuaciones, podemos expresar la DTFT en trminos de l a CTFT original


* m

o equivalentemente

Esta ltima ecuacin muestra como

la

es peridica

implica con periodo 2n, esto

, radianes/segundo en el espectro original X , ( j Q ) que una componente en frecuencia Q

ser manifestado como


ok=o,

w, = R O T radianes en el espectro X ( d w ) y tambin como

+ Znk

para todos los valores diferentes de cero del entero k. Esto es, que cada en xc(t) producir componentes A'e'"'' en x(n) para toda k,
coo

componente de entrada A&'

donde A'=A/T. Si IQ,j<nT, entonces Jw$n y de este modo

estar dentro del intervalo

Nyquist joj<x, como era de esperarse. Sin embargo si [R,l>nT, entonces, Icool>n;mientras

que

Icr>&~

para algunas otras k#O. Esto es, la componente de X,(jSZ) en 12,presenta en

X(ejw) alguna otra frecuencia o & ~ ~en T el intervalo Nyquist I o ( < x .

En el ltimo de los casos, se dice que ha ocurrido un "aliasing",y este efecto indeseable debe serevitado o minimizado.

a) Teorema del muestreo.

Sin embargo, para evitar satisfacer la condicin

"aliasing", cada componente en frecuencia

de

X,(js2) deber

IRoI<.nT,
la cual es una versin del conocido teorema del muestreo, tambin conocido como teorema de Nyquist's o teorema Shannon's. Definiendo el ancho de banda de la seal original xc(t) para ser f i b , esto es,
lnol<Rb,

para toda Ro, una versin alternativadel teorema del muestreo es simplemente,

Rs>2Rb,
endondeRs=2n/T. En otras palabras, para muestrear una seal analgica h(t), sin
"aliasing", la razn de muestreo o frecuencia Qs, debe exceder dos veces elancho de banda

El lmite ms bajo2Rb es conocido como la razn de Nyquist.. de la seal Rb.

b) Teorema del muestreo en MATLAB


Con ayudas de MATLAB,es posible mostrarel teorema del muestreo, como a continuacin se ilustra con el siguiente programa y las grficas que le corresponden.

%Este programa ilustrael Teorema del Muestreo

Idisp('Este programa ilustrael Teorema del Muestreo con unasena1 coseno');

jisp('Pu1sa una tecla para desplegar las gr ficas resultantes'); 3ause; %Con esto se produce un tren de impulsos.
3=[1

o o o -11;

;1=[1 zeros( 1,127)];

tren=filter( 1,a,d); n=O: 127; plot(n,tren); title('Tren de impulsos'); pause; %Se genera una sena1 coseno con 32 muestras por ciclo. x=cos(2*pi*n/32); plot(n,x); title('Sena1 a muestrear'); pause; %Se obtiene la respuesta en frecuencia. [X,w]=freqz(x, 1,128,'whole'); wp=fftshift(w)/pi- 1; pMwp,)O; title('Respuesta en frecuencia de la seaal'); pause;
%La sena1 es muestreada tomando ocho muestras por ciclo.

%Con esto se logra satisfacer el Teorema del Muestreo. y=x.*tren; FWn,Y); title('Seaa1 muestreada'); pause;
%Se obtiece la respuesta en Erecuencia de la sena1 muestreada.

[Y,w]=freqz(y, 1,128,'whole'); wp=fftshift(w)lpi- 1;

title('Respuesta en frecuenciade la seaal muestreada (Ws=0.5 rad/s)'); pause; :IC;


1

:lose;

I
I

Tren de impulsos

40

80

1 O0

120

50

401
20
OI r
I

101
I

-10 I -1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

O.8

0.8 0.6

0.4.0.2 --

O" -

-0.4 O . ' ;
-0.6

Respuesta
16 r

10

) [
O
-2 -1

'

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

O. 8

11.

CONVOLL L.~ N

Si una sucesin x(n) es utilizada paraproducir otra sucesin y(n), se puede pensar en estas sucesiones como la entrada y la salida respectivamentede un sistema discreto en el tiempo o filtro, como se muestra en la figura.

Si x(n) y y(n) pueden asumir nicamente un nmero finito de posibles valores-de amplitud, nosotros llamaremos a este un filtro digital. Por ahora asumiremos que x(n) y y(n) pueden tener cualquier valor (real) por lo que se trata de unfiltro discreto en el tiempo.

Una clase ms importante de filtros son aquellos que sonlineales e invariables en el tiempo
(LTI). Un filtro discretoenel

tiempo, se dicequees

lineal si, paracualquierpar

de

sucesiones de entrada xl(n) y xz(n) que producen respectivamente las sucesiones de salida y,(n) y yz(n), con lo que la sucesin de entrada x(n) = axl(n) + bxz(n)

produce la sucesin desalida

para toda a y b. Un filtro invariable en el tiempo, por otro lado, implica que si x(n) produce y(n), entonces x(n - nd) produce y(n

- Q>para toda n y cualquier valor de m.Esto significa

que un retardo en la entrada implica un retardo en la salida.

Si la entrada es la sucesin de impulsos S(n), la salida que resulta es llamada la respuesta al impulso del filtro y es denotado por h(n).

12

La entrada y salida de un filtro discreto y linealinvariableen

el tiempopueden

ser

fcilmente relacionadas a travs de la respuesta al impulso del filtro como sigue: Cualquier entradax(n)puedeserpensadacomolasuma de un nmeroinfinito de retardos y sucesioness de impulsos, con el kth impulso 6(n -k) de x(k). Matemticamente podemos escribir esto como

x(n) = C X ( k ) 6 ( M - k )
k =-m

Pero por la invariabilidad en el tiempo, la entrada 6(n -k) producir la salida h(n k), y por linealidad, la salida correspondiente con respecto a la sumatoria anterior es

y ( n )=
k=-oa

x(k)h(n - k )

Esto es la suma de corzvolucio'n relacionando la entrada y salida de un filtro discreto en el


tiempo. La cual puede tambin escribirse como

y(n)=

k=-m

c
m

x(n - k)h(k)

Generalmente se utiliza el smbolo * para denotar convolucin,y entonces

Adems la operacin de convolucin es conmutativa, por lo que

x(n) * h(n) = h(n)

* x(n)

13

tambin es asociativa y distributiva, por l o que

otra relacin til es que si y(n) = x(n) * h(n), entonces x(n - ni)

* h(n - n2) = y(n -ni - n2)

con lo que los dos retardos nl y n2 son sumados para producir el el retardo de la salida nl + n2.
a) Convolucin en MATLAB

MATLAB cuenta con una funcin que permite realizar la operacin de convolucin entre

dos seales. La cual est descrita en el software como sigue

C O W Convolution and polynomial multiplication. C = CONV(A, B) convolves vectors A and B. The resulting vector is length LENGTH(A)+LENCTH(B)- l. If A and B are vectors of polynomial coefficients, convolving them is equivalent to multiplying the two polynomials.

as deestaformapodemos

utilizar estoperacin

en MATLABparaprobaralgunos

aspectos tericos que seestudian en la materia de Comunicaciones I. Ejemplo utilizando MATLAB: Primeramente se defineun vector de npuntos

14

,)

n=[ 1501

I=

Columns 1 through 12 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 Columns 13 through 24 13 14 16 15 17 20 19 18 21 24 23 22

Columns 25 through 36 25 26 28 27 31 30 29 32 36 35 34 33

Columns 37 through48 38 37 39 40 42 41 43 44 48 47 46 45

Columns 49 through50 49

50

pulsos
))

p=[ones( I :30) zeros( 1,20)]

P=
Columns 1 through 12 1 1 1 1 1 1 1 1 1 1 1 1

Columns 13 through 24 1 1 1 1 1 1 1 1 1 1 1 1

Columns 25 through 36 1 1 1 1 1 1 0 0 0 0 0 0

Columns 37 through 48
0 0 0 0 0 0 0 0 0 0 0 0

Columns 49 through 50
O 0

Podemos entonces observar grficamentea p y otras como se muestra a continuacin.

15

I____]
S ahora convolucionamos ap con ella misma, entonces observamos la siguiente grfica
))

))

plot(n,p,'+')

S l=conv(p,p); plot(n,sl
,'+I)

(3.7r

0.4

C.2 1
I

I I

G . ? ;i
I

i
1

0' 0

13

15

30

Seal p convolucionada con ella misma


I
I
I

++ + + + + + + + + + + + + + + + + 20 + + + + + + + + + + 15+ + + + + + + + + + 10 + + + + + + + + + + + + + + + + + O

1.:
O

7 : 7:
10
I

l
I

20

30

40

50

60

1
70
ttk 90 90

1O0

FFT

18

111.

TRANSFORMADA DISCRETA DE FOURIER

La serie y transformada de Fourier han desempeado un

papel importante en la

representacin de seales y en el anlisis de sistemas lineales en el mundo analgico. Con


y las posibilidades que brindan para el diseo de algoritmos, se el auge de las computadoras

hizo necesario ms que necesario extender el uso de este tipo de herramientas matemticas
al mundo discreto.

a) Transformada de Fourier

La transformada de Fourier convierte una funcin continua en el tiempo a una funcin continua en frecuencia, y es una relacin compleja
+co

~ ( f= ) f~(l)[cos(zrlft) - j sen(2rcft)pt
-m

Parte Real:

Ganancia:

Fase:

b) Transformada D i s r r e t ~ de Frurier
L a Transformada Discreta de Fourier convierte una funcin discreta en el tiempo a una

funcin discreta en frecuencia, y tambin constituye una relacin compleja:

19

1 N-1 2nik 2nik F ( k ) = - X(i)[cos(-) - j sen(-)]

=O

Para k=O a N-1 Entrada. Constituida por N muestras en el dominio del tiempo, x(O), x(l), x(2), ...,x(N-1),
que son distribuidas en la frecuencia de muestre0 fs.

Salida. Constituida por N trminos en el dominio de la frecuencia R(k), I(k), G(k), P(k), desde k=O hasta N-l. El k-simo trmino corresponderalafrecuenciafs*k/N. relacin entre el trmino k escalada. Por ejemplo:
k=O -+ O Hz, DC (la frecuenciamenor)

A la

calculado y la frecuencia real f se le conoce como fkecuencia

k= 1 -+ fs* 1/NHz (la frecuencia de la resolucin)


k=2

+ fs*2/N Hz

k=N- 1 -+ fs*(N- 1)/Hz (la frecuencia ms grande)

c) Ejemplo numrico de una funcin escaln usando la DFT.

Para k=O hasta N-1

Entrada N=8 x(O)= x( I)= x(2)= x(3)= x ( 4 ) = x(5)= x(6)= x(7)= 1 Para fs= 1Hz

20

Salida

Interpretacin La hncin escalnen el dominio del tiempo tiene una gananciaen frecuencia de 1 en O Hz. el dominio de la

d) Ejemplo para una funcin senoidal de 0.125 Hz usando DFT

Para k=O hasta N-I

Entrada

N=8
x(0)=.000

x( 1)=.707
x(5)=.707

x(2)=. 1 .o00

x(3)=..707 x(7)=.707

x(4)=.000
fs=l Hz

x(6)=. 1O00

21

Salida

Interpretacin

La hncin senoidal en el dominio del tiempo tiene una ganancia de 0.5 en el dominio de la frecuencia en 0.125 y 0.875 Hz. L a ganancia en 0.875 es debido al muestreo, asimismo, el aliasing divide la ganancia total en dos partes iguales. L a fase resulta de operaciones con nmeros complejos y representa el tiempo de adelanto y de retraso tanto en las seales de entrada como de salida.

e) Caractersticas de l a Transformada Discreta de Fourier

El resultado de una DFT no puede ser el mismo que el de la transformada de Fourier.


La diferencia es debida al muestreo y al nmero limitado de muestras.

El resultado de la DFT siempre es equivalente a l resultado de la Transformada Rpida


de Fourier (FFT), salvo que sta ltima tendr 2" muestras, donde nes un entero.
L a entrada de la DFT es peridica, por definicin cada n*dt segundos, debido al nmero

limitado de muestras, sin embargo, no es posible obtener un resultado correcto DFT de una seal no peridica.

de la

22

La salida de la DFT se "traslapa" por encima de fs/2 con un periodo de frecuencia de fs

Hz.
0

A mayor nmero de muestras (N), se obtendr un mejor resultado de la DFT.

f) Transformada Rpida de Fourier (FFT)

La FFT es simplemente la DFT optimizada para clculos rpidos. La nica limitacin es que en l a FFT el nmero de datos a la entrada en el dominio del tiempo deber ser una potencia de 2, esto es 2", donde n es un nmero entero. Esto permite que el algoritmo de la FFT utilice mtodos indexados que eliminan una gran cantidad de clculos redundantes que
se requieren cuando se utiliza la DFT.

En el filtrado digital, la FFT se utiliza primero para medir la respuesta en frecuencia del filtro a partirde los datos en el dominiodel tiempo. La FFT puede tambin ser utilizada para medir la respuesta en frecuencia de la seal de entrada o de salida del filtro digital.

g) Transformada de Fourier en MATLAB

En MATLAB existe una fimcin que permite el clculo de l a Transformada Rpida de Fourier, la cual a continuacin se describe.

FFT Discrete Fourier transform. FFT(X) is the discrete Fourier transform o f vector X. I f the length o f X is a power of two, a fast radix-2 fast-Fourier transform algorithm i s used. If the length of X is not a power of two, a slower non-power-of-two algorithmis employed. FFT(X,N) is the N-point FFT, padded with zeros if X has less than N points and truncated if it has more. If X is a matrix, the FFT operation is applied to each column

Y como ya se ha dicho anteriormente, esta herramienta matemtica es de gran utilidad en e1

procesamiento de seales. Adems recordemos que la FFT es un algoritmo que permite

23

computar ms rpido la DFT. En MATLAB, la funcin fft es utilizada para calcular la DFT; aqu no existe una funcin dft. Similamente l a funcin ifft es utilizada para calcular la inversa de DFT. Por consiguiente se usaran de manera indistinta los trminos DFT y FFT.
IFFT

Inverse discrete Fourier transform. IFFT(X) is the inverse discrete Fourier transformof vector X. IFFT(X,N) is the N-point inverse transform.

Un ejemplo en el que se encuentre la DFT de algunas seales ms comunes -se muestra a continuacin. Con MATLAB es bastante accesible construir las grficas transformadas. Primera mente se declaraun vector de valores discretos. de seales y sus

n=[O: 151

1=

Columns 1 through 12 O 1 2 3 4 5 6 7 8 9 1 0 1 1

Columns 13 through 16 12 13
14

15

1Enseguida se declara la funcin que se va a utilizar.

))

y=expCj*nB)

Y=

Columns 1 through 4
1.o000
CQ450 + 0.32721 0.7859

+ 3.6184i 0.5403 + 0.84151

Columns 5 through 8
0.2352 + 0.9719i -0.0957 + 0.99541 -0.4161

+ 0.9093i -0.6908 + 0.7231i

24

Columns 9 through 12 -0.8893 + 0.4573i -0.9900 + 0.141 l i -0.9817 - 0.1906i -0.8653 Columns 13 through 16 -0.6536 - 0.75681 -0.3700 - 0.92901 -0.0457 - 0.99901 0.2837

- 0.5013i

- 0.95891

Y entonces se calcula la fft de dicha funcin.


z=fft(y)
-

Columns 1 through 4 -2.2083 + 1.64961 13.9054 Columns 5 through S 0.7803 + 0.1 130i 0.5923 + 0.2096i 0.4637 + 0.27581 0.3636 + 0.3272i
Columns 9 through 12

- 6.6357i

1.9775 - 0.5026i 1.1 139 - 0.0586i

0.2775 + 0.37151 0.1970 + 0.41291 0.1 156 + 0.45471 0.0263 + 0.5006i

Columns 13 through 16
-0.0804 + 0.55551 -0.2225 + 0.62861 -0.4405

+ 0.74071 -0.8615 + 0.9571i

MATLAB permite obtener nicamente la parte real o imaginaria de cantidades complejas,

como se muestra a continuacin.

w=real( z)

W =

Columns I through 7 -2.2083 13.9U54 l . Y 7 i S Columns 8 through 14


0.3636 0.2775 0.1970 0.1 156 0.0263 -0.0804 -0.2225
1.1 13V

0.7803

0.5923 0.4637

Columns 15 through 16

25

-0.4405 -0.86 15
>

x=imag(z)

I=

Columns 1 through 7
1.6496 -6.6357 -0.5026 -0.0586 0.1 130 0.2096 0.2758

Columns 8 through 14
0.3272 0.3715 0.4129 0.4547 0.5006 0.5555 0.6286

Columns 15 through 16
0.7407 0.957 1

Ahora construyamos las grficas correspondientes a la fbncin anterior y su transformada. Para ello utilizaremos las grficas a la vez. fbnciones subplot(22x) y stem, para poder visualizar todas las

))

subplot(22 1) stem(n,a) title('Parte REAL de y(n)'), xlabel('INDICE(n)') subplot(223) stem(n,b) title('Parte IMAGINARIA de y(n)'), xlabel('INDICE(n)') subplot(222) stem(n,w) title('Parte REAL de z(n) DFT'), xlabel('INDICE(k)') subplot(224)
stem(n,x)
titJe('Pwtr IMAGIWARId- de ?(E) DFT'), xlzhd(~1NDICE~k)')

))

))

)>

))

))

))

>)

))

>)

5)

PARTE REAL DE LA SEAL 1:


0.8 0.6

+
+ +

+
O

+ +
+
+

-0.4

1-

-0.61

-1

'

+
I

+
4-

+
10

15

1
0.8 0.6 0.4

+ +
+

PARTE IMAGINARIA
I

DE

SERAL
I

+ +

+
+

0.2 -

o"
-0.2 -0.4

-0.6 -0.8 -

+ +
I

I
i
!
I
4

-1

+
1

10

15

PARTE REAL DE DFT


I I

+
+

PARTE IMAGINARIA DE DFT


I

-6

FILTROS FIR

30

IV.

FILTRO FIR

a) FILTROSRIF Los filtros de respuestaa


impulso finita (RIF) son de realizacin no recursiva y son

siempre estables. La estructura bsica de un filtro (RIF) es una lnea de retrasos , como se muestra en la figura siguiente.

x[nI

z-

x[n-N+1]

En donde x[n] es la entrada del filtro y representa la muestra presente de la misma, x[n-i] son muestras pasadasde la entrada h[O] ...h[N-1] representan los coeficientes de l a respuesta
a impulso del filtro y y[n] es la salida del mismo.

Un mtodo para el diseo de un filtro pasa bajas es:


l . Se obtiene la frecuencia de corte 0, y escribimos l a respuesta en frecuencia como:

O, fuera del rango -n50 In

31

esto es, se ignoran por el momento, las caractersticas de fase lineal.

2. La funcin continua discreta es hpB=bn= del filtro.

para los valores del filtro FIR pasa bajas es

. La ecuacin

, n= O,

+ 1, k 2, ..., con la que se calculanloscoeficientes

3. Se truncan los coeficientes en +I trminos, lo cual nos da (21 +- 1) coeficientes del filtro.

hPB=

n= O,

+ 1, k 2? ...,+1

Donde h(O)=K8

El nmero de trminos usados se determina comparando las especificaciones del filtro con
las grficas de respuesta en frecuencia para diferente nmero de trminos.

4. Se desplaza hpB(n) a la derecha trminos, esto es para hacer el filtro causal,

lo cual

deja :

, n= O, 1, 2, ...,21

5. Disear el filtro digitalcon integrado.

un programa apropiado de computadora o un circuito

Precisamente este ltimo paso par el diseo de filtros digitales pasa bajas, recomienda el uso de un software, es en donde se ha hecho uso de Matlab.
b) Filtros FIILen MATLAB

en el que se

MATLAB un ambiente tcnico de computacin para alta ejecucin de cmputos numricos


y visualizacin. MATLAB integra anlisis numrico, cmputo de matrices, procesamiento

32

de seales, y grficas en un ambiente de fcil uso donde los problemas y soluciones son expresados justo como ellos son escritos matemticamente.

MATLAB cuenta con una familia de aplicaciones especficas que se llama toolbox. Una de las reas en que toolbox es disponible es en el de procesamiento de seales, quien agrega comandos para procesamiento de seales en una y dos dimensiones (tiempo - anlisis de series). Incluye funciones para el diseo y anlisis de filtros digitales y para la estimacin del espectro de potencia (anlisis FFT). Uno de los principales rasgos de MATLAB, es la de su posible extensibilidad, es decir que permite crear aplicaciones propias.

Por ejemplo nosotros hemos

desarrollado funciones (M-files) que satisfacen nuestras

necesidades particulares, como el M-file sampling(k,w,n), funcin con l a que se realiza el paso 2 para el diseo de filtros que se menciona arriba. En el toolbox de Procesamiento de Seales, MATLAB cuenta con funciones propias para el filtrado de datos, una de esas funciones es: y
= filter(b, a, x)

esta funcin filtra los datos del vector x con el filtro descrito por los vectores a y 6 , creando y. los datos filtrados de MATLAB provee los siguientescomentarios acerca de filter.

%FILTER

Digital filter.

YO

Y = FILTER(B, A,X) filters the data in vector X with the


filter described by vectors A and B to create the filtered data Y. The filter isa "Direct Form I1 Transposed" implementation of the standard difference equation:
=b ( l ) * x ( n )

Y
YO Y
34
%

y ( n )

+ b(2)*x(n-l) + ... + b(nb+l)*x(n-nb)

?6
%

- a(2)*y(n-l) - ... - a(na+l)*y(n-na)

33

%
%

[Y,Zfl = FILTER(B,A,X,Zi)givesaccess to initial and final


conditions, Z i and Zf, ofthe delays.

Y O
%

See alsoFILTFILT in the Signal Processing Toolbox.

% %

Copyright(c) 1984-94 by TheMathworks, Inc. Built-in function.

Considerando entonces la posibilidad que brinda MATLAB de utilizar sus funciones para aplicaciones especficas en este caso filter y de generar las propias, acorde a necesidades particulares, se realiz el siguiente programa.

c) Programa que utiliza la funcinfilter y sampling para filtrar tres seales.


una

Se realiz un programa (M-file) fpbfir en el que se filtran tresseales,utilizando

funcin sampling que permite calcular los coeficientes del filtro y la funcin filter que es parte del toolbox se de procesamiento de seales y con la que filtran las seales

mencionadas. Adems se realizaron seis M-files, tres para el despliegue de las seales de entrada y otros tres para el despliegue de las seales filtradas.

El siguiente cdigo corresponde la "file

de la hncin Sampling.

function y = sampling(k,w,n) ?'oEsta es una funcion que construyeuna SAMPLING en el tiempo %ysin#epara simuiar un fiitro pasabajas.
%
%y = sampling(k,w,n)

%
I

34

r%La ganancia del filtro esta dadopor k,


%la frecuencia de corte (rad/s) por w y

%n el numero de muestras.

%w debe ser menor a pi debido al Teorema del Muestreo.


%Aqui el periodo de muestre0 es 1 segundo.

a il

= [ 1 :2*n+l]; = n;

i2 = n+2;

a(n+l) = (k*w)/pi; %Calcula el valor central de la SAMPLING.

for i = 1 :n a(i2) = (k*sin(w*i))/(pi*i); a(i 1) = a(i2); i2 = i2+1;


i l = il-1;

end

y = a;
stem(y); title('Funcion SAMPLING'); xlabel('Tiempo');
I

ylabel('Amp1itud');

El siguiente cdigo es el programa que simula un filtro FIR pasabajas utilizando la funcin
filter.
_-___

?,Ests es un programa que simula un Filtro FIR Pasabajas:


%El metodo utilizado para calcular los coeficientes del filtro

?/oesel de Serie de Fourier.

35

'Se calculan los coeficientesde una Sampling en el tiempo, 6ya que el espectro en frecuenciade esta sena1 es un Rectangulo, 610 cual se aproxima a un filtro ideal.

'Los datos se filtran haciendo uso de la hncion ''filter'' de MATLAB.


42;
1=

input(' Dame el numero de muestras, n = '); Dame la ganancia del filtro, k =


I);

= input('

v = input(' Dame la frecuencia de corte (menor a pi), w = ');

= sampling(k,w,n);

%Se calculan los coeficientes de la Sampling.

I = [1

zeros( 1,2*n)];

; = [ 1 :(2*n)+ 13;

:1 = t;

$1 = sin(2*w*t); $2= sin(0.5*w*t); uido = rand(size(t)); $3= s2+ruido;

q1 = filter(b,a,sl); %Filtra

las 3 senales.

q2 = filter(b,a,s2);

~3 = filter(b,a,s3);
:h,frec] = freqz(b,a,64);
nag = abs(h);

'ase = angle(h);

%Abre una ventana y genera varios menus para visualizar


%los resultados.

36

11 =

figure('Name','Simulacion de un Filtro Pasabajas FIR','MenuBar', 'None');

nenu 1 = uimenu('label','Ver senal'); uimenu(menu1 ,'Label','sl =sen2wt','callback','grafica4'); uimenu(menu 1,'Label','s2=sen0.8wt','callback"grafica5'); uimenu(menu 1 ,'Label','s3=s2+ruido','callback','grafica6'); nenu2 = uimenu('Label','Ver senal filtrada');

uimenu(menu2,'Label','Filtrar S l','callback','grafical');
uimenu(menu2,'Label','Filtrar s2','callback','grafica2');

uimenu(menu2,'Label','Filtrars3','callback','grafica3');
nenu3 = uimenu('Label','Ver respuesta del filtro');

uimenu(menu3,'Label','Magnitud','callback','magfir');

uimenu(menu3,'Label','Fase','callback','fasefir');
El siguiente cdigo corresponde al utilizado para l a construccin de las graficas correspondientes al filtro FIR pasabajas.

plot(tl,yl,t,sl,'-

-I);

xlabel('Tiempo'); ylabel('Amp1itud'); title('Sena1 S I filtrada');

-1.5

10

15

20 25 Tiempo

30

35

40

45

s2 = sen(0.8wt)

-1

' O

\ I
, I

10

15

20 25 Tiempo

30

35

40

45

s3 = sen(0.8wt) + ruido

1.51

't
i
-1

'

10

15

20 25 Tiempo

30

35

40

45

Respuesta del Filtro


\

Ii( '

O
U

-1

-3

-2i :I'
O

-4

'

0.5

1.5 2 Frecuencia

2.5

3.5

O O

O.5

1.5 2 Frecuencia

2.5

3.5

45

a) Programa que utiliza la funcinfft y sampling para filtrar tres seales.

Se realiz un programa (M-file) fpbfir2 en el que se filtran tres seales, utilizando un fncin sampling que permite calcular los coeficientes del filtro y la funcin fft que es parte del toolbox de procesamiento de seales y con la que se filtran las seales mencionadas. Adems se realizaron ocho "files, tres para el despliegue de las seales de entrada, otros tres para el despliegue de las seales filtradas, uno para la magnitud y otro para la fase.

En el siguiente cuadro se muestran el "files

fpbfirt.

%Este es un programa que simula un Filtro FIR Pasabajas. %El metodo utilizado para calcular los coeficientes del filtro %es el de Serie de Fourier. %Se calculan los coeficientes de una Sampling en el tiempo, %ya que el espectro en frecuencia de esta seaal es un Rectangulo,
%lo cual se aproxima a un filtro ideal.

%Los datos se filtran haciendo uso de la FFT.

k = input(' Dame la ganancia del filtro, k =

I);

w = input(' Dame la frecuencia de corte (menor a pi), w = ');

b = sampling(k,w,n); %Se calculan los coeficientes de l a Sampling.

t l = t;
S I = sin(2*w*t);

46

:2 = sin(0.5*w*t); uido = rand(size(t)); ;3 = s2+ruido;

1 = ffi(s 1); %Calcula las FFT de cada senal.

$2 = fft(s2);

;3 = fft(s3);

= ffi(b);

%Calcula la FFT del filtro.

Y1 = B.*Sl;
Y2 = B.*S2;

%Filtra las 3 seaales.

Y3 = B.*S3;

s l f = ifft(Y 1); %Obtiene la IFFT de cada seaal filtrada.

52f = ifft(Y2); j3f = iffi(Y3);

y1

= real(s1f);

%Obtiene la parte real de las IFFT.

y2 = real(s2f);
y3 = real(s3f);

[h,frec] = freqz(b,a,64); mag = abs(h); fase = angle(h);

%Abre una ventana y genera varios menus para visualizar % m resultados.


"

h 1 = figure('Name','Simulacion de un Filtro Pasabajas FIR','MenuBar', 'None');

41

menu 1 = uimenu('label','Ver senal'); uimenu(menu 1,'Label','s 1=~en2wt','callback','grafica4'); uimenu(menu1 ,'Label','s2=sen0.8wt','callback','graficaS); uimenu(menu I ,'Label','s3=s2+ruido','callback"grafica6');

menu2 = uimenu('Label','Ver senal filtrada');

uimenu(menu2,'Label','Filtrar sl','callback','grafical'); uimenu(menuZ,'Label','Filtrar s2','callback','grafica2'); uimenu(menuZ,'Label','Filtrar s3','callback','grafica3');


menu3 = uimenu('Label','Ver respuesta del filtro');

uimenu(menu3,'Label','Magnitud','callbac~,'magfir');
uimenu(menu3,'Label','Fase','calIback','fasefir');

Un ejemplo de fpbfir2 es el siguiente: Dame el numero de muestras, n = 20 Dame la ganancia del filtro,k = 1 Dame la frecuencia de corte (menor ap i ) , w = pi/4

A continuacin se muestran las grficas.

1-

Sena1 S ? filtrada

0.8 0.6 0.4 -

" r -

i
.

0.2 -

E" <

D 3 U .-

O-

, . .

-0.2 -0.4 --0.6 -

/'
I

-0.8 -

-1

15

20

Tiempo

1
__i

I
I

30

35

0.6 -

0.40.2 -

E" Q

U 3 .CI

0-

-0.2 -0.4

-0.6 -0.8 -

1.2

Respuesta del Filtro


I I

0.8 U

.-

E0.6 -

CI

<
0.4-

0.2
-

O
Frecuencia
3.5

i
1

i
1.I S
1

-4 L O 0.5

2 Frecuencia

2.5

3 I

3.5

S3

a) Programa que utilizala funcion canv y sampling para filtrar tres seales.

Se realiz un programa ("file)

fpbfir3 en el que se filtran tres seales, utilizando un

funcin sampling que permite calcular los coeficientes del filtro y la hncin conv que es parte del toolbox de procesamientode seales y con la que sefiltran las seales mencionadas. Adems se realizaron ocho M-files, tres para el despliegue de lasseales de entrada, otros trespara el despliegue de las seales filtradas, uno para la amplitud y otro para la fase.

En el siguiente cuadrose muestran el M-files fpbfi~-3.


cS/oEstees un programa que simulaun Filtro FIR Pasabajas.
%El metodo utilizado para calcular los coeficientes del filtro

%es el de Serie deFourier. %Se calculan los coeficientes de una Sampling en el tiempo, %ya que el espectro en frecuencia de esta seaal es un Rectangulo, %lo cual se aproxima a un filtro ideal.

%Los datos se filtranhaciendo uso de la convoluci#n con CONV.


clc;

n = input(' Dame el numero de muestras, n =


k = input(' Dame la ganancia del filtro, k = I);

I);

w = input(' Dame la frecuencia decorte (menor a pi), w = I);


b
= sampling(k,w,n);

%Se calculan los coeficientes de l a Sampling.

a - [ 1 Lelos( i,2*11)j;
t = [ 1 :(Z"n)+l j .

t 1 = [ i :2*length(t)- 11;

sl

= sin(2*w*t);

54

2 = sin(OS*w*t);
uido = rand(size(t));
3 = s2+ruido;

rl

= conv(b,sl);

~2= conv(b,s2);
r 3 = conv(b,s3);

h,frec] = freqz(b,a,64);
nag = abs(h);
'ase = angle(h);

%Abre una ventana y genera varios menus para visualizar Y01osresultados.

11

= figure('Name','Simulacion

de un Filtro Pasabajas FIR','MenuBar', 'None');

nenu 1 = uimenu('label','Ver senal'); uimenu(menu 1 ,'Label','s 1=sen2wt','callback','grafica4'); uimenu(menu1 ,'Label','s2=sen0.8wt','callback','grafica5'); uimenu(menu 1,'Label','s3=s2+ruido','callback','grafica6');

nenu2 = uimenu('Label','Ver senal filtrada');

uimenu(menu2,'Label','FiltrarS l','callback','grafical');
uimenu(menu2,'Label','Filtrars2','callback','~rafca2'); uimenu(menu2,'Label','Filtrar s3','callback','grafca3');
nenu3 = uimenu('Label','Ver respuesta dei filtro');

uimenu(menu3,'Label','Magnitud','callback','magfir');
ui1nenu(menu3,'Label','Fase','callback',r');

55

Un ejemplo de fpbfir3 es el siguiente:

Dame el numero de muestras, n = 20 Dame la ganancia del filtro,k = 1 Dame la frecuencia de corte (menor a pi), w = pi/4

A continuacin se muestran las grficas.

O.5

-1.5

10

20

30

40 50 Tiempo

60

70

80

1
90

-1

'

10

20

30

40 50 Tiempo

60

70

80

90

1.;

1:

Respuesta del Filtro


I

0.8

0.21

O' O

O.5

J . w

1.5 2 Frecuencia

2.5

3.5

Respuesta del Filtro


I
I

1
I

"a
-1 -4

i
I

i
1
I

O.5

1.5

2 Frecuencia

2.5

3 I

J
3.5

61

CONCLUSIONES
Al final de este trabajo hemos podido relacionar las herramientas que ofrece MATLAB, con los contenidos que se abordan en el curso de Comunicaciones I, que se imparte en esta Universidad, por lo cual podemos afirmar que: MATLABofrece un ambiente bastante amigable para simulardiferentesseales,a

travs del uso de vectores. Adems cuenta con herramientas que permiten ilustrar al teorema de muestreo, as que se puede observar en formagrfica la forma en que un seal es muestreada. Por otro lado cuenta con hnciones como CONV, que permite realizar la operacin de convolucin entre diferentesseales, y observar en forma grfica esta operacin. MATLAB, ofrece una funcin para uno de los algoritmos ms utilizados en el

procesamiento de seales, como es el de la TransformadaDiscreta de Fouriery su versin rpida Transformada Rpida de Fourier, con la que se pueden realizar clculos rpidos y las grficascorrespondientes. Otra funcin til es la de filter, la cual simula un filtro, y que nosotros utilizamos para simular un filtro FIR pasabajas, para filtrar diferentes seales; esta simulacin se realiz desarrollando un programa en el lenguaje que ofrece MATLAB. Adems se programaron dos filtros similares, slo que en uno se utiliz convolucin
CONV y en otro Transformada Discreta de Fourier ffi, con lo que se pudo compararel

uso de filter y estas otras dosherramientas. Obtenindose resultados similares.


Tambin se program la funcin SAMPLING, que fue de mucha utilidad al simular el
filtro FIR pasabajas.

MATLAB,permiteobservar

las seales tanto enel dominiodeltiempocomo

en la

frecuencia, con lo que la exploracin de seales se hacems completa. Finalmente,consideramosqueMATLAB del ilustrar los contenidos es una muy buena herramienta,quepermite

curso de Comunicaciones

I, por lo que creemos que los

estudiantes que cursan esta materia, debieran usarla para desarrollar un mejor entendimiento de este curso, a travs de prcticas que puedan ser propuestas con anterioridad.

62

BIBLIOGFUFIA

BARRIOS, Romano Jess. Introduccin a los filtros digitales Libros de texto y manuales de prctica UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD IZTAPALAPA 1992 BURRUS, C. Sidney. Computer-Based Exercises for Signal Processing Using MATLAB, PRENTICE HALL, Englewood Cliffs, New Jersey 1994 LELAND, B. Jackson. Digital Filters and Sienal Processin? with MATLAB Editorial Kluwer Academic Publishers Tercera edicin 1996

YAEZ, Surez Oscar. Procesamiento Digital de seales,


Libros de texto y manuales de prctica UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD IZTAPALAPA
1992

MATLAB Users Guide for Microsoft Windows The Mathworks, Inc. February 1993

APENDICE

63

USANDO MATLAB

clculos matemticos. MATLAB es una herramienta para hacer programacinamigablecon

Es un lenguaje de

el usuario con caractersticasmuyavanzadasymuchoms

fcil de usar quelos lenguajes de computadoras tales como BASIC, Pascalo C. Anlogamentea la mayora de las calculadoras cientficas, MATLAB ofrecemuchas

fimciones importantes comunes alas matemticas, a la ingeniera y las ciencias.

El tipo de dato central de MATLAB es el array. Para crear un array en MATLAB todo lo
que tiene que hacerescomenzarcon un corchete de apertura,introducir

los valores

deseados separados por espacios (o por comas) y luego cerrar el array con un corchete de cierre. Por ejemplo: para crear un array llamado x con 11 elementos para dividiruna longitud de pi unidades entre diez tenemos:
>> x=[.l*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi]

En MATLAB, los elementos individuales de un array se accesan utilizando subindices, P.e., x ( 1) es el primer elemento en x, x(2) es el segundo elemento en x, etctera. La funcin plot de MATLAB es extremadamente poderosa. Automticamente escoge los lmites de los ejes, marca los puntos individuales y dibuja lneas rectas entre ellos.
Las

opciones de l a orden plot permiten hacer grficas de mltiple conjuntos de datos sobre los mismosejes, usar diferentestipos de lneas tales comopunteadasya trazos, marcar

simplemente los puntossindibujar curvas.

lneas entre ellos o usardiferentescoloresparalas

Adems puede colocar etiquetas sobre los ejes, un ttulo en la cabecera, dibujar una rejilla, etctera. Por ejempio: Se crean 30 puntos entre O y 2*pi:

64

>>x=linespace(0,2*pi730);
Se calcula la funcin senode los puntos en x:

>>y=sin(x); La orden plot genera una grfica:

"Plot(x,Y); Para problemas simples, introducir las preguntas en la lnea de rdenes de MATLAB es rpido y eficiente. Sin embargo, cuando aumenta el nmero de rdenes o, en el caso en que se desee cambiar el valor de una o ms variables y reevaluar una serie de rdenes, escribir en la lnea de rdenes de MATLAB se hace tedioso.
MATLAB proporciona una solucin lgica a este problema. Permite colocar rdenes de MATLAB en un simple archivo de texto y a continuacin decirle a MATLAB que lo abra

y evale las rdenes exactamente como si hubiesen sido escritas desde la lnea de rden de
MATLAB. Estos archivos se llaman script o archivos -M.El trmino archivo-M reconoce

el hecho de que los nombres de losarchivos deben finalizar conlaextensin ejemplo, test.m.
FUNCIONES UTILIZADAS:
fft : Trarzsformada Rpida deFourier 1-D.

'm', por

y=fft(x) es la transformada de Fourier discreta del vector x, calculada con un algoritmo de transformada rpida de Fourier (FFT).
ifft : TI-ansforkada Inversa deFozir-ier.

y=ifft(x) es la transformada inversa rpida de Fourier del vector x.

65

filter : Filtrar datos con un filtro de respuesta infinita a un impulso (IIR) o con un filtro de

respuesta finita a un impulso (FIR). vector x con el vector descrito por el vector

y=filter(b,a,x) filtra los datos del

b de los

coeficientes del numerador y el vector a de los coeficientes del denominador para crear el vector y con los datos filtrados. Si a( 1 ) = 1, filter normaliza los coeficientes del filtro por a( 1). Si a( 1)=0, filter devuelve un error.

La operacin filter (filtrado) en el muestre0 m est dada por las ecuaciones en diferencias en el dominio temporal

y(m)=b( 1)x(m)+zl (m- 1) z l (m)=b(2)x(m)+z2(m- l)-a(2)y(m)

conv : Convolttcidn y multiplicacin depolinomios.

c=conv(a,b) realiza la convolucin de los vectores a y b. La convolucin puede verse como la multiplicacin de los polinomios cuyos coeficientes son los elementos de a y b ya que, algebraicamente, es la misma operacin. freqz :Respuesta en frecuencia dejiltros digitales.

Devuelve l a respuesta en frecuencia compleja h(expjw) de un filtro digitaldandolos coeficientes del numerador ydel denominador en los vectores b y a.
abs : Valor absoluto.

66

y=abs(x) devuelve el valor absoluto de cada uno de los elementos de x. Si x es complejo, abs(x) devuelve el m6dulo complejo (magnitud).
angle: ngulo defase.

angle(z) devuelve el ngulo de fase, en radianes, de los elementos de la matriz compleja z.


Los ngulos estn entre -pi y pi.

Você também pode gostar