universidad autonoma metropolitana $3 l (1.-148.206.53.84/tesiuami/uam1119.pdf · "uso de...

76
UNIVERSIDAD AUTONOMA METROPOLITANA I . . , (1.- $3 L ETAPALAPA ,. . REPORTE FINAL DEL PROYECTO TERMINAL "USO DE MATLAB. EN TRANSFORMmA DE FOURIER, CONVOLUCIÓN Y FILTROS FIR"' . . PROFR. FAUSTO CASCO SANCHEZ ALUMNOS: CRUZ OLIVA VALENT~N GARCÍA TRINIDAD ANDRÉS

Upload: nguyenhanh

Post on 02-Oct-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDAD AUTONOMA METROPOLITANA I .

. , (1.- $3 L

ETAPALAPA ,. .

REPORTE FINAL DEL PROYECTO TERMINAL

"USO DE MATLAB. EN TRANSFORMmA DE FOURIER,

CONVOLUCIÓN Y FILTROS FIR"' . .

PROFR. FAUSTO CASCO SANCHEZ

ALUMNOS:

CRUZ OLIVA VALENT~N GARCÍA TRINIDAD ANDRÉS

INDICE

INTRODUCCION

I.

11.

111.

IV.

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

CONVOLUCI~N a) Convolución en MATLAB

FFT a) Transformada de Fourier b) Transformada Discreta de Fourier c) Ejemplo numérico de una función escalón usando la DFT d) Ejemplo para una función senoidal de O. 125 Hz usando DFT e) Características de la Transformada Discreta de Fourier f) Transformada Rápida de Fomier (FFT) g) Transformada de Fourier en MATLAB

11

18

FILTROS FIR a) FILTROS RIF b) Filtros FIR en MATLAB c) Programa que utiliza la funciónfilter y sampling para filtrar tres señales d) Programa que utiliza la funciónfft y sumpling para filtrar tres sefiales e) Programa que utiliza la función conv y sampling para filtrar tres señales

CONCLUSIONES

BIBLIOGRAFÍA

APÉNDICE

30

61

62

63

1.

INTRODUCCION

El Procesamiento de Señales Digitales, es uno de los temas fimdamentales en la Ingeniería

Electrónica actual, con el advenimiento de la electrónica digital, se ha hecho por demás

necesario que los estudiantes de carreras afines, contemplen en su formación como

profesionales el estudio de este tema tan central. Hoy en día no se requiere buscar muy

lejos para encontrar que muchos de los aparatos electrónicos que nos rodean están

controlados por una lógica digital, por ejemplo los sensores de movimiento, temperatura,

son casos claros de cómo la. informacih que proviene del medio ambiente debe ser

procesada (digitalizada) de tal forma que los dispasitivos digitales actuales (como

computadoras) sean capaces de procesar dicha información 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

tópico tan importante, los cuales además son parte de la curricula que cubren cursos como

el de Comunicaciones I que se imparte en nuestra Universidad Autónoma Metropolitana de

Iztapalapa, y que sirven como inicio a una parte del estudio de procesamiento de señales

digitales. Tales temas son:

0 MUESTRE0

0 CONVOLUCION

o TRANSFORMADA DISCRETA DE FOURIER (DFT)

o TRANSFORMABA RAPIDA DE FOURIER (FFT)

0 FILTROS FIR

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 además cuenta con TOOLBOX específico

para el procesamiento de señales, en donde se proporcionan funciones tales como: FFT,

CONV y FILTER, que permiten desarrollar algunas de las actividades que tradicionalmente

.. 11.

con lápiz y papel pueden requerir de mis tiempo y esfuerzo, así can el apoyo de este

paquete los cálculos y construcción de gráficas resulta mucho más inmediato, lo cual

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

está realizando, además de que conforme se vaya avanzando permite aplicaciones más

rápidas al estudiante.

El formato general del presente documento, es hacer una muy breve introduccih teórica de

cada tema, y enseguida una descripción de la forma en que dicho tópico puede ser abordado

en MATLAB con apoyo de las funciones que éste provee.

Una aplicación que se muestra es el diseño de filtros FIR, mediante una rutina de

