Próbuję zaimplementować FFT, aby zrozumieć, jak to działa. Używam losowego pliku dźwiękowego (więc i nie może kontrolować rozmiaru sygnału), z częstotliwością próbkowania 44,1 kHz. Korzystam z tej biblioteki

https://www.nayuki.io/res/free-small-fft-in-multiple-languages/Fft.java

Celem jest zastosowanie tej formuły do pobierz częstotliwość: F = n * Fs / N

Z n liczba pojemników. Fs częstotliwość próbkowania i N rozmiar FFT

1) Fft ma mieć długość, większość z nich używa potęgi 2 podstawy. Ale jak mogę poznać długość FFT, jeśli zastosuję ją do całej tablicy danych? czy to jest rozmiar tej tablicy?

2) Nie rozumiem pojemników, w jaki sposób są one przetwarzane? Wiem, że FFT działa z fragmentami danych, ale jeśli podam pełną tablicę danych, w jaki sposób są one „tworzone”.

Komentarze

  • Odpowiedzi na te pytania można znaleźć, przeszukując internet i czytając. Polecam również rozpoczęcie programowania od matematycznej konstrukcji sygnały o dość krótkim czasie trwania i zastosuj do nich oprogramowanie FFT i przeanalizuj wyniki.
  • Naprawdę dużo szukałem, ale nie mogłem ' rozumieć, ale może i ' m po prostu za wolno. Dziękuję za troskę.
  • Spróbuj wyszukać " Dyskretna transformacja Fouriera " lub " jak działa DFT " zamiast " jak działa FFT ". Szybka transformata Fouriera to obliczeniowy skrót dyskretnej transformacji Fouriera Formularz. W przypadku tego ostatniego wyszukiwania istnieje większe prawdopodobieństwo, że znajdziesz informacje o wydajności obliczeniowej, a nie o samym procesie. Nie ' nie widzę, jak można oczekiwać, że ktoś lepiej wyjaśni podstawy w szybkiej odpowiedzi na forum niż garść witryn poświęconych temu właśnie to. Pierwsze cztery artykuły na moim blogu również powinny Ci się przydać. Zacznij od dsprelated.com/showarticle/754.php .

Odpowiedz

Pytanie 1

Jeśli zastosujesz ją na całej długości tablicy, długość FFT będzie długością tablicy. Ale FFT jest bardziej wydajna, jeśli długość jest potęgą dwóch, więc często umieszcza się 0 cali na końcu sygnału, aż jego długość osiągnie potęgę 2.

Zbyt prosty przykład …

x = [3.4, 2.56, 1.3]

x ma długość 3, następna potęga z 2 po 3 to 4, więc zmieniamy x na

x = [3.4, 2.56, 1.3, 0]

i zastosuj FFT o długości 4.

Kolejny duży ALE! Jeśli twój sygnał jest długi, staje się niezwykle nieefektywne, aby wykonać całą rzecz naraz. Nie chciałbyś próbować wykonać FFT na pliku audio o długości nawet krótkiej piosenki. W takim przypadku dzielimy sygnał na fragmenty o rozsądnym rozmiarze, wykonujemy FFT dla każdego i uśrednij wyniki.

Szanse są dobre, że to, co faktycznie chcesz zrobić ze swoimi danymi, to nie tylko standardowa FFT, ale raczej proces uśredniania, który opisałem powyżej. Google Bartlett i Welch metody na więcej d etails.

Pytanie 2

Nie jestem w 100% pewien, o co pytasz. Zinterpretuję to tak, jak chcesz wiedzieć, w jaki sposób szerokość przedziałów częstotliwości jest określana i wykonywana z tym.

Szerokość każdego przedziału częstotliwości jest określana wyłącznie na podstawie częstotliwości próbkowania sygnału i długość FFT. Szerokość każdego przedziału to częstotliwość próbkowania podzielona przez liczbę próbek w FFT.

df = fs / N

Przedziały częstotliwości zaczynają się od -fs/2 i sięgają do fs/2. Oznacza to, że jeśli próbkowano przy 100 Hz dla 100 próbek, przedziały częstotliwości będą miały szerokość 1 Hz. Jeśli weźmiesz 200 próbek, będziesz mieć teraz 2x więcej przedziałów częstotliwości, a ich szerokość będzie wynosić 1/2 Hz każdy.

Komentarze

  • Dziękuję bardzo, to wszystko, czego nie ' rozumiem.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *