O algoritmo Fast Fourier Transform calcula uma decomposição de Fourier sob a suposição de que seus pontos de entrada estão igualmente espaçados no domínio do tempo, . E se não estiverem? Existe outro algoritmo que eu poderia usar, ou alguma forma de modificar a FFT, para explicar o que é efetivamente uma taxa de amostragem variável?
Se a solução depende de como as amostras são distribuídas, há duas situações específicas nas quais estou mais interessado:
- Taxa de amostragem constante com jitter: que é uma variável distribuída aleatoriamente. Suponha que seja seguro dizer .
- Amostras descartadas de uma taxa de amostragem constante, de outra forma constante: que
Motivação: em primeiro lugar, essa foi uma das perguntas mais votadas na proposta deste site. Além disso, há algum tempo, participei de uma discussão sobre o uso da FFT (solicitada por uma pergunta no Stack Overflow ) na qual surgiram alguns dados de entrada com pontos de amostra desiguais. Aconteceu que os carimbos de data e hora estavam errados, mas isso me fez pensar em como alguém poderia resolver esse problema.
fonte
Além da resposta aceita. Aqui está um link para uma implementação de código aberto do método de Greengard e Lee: https://finufft.readthedocs.io/en/latest/ Possui wrappers para C, fortran, MATLAB, oitava e python. Eu acredito que o FINUFFT está escrito em C ++.
Ele é mantido e utilizado no Instituto NYU Courant, SFU, Instituto Flatiron (obviamente), Universidade do Texas Austin e Universidade Estadual da Flórida. Pelo menos estes são os que eu conheço.
Eu mesmo estou usando uma versão mais antiga, porque sou preguiçoso. Veja: https://cims.nyu.edu/cmcl/nufft/nufft.html
fonte
De interesse pode ser a Transformada de Fourier Discreta Compensada em Data:
Ferraz-Mello, S., 1981, Estimativa de períodos a partir de observações desigualmente espaçadas , The Astronomical Journal, 302: 757-763 .
fonte