The Fast Fourier Transform algoritmo calcula un Fourier descomposición bajo el supuesto de que sus puntos de entrada son equidistantes en el dominio del tiempo, . ¿Y si no lo son? ¿Hay otro algoritmo que podría usar, o de alguna manera podría modificar la FFT, para dar cuenta de lo que efectivamente es una frecuencia de muestreo variable?
Si la solución depende de cómo se distribuyen las muestras, hay dos situaciones particulares en las que estoy más interesado:
- Frecuencia de muestreo constante con jitter: donde δ t k es una variable distribuida aleatoriamente. Supongamos que es seguro decir | δ t k | < T / 2 .
- Muestras descartadas de una frecuencia de muestreo constante: donde n k ∈ Z ≥ k
Motivación: en primer lugar, esta fue una de las preguntas más votadas en la propuesta de este sitio. Pero además, hace un tiempo me involucré en una discusión sobre el uso de FFT (provocada por una pregunta sobre Stack Overflow ) en la que surgieron algunos datos de entrada con puntos muestreados de manera desigual. Resultó que las marcas de tiempo en los datos estaban mal, pero me hizo pensar en cómo uno podría abordar este problema.
fuente
Adición a la respuesta aceptada. Aquí hay un enlace a una implementación de código abierto del método de Greengard y Lee: https://finufft.readthedocs.io/en/latest/ Tiene envoltorios para C, fortran, MATLAB, octava y python. Creo que FINUFFT está escrito en C ++.
Se mantiene y utiliza en el instituto Courant de la NYU, SFU, el instituto Flatiron (obviamente), la Universidad de Texas Austin y la universidad estatal de Florida. Al menos estos son los que conozco.
Yo mismo estoy usando una versión anterior, porque soy vago. Ver: https://cims.nyu.edu/cmcl/nufft/nufft.html
fuente
De interés puede ser la fecha de la transformada discreta de Fourier compensada:
Ferraz-Mello, S., 1981, Estimación de períodos a partir de observaciones desigualmente espaciadas , The Astronomical Journal, 302: 757-763 .
fuente