Mam algorytm, który zeruje dopełnianie sekwencji do 4N, wykonuje FFT i używa tylko najniższych częstotliwości N punktów z wygenerowanego 4N.
To wydaje się dużo zmarnowanej pracy, jakieś pomysły, jak można to zrobić szybciej?
Mam algorytm, który zeruje dopełnianie sekwencji do 4N, wykonuje FFT i używa tylko najniższych częstotliwości N punktów z wygenerowanego 4N.
To wydaje się dużo zmarnowanej pracy, jakieś pomysły, jak można to zrobić szybciej?
Odpowiedzi:
Jeśli masz tylko kilka przedziałów, poniższe informacje mogą być dla Ciebie bardzo wydajne:
1. Po prostu wykonaj DFT dla każdej potrzebnej częstotliwości.
2. Użyj algorytmu Goertzela dla każdej częstotliwości, o której mowa.
Zero wypełnienia do 4-krotnej długości, obliczenie dłuższego FFT, a następnie użycie tylko dolnych 1/4 pojemników daje prawie identyczne wyniki do interpolacji Sinc w oryginalnej długości FFT.
Więc po prostu użyj oryginalnej długości FFT i interpoluj za pomocą 3-fazowego jądra interpolacji Sinc o odpowiedniej szerokości okna.
Zero wypełnienia w dziedzinie czasu daje rozwiązanie o wyższej częstotliwości, ale nie ma nowych informacji, więc zapewnia zasadniczo interpolację w dziedzinie częstotliwości. W zależności od charakteru twoich sygnałów i wymaganej precyzji możesz być w stanie uzyskać dodatkowe punkty częstotliwości z regularną FFT N punktów i wykonując odpowiednią interpolację (liniową, splajnową, pchip, sinc itp.).