Czy jest jakaś praktyczna aplikacja do wykonywania podwójnej transformacji Fouriera? … Czy odwrotna transformata Fouriera na wejściu w dziedzinie czasu?

11

W matematyce można przyjąć podwójną pochodną lub podwójną całkę funkcji. Istnieje wiele przypadków, w których wykonanie podwójnej pochodnej modeluje praktyczną sytuację w świecie rzeczywistym, np. Znalezienie przyspieszenia obiektu.

Ponieważ transformacja Fouriera pobiera rzeczywisty lub złożony sygnał jako sygnał wyjściowy i wytwarza złożony sygnał jako sygnał wyjściowy, nic nie stoi na przeszkodzie, aby wziąć ten sygnał wyjściowy i zastosować transformatę Fouriera po raz drugi ... Czy są jakieś praktyczne zastosowania w tym zakresie? to? Czy pomaga modelować niektóre złożone sytuacje w świecie rzeczywistym?

Przy tej samej logice nic nie powstrzymałoby cię przed odwrotną transformacją Fouriera oryginalnego sygnału wejściowego w dziedzinie czasu ... czy to kiedykolwiek byłoby przydatne? Dlaczego lub dlaczego nie?

tjwrona1992
źródło

Odpowiedzi:

9

„Czy jest jakieś praktyczne zastosowanie?” Zdecydowanie tak, przynajmniej aby sprawdzić kod i powiązane błędy.

F(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.

dane, podwójne odwrócenie FFT i błąd

Jeśli błąd nie jest stosunkowo niewielki, mogą występować błędy w używanym kodzie.

x01e6

xk+1=Re(f(f(f(f(xk)))))
fmax|xkx0|

dane, czterokrotny FFT i maksymalne błędy podczas iteracji

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:

Laurent Duval
źródło
1
Naprawdę uwielbiam tę odpowiedź i oznaczyłbym ją jako odpowiedź zaakceptowaną, ale myślę, że większość osób, które odpowiedzą na to pytanie, będą szukać informacji teoretycznych, które Matt podał w linku. +1 za świetną odpowiedź.
tjwrona1992
1
Naprawdę doceniam twój komentarz. Zaktualizowałem jednak odpowiedź odpowiednimi liczbami, aby pokazać, że błędy w dyskretnych implementacjach Fouriera mają znaczenie.
Laurent Duval
17

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 .

Matt L.
źródło
4
Właśnie rekurencyjnie zawaliłeś mi głowę.
tjwrona1992,
Czy ilustruję to, co Matt. L powiedziałem, ale w 2D z moim kodem? tzn. otrzymujemy f (-x, -y).
Machupicchu,
@Machupicchu, tak, to wygląda dobrze.
tjwrona1992,
haha, wtedy możesz wybrać moją odpowiedź na pierwszą odpowiedź ^^ (ma 53K rep, więc nie robi to dla niego żadnej różnicy haha)
Machupicchu
Zaraz po tym, jak powiedziałem, że zdałem sobie sprawę, że jest prawdopodobnie łatwiejszy sposób niż podwójna transformata Fouriera do odwrócenia czasu haha
tjwrona1992,
16

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.

po lewej stronie
źródło
2
Istnieje również cepstrum , odwrotna transformata Fouriera logarytmu transformaty Fouriera. Może służyć do wykrywania sygnałów okresowych.
Olli Niemitalo
12

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 iII(x,y)=zxy 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:

x=imread('cameraman.tif');
X=fft2(fft2(x));
imagesc(abs(X));

i porównaj z:

x=imread('cameraman.tif');
X= ifft2(fft2(x));
imagesc(abs(X));

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.

wprowadź opis zdjęcia tutaj

Zrobiłem to również dla sygnału 1D (np. Czasowego):

wprowadź opis zdjęcia tutaj

Machu Picchu
źródło
Wiem, że istnieje coś takiego jak transformata Fouriera 2D, ale to nie to samo, co pobranie sygnału wejściowego i przepuszczenie go przez algorytm, a następnie pobranie wyniku tego uruchomienia i przepuszczenie go ponownie.
tjwrona1992,
1
Transformata Fouriera można rozdzielić.
Machupicchu,
Moje pytanie dotyczyłoby również transformacji Fouriera 2D. Teoretycznie możesz wziąć sygnał wejściowy 2D, zastosować transformatę Fouriera 2D, następnie wziąć sygnał wyjściowy 2D i użyć go jako wejścia i zastosować ponownie transformatę Fouriera 2D.
tjwrona1992,
sprawdź w Matlabie, co się stanie, jeśli wykonasz następujące czynności: por. Zaktualizowałem swoją odpowiedź
Machupicchu,
1
Sugerowałbym, abyś użył prawdziwej części zamiast wartości bezwzględnej
Laurent Duval
6

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.

schemat nadajnika OFDM

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ć

Taka propagacja wielościeżkowa może powodować powstawanie głębokich zer widmowych w paśmie częstotliwości odbieranych sygnałów radiowych z powodu destrukcyjnych zakłóceń dwóch kopii sygnału przybywających w nieco innych momentach. Wartość zero w OFDM może usunąć jedną lub więcej podnośnych. Ta sama wartość zerowa w QAM z pojedynczą nośną może upuścić serię kolejno sąsiadujących symboli, w zależności od określonego wzorca danych w tym momencie. W skrajnych przypadkach utrata akwizycji sygnału jest nawet możliwa. Następnie przechodzi do mocy FEC, aby odzyskać pierwotną sekwencję danych.

myeslf
źródło
Wow, to jest niezwykle interesujące! Dzięki! :)
tjwrona1992
1

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 ”.

tjwrona1992
źródło