5 Algorytmy wyznaczania dyskretnej transformaty Fouriera (CPS)

background image

Algorytmy wyznaczania

dyskretnej transformaty

Fouriera

background image

2

Metoda bezpośrednia i jej

złożoność obliczeniowa

 

 

1

,...,

2

,

1

,

0

,

1

1

0

N

k

W

n

x

N

k

X

N

n

kn

N

N

j

N

e

W

2

 

 

 

 

 

 

 

n

x

x

x

x

W

W

W

W

W

W

W

W

W

N

N

X

X

X

X

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

2

1

0

1

1

1

1

1

1

1

1

1

2

1

0

)

1

)(

1

(

)

1

(

2

)

1

(

)

1

(

2

4

2

)

1

(

2

1

• Dyskretna transformacja Fouriera (DFT) dla

sygnału spróbkowanego x(n) ma postać:

, (1)

gdzie:

Równanie (1) można zapisać w postaci
macierzowej i ma ono postać :

(2)

background image

3

Metoda bezpośrednia i jej

złożoność obliczeniowa

• Na podstawie N- próbek sygnału x(n) wyznaczamy N wartości

widma Fouriera X(k), a wyznaczenie dyskretnej transformaty

Fouriera X(k) sygnału x(n) metodą bezpośrednią sprowadza

się do realizacji numerycznej równania (1) zapisanego w

postaci macierzowej (2).

• Złożoność obliczeniowa DFT metodą bezpośrednią

rozwiązania równania (2) jest proporcjonalna do N2 i wynosi :

- N2 mnożeń liczb zespolonych oraz N(N-1) sumowań liczb

zespolonych,
czyli:
4N2 mnożeń liczb rzeczywistych i N(4N-2) sumowań liczb

rzeczywistych.

• Przykładowo dla ciągu próbek N = 256 mamy 65 536 mnożeń

i 65 280 sumowań, a dla N = 1024 otrzymamy 1 048 676

mnożeń i 1 047 552 sumowań.

background image

4

• Liczba działań arytmetycznych bardzo

szybko rośnie wraz ze wzrostem próbek

sygnału dlatego ta metoda nie jest

stosowana w praktyce ze względu na

czasochłonne wykonywanie działań nawet

dla procesorów o wysokiej wydajności

• W analizie częstotliwościowej sygnałów

wykorzystuje się szybką transformatę

Fouriera (FFT), która daje identyczne

wyniki w znacznie krótszym czasie.

Metoda bezpośrednia i jej

złożoność obliczeniowa

background image

5

Algorytmy FFT – ich podział

i ogólna idea

• Algorytm FFT (ang. Fast Fourier Transform) został

opracowany w roku 1965 roku przez dwóch

amerykańskich matematyków J. W. Cooleya i J.W.

Tukeya. Ich praca była wynikiem poszukiwań

szybszego wyznaczania DFT sygnału na

podstawie próbek z powodu mało efektywnej

metody bezpośredniej. To wydarzenie przyczyniło

się w bardzo dużym stopniu do rozwoju cyfrowego

przetwarzanie sygnału, ponieważ algorytm ten

pozwolił na radykalne zmniejszenie wymagań

sprzętowych do obliczenia DFT, a w konsekwencji

umożliwił szersze wykorzystanie.

background image

6

Algorytmy FFT – ich podział

i ogólna idea

• Owoc pracy uczonych J. W. Cooleya i J.W. Tukeya

stał się podstawą całej grupy algorytmów FFT,

których wspólną cechą jest zastępowanie obliczeń

DFT o długości ciągu danych wejściowych N

odpowiednio krótszym ciągiem.

• Algorytmy FFT dzielą się na dwie grupy. Pierwsza

określana jest mianem algorytmów z podziałem

czasowym, w której ciąg x(n) dzielony jest na

coraz krótsze podciągi, w drugiej grupie – z

podziałem częstotliwościowym – dokonuje się

identycznego podziały pośród współczynników

X(n).

background image

7

Algorytmy FFT – ich podział

i ogólna idea

• Aby wykorzystać ten algorytm do efektywnego

obliczenia DFT, trzeba spełnić kilka warunków, a

mianowicie:

- ciąg danych wejściowych x(n) musi mieć długość

równą potędze 2,
- kolejność próbek sygnału muszą być zmienione

zgodnie z odwrotną propagacją bitu przeniesienia

(reverse carry propagation), współczesne

procesory sygnałowe mają zaimplementowane

sprzętowo tą funkcję,
- obliczenia numeryczne można rozpocząć w

momencie zebrania wszystkich próbek sygnału.

background image

8

Algorytmy FFT typu radix-2

(“dwie części”)

• Podział w dziedzinie czasu DIT (ang. Decimation In Time) –

w tym algorytmie próbki transformowanego sygnału dzieli

się na próbki o indeksach parzystych i nieparzystych i

dokonuje się wyznaczenia DFT dla obu tych zbiorów.

Odtworzenie widma sygnału otrzymuje się na podstawie

dwóch cząstkowych.

• W algorytmie radix 2 DIT (decymacja w czasie, czyli próbek

sygnału) wymagane jest by spróbkowany sygnał składał się

z N = 2p, następnie dysponując ciągiem próbek sygnału

x(n) :

– dokonuje się zmiany kolejności próbek, dzieląc je rekurencyjnie

na próbki o indeksach parzystych i nieparzystych, aż do

uzyskania zbiorów dwuelementowych,

– wykonuje się serię N/2 dwupunktowych DTF,

– następnie składa się widma dwukrążkowe w czteroprążkowe,

czteroprążkowe w ośmiokrążkowe itd., aż do uzyskania widma

N- prążkowego – pełnego widma sygnału.

background image

9

Algorytmy FFT typu radix-2

(“dwie części”)

• Dla danego wektora danych wejściowych N mamy

etapów obliczeń, np. dla N = 8, mamy etapy:

(etap 1) – wykonanie serie czterech

dwupunktowych transformacji DFT, (etap 2) –

następnie 4 widma dwupunktowe złożyć w 2

czteropunktowe, (etap 3 ) – 2 widma

czteropunktowe złożyć w jedno widmo

ośmiopunktowe co dam nam pełne widmo

sygnału.

Na rysunku 1 przedstawiono uproszczony

schemat blokowy działania algorytmu.

background image

10

Algorytmy FFT typu radix-2

(“dwie części”)

Rys.1.Uproszczony schemat blokowy algorytmu DIT FFT radix-2 dla N = 8

background image

11

Wyprowadzenie algorytmu

radix – 2

 

 

1

,...,

2

,

1

,

0

,

1

0

N

k

W

n

x

k

X

N

n

kn

N

N

j

N

e

W

2

 

 

1

,...,

2

,

1

,

0

,

1

2

2

1

2

0

)

1

2

(

1

2

0

)

2

(

N

k

W

n

x

W

n

x

k

X

N

n

n

k

N

N

n

n

k

N

• Przy wyprowadzeniu algebraicznym algorytmu

przyjęto założenie, że dzielenie przez N jakie

występuje w DFT wykonanie zostanie na końcu

obliczeń, obecnie zwracając uwagę na samo

równanie:

, (3)

• Dzielimy zgodnie z algorytmem próbki sygnału na

parzyste i nieparzyste:

(4)

background image

12

Wyprowadzenie algorytmu

radix – 2

kn

N

kn

N

kn

N

n

k

N

W

e

e

W

2

/

)

(

2

/

2

)

2

(

2

2

 

 

1

,...,

2

,

1

,

0

,

1

2

2

1

2

0

2

/

1

2

0

2

/

N

k

W

n

x

W

W

n

x

k

X

N

n

kn

N

k

N

N

n

kn

N

• Korzystając z faktu :

,

stąd:

(5)

• W sumach znajdujących się w nawiasach kwadratowych

występuje N/2 punktowe równania DFT próbek parzystych i

nieparzystych. Istnieją jednak pewne różnice: w N/2

punktowym DFT indeks k zmienia się a w równaniu (5) od 0

do N-1. Dodatkowo brak jest dzielenia sum przez N/2. W

algorytmach DFT operacja ta jest wykonywana poza tokiem

obliczeniowym i dzieli się tylko otrzymany wynik.

background image

13

Wyprowadzenie algorytmu

radix – 2

kn

N

W

2

/

kn

N

n

kn

N

n

N

N

kn

N

n

N

N

kn

N

n

N

k

N

W

e

W

e

W

W

W

W

 

2

/

2

2

/

)

2

/

(

2

/

2

2

/

)

2

/

(

2

/

2

/

)

2

/

(

2

/

 

1

,...,

2

,

1

,

0

),

(

)

(

1

2

2

N

k

k

X

W

k

X

k

X

n

k

N

n

1

,...,

2

,

1

,

0

),

(

)

(

2

1

2

)

2

/

(

2

 

N

k

k

X

W

k

X

N

k

X

n

N

k

N

n

• Przy zmniejszeniu indeksu k do N/2 -1 wykorzystuje się fakt iż

współczynnik ma okres N/2 ze względu na k:

dla k = 0,1,2,.., N/2 – 1 równanie (5) wygląda następująco:


(6)

X2n(k) i X2n+1(k) oznaczają N/2 punktowe nienormowane

(brak dzielenia przez N/2) transformaty DFT próbek

parzystych i nieparzystych.

Widmo X(k) dla k = N/2,…,N-1 wyznaczane jest z zależności:

(7)

background image

14

Wyprowadzenie algorytmu

radix – 2

• Ponieważ :

Zatem równanie (7) można ostatecznie zapisać w
postaci:

• Wzory (6) i (7) można łącznie zapisać w postaci

macierzowej :

(8)

k

N

j

k

N

N

N

k

N

N

k

N

W

e

W

W

W

W

2

/

)

2

/

(

1

,...,

2

,

1

,

0

),

(

)

(

2

1

2

2

 

N

k

k

X

W

k

X

N

k

X

n

k

N

n

1

,...,

2

,

1

,

0

,

)

(

)

(

1

1

)

2

(

)

(

1

2

2



N

k

k

X

k

X

W

W

N

k

X

k

X

n

n

k

N

k

N

background image

15

Wyprowadzenie algorytmu

radix – 2

• Otrzymany wzór 8 jest prawdziwy dla na

wszystkich etapach dekompozycji. Na każdym
kolejnym etapie stosuje się podstawienie N= N/2,
czyli połowę N z etapu poprzedniego, aż uzyska się
N = 2. Jeżeli prążki widmowe X2n(k) i X2n+1(k)
złożymy razem jeden po drugim i wynikowy wektor
nazwiemy X(k) to wzór ten przyjmuję formę
rekurencyjną:

(9)

1

,...,

2

,

1

,

0

,

)

2

(

)

(

1

1

)

2

(

)

(





N

k

N

k

X

k

X

W

W

N

k

X

k

X

k

N

k

N

background image

16

Wyprowadzenie algorytmu

radix – 2

• Graficzna ilustracja tego równania została

przedstawiona poniżej.

Rys.2. Struktura obliczeniowa podstawowego bloku algorytmu DIT FFT radix-2, tzw. Motylek

background image

17

Wyprowadzenie algorytmu

radix – 2

• Strukturę ta można uprościć wykorzystując

właściwości współczynnika :

Wzór (9) ma wówczas postać :

(10)

• Na podstawie wzoru (10 ) otrzymamy graf

przedstawiony na rys.3.

)

2

/

(

N

k

N

k

N

W

W

1

,...,

2

,

1

,

0

,

)

2

(

)

(

1

1

1

1

)

2

(

)

(





N

k

N

k

X

W

k

X

N

k

X

k

X

k

N

background image

18

Wyprowadzenie algorytmu

radix – 2

• Znając podstawową strukturę motylkową można pokusić się o

rozrysowanie pełnego algorytmu dla określonej liczby próbek.
Dla przykładu zostało to zrobione na rys. 4 wykorzystano strukturę

„uproszczony motylek” przy długości wektora danych N = 8.

Rys.3. Struktura obliczeniowa podstawowego bloku algorytmu DIT FFT radix-2, „uproszczony motylek”

background image

19

Wyprowadzenie algorytmu

radix – 2

Rys.4. Pełny schemat blokowy algorytmu DIT FFT radix-2

background image

20

Wyprowadzenie algorytmu

radix – 2

• Nietrudno zauważyć, że podstawowe obliczenia w algorytmie

radix-2 związane są ze struktura pojedynczego „motylka”,

zmiennie się tylko jego położenie i szerokość na poszczególnych

etapach.

• Ponadto aby uniknąć wielokrotnego wyznaczania wartości tych

samych próbek baz Fouriera w kolejnych etapach obliczeń, np.

z etapu pierwszego, z etapu drugiego itd., współczynniki te

są identyczne, więc można je wyznaczyć tylko raz na początku i

pobierać odpowiedni współczynnik dana z tego wektor.

• Złożoność obliczeniowa w algorytmie DIT FFT radix-2 wynosi:

• W przypadku zastosowania uproszczonego motylka

odpowiadającemu równaniu (10) liczba mnożeń zespolonych

maleje
z do .

1

4

W

2

8

W

N

N

2

log

N

N

2

log

N

N

2

log

)

2

/

(

background image

21

Wyprowadzenie algorytmu

radix – 2

Podział w dziedzinie częstotliwości DIF(ang.

Decimation In Frequency) – zasada dokonywania

obliczeń tym algorytmie jest analogiczna jak w w

poprzednio przedstawionym algorytmie DIT z ta

różnicą, że w tym przypadku nie dokonuje się

decymacji próbek sygnału x(n) lecz prążków widma

X(k).

• Wyznaczenie k-tego prążka X(k) widma Fouriera

wyznacza się na podstawie wzoru:

,

(11)

• Następnie oblicza się osobno prążki widma o

indeksach parzystych i nieparzystych:

 

 

1

,...,

2

,

1

,

0

,

1

0

N

k

W

n

x

k

X

N

n

kn

N

N

j

N

e

W

2

 

 

 

1

,...,

2

,

1

,

0

,

1

2

1

,...,

2

,

1

,

0

,

2

1

0

)

1

2

(

1

0

)

2

(

N

k

W

n

x

k

X

N

k

W

n

x

k

X

N

n

k

n

N

N

n

k

n

N

background image

22

Wyprowadzenie algorytmu

radix – 2

• Otrzymane wzory można zredukować dla wartości

k = 0,1,2,…,N/2-1, wtedy otrzymamy:

• Po dalszej redukcji zmiennych w zapisie sum

otrzymamy dla k= 0,1,2,…,N/2-1:

 

 

 

 

 

1

2

/

)

1

2

(

1

2

/

0

)

1

2

(

1

2

/

)

2

(

1

2

/

0

)

2

(

1

2

2

N

N

n

k

n

N

N

n

k

n

N

N

N

n

k

n

N

N

n

k

n

N

W

n

x

W

n

x

k

X

W

n

x

W

n

x

k

X

 

 

 

1

2

/

0

)

1

2

)(

2

/

(

1

2

/

0

)

1

2

(

1

2

/

0

2

)

2

/

(

1

2

/

0

)

2

(

2

/

1

2

2

/

2

N

n

k

N

n

N

N

n

k

n

N

N

n

k

N

n

N

N

n

k

n

N

W

N

n

x

W

n

x

k

X

W

N

n

x

W

n

x

k

X

background image

23

Wyprowadzenie algorytmu

radix – 2

• Wykorzystując własności współczynnika WN :

• Wzór na parzyste i nieparzyste prążki widma X(k)

przyjmuje postać dla k= 0,1,2,…,N/2-1:

kn

N

kn

N

kN

N

kn

N

N

n

k

N

W

W

W

W

W

2

/

2

2

)

2

/

(

2

 

  

 

1

2

/

0

)

1

2

(

)

1

2

(

)

2

/

(

1

2

/

0

)

1

2

(

2

/

1

2

/

0

2

/

1

2

]

2

/

[

2

N

n

k

n

N

k

N

N

N

n

k

n

N

kn

N

N

n

W

N

n

x

W

W

n

x

k

X

W

N

n

x

n

x

k

X

background image

24

Wyprowadzenie algorytmu

radix – 2

• Wykorzystując fakt, ze :

• Po prostych przekształceniach otrzymuję się

końcowy wzór na prążki widma o indeksach
nieparzystych dla k= 0,1,2,…,N/2-, który ma
postać:

1

)

1

)(

1

(

2

/

)

2

/

)(

1

2

(

N

N

kN

N

N

k

N

W

W

W

  

  

  

kn

N

n

N

N

n

n

N

kn

N

N

n

n

k

N

N

n

W

W

N

n

x

n

x

W

W

N

n

x

n

x

W

N

n

x

n

x

k

X

2

/

1

2

/

0

2

1

2

/

0

)

1

2

(

1

2

/

0

}

]

