Estymacja widma na podstawie FT
Dyskretna Transformata Fouriera (DFT)
W praktycznych zastosowaniach mamy do czynienia z sygnałami próbkowanymi o skończonej długości. Transformata Fouriera działąjąca na takich sygnałach nazywana jest Dyskretną Transformatą Fouriera, a algorytm najczęściej wykorzystywany do jej obliczania to szybka trasnsformata Fouriera (fast Fourier transform FFT). Formułę na współczynniki FFT można otrzymać z szeregu Fouriera. Załóżmy, że sygnał który chcemy przetransformować składa się z [math]N[/math] próbek.
[math] s =\{ s[0],\dots,s[n],\dots s[N-1]\}[/math]
i próbki pobierane były co [math]T_s[/math] sekund. Zakładamy, że analizowany sygnał [math]s[/math] to jeden okres nieskończonego sygnału o okresie [math]T=N\cdot T_s[/math]. Wprowadźmy oznaczenie:
[math]s[n]=s(nT_s)[/math].
Przepiszmy wzór na współczynniki szeregu Fouriera. Ponieważ sygnał jest teraz dyskretny, całka zamieni się na sumę Riemanna: pole będzie sumą pól prostokątów o bokach równych wartości funkcji podcałkowej w zadanych punktach [math]x(nT_s)exp(2i{\pi}knT_s/T)[/math] i odległości między punktami [math]T_s[/math]:
[math] S[k] = \frac{1}{NT_s}\sum_{n=0}^{N-1}s(nT_s)e^{2i\pi\frac{knT_s}{NT_s}}T_s = \frac{1}{N}\sum_{n=0}^{N-1}s[n]e^{2i{\pi}\frac{kn}{N}} [/math]
DFT zaimplementowana w numpy.fft jest określona jako:
- [math]A[k] = \sum_{m=0}^{n-1} a[m] \exp\left\{-2\pi i{mk \over n}\right\} \qquad k = 0,\ldots,n-1. [/math]
DFT jest w ogólności zdefiniowane dla zespolonych argumentów i zwraca zespolone współczynniki. Odwrotna dyskretna transformata Fouriera jest zdefiniowana jako:
- [math] a[m] = \frac{1}{n}\sum_{k=0}^{n-1}A[k]\exp\left\{2\pi i{mk\over n}\right\} \qquad m = 0,\ldots,n-1. [/math]
Zwróćmy uwagę, że różni się ona do transformaty wprost jedynie znakiem w exponencie i normalizacją [math]1/n[/math].
Okienkowanie a widmo mocy: periodogram
Przypomnijmy wzór na dyskretną transformatę Fouriera DFT zaimplementowaną w FFT:
- [math]S[k] = \sum_{n=0}^{n-1} s[n] \exp\left\{-2\pi i{nk \over N}\right\} \qquad k = 0,\ldots,N-1. [/math]
Na podstawie twierdzenia Parsevala możemy policzyć widmo mocy jako:
[math]
P[k] = \frac{1}{N} \left|S[k]\right|^2
[/math]
Jeśli do liczenia mocy chcielibyśmy posłużyć się techniką okiennkowania sygnału, to powinniśmy używać okienek znormalizowanych, czyli takich których energia jest równa 1, wtedy mnożenie przez okienko nie zaburzy estymaty energii sygnału.
Aby policzyć widmo mocy sygnału z zastosowaniem okienek wprowadzimy następujące symbole:
- sygnał: [math]s[n][/math]
- okienko: [math] w[n][/math]
- okienko znormalizowane: [math] \hat w[n] = \frac{1}{\sqrt{\sum_{n=0}^{N-1} (w[n])^2}}w[n][/math]
- widmo mocy sygnału okienkowanego:
[math] P[k] = \frac{1}{\sum_{n=0}^{N-1} (w[n])^2} \left|\sum_{n=0}^{N-1} s[n]w[n] e^{i\frac{2 \pi }{N} k n}\right|^2 [/math]
Praktyczna estymacja widma Fourierowskiego sygnałów
Dla sygnałów dyskretnych obliczamy Dyskretną Transformatę Fouriera (omawianą szerzej na ćwiczeniach). Kwadrat jej modułu to inaczej periodogram, czyli estymata geśtości widmowej mocy dla sygnałów dyskretnych.
Sygnały z którymi mamy do czynienia w praktyce są nie tylko dyskretne, ale też skończone. Obliczanie transformaty Fouriera dla skończonego odcinka niesie ze sobą dodatkowe komplikacje. Znamy wartości sygnału [math]x[n][/math] dla [math]i=1\ldots N[/math]. Odpowiada to iloczynowi sygnału [math]\left\{s[n]\right\}_{n\in\mathbb{Z}}[/math] z oknem prostokątnym [math]w_p[k][/math]:
[math] w_p[k]=\left\{\begin{array}{rl} 1 & \mathrm{dla} \;k=1 .. N\\ 0 & \mathrm{dla} \;k\lt 0 \vee k\gt N\\ \end{array} \right. [/math]
W efekcie (patrz twierdzenie o splocie) otrzymujemy splot transformaty Fouriera sygnału (nieskończonego) z transformatą Fouriera okna [math]\hat{w}_p[k][/math]. Na przykład dla okna prostokątnego będzie to funkcja postaci [math]sin(x)/x[/math], która może wprowadzić w widmie sztuczne oscylacje, które mylnie możemy zidentyfikować z pikami widma. Dlatego w praktyce stosujemy okna o łagodniejszym przebiegu transformaty Fouriera. Czyli:
- Obliczamy iloczyn sygnału [math]s[n][/math] z wybranym oknem [math]w[n][/math], dopasowanym do jego rozmiaru
- Obliczamy periodogram sygnału [math]s[n] w[n][/math]
Przy założeniu stacjonarności sygnału możemy obliczyć widmo omawianą na ćwiczeniach metodą Welcha, według której dzielimy sygnał na zachodzące na siebie odcinki, każdy odcinek mnożymy przez okno [math]w[n][/math] po czy otrzymane widma uśredniamy. W ten sposób dla każdej częstości mamy po kilka estymat mocy widmowej, wyliczonych z kolejnych odcinków, co pozwala na oszacowanie błędu estymaty.