W zasadzie interesuje Cię estimating a Spectrum - zakładając, że już przekroczyłeś etap czytania WAV i przekształcenia go w dyskretny sygnał czasu.
Spośród różnych metod, najbardziej podstawowym jest Periodogram, co oznacza wzięcie okna z dyskretną transformacją Fouriera (z FFT) i zachowanie jej kwadratowej wielkości. Odpowiada to odpowiedzi Pawła. Potrzebujesz okna, które obejmuje kilka okresów najniższej częstotliwości, które chcesz wykryć. Przykład: jeśli twoje sinusoidy mogą być tak niskie jak 10 Hz (okres = 100ms), powinieneś wziąć okno 200ms o 300ms (lub więcej). Jednak periodogram ma pewne disadvantages, choć to proste do obliczenia i jest więcej niż wystarczająco, jeśli wysoka precyzja nie jest wymagane:
Surowa periodogram nie jest dobrym widmowa szacunek bo spektralnego uprzedzeń oraz fakt, że wariancja przy danej częstotliwości nie zmniejsza się , ponieważ zwiększa się liczba próbek używanych w obliczeniach .
periodogram można wykonać lepiej poprzez uśrednienie kilku okien, z judious wyboru tych szerokościach(). Istnieje wiele innych metod szacowania widma (modelowanie AR).
W rzeczywistości nie jesteście Państwo zainteresowani oszacowaniem pełnego widma, a jedynie lokalizacją pojedynczej częstotliwości. Można to zrobić, poszukując szczytu szacowanego widma (wykonanego jak wyjaśniono), ale także bardziej specyficznego i mocnego (i skomplikowanego) methods (Pisarenko, algorytm MUSIC). W twoim przypadku prawdopodobnie byłyby przesadą.
Właściwie nie jest to wersja 'fftw', ale czy została skompilowana z obsługą zmiennoprzecinkową, czyż nie? –
To prawda, jest to kwestia konfiguracji IIRC konfiguracji. Nie używałem FFTW od wielu lat. Być może "wersja" nie jest najdokładniejszym słowem, jakie mogłem wybrać? –
Większość oprogramowania DSP audio dla Linuksa (i innych platform), które używa FFTW wymaga FFTW zbudowanego z obsługą float, a spędzając dużo czasu na budowaniu tego materiału ze źródła, mogę powiedzieć, że przynajmniej w Debianie ma pakiety dla różnych kompilacji opcje FFTW, które można zainstalować jednocześnie. Spodziewam się, że dotyczy to również większości innych dystrybucji Linuksa. –