Fast Fourier Transform algorytm oblicza rozkładu Fouriera przy założeniu, że punkty wejściowe są równo rozłożone w dziedzinie czasu . Co jeśli nie są? Czy istnieje inny algorytm, którego mógłbym użyć, lub w jakiś sposób zmodyfikować FFT, aby uwzględnić efektywną zmienną częstotliwość próbkowania?
Jeśli rozwiązanie zależy od sposobu dystrybucji próbek, najbardziej interesują mnie dwie sytuacje:
- Stała częstotliwość próbkowania z fluktuacją: gdzie δ t k jest zmienną losową. Załóżmy, że można bezpiecznie powiedzieć | δ t k | < T / 2 .
- Upuszczone próbki ze skądinąd stałej częstotliwości próbkowania: gdzie n k ∈ Z ≥ k
Motywacja: po pierwsze, było to jedno z najczęściej głosowanych pytań dotyczących propozycji tej witryny. Ale dodatkowo jakiś czas temu włączyłem się w dyskusję na temat wykorzystania FFT (podpowiedź na pytanie o przepełnienie stosu ), w której pojawiły się niektóre dane wejściowe z nierównomiernie próbkowanymi punktami. Okazało się, że znaczniki czasu w danych były nieprawidłowe, ale przyszło mi do głowy, w jaki sposób można rozwiązać ten problem.
źródło
Dodatek do zaakceptowanej odpowiedzi. Oto link do implementacji metody Greengarda i Lee w wersji open source: https://finufft.readthedocs.io/en/latest/ Ma opakowania dla C, fortran, MATLAB, oktawy i python. Wierzę, że FINUFFT jest napisany w C ++.
Jest utrzymywany i używany w NYU Courant Institute, SFU, Flatiron Institute (oczywiście), University of Texas Austin i Florida State University. Przynajmniej o tych wiem.
Sam używam starszej wersji, bo jestem leniwy. Zobacz: https://cims.nyu.edu/cmcl/nufft/nufft.html
źródło
Interesująca może być dyskretna transformata Fouriera z kompensacją daty:
Ferraz-Mello, S., 1981, Oszacowanie okresów z nierównomiernie rozłożonych obserwacji , The Astronomical Journal, 302: 757-763 .
źródło