Está en la página 1de 76

UNIVERSIDAD AUTONOMA METROPOLITANA

(1.-

$3L

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

11.

CONVOLUCI~N
a) Convolucin en MATLAB

11

111.

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

18

IV.

FILTROS FIR
a)FILTROSRIF
b) Filtros FIR en MATLAB
c) Programa que utilizala funcinfilter y sampling para filtrar tres seales
d) Programa que utiliza la funcinffty sumpling para filtrar tressefiales
e) Programa que utiliza la funcin conv y sampling para filtrar tres seales

30

CONCLUSIONES

61

BIBLIOGRAFA

62

APNDICE

63

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 quelosestudiantes

de carrerasafines,contemplenensuformacincomo

profesionales el estudio de este tema tan central.

Hoy en da no se requiere buscar muy

lejosparaencontrarquemuchosdelosaparatoselectrnicosquenosrodeanestn
controlados por una lgica digital, por ejemplo
soncasosclaros

los sensores de movimiento, temperatura,

de cmo la. informacih que provienedelmedioambiente

procesada(digitalizada)

debe ser

de tal formaquelosdispasitivosdigitalesactuales(como

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)

FILTROSFIR

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

can elapoyo de este

de mis tiempoyesfuerzo,as
de grficasresultamucho

ms inmediato,locual

permite hacer exploraciones que pueden promover un mejor entendimiento de lo que se


estrealizando,adems

de que conforme se vayaavanzandopermiteaplicacionesms

rpidas al estudiante.

El formato general del presente documento, es hacer una muy breve


introduccih terica de
cada tema, y enseguida una descripcin
de la formaen que dicho tpico puedeser abordado
en MATLAB con apoyode lasfunciones que ste provee.

Unaaplicacin

quese

muestraes

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 medianteel 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

mayor

profundidad al respecto, se recomienda acudir al manual del usuario.

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

o ninguna

informacin se perder.

son relacionadas

Idealmente,lasealoriginalxc(t)ylasecuenciamuestreadax(n)
simplemente por
x(n) = x,(nT)

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 laDTFT ~ ( 2 " con


) o = n ~que, implica la relacin CTFT/DTFT

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

o alternativamente

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

Se requiere ahorarelacionarel

original X,(in) antes de muestrearlo.

La relacin CTFT correspondiente est dadapor la convolucin

con

P(jQ) = a,

cs
m

(Q -m,)

k=-m

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

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


*

o equivalentemente

Estaltimaecuacinmuestracomo

la

esperidica

con periodo 2n, estoimplica

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

sermanifestadocomo

+ Znk

ok=o,

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

para todos los valores diferentes de cero del entero k. Esto es, que cada

componente de entrada A&'

en xc(t) producir componentes A'e'"'' en x(n) para toda k,

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

coo

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

"aliasing", cada componente en frecuencia

de

X,(js2) deber

satisfacer la condicin

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.

Enotraspalabras,paramuestrearunasealanalgica

h(t), sin

"aliasing", la razn de muestreo o frecuencia Qs, debe exceder dos veces elancho de banda

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

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 porciclo.
x=cos(2*pi*n/32);
plot(n,x);
title('Sena1 a muestrear');
pause;
%Se obtiene la respuestaen 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 muestraspor 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;

:lose;

Tren de impulsos

40

80

1 O0

120

101
I

50

401
20

OI

-10 I
-1

r
I

-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

x(k)h(n - k )

y ( n )=
k=-oa

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

c
m

y(n)=

x(n - k)h(k)

k=-m

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 descritaen 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

Columns 13 through 24
1

Columns 25 through 36
1

Columns 37 through 48
0

Columns 49 through 50
O

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

15

))

plot(n,p,'+')

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

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

(3.7r

0.4

C.2 1
I

I
I

G . ? ;i

0'
0

13

15

Seal p convolucionada con ella misma

30

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

1.:

77 :
:
O

10

30

40

20

50

60

1
70

ttk
90
90

1O0

FFT

18

111.

TRANSFORMADADISCRETA DE FOURIER

La serie y transformada de Fourier handesempeadoun

papel importante en la

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


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

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

calculado y la frecuencia real f se le conoce como fkecuencia

escalada. Por ejemplo:


k=O -+ O Hz, DC (la frecuenciamenor)

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

A la

20

Salida

Interpretacin
La hncin escalnen el dominio del tiempo tiene una gananciaen

el dominio de la

frecuencia de 1 en O Hz.

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(2)=. 1 .o00

x(3)=..707

x(4)=.000

x(5)=.707

x(6)=. 1O00

x(7)=.707

fs=l Hz

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 queeliminan 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

InversediscreteFouriertransform.
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.

n=[O: 151

1=

Columns 1 through 12
O

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.327210.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

de seales y sus

24

Columns 9 through 12
-0.8893 + 0.4573i -0.9900 + 0.141 l i -0.9817 - 0.1906i -0.8653

- 0.5013i

Columns 13 through 16
-0.6536 - 0.75681 -0.3700 - 0.92901 -0.0457 - 0.99901 0.2837

- 0.95891

Y entonces se calcula la fft de dicha funcin.


z=fft(y)
-

Columns 1 through 4
-2.2083 + 1.64961 13.9054

- 6.6357i

1.9775 - 0.5026i 1.1 139 - 0.0586i

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

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

1.1 13V

0.7803

0.5923 0.4637

Columns 8 through 14
0.3636 0.2775
0.1970

Columns 15 through 16

0.1 156 0.0263 -0.0804


-0.2225

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

fbnciones subplot(22x) y stem, para poder visualizar todas las

grficas a la vez.

))

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)