programación, que es otra de las posibilidades que ofrece MATLAB, el diseño 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 apéndice en el que se hace una muy breve descripción del uso de las

herramientas de MATLAB que utilizamos en este proyecto, sin embargo, 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 permiten avanzar en el estudio del Procesamiento

Digital de Señales.

MUESTRE0

1

I. MUESTRE0

La mayoría de las señales usadas por ingenieros y científicos son originalmente continuas

en el tiempo o el espacio. Sí estas señalas van a ser procesadas usando computadoras

digitales, entonces estas señales deben ser convertidas de un formato continuo en el tiempo,

a uno que sea discreto en el tiempo, a través del muestreo, debido a que las computadoras

solo procesan sucesiones de números o símbolos. En general, como resultado del muestreo

alguna parte de la información se pierde, pero si la señal continua en el tiempo es limitada

en banda y la razón del muestreo es lo suficientemente alto, entonces poca o ninguna

información se perderá.

Idealmente, la señal original xc(t) y la secuencia muestreada x(n) son relacionadas

simplemente por

x(n) = x,(nT)

donde T es el período de muestreo, lo cual es asumido para propósitos prácticos.

El muestreo usual de una señal continua en el tiempo es el que G(t) es multiplicada por un

tren de impulso periódico p(t) con periodo T para producir la señal muestreada

x&) = xc0) PO)

donde

-m

y también

-m

Haciendo la CTFT de xs(t), y substituyendo x,(nT) = x(n), se tiene

2

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

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

o alternativamente

X(&" ) = X, (jo / T )

Se requiere ahora relacionar el espectro X,(jQ) después de muestreado con el espectro

original X,(in) antes de muestrearlo.

La relación CTFT correspondiente está dada por la convolución

con m

P(jQ) = a, cs (Q -m,) k=-m

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

combinando ecuaciones, podemos expresar la DTFT en términos de l a CTFT original

* m

o equivalentemente

Esta última ecuación muestra como la es periódica con periodo 2n, esto implica

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

será manifestado como w, =ROT radianes en el espectro X ( d w ) y también como - ok =o, + Znk 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

3

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 & ~ ~ T en el intervalo Nyquist I o ( < x .

En el último de los casos, se dice que ha ocurrido un "aliasing", y este efecto indeseable

debe ser evitado o minimizado.

a) Teorema del muestreo.

Sin embargo, para evitar "aliasing", cada componente en frecuencia de X,( js2) deberá

satisfacer la condición

IRoI<.nT,

la cual es una versión del conocido teorema del muestreo, también conocido como teorema

de Nyquist's o teorema Shannon's. Definiendo el ancho de banda de la señal original xc(t)

para ser f i b , esto es,

lnol<Rb,

para toda Ro, una versión alternativa del teorema del muestreo es simplemente,

Rs>2Rb ,

en donde Rs=2n/T. En otras palabras, para muestrear una señal analógica h(t), sin

"aliasing", la razón de muestreo o frecuencia Qs, debe exceder dos veces el ancho de banda

de la señal Rb. El límite más bajo 2Rb es conocido como la razón de Nyquist..

b) Teorema del muestreo en MATLAB

Con ayudas de MATLAB, es posible mostrar el teorema del muestreo, como a continuación

se ilustra con el siguiente programa y las gráficas que le corresponden.

%Este programa ilustra el Teorema del Muestreo I I disp('Este programa ilustra el Teorema del Muestreo con una sena1 coseno');

4

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 ;

5

title('Respuesta en frecuencia de la seaal muestreada (Ws=0.5 rad/s)');

pause;

:IC;

:lose;

1

Tren de impulsos

O

T

I

40

I E

80 I

1 O0 120 c

I

50 101 401 20

O r I

-10 I I 1 I I I -1 -0.8 -0.6 -0.4 -0.2

I

O I I I

0.2 0.4 0.6 O. 8 1

0.8

0.6 -

0.4 .-

0.2 --

O" -

-0.4 -O.';

-0.6 1

Respuesta 16 r

10

4

