Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transformada
Rpida/Discreta de Fourier.
Procesamiento Digital de Seales.
UNIVERSIDAD POLITCNICA DEL ESTADO DE MORELOS
Alumno:
Lzaro Garca Carlos Arturo
Moran Martnez Jos Luis
Rivera Alonso Abel
Snchez Miranda Gustavo
LGCO126320
MMJO126540
RAAO115680
SMGO114984
Carrera:
Ingeniera en Electrnica y Telecomunicaciones
8vo Cuatrimestre
Profesor:
Felipe de Jess Sorcia.
Fecha de Entrega:
14/04/2015
Contenido
Introduccin. ....................................................................................................................................... 2
Marco Terico ..................................................................................................................................... 2
La Transformada Rpida de Fourier ................................................................................................ 2
Transformada Discreta de Fourier .................................................................................................. 6
Desarrollo ............................................................................................................................................ 8
Transformada Discreta de Fourier en Algoritmo de Goertzel......................................................... 8
De dnde sale el algoritmo de Goertzel? .................................................................................. 9
Ejemplo de Implementacin en la deteccin de tonos DMFT .................................................. 13
Ejemplo comparativo del cdigo utilizado en Matlab .............................................................. 15
Algoritmo de aplicacin de Transformada Rapida de Fourier .......................................................... 17
Anlisis espectral bsico................................................................................................................ 17
Interpolacin de datos .................................................................................................................. 21
Conclusiones ..................................................................................................................................... 23
Bibliografa ........................................................................................................................................ 24
Introduccin.
La nocin de seal es bastante amplia y aparece en diferentes situaciones en las cuales ciertas
cantidades varan en el tiempo o el espacio de una magnitud fsica o de otra naturaleza. Por
tanto est ligada al concepto de funcin.
El procesamiento de seales es una disciplina de las ciencias de la ingeniera que desarrolla
las tcnicas de procesamiento, anlisis e interpretacin de seales. Entre las operaciones
posibles con las seales tenemos control, filtrado, compresin de datos, deconvolucin,
prediccin etc.
Se pueden procesar seales analgicas o seales digitales. En el procesamiento de seales
existen diferentes ramas dependiendo de la naturaleza de las seales consideradas (audio,
voz, imagen, video).
El procesamiento de seales puede tener diferentes objetivos:
La teora de seales es la rama matemtica que estudia las seales y los sistemas que los
transmiten e involucra herramientas del anlisis armnico (generalizacin del Anlisis de
Fourier).
Marco Terico
La Transformada Rpida de Fourier
La Transformada Rpida de Fourier (Fast Fourier Transform) es una herramienta
fundamental en el procesado digital de seales. Su origen es relativamente reciente puesto
que fueron J.W.Cooley y J.W Tukey, quienes hacia 1965 abordaron por primera vez el
problema de la programacin de un algoritmo para el clculo de series complejas.
Ante todo debe quedar claro que la FFT no es una nueva transformada sino que se trata de
un algoritmo para el clculo de la Transformada Discreta de Fourier (DFT). Su importancia
radica en el hecho que elimina una gran parte de los clculos repetitivos a que est sometida
la DFT, por lo tanto se logra un clculo ms rpido. Adems, la FFT generalmente permite
una mayor precisin en el clculo de la DFT disminuyendo los errores de redondeo.
La implementacin del algoritmo de la FFT puede realizarse de dos formas distintas:
1.- Mediante un programa que pueda ejecutarse tanto en un PC como en una tarjeta que
posea un microprocesador especfico para este tipo de operaciones (DSP).
2.- Mediante el desarrollo de una tarjeta (HARDWARE) en la cual se emplean circuitos
integrados especficos. Tal es el caso de los modernos analizadores de espectro.
2
donde:
0 k
Antes de entrar en detalles sobre la FFT comprobemos la naturaleza peridica del trmino
, de hecho la periodicidad y simetra de
Desarrollo intuitivo Para mostrar el algoritmo de la FFT empecemos por elegir un nmero
de muestras N = 2m donde m es un nmero entero. Estudiemos el caso de N= 4
{x[ 0] , x[ 1] , x[ 2] , x[ 3] } <---------- {X[ 0] , X[ 1] , X[ 2] , X[ 3] }
Observando que
se expresa como:
Fig. 7.21.
Esta interpretacin de la FFT de 4 puntos sugiere que la organizacin de la FFT se obtuvo
dividiendo la DFT de 4 puntos en dos TDF de 2 puntos y combinando sus coeficientes.
Observar que en el desarrollo del algoritmo, el dato x[0] se empareja con x[2] , y x[1] con
x[3] . El algoritmo empleado se representa mediante el diagrama de flujo mostrado en la
Figura 7.22.
Fig. 7.22.
Esto implica que la organizacin de una FFT de 8 puntos se puede dividir en dos DFT de 4
puntos y a continuacin una combinacin de ambos conjuntos de coeficientes.
X[k] =
;0
N-1 [1]
Donde:
y los valores espectrales X[k] se evalan en 0
N-1. Al trmino
WN se le denomina frecuentemente " twiddle factor" y es un conjunto de valores complejos.
La Transformada inversa de Fourier (IDFT), que permite generar la seal x[n] a partir de sus
muestras espectrales X[k], se define:
x[n] =
Donde los valores de x[n] son evaluados en el rango 0
;0
N-1 [2]
N-1
Si se emplea la ecuacin [1] para calcular valores adicionales de X[k] fuera del rango 0
N-1 encontraremos que se forma una secuencia espectral peridica, la DFT es peridica. Del
mismo modo, empleando la ecuacin [2] para calcular valores adicionales de x[n] fuera del
rango 0
(N-1) se obtiene una versin peridica de la seal x[n] . Por lo tanto la DFT e
IDFT representan una secuencia finita peridica dentro de una seal no peridica x[n]. En
efecto la DFT considera a una seal no peridica x[n] como si fuese peridica a efecto de
algoritmos de clculo. Tambin es importante saber que tanto una seal peridica de periodo
N y otra seal no peridica de la que se han tomado N muestras, ambas estn definidas por
N valores o muestras.
Tambin debemos darnos cuenta que la nica diferencia entre la DFT y la IDFT a efectos de
implementacin es el factor de escala 1/N y el cambio de signo en la funcin exponencial.
Por lo tanto si desarrollamos un algoritmo para calcular la DFT, el clculo de la IDFT es
inmediato. Este hecho es una consecuencia directa de la simetra existente entre los dominios
del tiempo y la frecuencia.
Cuando los N valores de x[n] son reales, X[k] se descompone en su parte real e imaginaria
R( X[k] ) =
; I(X[k] ) = -
A partir de los cuales se calcula el |X[k] | y la potencia media cuadrtica definida por la
expresin:
|X[k] |2 = |R(X[k] )|2 + |I(X[k] )|2
Las ecuaciones [1]y [2] son esencialmente las mismas que las ecuaciones de anlisis y
sntesis correspondientes a las series de Fourier correspondiente a una seal peridica x[n] ,
la nica diferencia es que ahora se ha incorporado el factor de escala 1/N en la ecuacin de
sntesis.
La similitud entre la DFT y la serie discreta de Fourier puede interpretarse de dos formas. Si
la seal x[n] es realmente peridica la ecuacin [1] proporciona una nueva forma de las series
discretas de Fourier; pero si x[n] es no peridica, y solamente es tratada como peridica a
efecto de clculos computacionales, la ecuacin [1] representa la DFT.
En principio parece redundante el estudio de la DFT puesto que ya desarrollamos una versin
discretizada de la Transformada de Fourier aplicable a tanto a seales discretizadas no
peridicas x[n] como a sistemas LTI. Podemos emplear lo anteriormente desarrollado para
describir la correspondiente funcin espectral X[k]sin hacer ninguna suposicin sobre la
periodicidad?. La respuesta es s y no. Por un lado es posible encontrar una versin
discretizada de las funciones espectrales continuas X(W) o H(W), si embargo las dificultades
surgen cuando necesitamos procesar o estimar la informacin. Un sistema digital no puede
operar con funciones continuas, todo lo que puede hacer es estimar el valor de la funcin
para un conjunto de valores discretos de la frecuencia digital W, - en otras palabras es
necesario generar una versin muestreada de X(W) o H(W). Este hecho operativo implica
responder a la siguiente pregunta; Cuntas muestras de X(W) o H(W), son necesarias?.
Pocas muestras originarn una respuesta inadecuada mientras que muestras en
exceso implican una gran cantidad de clculo redundante. En las siguientes pginas se
desarrollan estos conceptos.
Dominio del tiempo la frecuencia
La DFT y la IDFT nos permiten representar una seal x[n] o un sistema LTI en uno u otro
dominio sin prdida de informacin.
Desarrollo
Transformada Discreta de Fourier en Algoritmo de Goertzel
En el anlisis en frecuencia permite extraer informacin que no es evidente mediante la
simple observacin de una seal en el tiempo. Para esto la transformada discreta de Fourier
(DFT) la cual es la respuesta natural e inmediata a la transformada continua de Fourier en el
mundo digital. La transformada rpida de Fourier (FFT) resuelve esta limitacin en tiempo
mejorado de manera importante el tiempo de clculo consumido por la transformada discreta
(DFT).
El algoritmo que vamos a tratar es el de Goertzel, el cual es un filtro digital derivado de la
trasformada discreta de Fourier el cual es capaz de detectar las componentes de la frecuencia
especifica de una seal, de tal forma que no analiza todo el espectro, el cual lo hace en un
tiempo menor de ejecucin. El ejemplo que aqu se expondr es en el manejo de tonos DMFT
(Dual-Tone Multi-Frequency) los cuales son los ms usados por las compaas de servicios
a travs de telfonos fijos o celulares.
Pero ahora nos enfocaremos en el algoritmo de Goertzel el cual nos interesa, usado en el
procesamiento digital de seales (DSP) el cual se encarga de identificar las componentes de
frecuencia de una seal. Su historia data de 1958 ao en el que el Dr. Gerald Goertzel lo
pblico, este es un filtro digital derivado de la transformada discreta de Fourier, que se
encarga de detectar componentes de frecuencia especifica de una seal, y como ya habamos
mencionado el ejemplo que se expondr ms adelante, se usa en la conmutacin telefnica
digital con la cual se pueden identificar los tonos caractersticos generados cuando un numero
se marca en el sistema.
Ya que es una derivacin de la (DFT) hablaremos a cerca de esta, sabemos que la
transformada de Fourier descompone la seal como la suma de senos y cosenos los cuales
tienen diferentes frecuencias y amplitudes que se encuentran desfasadas en el tiempo. En las
aplicaciones de ingeniera este proceso se considera de manera discreta debido a que la
adquisicin de datos es de manera digital.
1
() = ()
2
)
=0
2
)
() = ()
=0
Bien, ahora que ya tenemos las igualaciones y las sustituciones necesarias, de la ecuacin 3
volveremos a sustituir en la ecuacin 2.
1
() = ()[1]
=0
1
() = ()
=0
1
() = ()+
=0
() = ()
=0
Ecuacin 5.- Expresin de la DFT como sumas, que llevan a una expresin general de
ecuacin en diferencias.
() = ( 1) + ()
Ecuacin 6.- Ecuacin en diferencias de la DFT.
Donde:
y(n) = Representa la salida.
()
1
=
() 1 1
10
1 1
2
1 [2(cos ) 1 + 2 ]
Bien ya despus de haber obtenido las ecuaciones que nos llevan a la realizacin del filtro
IIR de Goertzel, aplicaremos este algoritmo en el software Matlab. El algoritmo de Goertzel
a diferencia de la DFT busca verificar la existencia de ciertas frecuencias previamente
conocidas sin realizar todos los clculos. Esta aplicacin es altamente til en la deteccin de
tonos DMFT usados en muchos sistemas telefnicos de servicio automtico de respuesta para
recargas de telefona mvil, transacciones bancarias y servicio al cliente.
11
Las ecuaciones 12 y 13 son reescritas mediante el diagrama del filtro IIR de la figura 2. En
este caso la implementacin se debe considerar que los valores de Sk(-2) y Sk(-1) son iguales
a 0. Repetir hasta recorrer todos elementos N de la seal digital a explorar.
12
Los tonos DMFT son la sumatoria de dos funciones cosenoidales de diferentes frecuencias.
En la figura 4 se representa la combinacin de frecuencias sobre un teclado digital. Todas las
teclas aunque no sean de uso comn tienen una frecuencia establecida. La ecuacin 14
muestra como la sumatoria de las funciones cosenoidales generan los tonos DMFT.
En la figura 5 se muestra mediante una grfica el detalle de los primeros milisegundos del tono que
es generado por el teclado de la figura 4 para cuando la tecla 1 est presionada. Este ha sido
producido haciendo uso de la ecuacin 14 con una frecuencia de muestreo fm=8000Hz. De igual
forma en la figura 6, se muestra el cdigo en Matlab que permite la simulacin de un archivo de
audio que se genera, se es guardado con la extensin WAV y posteriormente reproduce el archivo
de dicho tono
13
14
15
16
Como estudio de caso, se realiz un comparativo del tiempo de ejecucin entre el algoritmo
Goertzelmio y Goertzel de Matlab 7.6, el cual retorn los valores representados en la tabla 1.
Descripcin
Datos muestreados
m = length(x)
fs
Muestras/unidad de tiempo
dt = 1/fs
t = (0:m-1)/fs
y = fft(x,n)
abs(y)
Amplitud de la DFT
(abs(y).^2)/n
Potencia de la DFT
fs/n
f = (0:n-1)*(fs/n)
fs/2
Frecuencia de Nyquist
17
t = 0:1/fs:10-1/fs;
% 10 segundos de muestra
x = (1.3)*sin(2*pi*15*t) ...
% Componente de 15 Hz
+ (1.7)*sin(2*pi*40*(t-2)) ...
% Componente de 40 Hz
+ (2.5)*randn(size(t));
% Ruido Gaussiano;
Usemos la
m = length(x);
% Longitud de la ventana
n = pow2(nextpow2(m));
% Longitud de la transformada
y = fft(x,n);
% DFT
f = (0:n-1)*(fs/n);
% Rango de frecuencia
power = y.*conj(y)/n;
% Potencia de la DFT
18
La primera mitad del rango e frecuencia (de 0 a la frecuencia de Nyquist fs/2) es suficiente
para identificar las componentes de frecuencia en la data, desde que la segunda mitad es justo
un reflejo de la primera mitad.
En muchas aplicaciones es tradicional centrar el periodograma en 0. La funcin fftshift re
arregla la salida de la fft con un desplazamiento circular para producir un periodograma
centrado en cero:
y0 = fftshift(y);
f0 = (-n/2:n/2-1)*(fs/n);
power0 = y0.*conj(y0)/n;
% Potencia centrado en 0
plot(f0,power0)
xlabel('Frequency (Hz)')
ylabel('Power')
title('{\bf 0-Centered Periodogram}')
19
20
Interpolacin de datos
Este ejemplo demuestra la FFT en un contexto diferente al del anlisis espectral la
estimacin de los coeficientes de un polinomio trigonomtrico que interpola un conjunto de
datos espaciados regularmente. Esta aproximacin de interpolacin de datos es descrito en .
Varias personas descubrieron algoritmos rpidos DFT de forma independiente, y muchas
personas han contribuido a su desarrollo. Un documento de 1965 por John Tukey y John
Cooley es generalmente reconocido como el punto de partida para el uso moderno de la FFT.
Sin embargo, un trabajo de Gauss publicado pstumamente en 1866 (y fechado en 1805)
contiene el uso indiscutible de la tcnica de separacin que forma la base de los modernos
algoritmos FFT.
Gauss se interes en el problema de calcular con exactitud las rbitas de los asteroides a partir
de observaciones de sus posiciones. Su artculo contiene 12 puntos de datos sobre la posicin
del asteroide Pallas, a travs del cual desea interpolar un polinomio trigonomtrico con 12
coeficientes. En lugar de resolver el sistema resultante de 12 por 12 de ecuaciones lineales a
mano, Gauss busc un atajo. Descubri cmo separar las ecuaciones en tres subproblemas
que eran mucho ms fciles de resolver, y luego cmo se recombinan las soluciones para
obtener el resultado deseado. La solucin es equivalente a la estimacin de la DFT de los
datos con un algoritmo FFT.
21
22
a6 = d(M+1)/m;
bn = -2*imag(d(2:M))/m;
Graficando lo interpolado con la data:
hold on
x = 0:0.01:360;
n = 1:length(an);
y = a0 + an*cos(2*pi*n'*x/360) ...
+ bn*sin(2*pi*n'*x/360) ...
+ a6*cos(2*pi*6*x/360);
plot(x,y,'Linewidth',2)
legend('Data','DFT Interpolant','Location','NW')
Conclusiones
En esta investigacin se analiz el algoritmo de Goertzel de la transformada de Fourier para
optimizar la limitacin en tiempo mejorando el tiempo de clculo de la DFT basados en el
manejo de tonos DMFT, as mismo se analizaron 2 diferentes casos de la aplicacin dela
transformada rpida de Fourier para ver el comportamiento que presentaba para realizar
transformadas discretas de Fourier de una manera ms eficiente en menos paso que a fin de
cuentas es lo que busca esta transformada dando como resultado el aprendizaje de como a
partir de muestreos se pueden obtener cada una de las transformadas requeridas.
23
Bibliografa
24