Escolar Documentos
Profissional Documentos
Cultura Documentos
I .
(1.-
$3 L
,.
ETAPALAPA .
ALUMNOS:
CRUZ OLIVA VALENT~N GARCA TRINIDAD ANDRS
INDICE
INTRODUCCION
I.
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
lejos para encontrar que muchos de los aparatos electrnicos que nos rodean estn controlados por una lgica digital, por ejemplo soncasosclaros
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.
..
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
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
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
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
= 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
con
P(jQ) = a,
k=-m
cs
m
(Q -m,)
o equivalentemente
la
es peridica
+ 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
Nyquist joj<x, como era de esperarse. Sin embargo si [R,l>nT, entonces, Icool>n;mientras
que
Icr>&~
En el ltimo de los casos, se dice que ha ocurrido un "aliasing",y este efecto indeseable debe serevitado o minimizado.
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
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;
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.
: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
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)
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
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
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 )
y(n)=
k=-m
c
m
x(n - k)h(k)
* x(n)
13
otra relacin til es que si y(n) = x(n) * h(n), entonces x(n - ni)
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
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 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=
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
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
++ + + + + + + + + + + + + + + + + 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.
papel importante en la
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
19
=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
+ fs*2/N Hz
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
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.
limitado de muestras, sin embargo, no es posible obtener un resultado correcto DFT de una seal no peridica.
de la
22
Hz.
0
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.
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
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
))
y=expCj*nB)
Y=
Columns 1 through 4
1.o000
CQ450 + 0.32721 0.7859
Columns 5 through 8
0.2352 + 0.9719i -0.0957 + 0.99541 -0.4161
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
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
Columns 13 through 16
-0.0804 + 0.55551 -0.2225 + 0.62861 -0.4405
w=real( z)
W =
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)
+
+ +
+
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
+
+
-6
FILTROS FIR
30
IV.
FILTRO FIR
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.
31
. La ecuacin
, n= O,
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.
lo cual
deja :
, n= O, 1, 2, ...,21
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
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.
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
YO Y
34
%
y ( n )
?6
%
33
%
%
Y O
%
% %
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.
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.
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
%n el numero de muestras.
a il
= [ 1 :2*n+l]; = n;
i2 = n+2;
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.
_-___
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.
= input('
= sampling(k,w,n);
I = [1
zeros( 1,2*n)];
; = [ 1 :(2*n)+ 13;
:1 = t;
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);
36
11 =
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);
-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
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
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.
%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.
I);
t l = t;
S I = sin(2*w*t);
46
$2 = fft(s2);
;3 = fft(s3);
= ffi(b);
Y1 = B.*Sl;
Y2 = B.*S2;
Y3 = B.*S3;
y1
= real(s1f);
y2 = real(s2f);
y3 = real(s3f);
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');
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
1-
Sena1 S ? filtrada
" r -
i
.
0.2 -
E" <
D 3 U .-
O-
, . .
/'
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
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.
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.
%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.
I);
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);
11
= figure('Name','Simulacion
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');
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
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
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:
0.8
0.21
O' O
O.5
J . w
1.5 2 Frecuencia
2.5
3.5
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
MATLAB,permiteobservar
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
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
MATLAB Users Guide for Microsoft Windows The Mathworks, Inc. February 1993
APENDICE
63
USANDO MATLAB
Es un lenguaje de
fcil de usar quelos lenguajes de computadoras tales como BASIC, Pascalo C. Anlogamentea la mayora de las calculadoras cientficas, MATLAB ofrecemuchas
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
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:
"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.
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
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
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.