Wszystkie implementacje FFT, z którymi się zetknęliśmy, dają w wyniku wartości zespolone (z częściami rzeczywistymi i urojonymi), nawet jeśli dane wejściowe do algorytmu były dyskretnym zbiorem liczb rzeczywistych (liczb całkowitych).
Czy nie jest możliwe przedstawienie dziedziny częstotliwości wyłącznie za pomocą liczb rzeczywistych?
FFT podaje amplitudę i fazę. Amplituda jest kodowana jako wielkość liczby zespolonej (sqrt (x ^ 2 + y ^ 2)), podczas gdy faza jest kodowana jako kąt (atan2 (y, x)). Aby uzyskać ściśle rzeczywisty wynik z FFT, przychodzący sygnał musi mieć równą symetrię (tj. X [n] = spój (x [Nn])).
Jeśli zależy ci tylko na intensywności, wielkość liczby zespolonej wystarczy do analizy.
źródło
Tak, możliwe jest przedstawienie wyników w dziedzinie częstotliwości FFT dla ściśle rzeczywistych danych wejściowych przy użyciu tylko liczb rzeczywistych.
Te liczby zespolone w wyniku FFT to po prostu 2 liczby rzeczywiste, które są wymagane do podania współrzędnych 2D wektora wynikowego, który ma zarówno długość, jak i kąt kierunku (lub wielkość i fazę). Każda składowa częstotliwości w wyniku FFT może mieć unikalną amplitudę i unikalną fazę (w odniesieniu do pewnego punktu w aperturze FFT).
Pojedyncza liczba rzeczywista nie może reprezentować zarówno wielkości, jak i fazy. Jeśli wyrzucisz informacje o fazie, może to łatwo znacznie zniekształcić sygnał, jeśli spróbujesz go odtworzyć za pomocą iFFT (a sygnał nie jest symetryczny). Tak więc pełny wynik FFT wymaga 2 liczb rzeczywistych na paczkę FFT. Te 2 liczby rzeczywiste są zebrane razem w niektórych FFT w złożonym typie danych według wspólnej konwencji, ale wynik FFT może łatwo (i niektóre FFT robią) po prostu wytworzyć 2 rzeczywiste wektory (jeden dla współrzędnych cosinusowych i jeden dla współrzędnych sinusoidalnych).
Istnieją również procedury FFT, które bezpośrednio wytwarzają wielkość i fazę, ale działają wolniej niż FFT, co daje złożony (lub dwa rzeczywiste) wynik wektorowy. Istnieją również procedury FFT, które obliczają tylko wielkość i po prostu odrzucają informacje o fazie, ale zwykle działają nie szybciej niż pozwalają zrobić to samemu po bardziej ogólnym FFT. Może zaoszczędzą koderowi kilka wierszy kodu kosztem niemożności ich odwrócenia. Ale wiele bibliotek nie zawraca sobie głowy włączaniem tych wolniejszych i mniej ogólnych form FFT i po prostu pozwala koderowi konwertować lub ignorować to, czego potrzebują lub nie.
Ponadto wielu uważa, że matematyka jest o wiele bardziej elegancka przy zastosowaniu złożonej arytmetyki (gdzie, dla ściśle rzeczywistych danych wejściowych, korelacja cosinusowa lub nawet składnik wyniku FFT jest umieszczany w składowej rzeczywistej, a korelacja sinusoidalna lub nieparzysta składowa Wynik FFT jest umieszczany w urojonym składniku liczby zespolonej).
(Dodano :) Jako kolejną opcję możesz rozważyć dwa składniki każdego pojemnika wyników FFT, zamiast jako składniki rzeczywiste i urojone, jako składniki parzyste i nieparzyste, oba rzeczywiste.
źródło
Jeśli twój współczynnik FFT dla danej częstotliwości
f
wynosix + i y
, możesz spojrzeć nax
współczynnik cosinusa przy tej częstotliwości, podczas gdyy
jest to współczynnik sinusa. Jeśli dodasz te dwie fale dla określonej częstotliwości, otrzymasz falę z przesunięciem fazowym na tej częstotliwości; wielkość tej fali jestsqrt(x*x + y*y)
równa wielkości współczynnika zespolonego.Dyskretnej transformacji kosinusowej (DCT) jest spokrewniony z transformacją Fouriera, który dostarcza wszystkich rzeczywistych współczynników. Dwuwymiarowy DCT jest używany przez wiele algorytmów kompresji obrazu / wideo.
źródło
Dyskretna transformata Fouriera jest zasadniczo transformacją z wektora liczb zespolonych w „dziedzinie czasu” do wektora liczb zespolonych w „dziedzinie częstotliwości” (używam cudzysłowów, ponieważ jeśli zastosujesz odpowiednie współczynniki skalowania, DFT jest swoją własną odwrotność). Jeśli twoje wejścia są prawdziwe, wtedy można wykonać dwa Fouriera naraz: Take wektory wejściowe x i y i obliczenia F ( x + i y ). Zapomniałem, jak później oddziela się DFT, ale podejrzewam, że chodzi o symetrię i złożone koniugaty.
Dyskretnej transformaty cosinus sort-of pozwala reprezentować „domeny częstotliwości” z liczb rzeczywistych, i jest powszechne w algorytmach kompresji stratnej (JPEG, MP3). Zaskakujące (dla mnie) jest to, że działa, mimo że wydaje się odrzucać informacje o fazie, ale wydaje się to również zmniejszać użyteczność dla większości celów przetwarzania sygnału (nie jestem świadomy łatwego sposobu na splot / korelację z DCT).
Pewnie pomyliłem się w niektórych szczegółach;)
źródło