Como ya sabemos, la DFT de una secuencia discreta se calcula mediante la siguiente expresión:
donde k varía de 0 a N-1.
1.- Desarrollar una función MATLAB, p.e. "miDFT(x)", que dada una secuencia discreta de entrada calcule su DFT. Probar que el resultado de la función es correcto asegurando que el resultado de
max(fft(x)-miDFT(x))
es suficientemente pequeño (por ejemplo <10-3).
Utilizar como x la siguiente señal:
x=(sin(0.15*pi*(1:10000))+0.5*sin(0.16*pi*(1:10000))+0.25*sin(0.25*pi*(1:10000)))';
La FFT es una familia de algoritmos que permite realizar el cálculo de la DFT de manera rápida, haciendo posible su implementación mediante DSP's para aplicaciones en tiempo real. El algoritmo más utilizado de esta familia es la FFT por diezmado temporal de "radix" 2, que además es el primer algoritmo que fue desarrollado, y lo presentaron Cooley y Tuckey en 1965. El único problema de este algoritmo es que, por su propia naturaleza, obliga a que la secuencia de entrada tenga un número de muestras potencia de 2. Se puede consultar dicho algoritmo en la bibliografía.
2.- Desarrollar una nueva función MATLAB, p.e. "miFFT(x)", que dada una secuencia discreta de entrada, calcule, en función de N, la longitud de la secuencia de entrada:
Probar el resultado aplicando el criterio del apartado anterior sobre las siguientes señales:
x1=(sin(0.15*pi*(1:10000))+0.5*sin(0.16*pi*(1:10000))+0.25*sin(0.25*pi*(1:10000)))';
x2=(sin(0.15*pi*(1:16384))+0.5*sin(0.16*pi*(1:16384))+0.25*sin(0.25*pi*(1:16384)))';
Obviamente, nos interesaría utilizar siempre el algoritmo FFT, ya que pasa de un número de operaciones O(N2), que es el caso de la DFT, a un número de operaciones O(N·log2(N)). Cuanto mayor es el número de muestras, mayor es la diferencia entre ambos métodos.
Ello se puede conseguir utilizando el método llamado "zero-padding", que consiste en añadir el número de muestras necesario para que el nuevo número de muestras sea potencia de 2. El valor de estas muestras es de cero. Por ejemplo, a una señal de 100 muestras le añadiríamos 28 ceros al final, y de esta manera tendríamos 128 muestras y podríamos utilizar la FFT.
3.- Sobrecargar la función anterior, miFFT, para que acepte la sintaxis "miFFT(x,N)", donde N es el nuevo número de muestras:
Con las señales del apartado anterior, comprobar el resultado correcto de la función para