mały|250x250px|Wykresy dwóch funkcji rzeczywistych oraz ich transformaty Fouriera. Drugi sygnał, przesunięty w czasie względem pierwszego, pomimo identycznej postaci, ma inną transformatę Fouriera
Transformacja Fouriera – transformacja całkowa, która przyjmuje funkcję rzeczywistą jako daną wejściową i wyprowadza funkcję o wartościach zespolonych, która opisuje stopień, w jakim w funkcji wejściowej występują funkcje zespolone . Transformatą Fouriera nazywa się funkcję, która powstaje w wyniku działania transformacji Fouriera.
thumb|249x249px|Zastosowanie transformacji Fouriera do określenia składowych akordu C dur fortepianu. Pierwsze trzy piki od lewej odpowiadają podstawowym częstotliwościom C, E, G. Pozostałe są wyższymi harmonicznymi.
Przykładowo, obliczanie transformaty Fouriera trwającego jakiś czas sygnału akustycznego oznacza obliczanie amplitud składowych zespolonych tego dźwięku (por. wykresy transformaty obok dla funkcji schodkowych).
Transformacja Fouriera jest operatorem liniowym działającym na przestrzeni funkcyjnej funkcji zmiennej rzeczywistej i dokonującym rozkładu danej funkcji w bazie ortonormalnej zespolonych funkcji eksponencjalnych poprzez liczenie iloczynów skalarnych danej funkcji z funkcjami bazy.
Transformacja Fouriera została nazwana na cześć Jeana Baptiste’a Josepha Fouriera.
Definicja transformacji Fouriera w postaci zespolonej dla funkcji jednej zmiennej Podana tu zostanie definicja transformacji Fouriera w postaci zespolonej. Obok tej postaci występują także postacie całkowe transformaty Fouriera, wyrażone przez funkcje rzeczywiste sinus i cosinus, bez użycia jednostki urojonej; postacie te można otrzymać z transformaty Fouriera w postaci zespolonej; nie omawia jednak tego zagadnienia ten artykuł.
Założenia – warunki Dirichleta Zakładamy, że funkcja spełnia pierwszy i drugi warunek Dirichleta, tj. jest to funkcja rzeczywista określona na skończonym przedziale oraz
jest przedziałami monotoniczna w przedziale – tzn. jest w nim ograniczona i można podzielić ten przedział na skończoną liczbę podprzedziałów, wewnątrz których funkcja jest monotoniczna (czyli funkcja ta ma skończoną liczbę maksimów lokalnych i minimów lokalnych), jest ciągła w przedziale z wyjątkiem co najwyżej skończonej liczby punktów nieciągłości pierwszego rodzaju, przy czym w każdym punkcie nieciągłości spełniony jest warunek
Uwagi: Całkowalność funkcji, gwarantowana przez spełnienie warunków Dirichleta, jest istotnym wymogiem w obliczaniu transformaty Fouriera, która opiera się na obliczaniu całek. (Ten sam wymóg dotyczy szeregów Fouriera, bowiem współczynniki rozwinięcia w szereg Fouriera są wyrażone za pomocą całek.) Dla funkcji okresowej warunki Dirichleta wystarczy zbadać na dowolnym przedziale o długości równej okresowi funkcji Warunki Dirichleta są to warunki wystarczające do tego, by dla funkcji, która je spełnia, istniała całka Fouriera i szereg Fouriera. Jednak nie są to warunki konieczne – istnieje klasa funkcji, które nie spełniają warunków Dirichleta, a mimo to mają całkę i szereg Fouriera. Także dla funkcji uogólnionych, tzw. dystrybucji (np. delta Diraca), które mają istotne znaczenie w obliczeniach fizyki cząstek elementarnych, definiuje się transformaty Fouriera.
Transformacja z dziedziny czasu w dziedzinę pulsacji Transformacja z dziedziny czasu w dziedzinę pulsacji (częstości kołowej) ma postać
gdzie: – funkcja (oryginał) w dziedzinie czasu, – transformata Fouriera (widmo Fouriera) w dziedzinie pulsacji, – jednostka urojona.
Transformacja odwrotna Transformacja odwrotna zadana jest całką
– pozwala odtworzyć funkcję pierwotną z jej widma.
Widmo amplitudowe i fazowe Transformatę funkcji rzeczywistej można zapisać następująco:
Używa się następujących nazw: – charakterystyka widmową (gęstością widma, krótko: widmo) funkcji – charakterystyka amplitudowa (widmo amplitudowe) funkcji – charakterystyka fazowa (widmo fazowe) funkcji
Widmo amplitudowe jest funkcją rzeczywistą; można je obliczyć ze wzoru:
Widmo fazowe jest funkcją rzeczywistą; można je obliczyć ze wzorów
Stąd:
link=https://en.wikipedia.org/wiki/File:Unfasor.gif|prawo|mały|431x431px|Funkcję w płaszczyźnie zespolonej reprezentuje wektor o końcu w punkcie który obraca się wokół początku układu współrzędnych przeciwnie do ruchu wskazówek zegara, gdy rośnie wartość zmiennej Pokazano też rzut tego wektora na oś rzeczywistą, kreślącego cosinusoidę
Sens transformaty Fouriera jest następujący:
Transformata jest liczbą zespoloną, której moduł i faza określają amplitudę i fazę składowej o pulsacji wchodzącej w skład sygnału Obliczenie transformaty Fouriera pozwala więc znaleźć amplitudy i fazy wszystkich takich składowych w sygnale.
Przykład obliczeń wraz w wykresami funkcji, opisujących charakterystyki widmową, amplitudową i fazową podano dalej. link=https://en.wikipedia.org/wiki/File:Unit_circle.svg|prawo|mały|269x269px|Obracający się przeciwnie do ruchu wskazówek zegara wektor ma dodatnią częstotliwość rad/s. Nie pokazano wektora obracającego się zgodnie z ruchem wskazówek zegara, który ma ujemną częstotliwość rad/s. Końce obu wektorów obracają się po okręgu jednostkowym, ale w przeciwnych kierunkach.
Transformacja unitarna Fouriera Unitarną transformacją Fouriera z dziedziny czasu w dziedzinę pulsacji (częstości kołowej) nazywa się transformacją zadaną wzorem, który różni się od wzoru wyżej podanego jedynie stałą, stojącą przed znakiem całki, tj.
Transformacja odwrotna unitarna
Komentarz Czynnik przed transformatą i transformatą odwrotną występuje umownie; zamiast takiej postaci może występować czynnik przed transformatą prostą, albo (częściej) przed transformacją odwrotną. Jeżeli jednak czynnik wynosi wtedy transformacja i transformacja odwrotna są izometriami przestrzeni . Pierwsza z dwu powyższych definicji jest popularniejsza, nie posiada jednak własności unitarności.
Interpretacja ujemnych częstotliwości W definicji transformaty Fouriera w postaci zespolonej mamy częstotliwości w zakresie od do występujące w funkcji . W klasycznym rozumieniu teorii dotyczącej drgań i fal częstości kołowe są wielkościami dodatnimi. Co oznaczają więc ujemne wartości częstotliwości? Sytuacja jest tu nieco inna niż w opisie zjawisk drgań i fal za pomocą liczb rzeczywistych, gdzie definiuje się pojęcie częstotliwości. Tu mamy do czynienia z funkcjami zespolonymi o częstotliwościach z zakresu liczb rzeczywistych. Każda funkcja może być przedstawiona jako obracający się w płaszczyźnie zespolonej wektor (wielkość obrotu zależy od czasu występującego w każdej takiej funkcji), którego koniec porusza się po okręgu o promieniu równym 1 (tzw. okrąg jednostkowy).
Dla dodatnich wartości wektory obracają się przeciwnie do wskazówek zegara, dla ujemnych wartości wektory obracają się zgodnie ze wskazówkami zegara.
Piękną ilustrację transformacji Fouriera, w tym sens ujemnych częstotliwości, przedstawia animowane omówienie pt. But what is the Fourier Transform? A visual introduction
Inne oznaczenia Transformatę Fouriera oznacza się także symbolem
gdzie – jednostka urojona (oznaczenie stosowane często w elektrotechnice, teorii przetwarzania sygnałów).
Oznaczenie to podkreśla, iż mamy do czynienia z transformatą Fouriera w postaci zespolonej, by odróżnić ją od transformat Fouriera kosinusowej i sinusowej. Używa się także symboliki na oznaczenie transformacji odwrotnej; wtedy mamy:
Przykład obliczania transformaty Fouriera mały|469x469px|Transformata Fouriera funkcji jej część rzeczywista, urojona, moduł
Mamy daną funkcję
Obliczamy
czyli
Część rzeczywista obliczanej transformaty jest równa zeru z uwagi na nieparzystość funkcji , natomiast część zespolona ma wartość
Stąd
Widmo amplitudowe czyli moduł transformaty :
Wyniki obliczeń pokazano na wykresach.
Obliczanie numeryczne transformaty Fouriera Obliczanie transformaty Fouriera w ogólnym przypadku nie jest proste i wymaga na ogół całkowania numerycznego. Poniżej podano kod programu w języku Python, który liczy zespoloną transformatę Fouriera wg wzoru całkowego i rysuje wykresy jej części rzeczywistej, urojonej oraz modułu.
import numpy as np from scipy.integrate import quad import matplotlib.pyplot as plt
''' Definicja funkcji f(t)=t def f(t): if np.abs(t) < 1: return t elif np.abs(t) == 1: return 0.5 * np.sign(t) else: return 0 '''
# Definicja funkcji f(t) - impuls prostokątny def f(t): if abs(t-a) < 1: return 1 elif abs(t-a) == 1: return 0.5 * np.sign(t) else: return 0
# Definicja transformacji Fouriera def fourier_transform(omega): integrand = lambda t: f(t) * np.exp(-1j * omega * t) real_part = quad(lambda t: np.real(integrand(t)), -np.inf, np.inf) imag_part = quad(lambda t: np.imag(integrand(t)), -np.inf, np.inf) return real_part + 1j * imag_part
# Zakres częstotliwości omega N = 10 omega_values = np.linspace(-N, N, 500) fourier_values = np.array([fourier_transform(omega) for omega in omega_values])
# Wykresy: Re, Im oraz |F(ω)| plt.figure(figsize=(14, 20))
# Wykres części rzeczywistej plt.subplot(3, 1, 1) plt.plot(omega_values, fourier_values.real, label=r"Re$\{\hat{f}(\omega)\}$", color='blue') plt.title("Część rzeczywista transformaty Fouriera", fontsize=30) plt.xlabel(r"$\omega$", fontsize=20) plt.ylabel(r"Re$\{\hat{f}(\omega)\}$", fontsize=14) plt.grid(True) plt.legend(fontsize=20)
# Wykres części urojonej plt.subplot(3, 1, 2) plt.plot(omega_values, fourier_values.imag, label=r"Im$\{\hat{f}(\omega)\}$", color='red') plt.title("Część urojona transformaty Fouriera", fontsize=30) plt.xlabel(r"$\omega$", fontsize=20) plt.ylabel(r"Im$\{\hat{f}(\omega)\}$", fontsize=14) plt.grid(True) plt.legend(fontsize=20)
# Wykres modułu |F(ω)| plt.subplot(3, 1, 3) plt.plot(omega_values, np.abs(fourier_values), label=r"$|\hat{f}(\omega)|$", color='green') plt.title("Moduł transformaty Fouriera", fontsize=30) plt.xlabel(r"$\omega$", fontsize=20) plt.ylabel(r"$|\hat{f}(\omega)|$", fontsize=14) plt.grid(True) plt.legend(fontsize=20)
plt.tight_layout() plt.show()
Całki Fouriera jako całki niewłaściwe Obliczanie transformaty Fouriera zadane jest de facto poprzez całki niewłaściwe, gdyż zmienna jest określona w granicach od do Obliczanie takich całek sprowadza się do liczenia tzw. wartości głównej całki (wg definicji podanej przez Cauchy’ego), tj. do liczenia jej jako granicy z całek obliczonych na skończonym przedziale całkowania:
Rzeczywiste sygnały zawsze mają skończony czas trwania. Natomiast można je teoretycznie przedłużać do nieskończoności – wtedy ma zastosowanie powyższy wzór.
Także funkcja pierwotna rekonstruowana z jej transformaty poprzez transformację odwrotną jest zadana przez całkę niewłaściwą, gdyż zmienna jest określona w granicach od do I także obliczanie tej całki sprowadza się do liczenia wartości głównej całki, tj. do liczenia jej jako granicy z całek obliczonych na skończonym przedziale całkowania wg wzoru:
Interpretacja i związek z transformatą Laplace’a W całce Fouriera funkcje harmoniczne mnożone są przez sygnał wynikowa całka dostarcza informacji nt. zawartości poszczególnych harmonicznych, wchodzących w skład sygnału (dokonuje rozkładu sygnału na jego widmo).
Transformacja Laplace’a wykonuje podobne działanie, ale o bardziej ogólnym charakterze: Za pomocą całki Laplace’a funkcja rzeczywista reprezentująca zmieniający się w czasie sygnał (np. pole elektryczne fali, przychodzącej do odbiornika), jest transformowana na płaszczyznę S (płaszczyznę zespoloną); dokonuje się to poprzez scałkowanie iloczynu funkcji z wyrażeniami typu dla czasu od do
przy tym jest liczbą zespoloną, stałą w procesie obliczania całki.