Sie sind auf Seite 1von 13

Departamento de Electrnica

Facultad de Ciencias Exactas, Ingeniera y Agrimensura


Universidad Nacional de Rosario


Teora de Sistemas y Seales


















Trabajo Prctico N 3
Anlisis Frecuencial de Seales




Autor: Dr. Juan Carlos Gmez
Ing. Franco Del Colle
Dr. Lucas Terissi
Dr. Ariel Bay
Ing. Marianela Parodi
Dra. Mnica Larese



Junio de 2012
TeSyS - TP No. 3 2
Trabajo Prctico N 3
Anlisis Frecuencial de Seales



1. Objetivos
El objetivo de este Trabajo Prctico es estudiar el uso de la Transformada de Fourier en Tiempo Discreto
(DTFT) para el anlisis espectral de seales, a la vez que la implementacin en Matlab de algoritmos de
cmputo de la DTFT, y el estudio de la performance de diferentes tipos de ventanas empleadas por los
algoritmos.

2. Introduccin
En este Trabajo Prctico se estudiarn las propiedades fundamentales de la Transformada de Fourier en
Tiempo Discreto en su uso para el anlisis espectral de seales. Para algunas clases de seales
(nominalmente aquellas que son de longitud finita, o aquellas que tienen una transformada Z del tipo
racional) es posible implementar algoritmos que calculen exactamente la DTFT. Para estas seales se
requerir la programacin de funciones Matlab para el cmputo de la DTFT. Esto se hace en la
Subseccin 3.1.1.. Para el caso de seales de longitud infinita, o que no tengan una Transformada
Z racional , no es posible implementar algoritmos para el cmputo exacto de la DTFT. En estos casos se
debe recurrir al uso de funciones ventana que trunquen la seal a un nmero finito de muestras, y
permitan la implementacin de algoritmos que aproximen la DTFT de la seal. El estudio de varios tipos
de ventanas utilizadas en la prctica se realiza en la Subseccin 3.1.2.. En la Subseccin 3.1.3., se
analizan las caractersticas de los algoritmos Matlab para el clculo de la Transformada de Fourier en
Tiempo Discreto (genricamente denominados Transformada Discreta de Fourier (DFT)), en su versin
conocida como Transformada Rpida de Fourier (FFT: Fast Fourier Transform). En esta misma
Subseccin se propone un ejemplo de aplicacin para la deteccin de una seal senoidal inmersa en ruido.
Finalmente, en la Subseccin 3.2 se presenta el enunciado de los problemas que debern ser resueltos y
entregados en el informe.