O )[

I

-2 ' I I I I

-1 -0.8 -0.6 -0.4 -0.2 I I

O 0.2 0.4 I -

0.6 O. 8 1

11. CONVOLL L. ~ Ó N

Si una sucesión x(n) es utilizada para producir otra sucesión y(n), se puede pensar en estas

sucesiones como la entrada y la salida respectivamente de un sistema discreto en el tiempo

o filtro, como se muestra en la figura.

Si x(n) y y(n) pueden asumir únicamente un número 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 un filtro discreto en el tiempo.

Una clase más importante de filtros son aquellos que son lineales e invariables en el tiempo

(LTI). Un filtro discreto en el tiempo, se dice que es lineal si, para cualquier par 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 sucesión de entrada

x(n) = axl(n) + bxz(n)

produce la sucesión de salida

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 sucesión 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 lineal invariable en el tiempo pueden ser

fácilmente relacionadas a través de la respuesta al impulso del filtro como sigue: Cualquier

entrada x(n) puede ser pensada como la suma de un número infinito de retardos y

sucesioness de impulsos, con el kth impulso 6(n -k) de x(k). Matemáticamente podemos

escribir esto como

m

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

m

y ( n ) = x(k )h(n - k ) k=-oa

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

tiempo. La cual puede también escribirse como

m

y(n) = c x(n - k)h(k) k=-m

Generalmente se utiliza el símbolo * para denotar convolución, y entonces

Además la operación de convolución es conmutativa, por lo que

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

13

también es asociativa y distributiva, por lo que

otra relación ú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) Convolución en MATLAB

MATLAB cuenta con una función que permite realizar la operación de convolución entre

dos señales. 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í de esta forma podemos utilizar está operación en MATLAB para probar algunos

aspectos teóricos que se estudian en la materia de Comunicaciones I.

Ejemplo utilizando MATLAB:

Primeramente se define un vector de n puntos

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 15 16 17 18 19 20 21 22 23 24

Columns 25 through 36

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

Columns 37 through 48

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

Columns 49 through 50

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 gráficamente a p y otras como se muestra a continuación.

15

I____] )) plot(n,p,'+')

Sí ahora convolucionamos a p con ella misma, entonces observamos la siguiente gráfica

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

í

(3.7 r

I

0.4

C.2 1 i

I I I

I I

G . ? ; i i

I

0 ' 0 5 13 15

I I

1

Señal p convolucionada con ella misma 30 I I I

I I I I I I I ++ 1.: + +

+ +

+ +

+ 20

+ +

+ +

+ 15-

+ +

+ +

+ +

10 - + +

+ +

7 : +

l l

O O 10 20 30

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

ttk 90

1.: + + + + + +

+ + + +

+ + + +

+ + + + 20

+ + + + +

+ + 15- + +

+ + + +

+ + + +

10 - + + + +

+ + + +

+

7 : + + + +

+ + + +

O I I I I + O 10 20 I

30 40 50 60 1 70 90 1 O0

FFT

18

111. TRANSFORMADA DISCRETA DE FOURIER

La serie y transformada de Fourier han desempeñado un papel importante en la

representación de señales y en el análisis de sistemas lineales en el mundo analógico. Con

el auge de las computadoras y las posibilidades que brindan para el diseño de algoritmos, se

hizo necesario más que necesario extender el uso de este tipo de herramientas matemáticas

al mundo discreto.

a) Transformada de Fourier

La transformada de Fourier convierte una función continua en el tiempo a una función

continua en frecuencia, y es una relación compleja

+co

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

Parte Real:

Ganancia:

Fase:

b) Transformada Disrret~ de Frurier

La Transformada Discreta de Fourier convierte una función discreta en el tiempo a una

función discreta en frecuencia, y también constituye una relación compleja:

19

1 N - 1

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

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 términos en el dominio de la frecuencia R(k), I(k), G(k), P(k),

desde k=O hasta N-l. El k-ésimo término corresponderá a la frecuencia fs*k/N. A la

relación entre el término k calculado y la frecuencia real f se le conoce como fkecuencia

escalada. Por ejemplo:

k=O -+ O Hz, DC (la frecuencia menor)

k= 1 -+ fs* 1/N Hz (la frecuencia de la resolución)

k=2 + fs*2/N Hz

k=N- 1 -+ fs*(N- 1)/Hz (la frecuencia más grande)