2

/

{[

]

2

/

[

]

2

/

[

1

2

background image

25

Wyprowadzenie algorytmu

radix – 2

• Zgodnie z otrzymanymi wzorami parzyste i nieparzyste

prążki widma Fouriera X(2k) i X(2k+1) można otrzymać w

wyniku transformacji DFT, która jest dokonywana dla

połowy próbek (N/2) sygnału wejściowego x(n).
Operacja ta nie jest jednak wykonywana na sygnale

oryginalnym lecz na sztucznie zmodyfikowanym zgodnie z

poniższymi zależnościami:

• Z zapisu macierzowego równań na prążki parzyste i

nieparzyste otrzymuje się następujący graf zwany

„motylkiem”:

1

2

/

,...,

2

,

1

,

0

,

)]

2

/

(

)

(

[

)

(

1

2

/

,...,

2

,

1

,

0

),

2

/

(

)

(

)

(

2

1

N

n

W

N

n

x

n

x

n

x

N

n

N

n

x

n

x

n

x

n

N

background image

26

Wyprowadzenie algorytmu

radix – 2

• Na rysunku 5 przedstawiono schemat blokowy

działania algorytmu dla N= 8:

Rys.5. Pełny schemat blokowy algorytmu DFT FFT radix-2

background image

27

Wyprowadzenie algorytmu

radix – 2

• Algorytm FFT z podziałem częstotliwościowym (DFT) ma taką

samą złożoność obliczeniowa jak algorytm FFT z podziałem

czasowym (DIT) i jest proporcjonalna do . W

przeciwieństwie do DIT, alg. Z podziałem częstotliwościowym

wymaga zamiany próbek na wyjściu.
Aby zmienić kolejność próbek stosuje się metodą z odwrotną

propagacją bitu przeniesienia.

• Wyjaśnić jeszcze należy proces zmiany kolejności próbek w

wektorze wejściowym przy zastosowaniu algorytmu DIT FFT

radix-2. Jak już wspomniano wcześniej dokonuje się to metodą z

odwrotną propagacją bitu przeniesienia (reverse carry

propagation).

• W celu pełnego zrozumienia działania tej metody zostanie ona

przedstawiona na przykładzie dla długości wektora wejściowego

N = 8.

N

N

2

log

background image

28

Wyprowadzenie algorytmu

radix – 2

• W pierwszym kroku należy zmienić indeksy poszczególnych

próbek z wartości dziesiętnej na binarną:

• Dysponując wartościami binarnymi indeksów próbek w

kolejnym etapie należy dokonać sumowań binarnych

zgodnie z sposobem pokazanym poniżej:

gdzie: +rc – oznacza dodawanie z odwrotna propagacją bitu

przeniesienia,
i0…7 – indeksy próbek po zmianie kolejności.

Indeks

dziesięt

ny

0

1

2

3

4

5

6

7

Indeks

binarny

00

0

00

1

01

0

01

1

10

0

10

1

11

0

11

1

background image

29

Wyprowadzenie algorytmu

radix – 2

• Wynikiem działania jest zmieniona kolejność

próbek wymagana przy zastosowaniu algorytmu.

• Taką operację możemy przeprowadzać do

dowolnej długości wektora danych wejściowych.

Indeks pierwotny

próbek

00

0

(0)

00

1

(1)

01

0

(2)

01

1

(3)

10

0

(4)

10

1

(5)

11

0

(6)

11

1

(7)

Indeks po zmianie

kolejności

00

0

(0)

10

0

(4)

01

0

(2)

11

0

(6)

00

1

(1)

10

1

(5)

01

1

(3)

11

1

(7)

background image

30

Właściwości algorytmu

FFT

• ciąg danych wejściowych x(n) musi mieć długość równą potędze

2 co ma znaczący wpływ na efektywności działania algorytmu,

przy liczbie danych wejściowych różnej od wspomnianej liczby

wydajność algorytmu znacznie spada,

• względem metody bezpośredniej obliczania DFT algorytm ten

przyspiesza obliczenia krotnie,

• istnieje możliwość obliczania współczynników przed

pomiarem, ponieważ nie ma to nic wspólnego z procesem

próbkowania sygnału, do wyznaczenia wszystkich

współczynników potrzebna jest tylko długość wektora danych,

taka realizacja obliczania DTF wpływa na poprawę szybkości

działania algorytmu,

• istnieje możliwość policzenia transformaty odwrotnej (IFFT)

dzięki własności:

N

N

2

log

N

W

)

)}

