„Czy jest jakieś praktyczne zastosowanie?” Zdecydowanie tak, przynajmniej aby sprawdzić kod i powiązane błędy.
fa( F.( x ( t ) ) ) =x(-t)
Pierwszy powód wynika z chęci sprawdzenia, czy implementacja Fouriera, czy to zakodowana przez ciebie, przez kogoś innego, czy z biblioteki, robi to, co powinna zrobić na twoich danych. Kolejność próbek, współczynniki skalowania, ograniczenia typu danych wejściowych (rzeczywistość, głębokość bitów) lub długości są źródłami potencjalnych kolejnych błędów dla implementacji Fouriera, takich jak FFT. Dlatego w ramach kontroli poprawności zawsze dobrze jest sprawdzić, czy zaimplementowane wersje dziedziczą, przynajmniej w przybliżeniu, właściwości teoretyczne. Jak zobaczysz, jak pokazuje Machupicchu, nie odzyskujesz dokładnie odwróconego rzeczywistego wejścia: często wyimaginowana część nie jest dokładnie zerowa, a rzeczywista część jest tym, czego oczekiwano, ale z niewielkim błędem względnym, z powodu niedokładnych obliczeń komputerowych (zmiennoprzecinkowy) w ramach tolerancji zależnej od maszyny. Widać to na poniższym obrazku. FFT jest stosowany dwukrotnie na losowym 32-próbkowym sygnale i odwracany. Jak widać, błąd jest niewielki, przy użyciu pływaków o podwójnej precyzji.
Jeśli błąd nie jest stosunkowo niewielki, mogą występować błędy w używanym kodzie.
x01 e 6xk + 1= R e ( M( f( f( f( xk) ) )))
fmax|xk−x0|
Jak widać, rząd wielkości błędu zmienił się ze względu na rozmiar sygnału. Ponadto maksymalny błąd stale rośnie. Po iteracjach pozostaje wystarczająco mały. Można jednak zgadywać, że przy kostce wokselowej i milionach iteracji ten błąd może stać się nieistotny.10001000×1000×1000
Ograniczenie błędu i ocena jego zachowania na podstawie iteracji może pomóc w wykryciu takich zachowań, a następnie zmniejszyć je poprzez odpowiednie próg lub zaokrąglenie.
Dodatkowe informacje:
Nie, dwukrotne wykonanie transformacji Fouriera jest równoważne inwersji czasu (lub inwersji dowolnego wymiaru, w którym się znajdujesz). Otrzymujesz razy stałą, która zależy od rodzaju skalowania używanego do transformacji Fouriera.x(−t)
Odwrotna transformata Fouriera zastosowana do sygnału w dziedzinie czasu po prostu daje widmo z inwersją częstotliwości. Więcej informacji znajdziesz w tej odpowiedzi .
źródło
Chociaż biorąc transformaty Fouriera bezpośrednio dwa razy z rzędu, po prostu daje trywialny czasu inwersji, która byłaby znacznie tańsza do wdrożenia bez FT, nie jest przydatne rzeczy, które mogą być ponownie wykonane poprzez transformaty Fouriera, stosując jakąś inną operację, a następnie Fourier przekształca wynik tego. Najbardziej znanym przykładem jest autokorelacja , która jest rodzajem splotu sygnału z samym sobą. Zwinięcia mają wartość O ( n 2 ), jeśli są naiwnie realizowane, ale tylko O ( n · log n) podczas objazdu za pomocą transformaty Fouriera. Tak więc autokorelacja jest na ogół wykonywana przez FT'ing sygnału, wzięcie kwadratu absolutnego i IFT-powrót tego z powrotem do dziedziny czasu.
źródło
Podczas przetwarzania obrazu używana jest transformata Fouriera 2D (2D DFT), ponieważ obraz może być postrzegany jako sygnał 2D. Np. Dla obrazu w skali szarości , , co oznacza, że na współrzędnych iI I(x,y)=z x y obrazu ma wartość intensywności z. Spójrz na to na przykład:
https://ch.mathworks.com/help/matlab/ref/fft2.html
Spróbuj tego:
i porównaj z:
raczej tak. Po raz drugi zastosowałem fft2, a nie ifft2. Myślę, że to ilustruje to, co powiedział @Matt L.:
„dwukrotne wykonanie transformacji Fouriera jest równoważne inwersji czasu”,
w ifft () obraz jest odwrócony z powodu urojonego ujemnego -i zamiast pozytywnego.
Zrobiłem to również dla sygnału 1D (np. Czasowego):
źródło
Aby odpowiedzieć na pytanie drugie, w komunikacji cyfrowej jest to technika stosowana w telefonach komórkowych teraz sprawia, że dobre wykorzystanie stosowania IFFT na sygnał w dziedzinie czasu. OFDM stosuje IFFT do sekwencji danych w dziedzinie czasu w nadajniku, a następnie odwraca ją za pomocą FFT w odbiorniku. Chociaż literatura lubi używać IFFT-> FFT, tak naprawdę nie ma znaczenia, która z nich jest pierwsza.
Kluczowa korzyść tutaj jest silnie związana z odpowiedzią z lewej strony. Istnieje pewien rodzaj zniekształceń, które nazywają zanikanie wielu ścieżek , a telefony komórkowe w gęstych obszarach miejskich muszą sobie z tym poradzić. Lubimy modelować zanikanie wielu ścieżek jako splot o nieznanych współczynnikach. Ponieważ łańcuch zdarzeń wygląda jak IFFT-> Transmit-> Zastosuj multipath-> Odbierz-> FFT, wygaszanie wielościeżkowe przejdzie przez FFT i stanie się prostym mnożeniem punkt po punkcie o nieznanych wartościach. Wartości te są o wiele łatwiejsze do przewidzenia i sprostowania niż współczynniki splotu.
Efekt ten powoduje również, że sygnał jest bardziej odporny na wielościeżkowe / zanikanie, które może usunąć (lub „zerować”) cały kanał częstotliwości. W tym artykule opisano, jak to zrobić
źródło
Informacje te zostały dostarczone przez użytkownika „Birdwes”, ale nie miał wystarczającej reputacji, aby sam je opublikować, więc opublikuję je tutaj, ponieważ wydają się odpowiednie i przydatne.
„Nie mam wystarczającej liczby punktów na tym forum, aby dodać komentarz, więc robię to tutaj: spójrz na kod źródłowy Accord.Math Hilbert Transform, a zobaczysz, dlaczego może to być opłacalna opcja: https: //github.com/primaryobjects/Accord.NET/blob/master/Sources/Accord.Math/Transforms/HilbertTransform.cs
Praktyczne zastosowania obejmują budowę nadajników SSB lub prawie każdy plan modulacji. Sprawdź modulację IQ, a zobaczysz, dlaczego przesunięcie fazowe o -90 stopni jest istotne. Produkt zasad trygonometrycznych. np. https://user.eng.umd.edu/~tretter/commlab/c6713slides/ch7.pdf
Transformacja Hilberta wykorzystuje środkowy krok między FFT, aby wyzerować składowe ujemne. Możesz go wykorzystać, aby odfiltrować również inne częstotliwości ”.
źródło