c) Ejemplo numérico de una función escalón 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= 1 Hz

20

Salida

3

Interpretación

La hnción escalón en el dominio del tiempo tiene una ganancia en el dominio de la

frecuencia de 1 en O Hz.

d) Ejemplo para una función senoidal de 0.125 Hz usando DFT

Para k=O hasta N-I

Entrada

N=8

x(0)=.000

x(4)=.000

fs=l Hz

x( 1)=.707

x(5)=.707

x(2)=. 1 .o00

x(6)=. 1 O00

x(3)=..707

x(7)=.707

21

Salida

Interpretación

La hnción 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. La fase resulta de operaciones con

números complejos y representa el tiempo de adelanto y de retraso tanto en las señales de

entrada como de salida.

e) Características de la 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 número limitado de muestras.

El resultado de la DFT siempre es equivalente a l resultado de la Transformada Rápida

de Fourier (FFT), salvo que ésta última tendrá 2" muestras, donde n es un entero.

L a entrada de la DFT es periódica, por definición cada n*dt segundos, debido al número

limitado de muestras, sin embargo, no es posible obtener un resultado correcto de la

DFT de una señal no periódica.

22

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

Hz. 0 A mayor número de muestras (N), se obtendrá un mejor resultado de la DFT.

f) Transformada Rápida de Fourier (FFT)

La FFT es simplemente la DFT optimizada para cálculos rápidos. La única limitación es

que en l a FFT el número de datos a la entrada en el dominio del tiempo deberá ser una

potencia de 2, esto es 2", donde n es un número entero. Esto permite que el algoritmo de la

FFT utilice métodos indexados que eliminan una gran cantidad de cálculos 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 partir de los datos en el dominio del tiempo.

La FFT puede también ser utilizada para medir la respuesta en frecuencia de la señal de

entrada o de salida del filtro digital.

g) Transformada de Fourier en MATLAB

En MATLAB existe una fimción que permite el cálculo de l a Transformada Rápida de

Fourier, la cual a continuación 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 algorithm is 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 matemática es de gran utilidad en e1

procesamiento de señales. Además recordemos que la FFT es un algoritmo que permite

23

computar más rápido la DFT. En MATLAB, la función fft es utilizada para calcular la

DFT; aquí no existe una función dft. Similamente l a función ifft es utilizada para calcular

la inversa de DFT. Por consiguiente se usaran de manera indistinta los términos DFT y

FFT.

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

Un ejemplo en el que se encuentre la DFT de algunas señales más comunes -se muestra a

continuación. Con MATLAB es bastante accesible construir las gráficas de señales y sus

transformadas.

Primera mente se declara un vector de valores discretos.

1

b 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

Enseguida se declara la función 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 - 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 función.

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 continuación.

o 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 0.1 156 0.0263 -0.0804 -0.2225

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 gráficas correspondientes a la fbnción anterior y su transformada.

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

gráficas 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 SEÑAL 1 : I + I I

0.8 1 0.6 1

O

-0.4 1- -0.61

+

+

+

+

+

+ +

+

+

+ + -1 ' O

I

5 4- +

10 I

15

+

1 PARTE IMAGINARIA DE SERAL + I I

+ 0.8 - +

-

0.6 - -

0.4 - + -

0.2 - -

o"

-0.2 -

-0.4 - I -0.6 - 1

i I

! -0.8 - + I

4

I I

+ ! -1 O

I

5 1

10 15

+

+

+

+

+

t

PARTE REAL DE DFT I I

+ +

+

PARTE IMAGINARIA DE DFT I

-

-6

FILTROS FIR

30

IV. FILTRO FIR

a) FILTROS RIF

Los filtros de respuesta a impulso finita (RIF) son de realización no recursiva y son

siempre estables. La estructura básica de un filtro (RIF) es una línea 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 pasadas de 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 método para el diseño de un filtro pasa bajas es:

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

I O, fuera del rango -n 50 In

3 1

esto es, se ignoran por el momento, las características de fase lineal.

2. La función continua para los valores del filtro FIR pasa bajas es . La ecuación

discreta es hpB=bn= , n= O, + 1, k 2, ..., con la que se calculan los coeficientes