(

{

(

)

)

(

(

1

)

(

1

))

(

(

)

(

*

*

1

0

*

/

2

*

1

0

/

2

k

X

FFT

e

k

X

N

e

k

X

N

k

X

IFFT

n

x

N

n

N

kn

j

N

n

N

kn

j

background image

31

Właściwości algorytmu

FFT

• zastosowanie algorytmu FFT wymaga w przeciwieństwie do

algorytmów rekurencyjnych wyznaczania DTF rozpoczęcia

obliczeń po zebraniu wszystkich próbek co stanowi problem

w przypadku obliczania DTF „on-line”

• z zależności od zastosowanego algorytmu czy to będzie DIT

czy DFT następuje konieczność zamiany próbek na wejściu

lub wyjściu procesy przetwarzania sygnału, obecnie aby

unikną przestawiania próbek sygnału bądź prążków widma

stosuję się oba algorytmy równocześnie. Przykład:


Document Outline


Wyszukiwarka

Podobne podstrony:
cw 7 Dyskretna Transformata Fouriera (DFT)
Dyskretna transformata Fouriera
Dyskretna transformata Fouriera
Dyskretne Przekształcenie Fouriera, WAT, SEMESTR V, Cfrowe przetwarzanie sygnałów, Cps, od borysa, C
SprawozdanieH Wyznaczanie sprawności transformatora trójfazowego
Wyznaczanie przekładni transformatora
Transformata Fouriera, wzory i własnosci
Dyskretna transformata Hilberta
cw8 analiza widmowa metoda szybkiej transformaty fouriera (FFT)
Algorytmy Matematyka Dyskretna
Dyskretne przekształcenie Fouriera
Diagnostyka raka szyjki macicy metodą mikrospektroskopii w podczerwieni z transformacją Fourierax
II21 Wyznaczanie przekladni transformatora
jurlewicz,rachunek prawdopodobieństwa,transformata Fouriera zadania
OI21 Wyznaczanie przekladni transformatora
2010 01 11 Transformata Fouriera
Transformacja Fouriera jest podstawowym narzędziem analizy częstotliwościowej sygnałów
2 Transformata Fouriera

więcej podobnych podstron