Mientras estudiaba las varias implementaciones de algoritmos disponibles en línea del algoritmo de la Transformada Rápida de Fourier, he llegado a una pregunta relacionada con la forma en que el DFT funciona en teoría.
Supongamos que tienes una secuencia de $N$ puntos $x_0, ..., x_{N-1}$ . Para $ k = 0, ..., N-1 $ que $ X_k = \sum_ {n=0}^{N-1} x_n e^{-2ik \pi \frac {n}{N}} $ .
He notado que muchos algoritmos son más fáciles de implementar, o más rápidos, cuando el tamaño de la entrada puede ser expresado como una potencia de 2. Para rellenar la señal, he visto dos enfoques.
- Acompañe la señal con $0$ s, ajustes $x_N, ..., x_{2^p-1} = 0$ y $X_k = \sum_ {n=0}^{N-1} x_n e^{-2ik \pi \frac {n}{2^p}}$
- Interpolar los valores originales, estableciendo $ \tau =N/2^p$ el nuevo espacio entre los puntos consecutivos y luego adivinar los valores en $0, \tau , 2 \tau , ..., (2^p-1) \tau $ a través de la interpolación lineal.
He oído a la gente decir cosas diferentes:
Algunas personas se oponen muy fuertemente al primer enfoque (recientemente tuve una discusión con un profesor de física sobre esto). Dicen que rellenar la señal con ceros adicionales te da los coeficientes de Fourier de una función diferente, que no tendrá ninguna relación con los de la señal original. Por otro lado, dicen que la interpolación funciona muy bien.
Por otro lado, la mayoría de las bibliotecas, si no todas, que he revisado usan la segunda solución.
Todas las referencias que pude encontrar en Internet eran bastante vagas sobre este tema. Algunos dicen que la mejor interpolación de banda limitada que se puede hacer en el dominio de la frecuencia se obtiene a través del acolchado del dominio del tiempo, pero no pude encontrar ninguna prueba de tal afirmación.
¿Podría ayudarme a averiguar qué ventajas e inconvenientes tienen ambos enfoques? Idealmente, estoy buscando algo con un fondo matemático, no sólo ejemplos visuales =)
¡Gracias!