PS Moduł 5: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 97: | Linia 97: | ||
|valign="top"| | |valign="top"| | ||
*W szacowaniu złożoności obliczeniowej DTF zakładamy, że sygnał <math>x[n]\,</math> jest zespolony. | *W szacowaniu złożoności obliczeniowej DTF zakładamy, że sygnał <math>x[n]\,</math> jest zespolony. | ||
*Liczba <math>W=e^{j2\pi/N}</math> ma ciekawe właściwości. Jest ona równa pierwiastkowi <math>N\,</math> -tego z jedności. Jej <math>N\,</math> -ta potęga jest równa jedności: <math>W^n=(e^{j2\pi/N})^N=e^{j2\pi}=1</math> . Ponadto w wyniku próbkowania <math>N\,</math> razy w okresie w chwilach <math>nT_s\,</math> zespolonego sygnału harmonicznego <math>e^{j\omega_0 t}\,</math> otrzymujemy próbki będące kolejnymi potęgami liczby <math>W\,</math>: <math>e^{j\omega_0 nT_s}=e^{j2\pi nT_s/T_0}=(e^{j2\pi /N})^n=W^n</math> . | *Liczba <math>W=e^{j2\pi/N}</math> ma ciekawe właściwości. Jest ona równa pierwiastkowi <math>N\,</math> -tego z jedności. Jej <math>N\,</math> -ta potęga jest równa jedności: <math>W^n=(e^{j2\pi/N})^N=e^{j2\pi}=1</math> . Ponadto w wyniku próbkowania <math>N\,</math> razy w okresie w chwilach <math>nT_s\,</math> zespolonego sygnału harmonicznego <math>e^{j\omega_0 t}\,</math> otrzymujemy próbki będące kolejnymi potęgami liczby <math>W\,</math>: <math>e^{j\omega_0 nT_s}=e^{j2\pi nT_s/T_0}=(e^{j2\pi /N})^n=W^n</math>. | ||
*O złożoności obliczeniowej DTF decyduje liczba mnożeń. Dlatego przy jej szacowaniu nie uwzględnia się dodawań. Liczba mnożeń wynosi dokładnie <math>(N-1)^2\,</math> , gdyż obliczenie próbki widmowej dla <math>k=0</math> wymaga wykonania tylko dodawań. Dla większych <math>N\,</math> można dla prostoty szacowania przyjąć, że liczba mnożeń jest równa <math>N^2\,</math> . | *O złożoności obliczeniowej DTF decyduje liczba mnożeń. Dlatego przy jej szacowaniu nie uwzględnia się dodawań. Liczba mnożeń wynosi dokładnie <math>(N-1)^2\,</math> , gdyż obliczenie próbki widmowej dla <math>k=0</math> wymaga wykonania tylko dodawań. Dla większych <math>N\,</math> można dla prostoty szacowania przyjąć, że liczba mnożeń jest równa <math>N^2\,</math>. | ||
|} | |} | ||
Linia 106: | Linia 106: | ||
|width="500px" valign="top"|[[Grafika:PS_M5_Slajd11.png]] | |width="500px" valign="top"|[[Grafika:PS_M5_Slajd11.png]] | ||
|valign="top"| | |valign="top"| | ||
*Szybka transformata Fouriera STF jest powszechnie znana pod nazwą angielską FFT (''Fast Fourier Transform''). | |||
*Dostępne komercyjnie pakiety programów zawierają najczęściej algorytmy obliczeniowe STF dla <math>N=256</math> , <math>N=512</math> lub <math>N=1024</math>. | |||
*Prezentujemy tu wersję podstawową algorytmu STF. Znanych jest obecnie wiele wersji tego algorytmu o jeszcze mniejszej złożoności obliczeniowej. | |||
*Ponieważ w algorytmie STF będą występować DTF o różnych wymiarach, w oznaczeniu transformat będziemy dodatkowo podawać ich wymiar (liczbę punktów, w których są one obliczane). | |||
|} | |} | ||
Linia 114: | Linia 119: | ||
|width="500px" valign="top"|[[Grafika:PS_M5_Slajd12.png]] | |width="500px" valign="top"|[[Grafika:PS_M5_Slajd12.png]] | ||
|valign="top"| | |valign="top"| | ||
*Sygnały <math>x_N^1 [n]=x[2n]</math> i <math>x_N^2 [n]=x[2n+1]</math> są utworzone z parzystych i odpowiednio nieparzystych próbek sygnału <math>x[n]\,</math> . | |||
*Obliczenie obu występujących we wzorze (5.8) <math>N\,</math> -punktowych DFT <math>X_N^1 [k]\,</math> i <math>X_N^2 [k]\,</math> dla <math>k=0,...,N-1\,</math> wymaga po <math>N^2 \,</math> mnożeń, a więc razem <math>2N^2\,</math> mnożeń. Dodatkowe <math>N\,</math> mnożeń należy wykonać obliczając iloczyny <math>W_{2N}^{-k} X_N^2 (k)\,</math>. W sumie daje to <math>2N^2+N\,</math> mnożeń. | |||
|} | |} | ||
Linia 122: | Linia 129: | ||
|width="500px" valign="top"|[[Grafika:PS_M5_Slajd13.png]] | |width="500px" valign="top"|[[Grafika:PS_M5_Slajd13.png]] | ||
|valign="top"| | |valign="top"| | ||
*Oba składniki wyrażenia (5.10) były już obliczone podczas obliczania <math>N\,</math> -punktowych DTF <math>X_N^1 [k]\,</math> i <math>X_N^2 [k]\,</math> dla <math>k=0,...,N-1\,</math>. W celu obliczenia DTF <math>X_{2N} [k]\,</math> dla <math>k=N,...,2N-1\,</math> nie trzeba więc wykonywać żadnych dodatkowych mnożeń. | |||
*Zyski obliczeniowe na każdym poziomie obliczeń kumulują się, dając w efekcie radykalne zmniejszenie złożoności obliczeniowej STF w porównaniu ze złożonością wynikającą z obliczania DTF ze wzoru definicyjnego. | |||
|} | |} | ||
Linia 130: | Linia 139: | ||
|width="500px" valign="top"|[[Grafika:PS_M5_Slajd14.png]] | |width="500px" valign="top"|[[Grafika:PS_M5_Slajd14.png]] | ||
|valign="top"| | |valign="top"| | ||
*Pojedynczy motylek przedstawiony na rysunku stanowi ilustrację graficzną schematu obliczeń <math>2N\,</math> -punktowej STF według wzorów (5.11). Stanowi on elementarne powtarzające się ogniwo algorytmu STF na różnych poziomach obliczeń, tj. dla kolejnych <math>2^m\,</math> -punktowych DTF, począwszy od <math>m=1</math>. | |||
*Na wyjściu każdego motylka obliczane są dwie próbki widmowe. Na ostatnim końcowym poziomie obliczeń <math>N\,</math> -punktowej STF występuje zatem <math>N/2\,</math> motylków, bowiem należy obliczyć łącznie <math>N\,</math> próbek widmowych. Na wcześniejszych poziomach algorytmu występuje również <math>N/2\,</math> motylków. | |||
|} | |} | ||
Linia 138: | Linia 149: | ||
|width="500px" valign="top"|[[Grafika:PS_M5_Slajd15.png]] | |width="500px" valign="top"|[[Grafika:PS_M5_Slajd15.png]] | ||
|valign="top"| | |valign="top"| | ||
*Schemat motylkowy algorytmu STF przedstawiony na rysunku został sporządzony dla przypadku <math>N=8=2^3</math> . Ponieważ w ogólnym przypadku schemat motylkowy składa się z kolumn (poziomów), z których każdy zawiera <math>N/2\,</math> motylków, więc dla <math>N=8</math> mamy 3 kolumny po 4 motylki. | |||
*Danymi wejściowymi algorytmu są próbki sygnału <math>x(n)\,</math> (w podanym przykładzie 8 próbek dla <math>n=0,...,7\,</math> ) oraz znane liczby zespolone o postaci <math>W_{2^m}_{-j}\,</math> , <math>m=2,3,...\,</math> Na każdym poziomie wykorzystywane są wszystkie próbki <math>x(n)\,</math> , ale w różnej kolejności. | |||
*Na wyjściach poszczególnych motylków otrzymujemy próbki widmowe obliczane na kolejnych poziomach. Na wyjściach motylków ostatniego poziomu otrzymujemy zbiór próbek widmowych składających się na obliczaną DTF (w naszym przypadku 8 próbek). | |||
*Już dla <math>N=8</math> zysk obliczeniowy jest ponad pięciokrotny. Dla <math>N=10^2=1024</math> zysk ten jest ponad 200-krotny. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> |