3. Desarrollo del Trabajo Prctico
3.1. Problemas Propuestos de Simulacin durante la Sesin de Laboratorio
3.1.1. Transformada de Fourier en Tiempo Discreto (DTFT)
El objetivo de esta primera subseccin es estudiar las propiedades de la Transformada de Fourier en
Tiempo Discreto (DTFT: Discrete-Time Fourier Transform), a la vez que desarrollar e implementar
algoritmos en Matlab [4] para el clculo exacto de la misma. Consideraremos dos casos diferentes:
seales de longitud finita, para las cuales la DTFT puede calcularse exactamente a partir de la definicin,
y seales de longitud infinita pero del tipo exponencial, que poseen una Transformada Z racional, para
las cuales puede calcularse una expresin analtica de la DTFT que permite tambin para este caso su
clculo exacto, que de lo contrario sera imposible [1].
Recordemos que para una seal en tiempo discreto ) (n x , la DTFT viene dada por [2]:

=
n
n j
e n x X

) ( ) ( , (1)

que resulta una funcin a valores complejos de la variable , que es peridica, con perodo fundamental
2 . En el contexto de Matlab, el cmputo de la DTFT basndose en la definicin (1) presenta
bsicamente dos inconvenientes:
i. No es posible usar la expresin (1) para el clculo de la DTFT cuando la seal es de longitud
infinita, ya que Matlab slo puede manipular vectores de longitud finita. Hay sin embargo una
excepcin a esto, que es el caso en que pueda obtenerse una expresin analtica de la DTFT,
que pueda usarse para el cmputo. Un ejemplo de este caso son las seales exponenciales
discretas de la forma ( ) n a
n
, que tienen una DTFT racional en la variable
j
e .
TeSyS - TP No. 3 3
ii. La DTFT ) ( X es una funcin de la variable continua (que puede asumir infinitos
valores en el intervalo ) , [ ). Para el clculo con Matlab, esto representa un problema de
muestreo en frecuencia. Lo mejor que se puede hacer es realizar el clculo en un nmero finito
de frecuencias, lo suficientemente grande como para obtener una aproximacin suave de la
DTFT.
Generalmente se toman frecuencias equiespaciadas en el intervalo ) , [ , con lo que la
expresin (1) resulta:


( )


=

= =
n
n N k j
n
n j
k
e n x e n x X
k
/ 2
) ( ) ( ) (

, 1 , , 0 = N k (2)

Sin embargo, esta ltima expresin todava no es computable, salvo para el caso en que la
seal sea de longitud finita. En este caso, asumiendo que la seal sea de longitud L , la
expresin (2) resulta
( )


=

= =
1
0
/ 2
1
0
) ( ) ( ) (
L
n
n N k j
L
n
n j
k
e n x e n x X
k

, 1 , , 0 = N k (3)

Es fcil ver que la expresin (3) corresponde a la definicin de la Transformada Discreta de
Fourier (DFT) con N puntos, que para el caso L N = puede ser calculada eficientemente
usando alguno de los algoritmos de la Transformada Rpida de Fourier (FFT: Fast Fourier
Transform).

A continuacin se proponen algunos problemas que requieren la programacin de funciones Matlab, para
el clculo de la DTFT .

Problema 1:
a. Escriba una funcin Matlab que compute exactamente la DTFT de una seal ( ) n x de longitud
finita L .
Los argumentos de entrada de la funcin deben ser:
i. x : vector de longitud L conteniendo las muestras de la seal ( ) n x .
ii. N: nmero de frecuencias equiespaciadas en el intervalo ) [ , donde la DTFT es
evaluada.
Los argumentos de salida de la funcin deben ser:
i. X: vector (complejo) conteniendo los valores de la DTFT ( ) X .
ii. : vector conteniendo las frecuencias (en rad/seg) donde la DTFT es evaluada.
La funcin deber as mismo graficar los espectros de amplitud y fase de la seal, y el
espectro de densidad de energa.
La funcin debe incluir un "help" que pueda invocarse con el comando

>> hel p f unct i on_name

b. Considere la seal

( )
( )


=
c.o.c. 0
100 0 9 , 0 n
n x
n


y use la funcin desarrollada en el apartado a. para calcular la DTFT.

c. Trabajo previo: Verifique el resultado calculando una expresin analtica de la DTFT y
comparando la grfica correspondiente con la obtenida con la funcin Matlab.


TeSyS - TP No. 3 4
Problema 2: En este problema consideraremos seales de longitud infinita, pero que poseen una DTFT
del tipo racional en la variable
j
e . Esto es equivalente a decir que la seal tenga una Transformada Z
del tipo racional en la variable z (o
1
z ). En efecto, recordando la definicin de la Transformada Z de
una seal

( ) ( )
n
n
z n x z X

= , (4)

puede verse que si la Regin de Convergencia (RDC) de la Transformada Z incluye a la circunferencia
de radio unitario, entonces la DTFT ( ) X de la seal puede calcularse evaluando la transformada Z
sobre la circunferencia unitaria (es decir para
j
e z = ).
a. Escriba una funcin Matlab que compute exactamente la DTFT de una seal de longitud
infinita, cuya transformada Z es una funcin racional de la variable z .
Los argumentos de entrada de la funcin deben ser
i. num: vector conteniendo los coeficientes del polinomio numerador de la
Transformada Z de la seal, en orden decreciente de potencias de z .
ii. den: vector conteniendo los coeficientes del polinomio denominador de la
Transformada Z de la seal, en orden decreciente de potencias de z .
iii. N: nmero de frecuencias equiespaciadas en el intervalo ) [ , , donde la
Transformada de Fourier es evaluada.
Los argumentos de salida deben ser
i. X: vector conteniendo los valores de la DTFT.
ii. w: vector conteniendo las frecuencias donde la DTFT es evaluada.
La funcin deber as mismo graficar los espectros de amplitud y fase de la seal, y el
espectro de densidad de energa, en funcin de la frecuencia .
La funcin debe incluir un "help" que pueda invocarse con el comando

>> hel p f unct i on_name
NB: Para la implementacin de esta funcin puede hacer uso de la funcin de Matlab
pol yval ( u1, u2) que permite evaluar el polinomio, cuyos coeficentes en orden decreciente
de potencias se ingresan como primer argumento u1, en el segundo argumento u2.
b. Considere la seal

( ) ( ) ( ) n n n x
n n

=

8
7
2
2
1
2
,

y use la funcin desarrollada en el apartado a. para calcular la DTFT.
c. Trabajo Previo: Verifique el resultado calculando una expresin analtica de la DTFT
d. Compare la grfica correspondiente con la obtenida con la funcin Matlab.



3.1.2. Cmputo de la DTFT usando ventanas
En esta Subseccin estudiaremos el uso de ventanas para el cmputo de la DTFT de seales de longitud
infinita, que no necesariamente tienen una transformada Z racional. Como se vi en la Subseccin
anterior, no es posible usar la expresin (1) para el cmputo de la DTFT de una seal de longitud infinita,
excepto para el caso en que la seal tenga una transformada Z racional. La alternativa es entonces
truncar la seal a un nmero finito de muestras usando lo que se denomina una funcin de ventana, y
luego computar la DTFT de la seal truncada que aproximar la DTFT de la seal original, bajo ciertas
condiciones. Numerosos tipos diferentes de ventanas han sido propuestos en la literatura para su uso en
TeSyS - TP No. 3 5
anlisis espectral de seales (ver [1],[2] para ms detalles). El tipo ms comn es la denominada ventana
rectangular que slo trunca la seal a un nmero finito de muestras, sin afectar el valor de las muestras.
En el dominio temporal, la ventana rectangular de longitud L viene dada por:

( )


=
c.o.c. 0
1 1 L n
n w (5)

Si ( ) n x es la seal de longitud infinita, la seal truncada ( ) n x se puede obtener como

( ) ( ) ( ) n w n x n x = . (6)

La DTFT, ( ) X , de la seal original est entonces relacionada con la DTFT , ( ) X

, de la
correspondiente seal truncada, a travs de la convolucin (peridica) en el dominio frecuencial

( ) ( ) ( )

d W X X =

2
1

. (7)
Puede verse entonces que al aproximar el espectro ( ) X , de la seal original, por el espectro, ( ) X

,
de la correspondiente seal truncada, se comete un error que depender de la forma de la funcin de
ventana ( ) n w (o de su espectro ( ) W ) a travs de la relacin (7).
Se proponen a continuacin algunos problemas donde se estudiarn las caractersticas espectrales de
algunas de las funciones de ventana disponibles en Matlab [3] (nominalmente las funciones hammi ng,
hanni ng y boxcar , que implementan las ventanas de Hamming, Hann, y rectangular
respectivamente), y se analizar el error introducido en la aproximacin de ( ) X por ( ) X

.

Problema 3:
Las funciones Matlab hammi ng, hanni ng y boxcar , permiten implementar las funciones de
ventana de Hamming, Hann, y rectangular respectivamente. Estas funciones estn definidas en el dominio
temporal como [3]:
Ventana Hamming (hammi ng)
( )

= +
c.o.c. 0
1 0
1
2
cos 46 . 0 54 . 0
1
L n
L
n
n w


Ventana de Hann (hanni ng)
( )

=
c.o.c. 0
1
1
2
cos 1
2
1
L n
L
n
n w


Ventana Rectangular (boxcar )
( )


=
c.o.c. 0
1 1 L n
n w
a. Trabajo Previo: Calcule la DTFT de la ventana rectangular en forma terica y determine los
cruces por ceros del espectro de amplitud.

b. Utilice la funcin Matlab implementada en el Problema 1 para computar el espectro de amplitud
de la ventana rectangular. En una misma grfica muestre superpuestos el espectro para tres
longitudes L distintas, L = 20, 31, 81. Use una escala lineal para el espectro de amplitud.

TeSyS - TP No. 3 6
c. Mida la amplitud y el ancho del lbulo principal de la DTFT. Analice los puntos de cruces por
cero y la amplitud de los lbulos laterales. Adems, verifique la ubicacin de los puntos de
cruces por cero a partir del clculo analtico de la DTFT de un pulso rectangular.
NOTA: Recuerde que puede usar el comando gi nput para extraer valores de una grfica en
Matlab.

d. Considere la siguiente seal de longitud infinita

= n n x
2
cos ) (


Utilice una ventana rectangular de longitud L=45 para computar una aproximacin del espectro
de la seal y graficarlo.

e. Sea la seal
( ) ( ) n n n x . 51 . 0 cos . 5 . 0 cos ) ( + =
Use la ventana rectangular para computar y graficar una aproximacin del espectro de la seal
x(n). Determine la relacin entre la resolucin en frecuencia y la longitud L de la ventana. A
partir de este resultado, calcule la longitud L mnima de modo que se distingan las componentes
armnicas de la seal x(n).


3.1.3. Transformada Discreta de Fourier (DFT)
En esta seccin se estudiar el uso de la Transformada Discreta de Fourier en el anlisis espectral de
seales. Particularmente se considerar la implementacin de la DFT en un algoritmo del tipo FFT (Fast
Fourier Transform) disponible en Matlab (la funcin f f t ). Como un problema de aplicacin se emplear
la DFT para determinar la amplitud y frecuencia de una seal senoidal inmersa en ruido.
Recordemos que para una seal en tiempo discreto ) (n x , de longitud finita L , la Transformada de
Fourier en Tiempo Discreto viene dada por:

=
1
0
) ( ) (
L
n
n j
e n x X

, 2 0
Si se muestrea ) ( X en frecuencias equiespaciadas
N
k
k

2
= , 1 , , 1 , 0 = N k , y donde L N ,
las muestras resultan:

=
1
0
2
) (
2
) (
L
n
N
n k
j
e n x
N
k
X k X



o equivalentemente
1 , , 1 , 0 , ) ( ) (
1
0
2
= =

N k e n x k X
N
n
N
n k
j


ya que x(n) = 0 para L n N-1. La ltima ecuacin constituye la definicin de la denominada
Transformada Discreta de Fourier con N puntos ( N -point DFT) [2]. Existen diversas formas
eficientes de implementar computacionalmente la DFT. Una de las ms difundidas es la denominada
Transformada Rpida de Fourier (FFT: Fast Fourier Transform), que permite computar la DFT con un
tiempo de ejecucin reducido. En Matlab, la FFT est implementada en la funcin f f t . Esta funcin
emplea un algoritmo radix-2 si la longitud de la secuencia es una potencia entera de 2 (ver [2], Seccin
9.3.3 en Cap 9, para mayores detalles), y un algoritmo ms lento si no lo es.

Dada una seal almacenada en el vector x, el siguiente comando

>> y = f f t ( x) ;

TeSyS - TP No. 3 7
computar la DFT con N=l engt h( x) puntos de la secuencia x. El nmero de puntos de la DFT puede
especificarse independientemente de la longitud de la secuencia mediante un argumento de entrada
adicional de la funcin. Por ejemplo, los comandos para computar la FFT con N=100 puntos seran:
>> N = 100;
>> y = f f t ( x, N) ;

Si N es menor que la longitud de x, entonces el vector x es completado con ceros hasta la longitud
N. En caso de ser mayor, la secuencia es truncada a una longitud igual a N.
Nota: La funcin f f t no genera el vector de frecuencias, que debe ser generado independientemente. La
funcin devuelve los valores de la DFT que corresponderan a frecuencias entre 0 y 2.

El retorno al dominio temporal puede realizarse mediante el cmputo de la IDFT, utilizando para ello la
funcin Matlab i f f t , de la siguiente manera:
>> x = r eal ( i f f t ( y) ) ;
donde el vector y corresponde a la DFT de la seal x, y x es la seal temporal original. Cabe aclarar
que se toma la parte real de la seal obtenida mediante la funcin i f f t , dado que la seal resultante
puede presentar valores complejos con parte imaginaria muy pequea debido a errores nmericos.
Tambin puede especificarse el nmero N de puntos considerados en el clculo de la IDFT, el cual debe
coincidir con el valor de N usado previamente en la funcin f f t . Si se omite el valor N, la funcin if f t
utilizar por defecto N=l engt h( y) .
Nota: La funcin i f f t de Matlab asume que el espectro se encuentra definido entre 0 y 2.
Los siguientes ejemplos ilustran el uso de la funciones f f t e i f f t .
Ejemplo 1: Supongamos que se desea calcular la DFT de la seal en tiempo discreto ) (n x que se obtiene
al muestrear la seal:
5t) sin(2 3 4 ) ( + = t x
con una frecuencia F
s
= 100 Hz. La siguiente sucesin de comandos Matlab permite generar la
seal ) (n x y calcular y graficar la amplitud y fase de la DFT de ) (n x .

t =0: 0. 01: 1;
x=4+3*si n( 5*pi *2*t ) ;
y=f f t ( x, 10000) ;
magni t ud=abs( y) ;
f ase=unwr ap( angl e( y) ) ;
f r ec=[ 0: 2*pi / 10000: 2*pi ] ;
f r ec=f r ec( : , 1: 10000) ;
subpl ot ( 211)
pl ot ( f r ec, magni t ud) ; xl abel ( ' f r ecuenci a w [ r ad/ seg] ' ) ;
yl abel ( ' Magni t ud' ) ;
t i t l e( ' Espect r o de x( n) ' ) ; axi s( [ 0 2*pi 0 200] ) ; gr i d;
subpl ot ( 212)
pl ot ( f r ec, f ase*180/ pi ) ; xl abel ( ' f r ecuenci a w [ r ad/ seg] ' ) ;
yl abel ( ' Fase [ gr ados] ' ) ;
axi s( [ 0 2*pi - 4e4 2e4] ) ; gr i d;

La salida grfica correspondiente est representada en la Figura 3.1.1.
TeSyS - TP No. 3 8
0 1 2 3 4 5 6
0
50
100
150
200
frecuencia w [rad/seg]
M
a
g
n
i
t
u
d
Espectro de x(n)
0 1 2 3 4 5 6
-4
-3
-2
-1
0
1
2
x 10
4
frecuencia w [rad/seg]
F
a
s
e

[
g
r
a
d
o
s
]

Figura 3.1.1: Salida grfica correspondiente al Ejemplo 1.

Ejemplo 2: La siguiente secuencia de comandos permite obtener nuevamente la seal temporal a partir
del clculo de la IDFT, visualizando en una misma grfica la seal original y el resultado obtenido a
partir de la IDFT:

x_new=r eal ( i f f t ( y, 10000) ) ;
f i gur e, pl ot ( t , x, ' r - o' , t , x_new( 1: l engt h( x) ) , ' b- x' ) ;
t i t l e( ' Seal or i gi nal vs. r esul t ado de l a I DFT' ) ;
xl abel ( ' t i empo [ segundos] ' ) ;
yl abel ( ' Ampl i t ud' ) ;
l egend( ' Seal or i gi nal ' , ' Resul t ado de l a I DFT' ) ;
gr i d;

La salida grfica correspondiente se visualiza en la Figura 3.1.2.

Figura 3.1.2: Salida grfica correspondiente al Ejemplo 2.
TeSyS - TP No. 3 9
Problema 4:
El archivo de datos tp3_1.mat contiene un vector x que consiste de las muestras de una seal
senoidal inmersa en ruido, muestreada con una frecuencia de 1 =
s
F KHz. Se asume que el ruido es
blanco Gaussiano.
a. Use la funcin f f t de Matlab para computar y graficar la DTFT de la seal x, usando una
ventana rectangular de longitud apropiada. Grafique la amplitud de la DTFT en por unidad, y la
fase en grados, con el eje de abscisas calibrado en frecuencias continuas.
b. Basndose en las grficas obtenidas determine la amplitud y frecuencia de la seal senoidal.
Justifique tericamente los clculos realizados.
c. Repita los apartados a. y b., pero usando ahora una ventana de Hann. Compare los resultados
con los obtenidos en a. y b.
d. Repita los apartados a. y b. pero usando una longitud de ventana igual a la mitad de la usada en
a. y b. Compare los resultados obtenidos.












































TeSyS - TP No. 3 10
3.2. Problemas a Presentar en el Informe
Problema 5: Procesamiento de una seal ADSL
El objetivo de este problema consiste en aplicar filtros en el dominio frecuencial para separar las distintas
bandas de frecuencia de una seal de ADSL. Se pretende adems recuperar la seal de voz transmitida.

Introduccin
ADSL son las siglas en ingls de Asymmetric Digital Subscriber Line, o en castellano Lnea Digital
Asimtrica de Abonado. Esta es una tecnologa en particular de las diferentes tecnologas existentes de
DSL (Lnea Digital de Abonado), la cual permite una mayor tasa de transmisin de datos que en el caso
de los antiguos mdems telefnicos mediante el uso de frecuencias superiores a las del canal telefnico.
Adicionalmente los sistemas de ADSL permiten simultneamente transmitir informacin de datos y voz
en distintas bandas de frecuencia.










Figura 3.2.1: Bandas de Frecuencia para ADSL.
En la Figura 3.2.1 se muestran las bandas de frecuencias utilizadas en el sistema de ADSL. El rango de
frecuencias utilizado (0 a 1.104 MHz) se divide en 256 canales de 4.3125 KHz. Generalmente los canales
del 1 al 6 (hasta 25.875 KHz) se utilizan slo para telefona analgica (seal de voz). Los canales 7 al 31
(hasta 138 KHz) se utilizan para enviar datos (UPSTREAM) mientras que los canales del 32 al 256
(hasta 1.104 MHz) se reservan para la recepcin de datos (DOWNSTREAM).

a. El archivo dat osADSL. mat contiene una seal de ADSL compuesta por: seal de voz en el
rango [0.3 3.4] KHz, seal de datos UPSTREAM en el rango [25.875 - 138] KHz y seal de
datos DOWNSTREAM [138 1104] KHz. Cargue la seal dat osADSL. mat en el espacio de
trabajo de Matlab (para ello debe usar el comando l oad). Cul es la mnima frecuencia de
muestreo para la seal de ADSL dada? Justifique su respuesta. Utilice este valor de frecuencia de
muestreo para graficar la seal temporal con las unidades apropiadas en los ejes.
b. Con el valor de frecuencia de muestreo del punto anterior obtenga el espectro de amplitud de la
seal completa. Grafique utilizando frecuencias continuas en [Hz] en el eje de abscisas.
c. En el dominio de la transformada de Fourier, extraiga las diferentes partes que componen la
seal de ADSL:
i. Seal de voz
ii. Canal UPSTREAM
iii. Canal DOWNSTREAM
Grafique los espectros anteriores en una misma figura, haciendo uso del comando subpl ot .
Reporte el intervalo de muestras de la DFT que corresponden a la seal de voz.
d. Calcule la transformada inversa de Fourier correspondiente slo a la seal de voz.
Observacin: tenga en cuenta que la funcin i f f t de Matlab asume que el espectro se encuentra
definido entre [0 2].
e. Utilizando el comando soundsc de Matlab reproduzca la seal de voz calculada en d. Preste
especial atencin a la frecuencia de muestreo necesaria para la reproduccin correcta de la seal.
Realice la reproduccin con las siguientes frecuencias de muestreo:
i. Frecuencia calculada en a.
ii. Mitad del valor en i..
iii. Doble del valor en i..
Indique, justificando su respuesta, cual es la frecuencia correcta de reconstruccin de la seal.
300 Hz 3.4 KHz 25.875 KHz 138 KHz 1.104 MHz
Voz UPSTREAM DOWNSTREAM
TeSyS - TP No. 3 11
Problema 6:

a. Para cada una de las siguientes ventanas,
i. Ventana Rectangular (boxcar)
ii. Ventana Hann (hanning)
iii. Ventana Hamming (hamming)
Utilice la funcin Matlab implementada en el Problema 1 para computar los espectros de
amplitud. En una misma grfica muestre superpuestos los espectros para tres longitudes L
distintas, L = 20,31,81. Use una escala lineal para el espectro de amplitud.

b. Para cada una de las ventanas en el punto a, mida la amplitud y el ancho del lbulo principal de
la DTFT. Analice los puntos de cruces por cero y la amplitud de los lbulos laterales. En el caso
de la ventana rectangular, verifique la ubicacin de los puntos de cruces por cero a partir del
clculo analtico de la DTFT de un pulso rectangular.
NOTA: Recuerde que puede usar el comando gi nput para extraer valores de una grfica en
Matlab.

c. La existencia de los lbulos laterales en el espectro de la ventana, provoca que la potencia de la
seal truncada usando la ventana se distribuya en todo el rango de frecuencias. Compare la altura
de los lbulos laterales para las tres ventanas consideradas en el apartado b.

d. Considere la siguiente seal de longitud infinita

= n n x
2
cos ) (


Utilice una ventana rectangular de longitud L=45 para computar una aproximacin del espectro
de la seal y graficarlo.
Muestre, en la misma grfica, el espectro terico de la seal. Compare ambos espectros.

e. El ancho del lbulo principal del espectro de la ventana es un indicador de la resolucin en
frecuencia que se obtiene cuando se usa la ventana para analizar el espectro de una seal. En
otras palabras, el ancho del lbulo principal est relacionado con la mnima separacin en
frecuencia entre dos componentes armnicos de la seal, tal que el espectro presente picos bien
diferenciados correspondientes a cada armnico. Esto puede verse fcilmente si se usa la ventana
para computar el espectro de una seal compuesta por dos armnicos de frecuencias prximas.
Sea la seal
( ) ( ) n n n x . 51 . 0 cos . 5 . 0 cos ) ( + =
Use la ventana rectangular del apartado e. para computar y graficar una aproximacin del
espectro de la seal x(n). Superponga en la grfica el espectro terico de la seal.
Determine la relacin entre la resolucin en frecuencia y la longitud L de la ventana. A partir de
este resultado, calcule la longitud L mnima de modo que se distingan las componentes
armnicas de la seal x(n).

f. Analice qu ocurrira en caso de utilizar las ventanas de Hann y de Hamming para truncar la
seal del apartado f. Calcule, para estas dos ventanas, la longitud L mnima necesaria para
distinguir ambas componentes de la seal.


Problema 7: Anlisis frecuencial utilizando ventanas
El uso de la Transformada de Fourier es de fundamental importancia para el anlisis frecuencial de
seales. Sin embargo, si se calcula la transformada de Fourier de una porcin de larga duracin de la
seal, se pierde la informacin temporal de su contenido frecuencial, es decir, se conoce el contenido
armnico de la seal pero no se puede especificar en qu momento est presente cada armnico.
En las aplicaciones en las cuales se requiere conocer la informacin frecuencial en funcin del tiempo de
la seal, se suele realizar un anlisis de Fourier de tiempo corto. Para ello se divide la seal en segmentos
de corta duracin denominados frames. Un frame es una porcin de L muestras sucesivas de una seal de
longitud M, que se obtiene a partir de aplicar una ventana a la seal y desplazarla temporalmente. En la
Figura 3.2.2, se divide una seal de longitud M, en N frames de longitud L. De esta manera, calculando la
TeSyS - TP No. 3 12
Transformada de Fourier a cada frame se puede conocer la evolucin del contenido armnico de la seal
en el tiempo. Esta tcnica se denomina Transformada de Fourier en Tiempo Corto (Short-Time Fourier
Transform).













1 2 k

N - 1 N



Figura. 3.2.2. Divisin en frames de una seal.

Sistema de Marcacin por Tonos
En el sistema de marcacin por tonos utilizado en telefona, tambin llamado sistema multifrecuencial o
DTMF (Dual-Tone Multi-Frequency), cuando un usuario pulsa en el teclado de su telfono la tecla
correspondiente a un dgito que quiere marcar, se envan dos tonos de distinta frecuencia (uno por
columna y otro por fila de acuerdo a la Tabla 3.2.1).

Tabla 3.2.1: Frecuencias asociadas a cada dgito del sistema DTMF.

F
H
[Hz]
1209 1336 1477 1633
697
1 2 3 A
770
4 5 6 B
852
7 8 9 C F
L

[
H
z
]

941
* 0 # D


As, la seal generada al presionar un dgito, tendr dos componentes y una forma genrica:

( ) ( ) ( ) ( ) ( ) ( ) 2 2 2 2
S
F
L H L H
x t Asen F t Asen F t x n Asen f n Asen f n = + = +

Luego, la central telefnica detecta las frecuencias contenidas en la seal y determina el dgito que se
marc. En los casos en que las frecuencias F
L
y F
H
difieren de sus valores nominales, indicados en la
Tabla 1, en 1.8% , la central telefnica descarta el dgito enviado.

El objetivo de este problema es analizar el contenido frecuencial de una seal asociada al marcado de un
nmero telefnico, por medio de la Transformada de Fourier en Tiempo Corto, para identificar el nmero
telefnico marcado, determinando cada uno de los dgitos que lo componen.

a. Use la funcin Matlab wavr ead para cargar el archivo tonos.wav que contiene la seal de
audio a analizar.
Sintaxis: [ Y, Fs, Nbi t s] = wavr ead( ' tonos. wav' ) ;
(k-1)*L + 1 k*L
Seal
...
TeSyS - TP No. 3 13
Donde Y son las muestras de la seal, Fs la frecuencia muestreo y Nbi t s la cantidad de bits por
muestra utilizados.
b. Con la ayuda de las funciones f f t y f f t shi f t de Matlab compute la DTFT de la seal Y
completa y grafique el espectro de amplitud en funcin de la frecuencia en tiempo continuo
asociada, en el rango entre [-Fs/2 , Fs/2]. Indique si es posible o no determinar el nmero
marcado a partir del espectro de amplitud de la seal completa.
c. Realice una funcin que tome como argumentos de entrada dos frecuencias, F
1
y F
2
(F
1
< F
2
), y
como argumento de salida la variable di gi t o, correspondiente al dgito identificado. Para ello
compare F
1
con cada una de las frecuencias F
L
y F
2
con cada una de las frecuencias F
H
. En caso
de que alguna de las frecuencias estuviera fuera del rango (F
L
1.8% y F
H
1.8%), la variable
de salida debe ser di gi t o=[ ] .
d. Realice un script que:
i. Divida la seal en frames con una duracin de 450mseg, tal que la longitud del frame
resulta L = (450e-3)*Fs muestras.
ii. Para cada frame, calcule la DTFT, determine automticamente las dos frecuencias de
mayor amplitud y calcule las frecuencias en tiempo continuo asociadas (en Hz) (para ello
puede utilizar la funcin max de Matlab). Utilice la funcin del tem c. para determinar el
dgito correspondiente a este frame.
iii. Una vez procesados todos los frames, muestre en pantalla el nmero identificado.
e. Suponga ahora que la seal se enva a travs de un canal de transmisin con una respuesta al
impulso h(n), como se indica en la Figura 3.2.3.






Figura 3.2.3. Canal de transmisin.

El canal de transmisin es modelado con una estructura FIR (Finite Impulse Response) de fase
lineal y de longitud 80. Obtenga la respuesta al impulso del canal a partir del comando
h=f i r 1( 80, 0. 325) y filtre la seal contenida en el archivo tonos.wav. Luego, determine
nuevamente el nmero telefnico marcado a partir de la seal filtrada. Compare los resultados
con los obtenidos en el tem d. y extraiga conclusiones. Ayuda: grafique la respuesta en
frecuencia del canal.


4. Referencias
[1] Burrus, C. & McClellan, J. & Oppenheim, A. & Parks, T. & Schafer, R. & Schuessler, H. (1994).
Computer-based Exercises for Signal Processing using Matlab, Prentice Hall, Englewood Cliffs,
New Jersey.
[2] Proakis, J. & Manolakis, D. (1992). Digital Signal Processing: Principles, Algorithms and
Applications. 2
nd
Edition, Macmillan Publishing Company, New York.
[3] The Math Works, Inc. (1996). Signal Processing Toolbox - User's Guide, V.4. The Math Works, Inc.,
24 Prime Park Way, Natick, MA 01760-1500.
[4] The MathWorks, Inc. (1997). Matlab, The Language of Technical Computing Getting Started with
Matlab, Version 5., 24 Prime Park Way, Natick, MA 01760-1500.









h(n) y(n) y
filtrada
(n)

Das könnte Ihnen auch gefallen