del filtro.

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

hPB= 7 n= O, + 1, k 2? ...,+ 1

Donde h(O)=K8

El número de términos usados se determina comparando las especificaciones del filtro con

las gráficas de respuesta en frecuencia para diferente número de términos.

4. Se desplaza hpB(n) a la derecha Í términos, esto es para hacer el filtro causal, lo cual

deja :

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

5. Diseñar el filtro digital con un programa apropiado de computadora o un circuito

integrado.

Precisamente este último paso par el diseño 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 técnico de computación para alta ejecución de cómputos numéricos

y visualización. MATLAB integra análisis numérico, cómputo de matrices, procesamiento

32

de señales, y gráficas en un ambiente de fácil uso donde los problemas y soluciones son

expresados justo como ellos son escritos matemáticamente.

MATLAB cuenta con una familia de aplicaciones específicas que se llama toolbox. Una de

las áreas en que toolbox es disponible es en el de procesamiento de señales, quien agrega

comandos para procesamiento de señales en una y dos dimensiones (tiempo - análisis de

series). Incluye funciones para el diseño y análisis de filtros digitales y para la estimación

del espectro de potencia (análisis 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), función con la que se realiza el

paso 2 para el diseño de filtros que se menciona arriba.

En el toolbox de Procesamiento de Señales, MATLAB cuenta con funciones propias para

el filtrado de datos, una de esas funciones es:

y = filter(b, a, x)

esta función filtra los datos del vector x con el filtro descrito por los vectores a y 6 , creando

los datos filtrados de y.

MATLAB provee los siguientes comentarios acerca de filter.

%FILTER Digital filter.

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

Yó filter described by vectors A and B to create the filtered

YO data Y. The filter is a "Direct Form I1 Transposed"

Yá implementation of the standard difference equation:

3 4

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

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

%

3 3

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

% conditions, Zi and Zf, of the delays.

YO

% See also FILTFILT in the Signal Processing Toolbox.

% Copyright (c) 1984-94 by The Mathworks, Inc.

% Built-in function.

Considerando entonces la posibilidad que brinda MATLAB de utilizar sus funciones para

aplicaciones específicas en este caso filter y de generar las propias, acorde a necesidades

particulares, se realizó el siguiente programa.

c) Programa que utiliza la funciónfilter y sampling para filtrar tres señales.

Se realizó un programa (M-file) fpbfir en el que se filtran tres señales, utilizando una

función sampling que permite calcular los coeficientes del filtro y la función filter que es

parte del toolbox de procesamiento de señales y con la que se filtran las señales

mencionadas. Además se realizaron seis M-files, tres para el despliegue de las señales de

entrada y otros tres para el despliegue de las señales filtradas.

El siguiente código corresponde la "file de la hnción Sampling.

function y = sampling(k,w,n)

?'oEsta es una funcion que construye una SAMPLING en el tiempo

%ysin#e para simuiar un fiitro pasabajas.

%

%y = sampling(k,w,n)

% I I

34

r%La ganancia del filtro esta dado por 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 = [ 1 :2*n+l];

i 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');

ylabel('Amp1itud'); I

El siguiente código es el programa que simula un filtro FIR pasabajas utilizando la función

filter.

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

%El metodo utilizado para calcular los coeficientes del filtro

?/oes el de Serie de Fourier.

_-___

35

'ÓSe calculan los coeficientes de una Sampling en el tiempo,

6ya que el espectro en frecuencia de 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 = ');

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

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','Filtrar s3','callback','grafica3');

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

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

uimenu(menu3,'Label','Fase','callback','fasefir');

El siguiente código corresponde al utilizado para l a construcción 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 I I I í

O 5 I

10 15 20 25 30 35 40 45 Tiempo

s2 = sen(0.8wt) 1 I

h I I I

I

\ I -1 ' , I

O 5 I

I I

10 15 20 25 30 35 I I I

40 45 Tiempo

s3 = sen(0.8wt) + ruido

1.51

' t i

\

-1 ' I I I I I

O 5 10 15 20 25 30 35 I I I

i

40 45 Tiempo

\

c 1

1

O U

-1

