Jeśli wykonasz wykres FFT prostego sygnału, na przykład:
t = 0:0.01:1 ;
N = max(size(t));
x = 1 + sin( 2*pi*t ) ;
y = abs( fft( x ) ) ;
stem( N*t, y )
Sinusoida 1 Hz + DC
FFT powyżej
Rozumiem, że liczba w pierwszym przedziale to „ile DC” jest w sygnale.
y(1) %DC
> 101.0000
Liczba w drugim przedziale powinna wynosić „ile 1 cyklu w całym sygnale” to:
y(2) %1 cycle in the N samples
> 50.6665
Ale to nie 101! To około 50,5.
Na końcu sygnału fft jest inny wpis, równy pod względem wielkości:
y(101)
> 50.2971
Więc 50,5 ponownie.
Moje pytanie brzmi: dlaczego FFT jest tak dublowane? Dlaczego nie jest to po prostu 101 w y(2)
(co oczywiście oznacza, że wszystkie 101 przedziałów twojego sygnału ma sinusoidę 1 Hz?)
Czy dobrze byłoby zrobić:
mid = round( N/2 ) ;
% Prepend y(1), then add y(2:middle) with the mirror FLIPPED vector
% from y(middle+1:end)
z = [ y(1), y( 2:mid ) + fliplr( y(mid+1:end) ) ];
stem( z )
Odwróć i dodaj drugą połowę wektora FFT
Pomyślałem teraz, że część lustrzana po prawej stronie jest poprawnie dodana, dając mi pożądane „wszystkie 101 pojemników FFT zawiera sinusoidę 1 Hz”
>> z(2)
ans =
100.5943
Odpowiedzi:
Rzeczywiste sygnały są „odzwierciedlone” w rzeczywistych i ujemnych połówkach transformaty Fouriera ze względu na naturę transformaty Fouriera. Transformata Fouriera jest zdefiniowana następująco:
Zasadniczo koreluje sygnał z szeregiem złożonych sinusoid, z których każda ma własną częstotliwość. Jak więc wyglądają te złożone sinusoidy? Poniższy obrazek ilustruje jedną złożoną sinusoidę.
„Korkociąg” to wirująca złożona sinusoida w czasie, podczas gdy dwie sinusoidy, które za nią podążają, są wydobytymi rzeczywistymi i wyobrażonymi składnikami złożonej sinusoidy. Bystry czytelnik zauważy, że rzeczywiste i urojone elementy są dokładnie takie same, tyle że są poza fazą o 90 stopni ( ). Ponieważ mają 90 stopni przesunięcia w fazie, są ortogonalne i mogą „złapać” dowolny element sygnału na tej częstotliwości.π2)
Zależność między wykładniczym a cosinus / sinus podaje formuła Eulera:
To pozwala nam zmodyfikować transformatę Fouriera w następujący sposób -
Przy częstotliwościach ujemnych transformata Fouriera staje się następująca -
Porównanie wersji częstotliwości ujemnej z wersją częstotliwości dodatniej pokazuje, że cosinus jest taki sam, podczas gdy sinus jest odwrócony. Są jednak nadal pod kątem 90 stopni względem siebie, co pozwala im wychwycić dowolny składnik sygnału przy tej (ujemnej) częstotliwości.
Ponieważ zarówno sinusoidy o częstotliwości dodatniej, jak i ujemnej mają 90 stopni przesunięcia w fazie i mają tę samą wielkość, oba reagują na sygnały rzeczywiste w ten sam sposób. A raczej skala ich reakcji będzie taka sama, ale faza korelacji będzie inna.
EDYCJA: W szczególności ujemna korelacja częstotliwości jest koniugatem dodatniej korelacji częstotliwości (z powodu odwróconej urojonej składowej sinusoidalnej) dla sygnałów rzeczywistych. W kategoriach matematycznych jest to, jak zauważył Dilip, następujące:
Inny sposób myślenia o tym:
Wyimaginowane elementy są po prostu… Wyimaginowane! Są narzędziem, które pozwala na zastosowanie dodatkowej płaszczyzny do oglądania rzeczy i umożliwia znaczną cyfrową (i analogową) obróbkę sygnału, jeśli nie dużo łatwiejszą niż zastosowanie równań różniczkowych!
Ale nie możemy złamać logicznych praw natury, nie możemy zrobić niczego „prawdziwego” z wyimaginowaną treścią a więc musi skutecznie się skasować, zanim powróci do rzeczywistości. Jak to wygląda w transformacie Fouriera sygnału opartego na czasie (domena o złożonej częstotliwości)? Jeśli dodamy / zsumujemy składową dodatnią i ujemną częstotliwości sygnału, części urojone anulują, to rozumiemy przez to, że elementy dodatnie i ujemne są sprzężone ze sobą. Zauważ, że kiedy FT jest pobierana z sygnału czasu, istnieją te sprzężone sygnały, z „rzeczywistą” częścią każdego dzielącą wielkość, w połowie w domenie dodatniej, w połowie w ujemnej, więc w efekcie dodanie koniugatów razem usuwa fikcyjne treści i zapewnia tylko rzeczywistą treść.†
źródło
FFT (Fast Fourier Transform lub) w rzeczywistości jest algorytm do obliczania tej dyskretnej transformaty Fouriera lub DFT. Typowa implementacja przyspiesza konwencjonalne obliczenia DFT, wykorzystując fakt, że , liczba punktów danych, jest liczbą całkowitą złożoną, co nie ma miejsca w tym przypadku, ponieważ jest liczbą pierwszą. (Chociaż FFT istnieją w przypadku, gdy jest liczbą pierwszą, używają innego sformułowania, które może, ale nie musi być zaimplementowane w MATLAB). Rzeczywiście, wiele osób celowo wybiera aby mieć postać lub , aby przyspieszyć obliczenia DFT za pomocą FFT.N 101 N N 2k 4k
Przechodząc do pytania, dlaczego występuje tworzenie kopii lustrzanej, hotpaw2 zasadniczo podał przyczynę, dlatego poniższe informacje to tylko uzupełnienie szczegółów. DFT na sekwencji z punktów danych, określa się sekwencję gdzie gdzie . Będzie oczywiste, że jest ogólnie sekwencją o wartościach zespolonych , nawet jeśli jest sekwencją o wartościach rzeczywistych . Ale zauważ, że kiedyx=(x[0],x[1],x[2],…,x[N−1]) N X=(X[0],X[1],X[2],…,X[N−1])
Ludzie MATLABi będą musieli to przetłumaczyć, aby uwzględnić fakt, że tablice MATLAB są ponumerowane od górę.1
Przechodząc do rzeczywistych danych, twój jest wartością DC równą plus nieco więcej niż jeden okres sinusoidy o częstotliwości Hz. Rzeczywiście, otrzymujesz gdzie . Zatem pierwsza i ostatnia z próbek ma tę samą wartość. Obliczany DFT jest więc podawany przez Niedopasowanie między a powoduje zakłócenia w DFT: wartościx 1 1
t
źródło
Zauważ, że wynik FFT jest dublowany (jak w sprzężeniu symetrycznym) tylko wtedy, gdy dane wejściowe są prawdziwe.
W przypadku ściśle realnych danych wejściowych dwa sprzężone obrazy lustrzane w wyniku FFT anulują wyimaginowane części dowolnych złożonych sinusoid, a tym samym sumują się do ściśle rzeczywistej sinusoidy (z wyjątkiem niewielkiego szumu zaokrąglania numerycznego), pozostawiając w ten sposób reprezentację ściśle prawdziwe fale sinusoidalne.
Gdyby wynik FFT nie był sprzężony z odbiciem lustrzanym, reprezentowałby kształt fali, który miałby złożone wartości (niezerowe składowe urojone), a nie coś ściśle wartościowego.
źródło