Вы находитесь на странице: 1из 6

Prctica N 5 DFT y Anlisis de Seales en el dominio de la frecuencia

FCE-BUAP

Procesamiento Digital de seales I

Dr. Roberto C. Ambrosio Lzaro


Fecha de entrega :mircoles 22 de abril 2015 en clase se revisaran los resultados.
Entregar en formato de reporte (pdf) y archivos matlab.m numerando cada ejercicio como vienen en el
documento- al correo electrnico del profesor.

1. Objetivo
El objetivo de este laboratorio es estudiar el uso de la Transformada de Fourier en Tiempo Discreto (DTFT) para su
aplicacin prctica en el anlisis espectral de seales; a la vez que la implementacin en Matlab de algoritmos de cmputo
de la DTFT, y el estudio del desempeo de diferentes tipos de ventanas empleadas por los algoritmos de matlab.

2. Introduccin
Investigar conceptos bsicos sobre la DFT y sus propiedades. (Describirlas)
Investigar los conceptos sobre el uso de ventanas para la TF as como sus ecuaciones que describen a
estas ventanas (rectangular, hanning, hamming).
Investigar sobre el concepto de la generacin de eco como una seal desplazada, as como acerca del
sistema multifrecuencial o DTMF (Dual-Tone Multi-Frequency)

3. Desarrollo
3.1. Problemas Preliminares de Simulacin -Transformada de Fourier en Tiempo Discreto (DTFT)
Trabajo previo: Verifique el resultado obteniendo las grficas correspondientes que se le indican en cada actividad.
Dada una seal almacenada en el vector x, el siguiente comando
>> y = fft(x);
computar la DFT con N=length(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 = fft(x,N);
Si N es menor que la longitud de x, entonces el vector x es completado con
caso de ser mayor, la secuencia es truncada a una longitud igual a N.

ceros hasta la longitud

N. En

Nota: La funcin fft 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
ifft, de la siguiente manera:
>> x = real(ifft(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 ifft, 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 fft. Si se omite el valor N, la funcin ifft utilizar por defecto
N=length(y).
Nota: La funcin ifft de Matlab asume que el espectro se encuentra definido entre 0 y 2.
Compute (correr) los siguientes ejemplos ilustran el uso de la funciones fft e ifft.
Ejemplo 3.1.1: Supongamos que se desea calcular la DFT de la seal en tiempo discreto x(n) que se obtiene al muestrear la
seal:
x(t) = 4 + 3sin(2 5t) con una frecuencia Fs = 100 Hz. La siguiente sucesin de comandos Matlab permite generar la
seal x(n) y calcular y graficar la amplitud y fase de la DFT de x(n).

fase=unwrap(angle(y));
frec=[0:2*pi/10000:2*pi];
frec=frec(:,1:10000);
subplot(211)
plot(frec,magnitud);
xlabel('frecuencia w [rad/seg]');
ylabel('Magnitud');
title('Espectro de x(n)');
axis([0 2*pi 0 200]);
grid;subplot(212)
plot(frec,fase*180/pi);xlabel('frecuencia w [rad/seg]');
ylabel('Fase [grados]');
axis([0 2*pi -4e4 2e4]);
grid;
Actividad: Muestre la salida de las grficas correspondientes y comente cada lnea de cdigo en su script (file*.m)
que ser enviado junto con su reporte.

Nota: Aada una tercera grfica donde ahora el eje x-del espectro de frecuencia este en unidades de Hertzs y solo
aparezca un lado del espectro (sin el espejo), verifique la referencia

Referencia
https://dadorran.wordpress.com/2014/02/20/plotting-frequency-spectrum-using-matlab/
Ejemplo 3. 1. 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=real(ifft(y,10000));
figure,
plot(t,x,'r-o',t,x_new(1:length(x)),'b-x');
title('Seal original vs. resultado de la IDFT');
xlabel('tiempo [segundos]');
ylabel('Amplitud');legend('Seal original','Resultado de la IDFT');
grid;
Actividad: Muestre la salida de las grficas correspondientes y comente cada lnea de cdigo en su script (file*.m)
3.1.3. 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. No es posible usar la expresin de la TF 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 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:

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 w(n) (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 hamming,hanning y boxcar, que
implementan las ventanas de Hamming, Hann, y rectangular

Problema 3.1.2: Las funciones Matlab hamming, hanning 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 (hamming)
Ventana de Hann (hanning)
Ventana Rectangular (boxcar)

Actividad
a. Usando las funciones de ventana de matlab, calcular la DTFT de la ventana rectangular y determine los cruces
por ceros del espectro de amplitud. Utilice la funcin Matlab fft para computar el espectro de amplitud .
-Para 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.
-Para las 3 ventanas mencionadas, graficar el espectro de frecuencia , mida la amplitud (representaremos el
mdulo en dB) y el ancho del lbulo (radianes) principal de la DTFT. Determinando los puntos de cruces por cero y
la amplitud de los lbulos laterales. NOTA: Recuerde que puede usar el comando ginput para extraer valores de
una grfica en Matlab. Realice una tabla donde coloque los valores para cada ventana los valores amplitud y ancho
de lobulo
b) Sea la seal

x(n) = cos(0.5.n)+ cos(0.51.n)


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).
Referencias:
http://www.mathworks.com/help/signal/ref/hamming.html
http://cvsp.cs.ntua.gr/~nassos/resources/speech_course_2004/OnlineSpeechDemos/speechDemo_2004_Part1.html

3.2 Casos prcticos- anlisis de seales en el dominio de la frecuencia

Ejercicio 3.2.1
a)

Ingresar un archivo de sonido, tal como una seal de voz o una nota musical (Practica 2), en formato .WAV al
script de MatLab; utilizando las instrucciones adecuadas.
b) Obtener las seales de voz en el dominio del tiempo (formas de onda), y en el dominio de la frecuencia (espectro).
Nota.-Corregir su programa para que el eje x del espectro este en Hz. (verificar referencia previa)
c) Obtener las componentes frecuenciales de las muestras
d) Determinar el ancho de banda.

