UWAGA: Nie jest to duplikat, mam określone wymagania inne niż powiązane pytania.Jak wykreślić widmo pliku WAV przy użyciu FFT?
Na początek chcę wykreślić spektrum pliku audio (.wav), tak jak to robi audacity (podobne: How to draw a frequency spectrum from a Fourier transform).
Do tej pory mogę czytać i pisać pliki wav. Ale moim problemem jest to, że nie wiem dokładnie, jakie wartości muszę przekazać do funkcji FFT. Przy okazji używam Exocortex dla FFT w C#. Funkcja FFT wymaga ode mnie podania tablicy liczb zespolonych o odpowiednim rozmiarze (512, 1024, ... przypuszczam), opcjonalnym parametrze całkowitym dla długości i kierunku fourier (do przodu/do tyłu).
Konkretne pytania:
- Complex (klasa) z biblioteki Exocortex ma dwie wartości, a mianowicie rzeczywiste i urojone. Mam zestaw próbek, więc które powinny być prawdziwe i które powinny być wyimaginowane?
- Mam plik wav, więc należy przyjąć długość zmiennej. Jak przekazać to do funkcji FFT? Czy powinienem wybrać rozmiar (512/1024/itd.), Podzielić całą próbkę na rozmiar, a następnie przekazać ją do FFT?
- Skąd mam wiedzieć, jakie częstotliwości powinny być wyświetlane na osi X?
- Jak wykreślić dane FFT? (Chcę, aby oś X była częstotliwością, a oś Y w decybelach)
Jeśli nie rozumiesz, o co mi chodzi, spróbuj użyć Audacity, zaimportuj plik audio, a następnie kliknij Analizy> Drukuj Widmo. To są rzeczy, które chcesz odtworzyć. Proszę szczegółowo odpowiedzieć na moje pytanie, ponieważ naprawdę chcę się tego nauczyć. Mam tylko małe doświadczenie w tym zakresie. Jestem dopiero początkującym w cyfrowym przetwarzaniu sygnału. W miarę możliwości nie kieruj mnie do innych stron FFT, ponieważ nie odpowiadają one konkretnie na moje pytanie.
EDIT:
Zrobiłem trochę czytania i dowiedział się, jak FFT an danych audio, ale tylko w kompetencji 2. Więc jak mam zrobić to samo w pliku audio o długości, która jest nie ma uprawnień 2? Według niektórych potrzebuję użyć "okna". Zrobiłem też trochę wyszukiwania i odkryłem, że przetwarzanie przebiegu zajmuje tylko część kształtu fali. Pamiętaj powyżej, że chcę uzyskać FFT pliku audio, a nie jego część. Co powinienem teraz zrobić? Proszę o pomoc :(
Czy mówisz o tym http://sourceforge.net/projects/exocortexdsp/?source=navbar? – Vadim
Odnośnie notatki - 1. Zadajesz za dużo pytań. To jest więcej rzeczy z matematyki, a otrzymasz znacznie lepsze (i więcej) odpowiedzi na forach poświęconych temu zagadnieniu. 2. Jeśli twoje pliki zawierają pewną liczbę próbek, która nie jest potęgą dwóch, musisz uzupełnić je zerami, aby rozmiar był potęgą dwóch. Jest to ograniczenie FFT. 3. Zasadniczo za pomocą okna wykonuje się FFT na części danych (jeśli jest to potrzebne). Ale idzie o wiele głębiej, są różne okna z różnymi efektami. – Vadim
To, co próbujesz wygenerować, nazywa się [spektrogramem] (http://en.wikipedia.org/wiki/Spectrogram). Lepiej byłoby zapytać, jak wykreślić spektrogram, niż zapytać o widmo. –