5)

titJe('Pwtr IMAGIWARId- de ?(E) DFT'), xlzhd(~1NDICE~k)')

PARTE REAL DE LA SEAL


1:

0.8
0.6

+
+

+
O

1-

-0.4

-0.61

-1

'

+
I

4-

10

15

SERAL
I

0.6 -

0.4-

0.8 -

DE

PARTE
IMAGINARIA

+
+

0.2 -

o"
-0.2 -

-0.4-

-0.6 -

-0.8 -

I
4

-1

10

I
1

15

PARTE REAL DE DFT


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

x[n-N+1]

z-

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] esla 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.

para los valores del filtro FIR pasa bajas es

2. Lafuncincontinua

, n= O,

discreta es hpB=bn=

. La ecuacin

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

del filtro.
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 derespuesta en frecuencia para diferentenmero 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

un programa apropiado de computadora o un circuito

integrado.

Precisamente este ltimo paso par el diseo de filtros digitales pasa bajas,

en el que se

recomienda el uso de un software, es en donde se ha hecho uso de Matlab.


b) Filtros FIILen MATLAB

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 ejemplonosotroshemos

desarrollado funciones (M-files) que satisfacennuestras

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

YO

data Y. The filter isa "Direct Form I1 Transposed"

implementation of the standard difference equation:

34
%

?6
%

y(n)

= b(l)*x(n)

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

- 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.

YO
%

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.

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

una

funcin sampling que permite calcular los coeficientes del filtro y la funcin filter que es
partedeltoolbox

de procesamiento de seales y con la quese

filtranlasseales

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 delfiltro esta dadopor k,


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

%n el numero de muestras.

%w debe ser menor api debido al Teorema del Muestreo.


%Aqui el periodo de muestre0 es 1 segundo.

= [ 1 :2*n+l];

il

= 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 unfiltro ideal.

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


42;
1=

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

= input('

Dame la ganancia del filtro, k =

I);

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

= sampling(k,w,n);

I = [1

%Se calculan los coeficientes de la Sampling.

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 ygenera 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 correspondeal 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

'
O

s2 = sen(0.8wt)

\ I
,

-1

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


I

Ii( '

O
U

-1

-2i:I'

-3

-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.

fpbfirt.

En el siguiente cuadrose muestran el "files

%Este es 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 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;

%Filtra las 3 seaales.

Y2 = B.*S2;

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 api), w = pi/4

A continuacin se muestran las grficas.

Sena1 S ? filtrada

1-

0.8 -

"r-

0.6 -

0.4 -

0.2 D
3
U
.-

E"
<

O-

..,-

/'

-0.2 -0.4 --0.6 -

-0.8 -

-1

15

20

Tiempo

__i

30

35

0.6 -

0.40.2 U
3
.-

CI

E"
Q

0-

-0.2 -

-0.4-0.6 -0.8 -

1.2

Respuesta del Filtro


I

0.8 U

.-

CI

E0.6 E

<
0.4-

0.2
-

O
Frecuencia

3.5

-4 L
O
0.5

i
1

1.I S

2
Frecuencia

2.5

3I

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 sealesfiltradas, 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 =

I);

k = input(' Dame la ganancia del filtro, k = 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 ventanay 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.;

Respuesta del Filtro

1:

0.8

0.21

O'
O

O.5

J
.
w

1.5
2
Frecuencia

2.5

3.5

Respuesta del Filtro

"a

-1

I
-4

O.5

1.5

2
Frecuencia

2.5

3I

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 delos

algoritmosmsutilizados

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 simulacinse 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 laexploracin de seales se hacems completa.


Finalmente,consideramosqueMATLAB
ilustrar los contenidosdel

es una muy buena herramienta,quepermite

curso deComunicaciones

I, por lo quecreemosquelos

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

62

BIBLIOGFUFIA

BARRIOS, Romano Jess. Introduccin a los filtros digitales


Libros de texto y manuales de prctica
UNIVERSIDAD AUTONOMAMETROPOLITANAUNIDAD
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
UNIVERSIDADAUTONOMAMETROPOLITANAUNIDAD
IZTAPALAPA
1992

MATLAB Users Guide


for Microsoft Windows
The Mathworks, Inc.
February 1993

APENDICE

63

USANDO MATLAB
MATLAB es una herramienta para hacerclculosmatemticos.

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

simplemente los puntossindibujar

de lneas tales comopunteadasya

trazos, marcar

lneas entre ellos o usardiferentescoloresparalas

curvas.
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 deMATLAB 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 comosi 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

'm', por

ejemplo, test.m.
FUNCIONES UTILIZADAS:
fft : Trarzsformada Rpida deFourier 1-D.

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).

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

vector x con el vector descrito por el vector

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.

También podría gustarte