Wykład 15. Transformata Fouriera i transformata Hilberta
1. Od szeregu Fouriera do transformaty Fouriera.
Przypomnijmy wzór na zespolone współczynniki Fouriera funkcji o okresie \(T\):\begin{multline}c_n= \frac{1}{T}\int_{-T/2}^{T/2} f(x) \exp\left(-\frac{2\pi n x i}{T}\right)\,dx,\\n=\dotsc, -2, -1, 0, 1, 2, \dotsc\end{multline}Podstawiając w tym wzorze \(u=\frac{n}{T}\) oraz \(c_n=\frac{1}{T}{\widehat f}(u)\) otrzymamy\[{\widehat f}(u)= \int_{-T/2}^{T/2} f(x) \exp\left(-2\pi i u x\right)\,dx\]oraz\[f(x)\sim\sum_{n=-\infty}^\infty \frac{1}{T}{\widehat f}\left(\tfrac{n}{T}\right)\exp\left(2\pi i \tfrac{n}{T} x\right).\]Przypomnijmy dalej, że \(T\) wcale nie musi być okresem funkcji \(f\). Wystarczy, że funkcja będzie określona na przedziale \((-T/2, T/2)\), albo że poza tym przedziałem będzie przyjmować wartości \(0\). Możemy wtedy zwiększać \(T\) aż szereg Fouriera zacznie przypominać całkę.
2. Transformata Fouriera i transformata odwrotna.
Transformatą Fouriera funkcji rzeczywistej \(f\), bezwzględnie całkowalnej na przedziale \((-\infty, \infty)\) nazywamy funkcję\[{\widehat f}(u)= \int_{-\infty}^{\infty} f(x) \exp\left(-2\pi i u x\right)\,dx.\]Odwrotną transformatą Fouriera funkcji \(g\) nazywamy funkcję zadaną wzorem\[\int_{-\infty}^\infty g\left(u\right)\exp\left(2\pi i u x\right)\,du,\]przy czym \(x\) jest tu argumentem funkcji. Mówimy, że dla funkcji \(f\) spełniony jest wzór Fouriera, jeśli funkcja \(f\) jest równa odwrotnej transformacie Fouriera funkcji \({\widehat f}\), tzn. jeśli\[f(x)=\int_{-\infty}^\infty {\widehat f}\left(u\right)\exp\left(2\pi i u x\right)\,du\]dla wszystkich \(x\) rzeczywistych.
Kryterium Dirichleta:
Załóżmy, że \(f\) jest funkcją rzeczywistą bezwzględnie całkowalną na przedziale \((-\infty, \infty)\) oraz, że dla każdego \(x_0\in\boldsymbol{R}\) mamy\[\frac{1}{2}\left(\lim_{x\to x_0^-}f(x)+\lim_{x\to x_0^+}f(x)\right)=f(x_0).\]Jeśli ponadto na każdym skończonym przedziale funkcja \(f\) jest przedziałami monotoniczna i posiada co najwyżej skończoną liczbę punktów nieciągłości, to wzór Fouriera dla funkcji \(f\) jest spełniony.
3. Własności transformaty Fouriera.
4. Dyskretna transformata Fouriera.
Niech \(x = (x_0, \dotsc, x_{n-1})\) będzie wektorem o współrzędnych rzeczywistych lub zespolonych. Dyskretną transformatą Fouriera tego wektora nazywamy wektor \(\hat x = (\hat x_0, \dotsc, \hat x_{n-1})\) zadany wzorem\[\hat x_k = \sum_{j=0}^{n-1} x_j \exp\left(-2\pi i \frac{k j}{n}\right).\]Spełniony jest wtedy wzór\[x_j=\frac{1}{n}\sum_{k=0}^{n-1} \hat x_k \exp\left(2\pi i \frac{k j}{n}\right),\]przy czym prawa strona określa tzw. odwrotną dyskretną transformatę Fouriera. Można też przedłużyć oba wektory \(x\) i \(\hat x\) z obu stron do ciągów nieskończonych okresowych, z okresem \(n\) i nadal będą spełnione powyższe wzory.
4. Własności dyskretnej transformaty Fouriera.
5. Transformata Hilberta
6. Zastosowania w analizie dźwięków (krótka demonstracja)
Instalacja (po zainstalowaniu i uruchomieniu pakietu R z www.r-project.org):
install.packages("seewave", repos="http://cran.at.r-project.org/")
Inicjalizacja:
library(seewave)
data(tico, orni, peewit, pellucens, sheep)
Obwiednia dźwięku:
Pasówka obrożna (Zonotrichia capensis)
oscillo(tico, f=22050)
par(new=TRUE)
env(tico, f=22050, colwave=2)
listen(tico)
Krótkookresowa transformata Fouriera:
spectro(tico, f=22050)
listen(tico)
Inne próbki:
Cicada orni (Cykada jesionowa?)
oscillo(orni, f=22050)
par(new=TRUE)
env(orni, f=22050, colwave=2)
listen(orni)
spectro(orni, f=22050)
listen(orni)
Czajka zwyczajna (Vanellus vanellus)
oscillo(peewit, f=22050)
par(new=TRUE)
env(peewit, f=22050, colwave=2)
listen(peewit)
spectro(peewit, f=22050)
listen(peewit)
Nakwietnik trębacz (Oecanthus pellucens)
oscillo(pellucens, f=22050)
par(new=TRUE)
env(pellucens, f=22050, colwave=2)
listen(pellucens)
spectro(pellucens, f=22050)
listen(pellucens)
Owca domowa (Ovis aries)
oscillo(sheep, f=22050)
par(new=TRUE)
env(sheep, f=22050, colwave=2)
listen(sheep)
spectro(sheep, f=22050)
listen(sheep)
Przypomnijmy wzór na zespolone współczynniki Fouriera funkcji o okresie \(T\):\begin{multline}c_n= \frac{1}{T}\int_{-T/2}^{T/2} f(x) \exp\left(-\frac{2\pi n x i}{T}\right)\,dx,\\n=\dotsc, -2, -1, 0, 1, 2, \dotsc\end{multline}Podstawiając w tym wzorze \(u=\frac{n}{T}\) oraz \(c_n=\frac{1}{T}{\widehat f}(u)\) otrzymamy\[{\widehat f}(u)= \int_{-T/2}^{T/2} f(x) \exp\left(-2\pi i u x\right)\,dx\]oraz\[f(x)\sim\sum_{n=-\infty}^\infty \frac{1}{T}{\widehat f}\left(\tfrac{n}{T}\right)\exp\left(2\pi i \tfrac{n}{T} x\right).\]Przypomnijmy dalej, że \(T\) wcale nie musi być okresem funkcji \(f\). Wystarczy, że funkcja będzie określona na przedziale \((-T/2, T/2)\), albo że poza tym przedziałem będzie przyjmować wartości \(0\). Możemy wtedy zwiększać \(T\) aż szereg Fouriera zacznie przypominać całkę.
2. Transformata Fouriera i transformata odwrotna.
Transformatą Fouriera funkcji rzeczywistej \(f\), bezwzględnie całkowalnej na przedziale \((-\infty, \infty)\) nazywamy funkcję\[{\widehat f}(u)= \int_{-\infty}^{\infty} f(x) \exp\left(-2\pi i u x\right)\,dx.\]Odwrotną transformatą Fouriera funkcji \(g\) nazywamy funkcję zadaną wzorem\[\int_{-\infty}^\infty g\left(u\right)\exp\left(2\pi i u x\right)\,du,\]przy czym \(x\) jest tu argumentem funkcji. Mówimy, że dla funkcji \(f\) spełniony jest wzór Fouriera, jeśli funkcja \(f\) jest równa odwrotnej transformacie Fouriera funkcji \({\widehat f}\), tzn. jeśli\[f(x)=\int_{-\infty}^\infty {\widehat f}\left(u\right)\exp\left(2\pi i u x\right)\,du\]dla wszystkich \(x\) rzeczywistych.
Kryterium Dirichleta:
Załóżmy, że \(f\) jest funkcją rzeczywistą bezwzględnie całkowalną na przedziale \((-\infty, \infty)\) oraz, że dla każdego \(x_0\in\boldsymbol{R}\) mamy\[\frac{1}{2}\left(\lim_{x\to x_0^-}f(x)+\lim_{x\to x_0^+}f(x)\right)=f(x_0).\]Jeśli ponadto na każdym skończonym przedziale funkcja \(f\) jest przedziałami monotoniczna i posiada co najwyżej skończoną liczbę punktów nieciągłości, to wzór Fouriera dla funkcji \(f\) jest spełniony.
3. Własności transformaty Fouriera.
- Liniowość.
- Jeśli \(h(x)\equiv f(x+a)\), to\[\widehat h(u)\equiv\exp\left(2\pi i u a\right)\widehat f(u).\]
- Ogólniej:\[\widehat{f*g}=\widehat f \cdot \widehat g,\]gdzie \(*\) oznacza splot funkcji, przy czym za \(g(x)\) można wziąć np. \(\delta(x+a)\).
- Podobnie:\[\widehat{f\cdot g}=\widehat f * \widehat g,\]w szczególności jeśli \(h(x)\equiv\exp\left(2\pi i u a\right)f(x)\), to\[\widehat h(x)\equiv \widehat f(x-a).\]
- Jeśli \(h(x)\equiv f(ax)\), \(a>0\), to\[\widehat h(u)\equiv\frac{1}{a}\widehat f(\frac{u}{a}).\]
- Jeśli \(h(x)\equiv f(-x)\), to\[\widehat h(u)\equiv\widehat f(-u).\]
- Jeśli \(f\) jest funkcją rzeczywistą, to \(\operatorname{Re} \widehat f\) jest funkcją parzystą, a \(\operatorname{Im} \widehat f\) funkcją nieparzystą. Innymi słowy\[\widehat f(-u)\equiv \overline{\widehat f (u)}.\]
- Jeśli \(h(x)\equiv f'(x)\), to\[\widehat h(u)\equiv 2\pi i u\widehat f(u).\]
- Jeśli \(h(x)\equiv 2\pi i x f(x)\), to\[\widehat h(u)\equiv -\frac{d}{du}\widehat f(u).\]
- Tożsamość Parsevala:\[\int_{-\infty}^{\infty} f(x) \overline{g(x)}\,dx=\int_{-\infty}^{\infty} \widehat f(u) \overline{\widehat g(u)}\,du.\]
- Twierdzenie Plancherela:\[\int_{-\infty}^{\infty} \left\lvert f(x) \right\rvert^2\,dx=\int_{-\infty}^{\infty} \left\lvert\widehat f(u) \right\rvert^2\,du.\]
4. Dyskretna transformata Fouriera.
Niech \(x = (x_0, \dotsc, x_{n-1})\) będzie wektorem o współrzędnych rzeczywistych lub zespolonych. Dyskretną transformatą Fouriera tego wektora nazywamy wektor \(\hat x = (\hat x_0, \dotsc, \hat x_{n-1})\) zadany wzorem\[\hat x_k = \sum_{j=0}^{n-1} x_j \exp\left(-2\pi i \frac{k j}{n}\right).\]Spełniony jest wtedy wzór\[x_j=\frac{1}{n}\sum_{k=0}^{n-1} \hat x_k \exp\left(2\pi i \frac{k j}{n}\right),\]przy czym prawa strona określa tzw. odwrotną dyskretną transformatę Fouriera. Można też przedłużyć oba wektory \(x\) i \(\hat x\) z obu stron do ciągów nieskończonych okresowych, z okresem \(n\) i nadal będą spełnione powyższe wzory.
- Informacja o złożoności obliczeniowej i FFT
4. Własności dyskretnej transformaty Fouriera.
- Liniowość.
- Jeśli \(y_j\equiv x_{j+a}\), to\[\hat y_k\equiv\exp\left(2\pi i \frac{k a}{n}\right)\hat x_k.\]
- Ogólniej:\[\widehat{x*y}=\hat x \cdot \hat y,\]gdzie \(*\) oznacza odpowiednio określony splot.
- Podobnie:\[\widehat{x\cdot y}=\frac{1}{n}\hat x * \hat y.\]
- Jeśli \(y_j\equiv x_{-j}\), to\[\hat y_k\equiv\hat x_{-k}.\]
- Jeśli \(x\) jest wektorem rzeczywistym, to\[\hat x_{-j}\equiv \overline{\hat x_j}.\]
- Tożsamość Parsevala:\[\sum_{j=0}^{n-1} x_j\overline{y_j}=\frac{1}{n}\sum_{k=0}^{n-1} \hat x_k \overline{\hat y_k}.\]
- Twierdzenie Plancherela:\[\sum_{j=0}^{n-1} \left\lvert x_j \right\rvert^2=\frac{1}{n}\sum_{k=0}^{n-1} \left\lvert\hat x_k \right\rvert^2.\]
5. Transformata Hilberta
- definicja za pomocą całki\[\tilde f(x) = -\frac{1}{\pi}\lim_{\varepsilon\to 0^+}\int_\varepsilon^\infty\frac{1}{\delta}(f(x+\delta)-f(x-\delta))\,d\delta\]
- definicja za pomocą transformaty Fouriera: jako odwrotna transformata Fouriera funkcji\[\exp(-\operatorname{sgn} (u)\tfrac{\pi i}{2}) \hat f(u),\]tzn. przesuwamy fazy odpowiednio o \(\tfrac{\pi}{2}\) lub o \(-\tfrac{\pi}{2}\)
- przypomnienie: szereg sprzężony z szeregiem Fouriera funkcji \(f\) jako konstrukcja analogiczna do transformaty Hilberta
- funkcja \(f+i\tilde f\) (tzw. sygnał analityczny):
wyliczenie transformaty Fouriera (zerowanie częstotliwości ujemnych),
moduł \(\left\lvert f+i\tilde f\right\rvert\) jako obwiednia dźwięku, na przykładzie funkcji sinusoidalnej,
faza i jej pochodna (częstotliwość chwilowa).
6. Zastosowania w analizie dźwięków (krótka demonstracja)
Instalacja (po zainstalowaniu i uruchomieniu pakietu R z www.r-project.org):
install.packages("seewave", repos="http://cran.at.r-project.org/")
Inicjalizacja:
library(seewave)
data(tico, orni, peewit, pellucens, sheep)
Obwiednia dźwięku:
Pasówka obrożna (Zonotrichia capensis)
oscillo(tico, f=22050)
par(new=TRUE)
env(tico, f=22050, colwave=2)
listen(tico)
Krótkookresowa transformata Fouriera:
spectro(tico, f=22050)
listen(tico)
Inne próbki:
Cicada orni (Cykada jesionowa?)
oscillo(orni, f=22050)
par(new=TRUE)
env(orni, f=22050, colwave=2)
listen(orni)
spectro(orni, f=22050)
listen(orni)
Czajka zwyczajna (Vanellus vanellus)
oscillo(peewit, f=22050)
par(new=TRUE)
env(peewit, f=22050, colwave=2)
listen(peewit)
spectro(peewit, f=22050)
listen(peewit)
Nakwietnik trębacz (Oecanthus pellucens)
oscillo(pellucens, f=22050)
par(new=TRUE)
env(pellucens, f=22050, colwave=2)
listen(pellucens)
spectro(pellucens, f=22050)
listen(pellucens)
Owca domowa (Ovis aries)
oscillo(sheep, f=22050)
par(new=TRUE)
env(sheep, f=22050, colwave=2)
listen(sheep)
spectro(sheep, f=22050)
listen(sheep)