Załóżmy, że mam jakąś nieznaną funkcję z domeną ℝ , o której wiem, że spełnia pewne rozsądne warunki, takie jak ciągłość. Znam dokładne wartości f (ponieważ dane pochodzą z symulacji) w niektórych jednakowo odległych punktach próbkowania t_i = t_0 + iΔt z i∈ \ {1,…, n \} , które mogę założyć, że są wystarczająco dokładne, aby uchwycić wszystkie istotne aspekty f , np. mogę założyć, że pomiędzy dwoma punktami próbkowania występuje co najwyżej jeden ekstremum lokalne f . Szukam testu, który powiedziałby mi, czy moje dane są zgodne z tym, że f jest dokładnie okresowe, tj. ∃τ: f (t + τ) = f (t) \, ∀ \, t, przy czym długość okresu jest nieco rezonansowa, na przykład (ale możliwe jest, że mogę wprowadzić silniejsze ograniczenia, jeśli to konieczne).
Z innego punktu widzenia mam dane i szukam testu, który odpowie na pytanie, czy istnieje funkcja okresowa (spełniająca powyższe warunki), że .
Ważne jest to, że jest co najmniej bardzo zbliżone do okresowości (może to być na przykład lub z ) w zakresie, w jakim zmiana jednego punktu danych o niewielką ilość może wystarczyć, aby dane były zgodne z będącym dokładnie okresowym. Zatem standardowe narzędzia do analizy częstotliwości, takie jak transformata Fouriera lub analiza przejść przez zero, niewiele pomogą.
Zauważ, że test, którego szukam, prawdopodobnie nie będzie probabilistyczny.
Mam kilka pomysłów, jak sam zaprojektować taki test, ale chcę uniknąć ponownego opracowania koła. Więc szukam istniejącego testu.
źródło
Odpowiedzi:
Tak jak powiedziałem, miałem pomysł, jak to zrobić, co zrealizowałem, udoskonaliłem i napisałem artykuł, który jest teraz opublikowany: Chaos 25, 113106 (2015) - preprint na ArXiv .
Badane kryterium jest prawie takie samo jak naszkicowane w pytaniu: Biorąc pod uwagę dane próbkowane w punktach czasowych , test decyduje, czy jest funkcja oraz takie, że:x1,…,xn t0,t0+Δt,…,t0+nΔt f:[t0,t0+Δt]→R τ∈[2Δt,(n−1)Δt]
Test można zmodyfikować w celu uwzględnienia drobnych błędów, takich jak błędy numeryczne metody symulacji.
Mam nadzieję, że mój artykuł odpowiada również, dlaczego byłem zainteresowany takim testem.
źródło
Przekształć dane w dziedzinę częstotliwości za pomocą dyskretnej transformaty Fouriera (DFT). Jeśli dane są idealnie okresowe, będzie dokładnie jeden przedział częstotliwości o wysokiej wartości, a inne przedziały będą wynosić zero (lub bliskie zeru, patrz wyciek widmowy).
Zauważ, że rozdzielczość częstotliwości jest podana przez . To ustawia limit precyzji wykrywania.sampling frequencyNumber of samples
źródło
Jeśli znasz aktualny sygnał okresowy, oblicz
Następnie zsumuj elementy . Jeśli jest powyżej progu (rozważ błąd arytmetyki zmiennoprzecinkowej), dane nie są okresowe.difference
źródło