I( i '

Respuesta del Filtro I

-3 -2i :I' -4 ' I I I

O 0.5 I

3 3.5 Frecuencia

I I

1 1.5 2 2.5 I

O ’ I O O. 5 1 1.5

I I

2 2.5 3 3.5 Frecuencia

45

a) Programa que utiliza la funciónfft y sampling para filtrar tres señales.

Se realizó un programa (M-file) fpbfir2 en el que se filtran tres señales, utilizando un

fünción sampling que permite calcular los coeficientes del filtro y la función fft que es

parte del toolbox de procesamiento de señales y con la que se filtran las señales

mencionadas. Además se realizaron ocho "files, tres para el despliegue de las señales de

entrada, otros tres para el despliegue de las señales 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);

B = 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);

y 1 = 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 a pi), w = pi/4

A continuación se muestran las gráficas.

1 -

0.8 -

0.6 -

0.4 -

0.2 - D 3 U .- - E" O - .. <

-0.2 -

-0.4 --

-0.6 -

-0.8 -

-1 O

,-

.

i

Sena1 S? filtrada

i

i 15 20

Tiempo

/' I

I

1 __i

30 35

"r-

i

I

I

0.6 -

0.4 -

0.2 - U 3 CI .- - E" 0 - Q

-0.2 -

-0.4 -

-0.6 -

-0.8 -

Respuesta del Filtro 1.2 I I I I I I

-

0.8 - -

U 3 .- E0.6

- < E -

CI

0.4 - -

0.2 -

O

Frecuencia 3.5

I i

I

i -4 L O 0.5 1 I 1 .S 2 2.5

1 3 I i

3.5 Frecuencia

I

S3

a) Programa que utiliza la funcion canv y sampling para filtrar tres señales.