Ejercicio 3.2.2
Las notas musicales de una escala estn agrupadas en octavas con cada octava conteniendo 12 notas. La octava conteniendo
la mitad de C cubre el rango de frecuencias de 220Hz a 440 Hz. La frecuencia de cada nota es 2 1/12 veces la frecneucnia de
la nota previa, como se muestra en la tabla.
a) a) Realizar un programa en matlab para reproducir el sonido de cada nota; utilizando las instrucciones adecuadas.
Se recomienda usar un ciclo for para generar el conjunto de las 12 notas, o en otro caso puede hacerlo de una por
una.
b) Graficar las seales de las notas en el dominio del tiempo (formas de onda) adecue el eje x para que se aprecie cada
una de las notas, as como el color correspondiente, etiquete cada una de ellas en el grafico, puede usar subplot o
mostrar todas en un solo grafico. Graficar la seales de las notas en el dominio de la frecuencia (espectro).
Nota.- el eje x del espectro este en Hz. Obtener las componentes frecuenciales de las muestras para verificar con la
tabla.
c) Obtener el espectrograma para cada una de las notas. Usando la funcion spectrogram, ya sea en escala de grises o
en colores, puede realizar uno para todas las frecuencias de las notas, o uno para cada uno de ellas.

Usar 3 seg. de duracin, a 8KHz de Fs, Amplitud 1 y fase 0, con N= 300 muestras.
d) Que sucede si tratas de graficar todas las seales vs tiempo? Ajusta el rango para que puedas observar una parte de
cada una de ellas , realiza tus comentarios.
e) Cambie la amplitud de la seal, que sucede en el efecto del sonido? Trata con valores menores a 1 y mayores a 1,
comenta tus observaciones
f) Como cambia el sonido cuando cambias el valor de la fase?
g) Que sucede si haces la Fs=1KHz? Altera la calidad de los resultados? Muestra estas variaciones en tu reporte y al
profesor.

Ejercicio 3.2.3 sistema de marcacin por tonos


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 2, se divide una seal de longitud M, en N frames de longitud
L. De esta manera, calculando la 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).

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

Tabla 2. Frecuencias asociadas a cada dgito del sistema DTMF

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

a)

Realice un script en matlab para generar los tonos correspondientes a cada digito. Puede realizar una funcin, o en
su caso desde la lnea de comandos un men que indique cuantos dgitos ingresar, una vez ingresados estos, se
reproducir el sonido de cada uno de ellos. El programa tambin debe de grabar la secuencia de los nmeros
digitados en un archivo.wav, para su posterior uso.
b) Use la funcin Matlab wavread para cargar el archivo previamente generado file.wav que contiene la seal de
audio a analizar.
c) Con la ayuda de las funciones fft y fftshift de Matlab compute la DTFT de la seal X 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.
d) Realice una funcin o un script que tome como argumentos de entrada dos frecuencias, F1 y F2 (F1 < F2), y como
argumento de salida la variable digito, correspondiente al dgito identificado. Para ello compare F1 con cada una de
las frecuencias FL y F2 con cada una de las frecuencias FH. En caso de que alguna de las frecuencias estuviera fuera
del rango (FL 1.8% y FH 1.8%), la variable de salida debe ser digito=[].
e) Realice un script o en su mismo programa, 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 inciso d. para determinar el dgito correspondiente a este frame.
iii. Una vez procesados todos los frames, muestre en pantalla el nmero identificado.
d) pruebe su programa , grabe la marcacin de un telfono con su celular, en formato .wav, y pruebe su programa,
corresponden a los dgitos marcados por ud.?

Puede basarse en el algoritmo de Referencia:


Alternativa al anlisis en frecuencia de la fft mediante el algoritmo Goertzel
http://revistas.utp.edu.co/index.php/revistaciencia/article/view/1831/1141

Ejercicio 3.2.4
a. Usando la convolucion, el escalado y retardo de las seales (u otros conceptos) crear el efecto del eco en un sonido
mediante matlab.
b. Primeramente cree el sonido, muestre su espectro de frecuencia, posteriomente obtenga el espectro de frecuencia del eco
generado de la misma seal.
c. Grabe por unos cuantos segundos la seal original seguida por su seal con eco.
El eco es un efecto sonoro que se produce cuando un sonido rebota contra una superficie lejana y llega por duplicado al
receptor con un cierto retardo. Este efecto se puede reproducir artificialmente, mezclando el sonido original consigo mismo
pero retardado y levemente atenuado. Se modela facilmente, configurando para cada repeticion, el retardo y la atenuacion.
Una manera para reproducir este efecto en el laboratorio est usar un bucle de realimentacin, como en la Figura 4.

Considere el efecto de dar palmas con las manos en una sala grande. Primero se oye la palmada, luego una versin atenuada
de la palmada, y despues el sonido atenuado de la versin que ya se atenu

Ejercicio 3.2.5
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 Fs=1 KHz. Se asume que el ruido es blanco Gaussiano.
a. Use la funcin fft 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 , 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.

4. Referencias adicionales
[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 Edition,
nd

Macmillan Publishing Company, New York.


[3] The Math Works, Inc. (2014). Signal Processing Toolbox - User's Guide. The Math Works, Inc., 24

Вам также может понравиться