Se realizó un programa ("file) fpbfir3 en el que se filtran tres señales, utilizando un

función sampling que permite calcular los coeficientes del filtro y la hnción conv que es

parte del toolbox de procesamiento de señales y con la que se filtran las señales

mencionadas. Además se realizaron ocho M-files, tres para el despliegue de las señales de

entrada, otros tres para el despliegue de las señales filtradas, uno para la amplitud y otro

para la fase.

En el siguiente cuadro se muestran el M-files fpbfi~-3.

cS/oEste 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 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 de corte (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;

s l = sin(2*w*t); -

54

2 = sin(OS*w*t);

uido = rand(size(t));

3 = s2+ruido;

r l = 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

Y01os resultados.

1 1 = 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','Filtrar S l','callback','grafical');

uimenu(menu2,'Label','Filtrar s2','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');

5 5

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 continuación se muestran las gráficas.

1

O. 5

-1.5 O 10 20

1 i i i

30 40 50 60 70 80 i i 1

Tiempo 90

-1 ' I 1 I I

O 10 20 30 40 50 60 70 80 I I I I

90 Tiempo

1 .;

1

0.8

1:

0.21

I 1 I I I I

Respuesta del Filtro

O' I

I

O 1 J-.w !

1.5 2 O. 5 - 2.5 3 3.5 Frecuencia

Respuesta del Filtro 4 I

I I

I 1

2 1 "a -1 I

I

i i

-4 I

O O. 5 I I 1 1.5 I I

2 2.5 I 3 J 3.5 Frecuencia

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:

MATLAB ofrece un ambiente bastante amigable para simular diferentes señales, a

través del uso de vectores.

Además cuenta con herramientas que permiten ilustrar al teorema de muestreo, así que

se puede observar en forma gráfica la forma en que un señal es muestreada.

Por otro lado cuenta con hnciones como CONV, que permite realizar la operación de

convolución entre diferentes señales, y observar en forma gráfica esta operación.

MATLAB, ofrece una función para uno de los algoritmos más utilizados en el

procesamiento de señales, como es el de la Transformada Discreta de Fourier y su

versión rápida Transformada Rápida de Fourier, con la que se pueden realizar cálculos

rápidos y las gráficas correspondientes.

Otra función útil es la de filter, la cual simula un filtro, y que nosotros utilizamos para

simular un filtro FIR pasabajas, para filtrar diferentes señales; esta simulación se realizó

desarrollando un programa en el lenguaje que ofrece MATLAB.

Además se programaron dos filtros similares, sólo que en uno se utilizó convolución

CONV y en otro Transformada Discreta de Fourier ffi, con lo que se pudo comparar el

uso de filter y estas otras dos herramientas. Obteniéndose resultados similares.

También se programó la función SAMPLING, que fue de mucha utilidad al simular el

filtro FIR pasabajas.

MATLAB, permite observar las señales tanto en el dominio del tiempo como en la

frecuencia, con lo que la exploración de señales se hace más completa.

Finalmente, consideramos que MATLAB es una muy buena herramienta, que permite

ilustrar los contenidos del 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 través de prácticas que puedan ser propuestas con

anterioridad.

62

BIBLIOGFUFIA

BARRIOS, Romano Jesús. Introducción a los filtros digitales

Libros de texto y manuales de práctica

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 edición

1996

YAÑEZ, Suárez Oscar. Procesamiento Digital de señales,

Libros de texto y manuales de práctica

UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD

IZTAPALAPA

1992

MATLAB User’s Guide

for Microsoft Windows

The Mathworks, Inc.

February 1993

APENDICE

63

USANDO MATLAB

MATLAB es una herramienta para hacer cálculos matemáticos. Es un lenguaje de

programación amigable con el usuario con características muy avanzadas y mucho más

fácil de usar que los lenguajes de computadoras tales como BASIC, Pascal o C.

Análogamente a la mayoría de las calculadoras científicas, MATLAB ofrece muchas

fimciones importantes comunes a las matemáticas, a la ingeniería y las ciencias.

El tipo de dato central de MATLAB es el array. Para crear un array en MATLAB todo lo

que tiene que hacer es comenzar con 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 dividir una

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, etcétera.

La función plot de MATLAB es extremadamente poderosa. Automáticamente escoge los

límites de los ejes, marca los puntos individuales y dibuja líneas rectas entre ellos. Las

opciones de l a orden plot permiten hacer gráficas de múltiple conjuntos de datos sobre los

mismos ejes, usar diferentes tipos de líneas tales como punteadas y a trazos, marcar

simplemente los puntos sin dibujar líneas entre ellos o usar diferentes colores para las

curvas.

Además puede colocar etiquetas sobre los ejes, un título en la cabecera, dibujar una rejilla,

etcétera. Por ejempio:

Se crean 30 puntos entre O y 2*pi:

64

>>x=linespace(0,2*pi730);

Se calcula la función seno de los puntos en x:

>>y=sin(x);

La orden plot genera una gráfica:

"Plot(x,Y);

Para problemas simples, introducir las preguntas en la línea de órdenes de MATLAB es

rápido y eficiente. Sin embargo, cuando aumenta el número de órdenes o, en el caso en que

se desee cambiar el valor de una o más variables y reevaluar una serie de órdenes, escribir

en la línea de órdenes de MATLAB se hace tedioso.

MATLAB proporciona una solución lógica a este problema. Permite colocar órdenes de

MATLAB en un simple archivo de texto y a continuación decirle a MATLAB que lo abra

y evalúe las órdenes exactamente como si hubiesen sido escritas desde la línea de órden de

MATLAB. Estos archivos se llaman script o archivos -M. El término archivo-M reconoce

el hecho de que los nombres de los archivos deben finalizar con la extensión 'm', por

ejemplo, test.m.

FUNCIONES UTILIZADAS:

fft : Trarzsformada Rápida de Fourier 1-D.

y=fft(x) es la transformada de Fourier discreta del vector x, calculada con un algoritmo de

transformada rápida de Fourier (FFT).

ifft : TI-ansforkada Inversa de Fozir-ier.

y=ifft(x) es la transformada inversa rápida 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 operación 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 multiplicación depolinomios.

c=conv(a,b) realiza la convolución de los vectores a y b. La convolución puede verse como

la multiplicación de los polinomios cuyos coeficientes son los elementos de a y b ya que,

algebraicamente, es la misma operación.

freqz : Respuesta en frecuencia dejiltros digitales.

Devuelve l a respuesta en frecuencia compleja h(expjw) de un filtro digital dando los

coeficientes del numerador y del 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 están entre -pi y pi.