instrukcja do laboratorium z cyfrowego przetwarzania sygnałów

24
DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH 1 Instrukcja do laboratorium z cyfrowego przetwarzania sygnałów Ćwiczenie 4 Próbkowanie i transformacje Fouriera Przemysław Korohoda, KE, AGH Zawartość instrukcji: 1 Materiał z zakresu DSP 1.1 Próbkowanie sygnału e j vt 2 1.1.2 Częstotliwość cyfrowa i pulsacja cyfrowa 1.2 Odpowiedź częstotliwościowa systemu 1.2.1 Odpowiedź częstotliwościowa jako fragment transformaty “Z” odpowiedzi impulsowej 1.3 Transformacja Fouriera z “czasem” dyskretnym 1.3.1 Porównanie Transformacji Fouriera z czasem dyskretnym z Transformacją Fouriera dla sygnałów z czasem ciągłym 1.4 Dyskretna Transformacja Fouriera 1.5 Transformata DFT jako próbkowanie transformaty D-TFT 2 Korzystanie z pakietu MATLAB 2.1 Opis wybranych funkcji 2.2 Przykłady realizacji wybranych zadań 2.2.1 Demonstracja okresowości sygnału kosinusoidalnego względem “czasu” i częstotliwości 2.2.2 Wyznaczanie odpowiedzi częstotliwościowej filtru FIR rzędu N-1 dla pojedynczej wartości częstotliwości cyfrowej 2.2.3 Wyznaczanie transmitancji “Z” filtru typu FIR o zadanej odpowiedzi impulsowej dla pojedynczej wartości z 2.2.4 Wyznaczanie przybliżenia transformaty D-TFT ze wzoru definicyjnego (27): 2.2.5 Wyznaczanie transformaty DFT ze wzoru definicyjnego (33): 2.2.6 Wyznaczanie przybliżenia transformaty D-TFT za pomocą funkcji fft: 2.2.7 Wykres fazy - efekt ograniczania do zakresu od minus pi do pi 3 Zadania do wykonania 4 Dodatek teoretyczny nr 2 - Relacja pomiędzy Transformacją Fouriera z Czasem Dyskretnym (ang. D-TFT) i Transformacją Fouriera z Czasem Ciągłym (ang. C-TFT) 5 Dodatek teoretyczny nr 3 - Relacja pomiędzy Transformacją Fouriera z Czasem Dyskretnym (ang. D-TFT) i Dyskretną Transformacją Fouriera (ang. DFT); Relacja pomiędzy DFT i C-TFT

Upload: vuonghuong

Post on 23-Jan-2017

216 views

Category:

Documents


2 download

TRANSCRIPT

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

1

Instrukcja do laboratorium z cyfrowego przetwarzania sygnałów

Ćwiczenie 4

Próbkowanie i transformacje Fouriera

Przemysław Korohoda, KE, AGH

Zawartość instrukcji:

1 Materiał z zakresu DSP

1.1 Próbkowanie sygnału ej v t 2

1.1.2 Częstotliwość cyfrowa i pulsacja cyfrowa

1.2 Odpowiedź częstotliwościowa systemu

1.2.1 Odpowiedź częstotliwościowa jako fragment transformaty “Z” odpowiedzi

impulsowej

1.3 Transformacja Fouriera z “czasem” dyskretnym

1.3.1 Porównanie Transformacji Fouriera z czasem dyskretnym z Transformacją Fouriera

dla sygnałów z czasem ciągłym

1.4 Dyskretna Transformacja Fouriera

1.5 Transformata DFT jako próbkowanie transformaty D-TFT

2 Korzystanie z pakietu MATLAB

2.1 Opis wybranych funkcji

2.2 Przykłady realizacji wybranych zadań

2.2.1 Demonstracja okresowości sygnału kosinusoidalnego względem “czasu” i

częstotliwości

2.2.2 Wyznaczanie odpowiedzi częstotliwościowej filtru FIR rzędu N-1 dla pojedynczej

wartości częstotliwości cyfrowej

2.2.3 Wyznaczanie transmitancji “Z” filtru typu FIR o zadanej odpowiedzi impulsowej dla

pojedynczej wartości z

2.2.4 Wyznaczanie przybliżenia transformaty D-TFT ze wzoru definicyjnego (27):

2.2.5 Wyznaczanie transformaty DFT ze wzoru definicyjnego (33):

2.2.6 Wyznaczanie przybliżenia transformaty D-TFT za pomocą funkcji fft:

2.2.7 Wykres fazy - efekt ograniczania do zakresu od minus pi do pi

3 Zadania do wykonania

4 Dodatek teoretyczny nr 2 - Relacja pomiędzy Transformacją Fouriera z Czasem

Dyskretnym (ang. D-TFT) i Transformacją Fouriera z Czasem Ciągłym (ang.

C-TFT)

5 Dodatek teoretyczny nr 3 - Relacja pomiędzy Transformacją Fouriera z Czasem

Dyskretnym (ang. D-TFT) i Dyskretną Transformacją Fouriera (ang. DFT);

Relacja pomiędzy DFT i C-TFT

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

2

Na instrukcję składają się następujące części:

1 Materiał z zakresu DSP

2 Korzystanie z pakietu MATLAB

3 Zadania do wykonania

4 Dodatek teoretyczny nr 2

5 Dodatek teoretyczny nr 3

Do sprawnego wykonania ćwiczenia nie jest konieczna wcześniejsza praktyczna znajomość nie

wprowadzonych w ramach poprzednich ćwiczeń funkcji pakietu MATLAB, jednak niezbędna jest

dobra orientacja w materiale przedstawionym w częściach 1 oraz 2 tej instrukcji oraz w zagadnieniach

będących przedmiotem poprzednich ćwiczeń.

Dlatego też wskazane jest dokładne przeczytanie obu wymienionych części instrukcji oraz

zanalizowanie podanych przykładów. UWAGA: znajomość i zrozumienie części 1 i 2 oraz materiału

z poprzednich ćwiczeń mogą zostać przez prowadzącego skontrolowane w trakcie zajęć.

W realizacji zadań z części 3 może pomóc ich wcześniejsze przemyślenie w powiązaniu z częściami

1 i 2.

Zapoznanie się z materiałem zamieszczonym z dodatkach teoretycznych może ułatwić zrozumienie

ćwiczeń.

UWAGA - dobre opanowanie materiału zawartego w tym ćwiczeniu jest bardzo ważne z punktu

widzenia dalszych ćwiczeń.

W razie niejasności należy skonsultować się z prowadzącym przed zajęciami - na przykład w terminie

konsultacji - bezpośrednio lub poprzez e-mail:

[email protected]

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

3

1 Materiał z zakresu DSP

1.1 Próbkowanie sygnału ej v t 2

W podrozdziale tym będzie mowa o próbkowaniu rozumianym jako tworzenie ciągu wartości

chwilowych funkcji pobranych w równych odstępach “czasu”: s n s n t[ ] ( ) , gdzie przez n

oznaczono dowolną liczbę całkowitą. Odstęp ten będzie dalej oznaczany jako t T .

Sygnał e j v t 2 jest zespoloną funkcją określoną na ciągłej zmiennej t . Zmienną v można

traktować jako parametr, określający częstotliwość sygnału, analogicznie jak w przypadku funkcji

trygonometrycznych, ponieważ:

s t e v t j v tC

j v t( ) cos sin 2 2 2 (1)

Sygnał cyfrowy pochodzący z próbkowania powyższego sygnału można zapisać w następujący sposób:

s n e j v n T[ ] 2 (2)

Interpretując (1) można odwrócić role i zmienną t przyjąć jako parametr, natomiast (1) określić jako

funkcję zmiennej v . Łatwo zauważyć, że właściwości funkcji będą identyczne, gdyż od t zależy ona

w identyczny sposób jak od v . Można zatem stwierdzić, że jest to funkcja dwóch zmiennych ( t oraz

v ) i jest to funkcja symetryczna względem tych zmiennych. Zatem, jeżeli założy się ustaloną wartość

t , co z kolei daje n T const , to widać natychmiast, że funkcja (1) jest okresowa względem

zmiennej v .

Funkcja

e jj cos sin (3)

jest okresowa, przy czym okres podstawowy wynosi 0 2 , z czego wynika, że każda wartość

n 2 jest także okresem funkcji (3). Z porównania (3) oraz (1) wynika, że dla każdej

ustalonej wartości t n Tn wyrażenie okresu sygnału (1) w odniesieniu do zmiennej v daje:

vT

1

(4)

W analogiczny sposób można wyobrazić sobie, iż ciąg próbek (2) jest funkcją zmiennej całkowitej n

oraz częstotliwości v . Ustalając n nust otrzymuje się wartość próbki s n s vust[ ] ( ) jako funkcję

ciągłej zmiennej v .

Ponieważ ciąg s n[ ] powstaje z wartości (1) pobranych właśnie w chwilach tn , więc ciąg ten

wykazuje okresowość względem zmiennej v , z okresem (4).

Oznacza to, że przy ustalonym T dla każdej wartości n wartość odpowiedniej próbki sygnału

rozpatrywana w funkcji v jest okresowa. Okres (4) jest taki sam dla wszystkich wartości n . Zatem po

spróbkowaniu (1) i otrzymaniu ciągu w postaci (2) nie da się już w oparciu o ten ciąg rozróżnić, czy

sygnał sprzed próbkowania (czyli (1)) miał częstotliwość v , czy też vT

k 1

(dla dowolnej liczby

całkowitej k ). Efekt ten jest nazywany aliasingiem. Jak łatwo zauważyć, identyczny efekt powstaje

także w przypadku próbkowania funkcji sinus lub też kosinus (dla każdej z osobna).

Ponieważ każdy sygnał z czasem ciągłym posiadający transformatę Fouriera można zinterpretować jako

kombinację liniową nieskończonej ilości sygnałów typu (1), więc efekt aliasingu dotyczy w taki sam

sposób każdego takiego sygnału. Rozważanie efektu aliasingu powstającego w wyniku próbkowania

prowadzi do opisanego w dodatku teoretycznym nr 1 (patrz instrukcja do ćwiczenia 1) twierdzenia o

próbkowaniu.

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

4

1.1.2 Częstotliwość cyfrowa i pulsacja cyfrowa

W dalszych rozważaniach przydatne będzie pojęcie częstotliwości dla sygnałów cyfrowych. Ponieważ

okres próbkowania T jest wartością stałą, więc opis sygnału w postaci (2) można nieco uprościć

podstawiając:

f v T (5)

Pozwala to na przepisanie (2) do postaci:

s n e ej v n T j f n[ ] 2 2 (6)

Bezwymiarowa wielkość f jest w tym przypadku wielkością ciągłą, jednak ze względu na powiązanie

z sygnałami cyfrowymi będzie dla uproszczenia nazywana skrótowo częstotliwością cyfrową.

Zależność (5) jest dość istotna, ponieważ przedstawia, jaka jest zależność pomiędzy częstotliwością dla

sygnałów z czasem ciągłym v , wyrażoną w Hz, oraz bezwymiarową częstotliwością cyfrową.

Niekiedy spotyka się opis sygnału ciągłego (1) zawierający zamiast częstotliwości v wyrażanej w Hz

pulsację w radianach na sekundę:

s t eC

j t( ) (7)

Postępując podobnie jak w przypadku częstotliwości, można zatem wprowadzić pojęcie pulsacji

cyfrowej, wyrażanej w radianach:

T f2 (8)

Sygnał cyfrowy (2) można zatem zapisać również tak:

s n e j n[ ] (9)

Warto zauważyć, że w literaturze anglo-języcznej spotyka się słowo frequency w odniesieniu do:

a) częstotliwości w Hz, b) pulsacji w radianach na sekundę, c) bezwymiarowej częstotliwości cyfrowej

oraz d) pulsacji cyfrowej w radianach. Należy pamiętać, że wielkości te są wprawdzie powiązane

wzajemnie (zależności (5) i (8)), jednak mimo wszystko są to cztery różne wielkości, wyrażane za

pomocą różnych jednostek. Dlatego warto się upewnić jakiego znaczenia słowa frequency używa w

danym przypadku autor.

Efekt aliasingu powoduje, że sygnał cyfrowy (2) jest okresowy z punktu widzenia parametru v i okres

podstawowy wynosi 1

T. Z zależności (5) oraz (8) wynika, że sygnał cyfrowy jest okresowy również ze

względu na f oraz , przy czym w każdym przypadku okres podstawowy jest równy odpowiednio

1 oraz 2 . Okresowość ciągu s n[ ] wyrażoną względem f lub można zapisać następująco ( k

to dowolna liczba całkowita):

s n e ef

j f n j f k n[ ] 2 2

(10)

lub też

s n e ej n j k n

[ ] 2

(11)

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

5

We wzorach (10) i (11) zaznaczono dodatkowo, że sygnały są uzależnione od wartości parametru, który

może przyjmować dowolne wartości rzeczywiste - odpowiednio: f dla (10) oraz dla (11).

Warto tu wspomnieć o pewnej ciekawostce, iż nie zawsze ciąg pochodzący z próbkowania sygnału

okresowego musi być też okresowy. W celu wykazania, że jest to możliwe sformułujemy warunek, jaki

musi być spełniony, by w takim przypadku ciąg próbek był okresowy. Jeżeli warunek ten nie będzie

spełniony, to ciąg próbek nie będzie okresowy.

Rozpatrujemy sygnał jako funkcję czasu ciągłego. W konsekwencji ciąg próbek jest funkcją zmiennej

n . Niech sygnał z czasem ciągłym x t( ) będzie okresowy z okresem P :

x t x t P( ) ( ) (12)

Przyjmując, że ciąg próbek tego sygnału x n x n T[ ] ( ) jest także okresowy, otrzymujemy:

x n x n N[ ] [ ] (13)

przy czym oczywiście wartość okresu N musi być liczbą naturalną. Z porównania (12) i (13) oraz

zależności t n Tn wynika, że aby zachodziły obie równości ((12) i (13)) muszą istnieć dwie liczby

naturalne k oraz m , takie że:

k P m N T (14)

Równość (14) można opisać tak, że musi istnieć taka całkowita wielokrotność okresu P , by takiemu

odcinkowi czasu odpowiadała całkowita ilość okresów ciągu (czyli N T ).

Z (14) wynika wprost poszukiwany warunek:

P

T

m N

k

(15)

Prawa strona warunku (15) oznacza liczbę wymierną, ponieważ wszystkie występujące w niej liczby są

naturalne. Zatem, aby w wyniku próbkowania sygnału okresowego powstał ciąg nieokresowy,

wystarczy by iloraz okresu P sygnału do okresu próbkowania T był liczbą niewymierną. Nie jest to

takie trudne do spełnienia, przykładowo: dla sygnału sinusoidalnego o częstotliwości v 100

Hz

próbkowanego z okresem T 001. s otrzymuje się, że:

P

T T v

1 (16)

1.2 Odpowiedź częstotliwościowa systemu

Sygnał cyfrowy (2) nie może być naturalnie rezultatem próbkowania sygnału pochodzącego ze świata

rzeczywistego. Jest to sygnał o charakterze teoretycznym, jednak jest on dość ważny, ponieważ

umożliwia wygodną interpretację pewnych powszechnie stosowanych pojęć. Przyjmijmy, że na wejście

systemu cyfrowego, liniowego i stacjonarnego, czyli opisanego przez odpowiedź impulsową h n[ ]

(odpowiedź ta może być skończona lub nieskończona), zostanie podany sygnał w postaci ciągu (2).

Okazuje się, że odpowiedź systemu na ten sygnał będzie takim samym sygnałem, jedynie pomnożonym

przez pewną stałą liczbę zespoloną, zależną jedynie od wartości f , a niezależnej od indeksu n . Jeżeli

odpowiedź systemu swy nf [ ] na sygnał typu (10) zapiszemy w postaci splotu tego sygnału

wejściowego i odpowiedzi impulsowej systemu h n[ ] , to:

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

6

swy n e H f h n e

H fswy n

s n

f

j f n j f n

f

f

[ ] ( ) [ ]

( )[ ]

[ ]

2 2

(17)

gdzie H f( ) jest dla ustalonej wartości f wielkością stałą, niezależną od n , natomiast ogólnie jest

to zespolona funkcja zmiennej f .

Słuszność (17) można wykazać podstawiając do tej zależności pełny wzór na splot:

h n e h k e e h k ej f n j f n k

k

j f n j f k

k

[ ] [ ] [ ]

2 2 2 2 (18)

Z porównania (17) i (18) wynika, że:

H f h k e j f k

k

( ) [ ]

2 (19)

Określona przez (19) funkcja zmiennej f jest nazywana odpowiedzią częstotliwościową systemu. Jak

wynika z przeprowadzonych rozważań, H f( ) jest zespoloną funkcją częstotliwości cyfrowej

i przedstawia zależność pomiędzy sygnałem wyjściowym i wejściowym systemu liniowego

stacjonarnego, gdy sygnał wejściowy jest w postaci (2) (lub też (6)). Odpowiedź częstotliwościowa

może być wyrażona także jako funkcja pulsacji cyfrowej:

H h k e j k

k

( ) [ ]

(20)

Ze wzorów (19) oraz (20) widać, iż wszystkie składniki odpowiednich sum posiadają pewien wspólny

okres. Dla (19) jest to f 1 , dla (20) 2 . Zatem odpowiedź częstotliwościowa jako

kombinacja liniowa takich składników posiada taki sam okres. Można to wyjaśnić również w oparciu

o zależność (17) - ponieważ sygnał wejściowy jest okresowy ze względu na częstotliwość f , zatem

odpowiedź częstotliwościowa jest także okresowa.

Ponieważ okresowość odpowiedzi częstotliwościowej wynika z okresowości (względem parametru f

lub ) sygnału wejściowego, więc dla zaznaczenia tego faktu stosuje się często także następujące

oznaczenie:

H e h k ej f j f k

k

( ) [ ]

2 2 (21)

lub

H e h k ej j k

k

( ) [ ]

(22)

1.2.1 Odpowiedź częstotliwościowa jako fragment transformaty “Z” odpowiedzi impulsowej

Jeżeli podstawimy:

e zj f 2 (23)

to wzór (21) przyjmie postać transformaty “Z” odpowiedzi impulsowej h n[ ] :

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

7

H z h n z n

n

( ) [ ]

(24)

Oznacza to, że odpowiedź częstotliwościowa to fragment transformaty “Z” odpowiedzi impulsowej,

określony dla wartości “z” spełniających zależność (23). Zależność ta wyznacza na płaszczyźnie

zespolonej “z” okrąg jednostkowy o środku w punkcie (0,0). Warto pamiętać, że gdyby okrąg ten nie

zawierał się w obszarze zbieżności transformaty “Z”, to dla takiego systemu nie dałoby się wyznaczyć

odpowiedzi częstotliwościowej.

Rys.1. Płaszczyzna zespolona zmiennej “z” z zaznaczonym przykładowym obszarem zbieżności

transformaty oraz okręgiem określającym fragment, którego dotyczy odpowiedź częstotliwościowa

Ponieważ odpowiedź częstotliwościowa jest dla okręgu jednostkowego na płaszczyźnie “z”

równoznaczna z transformatą “Z” odpowiedzi impulsowej, więc dla tego samego okręgu jest ona także

równoznaczna z transmitancją danego systemu. Można zatem, dla tak ograniczonego zbioru wartości

“z”, odpowiedni wzór wielomianowy na transmitancję przepisać do następującej postaci:

H eb b e b e b e

a e a e a e

j f

j f j f

M

j f M

j f j f

K

j f K( )

( )

( )

2 1 2

2

3

4 2 1

2

2

3

4 2 11

(25)

lub też do postaci iloczynowej z zapisanymi wprost zerami i biegunami:

H e Ke z e z e z

e p e p e p

j f

m

j f j f j f

M

j f j f j f

K

( )

2

2

1

2

2

2

1

2

1

2

2

2

1

(26)

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

8

1.3 Transformacja Fouriera z “czasem” dyskretnym

Odpowiedź impulsowa jest sygnałem cyfrowym opisującym system liniowy i stacjonarny. Każdy sygnał

cyfrowy można więc zinterpretować jako odpowiedź impulsową odpowiedniego systemu. Dla takiego

systemu możliwe jest wyznaczenie - o ile odpowiedni tylko zachodzi zbieżność transformaty “Z” dla

odpowiedzi impulsowej na okręgu jednostkowym - odpowiedzi częstotliwościowej. Można więc

przyjąć, że dla niemal dowolnego sygnału cyfrowego x n[ ] - sygnał ten ma umożliwiać zbieżność

transformaty “Z” dla okręgu jednostkowego (23) - określa się funkcję X e j f( ) 2 w analogiczny

sposób, jak w poprzednich podrozdziałach wyznaczano odpowiedź częstotliwościową. Zależność

określająca związek pomiędzy x n[ ] oraz X e j f( ) 2 nosi nazwę Transformacji Fouriera z Czasem

Dyskretnym i jest często oznaczana skrótowo jako D-TFT (ang. Discrete-Time Fourier Transform).

Nazwa ta bierze się stąd, że transformacja wykazuje istotne podobieństwo do Transformacji Fouriera

znanej z teorii sygnałów, jednak w tym przypadku czas (umowny) jest reprezentowany w postaci

indeksów n , a tylko częstotliwość jest wielkością ciągłą. Wzór definiujący D-TFT jest następujący:

X f x n j f nn

( ) [ ] exp

2 (27)

lub w zapisie bazującym na pulsacji cyfrowej:

X x n j nn

( ) [ ] exp

(28)

W zależnościach (27) i (28) powrócono do zapisu wskazującego na f lub jako na zmienną

niezależną, ponieważ transformatę X f( ) (lub X ( ) ) przedstawia się zazwyczaj w postaci pary

wykresów amplitudy i fazy lub też części rzeczywistej i urojonej, gdy oś pozioma opisana jest za

pomocą zmiennej f (lub odpowiednio ).

Transformacja odwrotna do (27) określona jest wzorem:

x n X f j f n df[ ] ( ) exp

21

2

1

2

(29)

natomiast transformacja odwrotna do (28), to:

x n X j n d[ ] ( ) exp

1

2

(30)

Transformacja odwrotna polega na wyznaczaniu całki w ramach jednego okresu transformaty, który - ze

względu na jej okresowość - zawiera kompletną informację o ciągu pierwotnym x n[ ] . Wyprowadzenie

wzoru (29) można znaleźć w dodatku teoretycznym nr 2.

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

9

1.3.1 Porównanie Transformacji Fouriera z czasem dyskretnym z Transformacją Fouriera dla

sygnałów z czasem ciągłym

W dodatku teoretycznym można również znaleźć obszerną dyskusję na temat związków D-TFT z

Transformacją Fouriera dla sygnałów z czasem ciągłym, czyli C-TFT (ang. Continuous-Time Fourier

Transform). W skrócie związki te można opisać następująco.

Rozważając dany ciąg x n[ ] zawsze można założyć, że jest to sygnał cyfrowy pochodzący

z próbkowania z okresem T odpowiedniego sygnału ciągłego x t( ) . Próbkowaniem nazywa się tutaj

pobieranie wartości chwilowych x t( ) w odstępach t T . Określa się w ten sposób parę - sygnał

x t( ) oraz ciąg x n[ ] . Można również założyć, że sygnał x t( ) został spróbkowany funkcją

grzebieniową o takim samym okresie T i w wyniku tego powstał sygnał x tT ( ) , będący funkcją

grzebieniową zmodulowaną sygnałem x t( ) . Zagadnienie takiego próbkowania było obszernie opisane

w dodatku teoretycznym nr 1. Po sporządzeniu wykresów transformat można stwierdzić, że

Transformata Fouriera typu C-TFT dla sygnału x tT ( ) oraz Transformata Furiera typu D-TFT dla ciągu

x n[ ] mają identyczny kształt, pod warunkiem, że dopasuje się odpowiednio skale częstotliwości: v

(wyrażanej w Hz) dla C-TFT i częstotliwości f (bezwymiarowej) dla D-TFT. Dopasowanie polega na

tym, że odcinkowi v o długości vTT 1

odpowiada odcinek f o długości 1. Przez vT oznaczono

częstotliwość próbkowania. Rys. 2 stanowi ilustrację opisanej zależności dla wykresów amplitud

odpowiednich transformat. Warto pamiętać, że delta Diraca jest pseudo-funkcją określoną dla czasu

ciągłego, zatem i funkcja grzebieniowa, a także sygnał spróbkowany taką funkcją - czyli x tT ( ) - też

są określone dla czasu ciągłego. Ciąg x n[ ] natomiast jest określony wyłącznie dla całkowitych

wartości n .

Rys.2. Ilustracja zależności pomiędzy odpowiednimi transformatami - wykresy przedstawiają tylko

amplitudę - dla (kolejno od góry):

a) x t( ) - czyli sygnału z czasem ciągłym,

b) x tT ( ) - tego samego sygnału, ale po spróbkowaniu funkcją grzebieniową,

c) x n[ ] - sygnału cyfrowego pochodzącego z pobrania wartości chwilowych sygnału x t( )

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

10

Przykładowo, jeżeli częstotliwość próbkowania wynosi vT 44 kHz, to wartość transformaty D-TFT

dla częstotliwości cyfrowej f 0 25, jest taka sama, jak wartość transformaty C-TFT sygnału

x tT ( ) wyznaczona dla częstotliwości v 11kHz wyznaczona. Z kolei, jeżeli zostały spełnione

warunki twierdzenia o próbkowaniu, to wartość transfomaty C-TFT od x tT ( ) dla tej częstotliwości jest

TkHz

1

44 mniejsza niż wartość transformaty C-TFT od x t( ) . Zgodność ta wynika to z faktu, że

wartość v 11kHz mieści się w odcinku od 1

2vT do

1

2vT .

1.4 Dyskretna Transformacja Fouriera

W przypadku D-TFT czas jest reprezentowany przez indeksy przebiegające wartości od minus do plus

nieskończoności. Jednak w zagadnieniach praktycznych zakres indeksów czasowych jest ograniczony

do pewnego skończonego przedziału wartości. W takiej sytuacji możliwe jest stosowanie Dyskretnej

Transformacji Fouriera, wskrócie DFT (ang. Discrete Fourier Transform). Wprowadza się w tym celu

nowe indeksy, tak by pierwszy z nich posiadał wartość zero. Nie ogranicza to w żadnej mierze

interpretacji otrzymanych wyników w odniesieniu do oryginalnego zakresu indeksów. Jeżeli,

przykładowo, rozważany jest ciąg x n0[ ] dla n 10 100, , to dla potrzeb DFT można

wprowadzić przesunięcie indeksów o 10 i otrzymać ciąg x n[ ] dla n 0 110, . Związek

pomiędzy x n0[ ] oraz x n[ ] jest oczywisty, bowiem: x n x n0 10[ ] [ ] dla n 0 110, .

DFT wykazuje szereg podobieństw do D-TFT. Jeżeli założymy, że w ciągu nieskończonym z wyjątkiem

N kolejnych elementów wszystkie pozostałe mają wartość zero, to po wprowadzeniu nowych

indeksów zakres sumowania we wzorze na D-TFT (22) można następująco ograniczyć:

X f x n j f nn

N

( ) [ ] exp

20

1

(31)

Jeżeli z otrzymanej według (31) transformaty zostanie pozostawiony tylko jeden okres - na przedziale

f od zera do 1 - i na tym odcinku zostanie pobranych N próbek, w oddalonych o fN

1

punktach, poczynając od punktu f 0 , to otrzyma się N wartości. Punkty próbkowania f k są

rozłożone na osi f równomiernie, można je więc we wzorze (31) zastąpić ich numerami,

wprowadzając indeksy częstotliwościowe:

k f Nk (32)

Otrzymany według powyższego opisu ciąg N próbek transformaty D-TFT można zatem zapisać

następująco:

X k x nj k n

Nk N

n

N

[ ] [ ] exp : , ,...,

2

0 1 10

1 (33)

Zależność (33) jest wzorem Dyskretnej Transformacji Fouriera, czyli DFT. Wzór na odwrotną DFT jest

do (33) bardzo podobny:

x nN

X kj k n

Nn N

k

N

[ ] [ ] exp : , ,...,

1 2

0 1 10

1 (34)

Para wzorów (33) i (34) stanowi przykład wzoru na DFT zaimplementowany w Matlab’ie. Ze względu

na różne zastosowania parę zależności na DFT oraz na odwrotną DFT można ogólnie zapisać z

użyciem stałej cDFT :

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

11

X k c x nj k n

Nk NDFT

n

N

[ ] [ ] exp : , ,...,

2

0 1 10

1 (35)

x nN c

X kj k n

Nn N

DFT k

N

[ ] [ ] exp : , ,...,

1 2

01 10

1 (36)

Najczęściej stosuje się wartość cDFT ze zbioru 1 1

1N N

, ,

. W pierwszym przypadku X[ ]0 jest

wartością średnią wszystkich elementów ciągu x n[ ] . W drugim, w wyniku transformacji nie zmienia

się całkowita energia ciągu. Właściwość tą, zwaną równością Parsevala, można zapisać tak:

x n X kn

N

k

N

[ ] [ ]2

0

12

0

1

(37)

Natomiast, gdy cDFT 1, to X[ ]0 jest sumą wszystkich elementów ciągu pierwotnego.

Równość Parsevala można zapisać bardziej ogólnie, uwzględniając stałą cDFT :

c N x n X kDFT

n

N

k

N

2 2

0

12

0

1

[ ] [ ] (38)

Transformacja DFT przekształca pierwotny ciąg N elementów (zwykle jest to ciąg rzeczywisty)

w ciąg transformaty (zazwyczaj zespolony) składający się również z N elementów. Warto zaznaczyć,

że z punktu widzenia definicji DFT ciąg pierwotny może być także zespolony, co zostało uwzględnione

w zapisie (37) i (38).

1.5 Transformata DFT jako próbkowanie transformaty D-TFT

Jak wynika z poprzedniego podrozdziału, pomiędzy DFT i D-TFT istnieje bezpośredni związek. Rys.3

przedstawia ilustrację tej zależności.

Rys.3. Ilustracja faktu, że transformata DFT może być interpretowana jako efekt próbkowania jednego

okresu transformaty D-TFT, gdy transformata D-TFT jest wyznaczona dla tego samego skończonego

ciągu jednak przedłużonego do nieskończoności elementami zerowymi

Korzystając z relacji między transformatą C-TFT dla sygnału z czasem ciągłym i D-TFT ciągu

pochodzącego z próbkowania tego sygnału oraz informacji podanych powyżej można określić związek

pomiędzy widmem Fouriera sygnału z czasem ciągłym i DFT odpowiedniego fragmentu ciągu

cyfrowego pochodzącego z próbkowania tego sygnału. W ramach przygotowywania się do ćwiczeń

należy przygotować się do określania, jaka częstotliwość w Hz odpowiada określonemu indeksowi

częstotliwościowemu k i na odwrót.

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

12

2 Korzystanie z pakietu MATLAB

2.1 Opis wybranych funkcji

Wybrane polecenia programu MATLAB:

fft( dane wejściowe ) wyznaczenie dyskretnej transformaty Fouriera zadanego

ciągu za pomocą algorytmu szybkiej transformaty

Fouriera

ifft( dane wejściowe ) operacja odwrotna do fft

fftshift( dane wejściowe ) przesunięcie w dziedzinie Fouriera, tak by składowa

stała znalazła się (prawie) w środku ciągu

sum( wektor lub macierz ) wyznaczanie sumy elementów wektora lub, gdy zostanie

podana macierz, wektora sum kolejnych kolumn tej

macierzy

flops wyświetlenie stanu licznika operacji

zmiennoprzecinkowych, flops(0) zeruje ten licznik

mesh wykreślanie w aktywnym oknie graficznym wykresu

funkcji dwóch zmiennych podanej w postaci

zdyskretyzowanej jako macierz (wykres trójwymiarowy)

colormap zmiana palety kolorów używanej do wykreślania

wykresów

view obrót wykresu trójwymiarowego wokół osi pionowej i

poziomej do pozycji podanej w postaci kątów azymutu i

elewacji

Szczegóły dotyczące formatu danych wejściowych należy odczytać za pomocą polecenia „help”.

W przypadku funkcji fft oraz ifft możliwe jest wyznaczanie transformaty DFT dla ilości elementów

innej niż długość ciągu podanego jako dane wejściowe. Wystarczy w tym celu podać drugą zmienną,

określającą ilość punktów. Przykładowo dla 8-punktowego ciągu x n[ ] można wyliczyć 32-punktową

transformatę DFT przez podanie polecenia:

>>X=fft(x,32);

W przypadku, gdy ilość punktów transformaty jest większa niż długość ciągu pierwotnego, to ciąg ten

jest przedłużany do odpowiedniej długości wartościami zerowymi. Jeżeli ilość punktów transformaty

jest mniejsza niż długość ciągu, to ciąg ten jest przy wyznaczaniu transformaty obcinany do wskazanej

długości.

Uwaga: jeżeli zamieniamy zespolony wektor wierszowy na kolumnowy (lub odwrotnie) stosując

operator transpozycji macierzy, należy pamiętać, że otrzymane wartości będą miały odwrócony znak

części urojonej - wynika to z definicji transpozycji dla macierzy zespolonych. Można to łatwo

„poprawić” stosując polecenie „conj”.

2.2 Przykłady realizacji wybranych zadań

Poniżej pokazano przykładowe sekwencje poleceń realizujące zadania podobne do tych, które będą

realizowane w ramach laboratorium - w większości poniższych przykładów pominięto końcowy etap

wykreślania odpowiednich wykresów.

2.2.1 Demonstracja okresowości sygnału kosinusoidalnego względem “czasu” i częstotliwości:

>> t=0:0.02:3;

>> v=0:0.02:2:

>> s=cos(2*pi*v’*t);

>> mesh(t,v,s);

>> colormap([0,0,0]);

>> axis([min(t),max(t),min(v),max(v),-1,1]);

>> grid

>> view([75,65]);

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

13

2.2.2 Wyznaczanie odpowiedzi częstotliwościowej filtru FIR rzędu N-1 dla pojedynczej wartości

częstotliwości cyfrowej:

>> N=8;

>> h=rand(1,N);

>> f=0.25;

>> n=0:N-1;

>> s_we=exp(j*2*pi*f*n);

>> s_wy=filter(h,1,s_we);

>> H=s_wy/s_we;

W przykładzie wyznaczono odpowiedź systemu tylko dla ciągów 8-punktowych, ponieważ w 8.

punkcie odpowiedzi zanika różnica pomiędzy odpowiedzią na odpowiedni nieskończony ciąg i na ciąg

skończony zastosowany w przykładzie. Wynika to z faktu, iż odpowiedź impulsowa jest właśnie 8-

elementowa.

2.2.3 Wyznaczanie transmitancji “Z” filtru typu FIR o zadanej odpowiedzi impulsowej dla

pojedynczej wartości z:

>> f=0.5;

>> z=exp(j*2*pi*f)

>> h=rand(1,8);

>> p=0:length(h)-1;

>> H=sum(h.*(z.^p));

2.2.4 Wyznaczanie przybliżenia transformaty D-TFT ze wzoru definicyjnego (27):

>> f=-30:0.01:30;

>> T=1/20;

>> x=rand(1,32);

>> n=-10:21;

i następnie:

>> k=0; for ff=f, k=k+1; X(k)=sum(x.*exp(-j*2*pi*f*n*T)); end;

albo:

>> k=(1:length(f))’;

>> X(k)=exp(-j*2*pi*f’*n*T)*x’;

2.2.5 Wyznaczanie transformaty DFT ze wzoru definicyjnego (33):

>> N=32;

>> n=0:31;

>> x=rand(1,N);

i następnie:

>> for k=n; X(k+1)=sum(x.*exp(-j*2*pi*k*n/N)); end;

albo:

>> k=n’;

>> X(k+1)=exp(-j*2*pi*k*n/N)*x’;

2.2.6 Wyznaczanie przybliżenia transformaty D-TFT za pomocą funkcji fft:

>> N=8;

>> Nmax=1024;

>> x=rand(1,N);

>> X=fft(x,Nmax);

2.2.7 Wykres fazy - efekt ograniczania do zakresu od minus pi do pi:

>> fi=(-10:0.1:10)*pi;

>> X=exp(j*fi);

>> stem( fi, angle(X));

>> stem(fi, unwrap(angle(X)));

Jak uzasadnić wprowadzenie demonstrowanego powyżej ograniczenia na zakres wartości fazy?

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

14

3 Zadania do wykonania

1. Zilustrować efekt aliasingu na przykładzie próbkowania sygnału ej v t 2

. Pokazać na czym polega

okresowość otrzymanego sygnału względem częstotliwości.

2. Dla zadanego wektora wartości częstotliwości dyskretnej i wybranego systemu FIR wyznaczyć

odpowiedź częstotliwościową. Wykazać, że jest ona okresowa i wyznaczyć długość jej okresu.

3. Pokazać za pomocą przykładu związek pomiędzy transmitancją “Z” danego systemu i jego

odpowiedzią częstotliwościową.

4. Zademonstrować, że gdy ciąg cyfrowy o skończonej długości jest przedłużany wartościami

zerowymi, to transformata DFT zmierza do transformaty D-TFT i bazując na otrzymanych wynikach

pokazać, że transformata DFT jest wynikiem próbkowania jednego okresu transformaty D-TFT ciągu o

nieskończonej długości otrzymanego z przedłużonia ciągu skończonego wartościami zerowymi.

5. Korzystając z funkcji fft Matlab’a potwierdzić dla wybranego przykładu związek między

odpowiedzią częstotliwościową i transformatą D-TFT odpowiedzi impulsowej.

6. Na przykładzie funkcji fft oraz ifft zbadać w jakim stopniu skończona precyzja obliczeń komputera

wpływa na wynik złożonego algorytmu obliczeniowego.

7. Wykazać za pomocą przykładu prawdziwość równości Parsevala.

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

15

Dodatek teoretyczny nr 2

Relacja pomiędzy Transformacją Fouriera z Czasem Dyskretnym (ang.

D-TFT) i Transformacją Fouriera z Czasem Ciągłym (ang. C-TFT)

Definicja D-TFT dla ciągu x n[ ] :

X f x n e fj f n

n

( ) [ ] :

2 (1)

Definicja C-TFT dla sygnału x t( ) (dotyczy takich sygnałów, dla których poniższa całka jest zbieżna -

dla sygnałów okresowych stosuje się pewne poszerzenie definicji, do znaku trzech gwiazdek ***

rozważania dotyczyć będą wyłącznie sygnałów gwarantujących zbieżność wzoru definicyjnego):

( ) ( ) :v x t e dt vj v t

2

(2)

Definicja transformacji odwrotnej do C-TFT (z uwagami odnośnie zbieżności analogicznymi do wzoru

(2)):

x t v e dv tj v t( ) ( ) :

2

(2a)

Załóżmy, że wartości ciągu x n[ ] są równe amplitudom delt Diraca po próbkowaniu sygnału x t( ) w

równych odstępach czasu T, czyli po prostu chwilowym wartościom sygnału w równo oddalonych

punktach czasu:

x n x n T[ ] ( ) (3)

Dla przypomnienia, funkcja grzebieniowa to ciąg równo oddalonych delt Diraca (w tym przypadku

oddalonych o T):

g t t n TT

n

( ) ( )

(4)

Zatem spróbkowany funkcją grzebieniową sygnał x t( ) można zapisać następująco (inaczej jest to

funkcja grzebieniowa zmodulowana amplitudowo sygnałem x t( ) ):

x t x t g tT T( ) ( ) ( ) (5)

Wynik C-TFT dla sygnału (5) określony jest wzorem:

T T

j v tv x t g t e dt( ) ( ) ( )

2

(6)

Skorzystajmy z (4) i podstawmy za funkcję grzebieniową do (6):

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

16

T

n

j v tv x t t n T e dt( ) ( ) ( )

2

(7)

Ponieważ w wyrażeniu podcałkowym występuje iloczyn wyrażeń, skorzystamy z przemienności

mnożenia oraz rozdzielności mnożenia względem dodawania i przepiszemy (7) do postaci:

T

j v t

n

v x t e t n T dt( ) ( ) ( )

2 (8)

Zakładając, że całka (7) jest zbieżna dla każdego składnika sumy możemy całkę sumy wyrażeń zastąpić

sumą całek:

T

j v t

n

v x t e t n T dt( ) ( ) ( )

2 (9)

Warto teraz przypomnieć, że całka z funkcji pomnożonej przez deltę Diraca przesuniętą o T jest

równa wartości tej funkcji w punkcie T (dowód w tym miejscu pomijamy), czyli przykładowo:

p t t T dt p T( ) ( ) ( )

(10)

Traktując iloczyn x t e j v t( ) 2 jako powyższą funkcję ciągłą możemy przepisać (9) do postaci:

T

j v n T

n

v x n T e( ) ( )

2 (11)

Wyrażenie (11) jest już bardzo podobne do (1), należy jeszcze wykonać podstawienie (3) oraz:

vf

T (12)

Po powyższych podstawieniach otrzymujemy, że:

X ff

TT( )

(13)

Oznacza to, że funkcja ciągła częstotliwości f (D-TFT ciągu x n[ ]) jest identyczna (z dokładnością do

skali T określonej zależnością (12) dla zmiennej niezależnej) z funkcją ciągłą zmiennej v (C-TFT

sygnału ciągłego ).

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

17

Wynika z tego szereg wniosków, np. taki:

T v( ) jest transformatą C-TFT sygnału spróbkowanego z okresem T, zatem ta transformata jest

okresowa względem zmiennej v z okresem vT

0

1 , z (13) wynika więc, że transformata D-TFT,

X f( ) , jest także okresowa względem zmiennej f z okresem f 0 1 .

Spotykane są także definicje obu transformat oparte na pulsacji. Otrzymuje się je przez następujące

podstawienia.

Dla D-TFT:

2 f (14)

oraz dla C-TFT:

2 v (15)

Pomiędzy pulsacjami (14) i (15) zachodzi naturalnie analogiczny do (12) związek:

T (16)

Przy podstawieniach (14) i (15) można wykazać, że zachodzi także odpowiedni związek pomiędzy

transformatą D-TFT (czyli w tym przypadku: X ( ) ) oraz transformatą C-TFT (czyli teraz: XT ( ) )

:

XT

T( )

(17)

Funkcja X ( ) jest okresowa względem zmiennej i jak łatwo z (14) zauważyć okres ten wynosi

2 .

Warto także wskazać inną możliwość przejścia od (8) do (11).

T

j v t

n

v x t e t n T dt( ) ( ) ( )

2 (8 - powtórzone)

Zakładamy, że całka (8) jest zbieżna w każdym podprzedziale całkowania i następnie dzielimy cały

przedział całkowania na odcinki o długości T i środkach w punktach określonych dla całkowitych k

następująco:

t k Tk (18)

Ponieważ suma całek na wszystkich podprzedziałach jest równa całce na pełnym przedziale

całkowania, więc (8) można przepisać do postaci:

T

j v t

nt

T

tT

k

v x t e t n T dt

k

k

( ) ( ) ( )

2

2

2

(19)

W danym podprzedziale całkowania mieści się tylko jedna odpowiednio przesunięta delta Diraca,

zatem suma pod całką może być zastąpiona przez pojedynczy składnik:

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

18

T

j v t

tT

tT

k

v x t e t k T dt

k

k

( ) ( ) ( )

2

2

2

(20)

Teraz korzystając z (10) i podstawiając n za k można łatwo dokończyć wykazanie równoważności (13).

Opierając się na wykazanej zależności pomiędzy D-TFT i C-TFT można wywnioskować, że

transformacja odwrotna do (1) będzie dana wzorem wynikającym z (2a). Ponieważ D-TFT jest

powiązane ściśle z C-TFT sygnału ciągłego w czasie spróbkowanego funkcją grzebieniową, zatem

wypiszemy wzór na transformację odwrotną do C-TFT dla tego właśnie przypadku:

x t v e dv tT T

j v t( ) ( ) :

2

(21)

Dla przypomnienia - ogólny wzór na odwrotną transformację jest następujący:

x t v e dv tj v t( ) ( ) :

2

(2a - powtórzone)

Z transformaty odwrotnej wyznaczonej według (21) wybieramy teraz jedynie te wartości x t( ) , które

odpowiadają elementom ciągu x n[ ] , zatem (21) przybiera postać:

x n T v e dv n IT T

j v n T( ) ( ) :

2

(22)

Z kolei transformata odwrotna dla sygnału niespróbkowanego wyznaczona jedynie w tych samych,

wybranych punktach czasu opisana jest w sposób następujący:

x n T v e dv n Ij v n T( ) ( ) :

2

(23)

Pomiędzy wynikami obu transformat odwrotnych (22) i (23) w tych wybranych punktach czasu

zachodzi następujący związek (wynikający ze sposobu próbkowania):

x n T x n T t n TT ( ) ( ) ( ) (24)

Dążymy zatem do tego, by w oparciu o T v( ) (będące w ścisłym związku z X f( ) ) wyznaczyć

wartości x n[ ] (które są z kolei odpowiednio równe wartościom x n T( ) ). W tym celu należy

doprowadzić do równości zmodyfikowanej odpowiednio prawej strony (22) i lewej strony (23).

Natępnie wystarczy wykorzystać (12) oraz (13) i zastąpić po prawej stronie T v( ) przez X f( ) .

Przyjmijmy, że sygnał ciągły przed próbkowaniem ma taką transformatę, że jego częstotliwość

maksymalna i częstotliwość próbkowania spełniają warunek o próbkowaniu umożliwiający wierne

odtworzenie. Zauważmy, że możemy to zawsze założyć, ponieważ nie interesuje nas w zasadzie jak

wyglądał sygnał ciągły x t( ) - wykonujemy różne operacje jedynie na sygnale spróbkowanym x tT ( )

oraz na wybranych wartościach chwilowych x t( ) . To jak wygląda sygnał x t( ) pomiędzy tymi

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

19

wybranymi punktami nie ma żadnego znaczenia z punktu widzenia przedstawionej dyskusji. W każdym

razie, gdybyśmy chcieli później wyciągnąć w oparciu o odwrotną transformację D-TFT jakieś wnioski

odnośnie całego x t( ) , to sygnałów takich może być dla konkretnego ciągu x n[ ] nieskończenie wiele.

Zawsze jednak można zastosować interpolację prowadzącą do takiego x t( ) , który spełnia warunek o

próbkowaniu.

Jeżeli zatem x t( ) spełnia warunek o próbkowaniu, to jego transformata ( )v jest związana z

transformatą sygnału spróbkowanego , T v( ) , następująco:

( )( ) ,

.

vT v dla v

v v

dla pozost v

T

0 0

2 20

(25)

W celu wyznaczenia wartości x t( ) w wybranych punktach t n T wystarczy zatem wyznaczyć

transformatę odwrotną do C-TFT dla T vT ( ) na przedziale zawierającym pojedynczy okres - od

v0

2 do

v0

2:

x n T T v e dv n IT

j v n T

v

v

( ) ( ) :

2

2

2

0

0

(26)

Podstawiając według (12) i (13) oraz (3), doprowadzając między innymi do zmiany zmiennej po której

wyznaczana jest całka a zatem i do zmiany granic całkowania, otrzymujemy:

x n T T e df

Tn IT

f

T

jf

Tn T

f

T

f

T

( ) ( ) :

2

2

2

0

0

(27)

czyli (warto przypomnieć, że zawsze f 0 1 ):

x n X f e df n Ij f n[ ] ( ) :

2

1

2

1

2

(28)

Wzór (28) stanowi więc przepis na transformację odwrotną do D-TFT.

Jak łatwo zauważyć, dla sygnałów o których była dotychczas mowa (czyli spróbkowanych funkcją

grzebieniową) całka (2a) nie będzie zbieżna dla żadnej wartości t ponieważ funkcja T v( ) jest

okresowa. Podobny problem pojawia się także w przypadku transformacji w przód dla funkcji

okresowej - zarówno C-TFT jak i D-TFT. Konieczne jest zatem poszerzenie definicji (1) i (2) - oraz

automatycznie (2a) i (28).

***

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

20

Uzupełnienie dyskusji o przypadek dla sygnałów okresowych (czy to w dziedzinie

czasu, czy częstotliwości).

Poszerzenie definicji transformacji polega na przyjęciu, że jeżeli para funkcji x t( ) oraz ( )v jest

powiązana jednym z dwóch wzorów całkowych (albo na transformatę w przód albo odwrotną), to

zachodzi również transformacja w drugą stronę, nawet, gdy całka w odpowiadającym wzorze nie jest

zbieżna. Przykładowo, jeżeli odwrotna transformata C-TFT (wzór całkowy (2a)) z przesuniętej delty

Diraca jest zbieżna i daje zespoloną eksponentę, to także transformata C-TFT z zespolonej eksponenty

(będącej sygnałem okresowym) istnieje i jest równa tej delcie Diraca:

F v v e F e v vC T

j v t

C T

j v t

1 2 2 ( ) ( )

(29)

Rozpoczniemy od okresowego sygnału ciągłego w dziedzinie czasu (podstawowy okres sygnału wynosi

P). Sygnał okresowy można rozwinąć w szereg Fouriera, zatem:

x t c eP k

jk

Pt

k

( )

2

(30)

Z liniowości transformacji C-TFT (2) oraz (29) wynika, że transformata sygnału (30) jest ciągiem

poprzesuwanych delt Diraca, skalowanych amplitudowo współczynnikami rozwinięcia w szereg:

F x t X v c v k vC T P P k P

k

( ) ( ) ( ) (31)

gdzie

vP

P 1

(32)

Zatem transformata ta jest funkcją prążkową.

Określony powyżej sygnał o okresie P po spróbkowaniu z krokiem próbkowania T oznaczymy

następująco:

x t x t g tP T P T, ( ) ( ) ( ) (33)

Ze względu na rozdzielność dodawania względem mnożenia wzór (33) można rozpisać na sumę

próbkowanych z osobna wyrazów szeregu (30). Pojedynczy, przykładowo k-ty, wyraz szeregu (30) po

spróbkowaniu opisany jest następująco:

x t x t g t c e g tP T k P k T k

jk t

PT, , ,( ) ( ) ( ) ( )

2

(34)

Korzystając z tego, że mnożenie w dziedzinie czasu odpowiada splotowi w dziedzinie częstotliwości,

można opisać transformatę C-TFT sygnału (34) jako:

F x t c v k vT

g vC T P T k k P v

, , ( ) ( ) ( )

10 (35)

Ponieważ splot z przesuniętą deltą Diraca daje przesunięcie funkcji o tyle samo o ile przesunięta jest

delta (a funkcja grzebieniowa jest sumą poprzesuwanych delt Diraca), więc (35) opisuje deltę Diraca w

dziedzinie częstotliwości v , przesuniętą o k vP w prawo, o amplitudzie c

T

k i powielonej co v0

wzdłuż całej osi częstotliwości.

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

21

Porównując powyższe wzory można zatem zauważyć, że transformata C-TFT sygnału okresowego i

próbkowanego funkcją grzebieniową jest okresową funkcją prążkową. Prążkowa transformata sygnału

okresowego nie próbkowanego jest tym razem pomnożona przez współczynnik 1/T i powielona wzdłuż

osi częstotliwości co v0 . Jest to dokładna analogia do transformaty spróbkowanego sygnału

nieokresowego, tyle że tym razem transformata jest prążkowa (suma poprzesuwanych delt Diraca).

Warto zauważyć, że zazwyczaj powinno się zapewnić warunek: v vP 0 . Również i tego przypadku

dotyczy związek pomiędzy częstotliwością próbkowania i maksymalną częstotliwością sygnału (to, że

transformata jest prążkowa nie oznacza, iż sygnał nie może mieć częstotliwości maksymalnej).

Okazuje się, że w takim przypadku (gdy sygnał jest okresowy), to D-TFT wiąże się z C-TFT w

identyczny sposób jak w (13) (lub (17)). Suma (1) nie jest skończona i dlatego do wyznaczenia

transformaty należy posłużyć się poszerzoną definicją i wiedzą o tym, że według odwrotnej D-TFT (28)

z odpowiedniego ciągu delt Diraca w dziedzinie częstotliwości otrzyma się ciąg wartości

odpowiadający wartościom chwilowym ciągłego sygnału okresowego.

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

22

Dodatek teoretyczny nr 3

Relacja pomiędzy Transformacją Fouriera z Czasem Dyskretnym (ang.

D-TFT) i Dyskretną Transformacją Fouriera (ang. DFT)

Relacja pomiędzy DFT i C-TFT

Definicja D-TFT dla ciągu x n[ ] :

X f x n e fj f n

n

( ) [ ] :

2 (1)

Definicja DFT dla ciągu x n[ ] :

X k x n e k Nj

k n

N

n

N

[ ] [ ] : , ,...,

2

0

1

0 1 1

(2)

Z definicji od razu wynika, że transformata D-TFT jest funkcją ciągła ze względu na f , natomiast

transformata DFT jest ciągiem o tej samej ilości elementów, co ciąg pierwotny - dyskretny jest i czas i

częstotliwość, a ponieważ określony jest odstęp pomiędzy kolejnymi punktami w obu dziedzinach, więc

do określenia zmiennej niezależnej pozostawia się jedynie indeks (czasowy lub częstotliwościowy).

Ponadto transformata D-TFT określona jest dla nieskończonego ciągu x n[ ] , natomiast DFT dla ciągu

skończonego.

Jaka jest zatem relacja pomiędzy obiema powyższymi transformatami?

Wartości elementów ciągu z indeksami czasowymi mogą być traktowane jako chwilowe wartości

odpowiedniej funkcji czasu wybrane w chwilach czasu oddalonych o T sekund (patrz relacja pomiędzy

D-TFT i C-TFT):

x n x n T[ ] ( ) (3)

Taka interpretacja umożliwia powiązanie Transformacji Fouriera z Czasem Dyskretnym (ang. D-TFT) i

Transformacji Fouriera z Czasem Ciągłym (and. C-TFT). Wykażemy teraz, że jeżeli założymy

analogiczną do (3) zależność w dziedzinie częstotliwości, to transformata DFT stanowi ciąg N

wartości chwilowych ciągłej transformaty D-TFT wybranych z jednego okresu tej transformaty

(a jest ona, jak wiadomo, okresowa), oddalonych na osi częstotliwości f o 1

N. Przepiszmy zatem

(2) wstawiając okres próbkowania w dziedzinie częstotliwości fN

N 1

(dla przypomnienia: okres

transformaty D-TFT wynosi f 0 1 ):

X k x n e k Nj

k f n

N f

n

N N

N[ ] [ ] : , ,...,

2

0

1

0 1 1

(4)

W (4) można zauważyć, że:

N f fN 0 1 (5)

oraz, oznaczając przez f k k-ty punkt na osi częstotliwości, że:

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

23

k f fN k (6)

Podstawiając (5) i (6) do (4) oraz zakładając, że ciąg x n[ ] przyjmuje dla nie uwzględnionych

indeksów czasowych wartości zerowe, można wykazać, że wzór (4) określa D-TFT (wzór (1)) dla

wybranych wartości f :

X k x n e X kf

fX k f

jf n

f

n

N

kk

k

[ ] [ ] ( )

2

0

1

0

0

(7)

Prawa strona (7) oznacza wybrane wartości transformaty D-TFT. Pamiętając, że k przyjmuje jedynie

całkowite wartości od 0 do N-1, widzimy, że faktycznie DFT dotyczy tylko jednego okresu D-TFT.

Dotatkowo krok próbkowania w dziedzinie częstotliwości związany jest z długością interesującego nas

odcinka w dziedzinie czasu (dyskretnego) następująco:

fN

N 1

(8)

lub dzieląc obie strony przez krok próbkowania T w dziedzinie czasu (otrzymując w ten sposób wymiar

czasu w sekundach, a częstotliwości w Hz):

vf

T N T tN

N

1 1

(8a)

Analogiczny związek zachodzi pomiędzy krokiem próbkowania w dziedzinie czasu i okresem w

dziedzinie częstotliwości. Dla czasu dyskretnego krok próbkowania wynosi po prostu „1”:

11

0

f

(9)

Mnożąc obie strony (9) przez T otrzymujemy:

T TT

f v 1

1

0 0

(9a)

gdzie T jest krokiem próbkowania osi czasu wyrażonym w sekundach, a v0 okresem transformaty

C-TFT wyrażonym w Hz.

Można więc teraz także odnieść DFT do C-TFT.

Jeżeli założymy, że:

x n dla n n N[ ] lub ( ) 0 0 1 (10)

to można zastosować następującą interpretację:

x n x n T X k X k f N[ ] ( ) [ ] ( ) (11)

Oznacza to, że wartości ciągu x n[ ]są chwilowymi wartościami ciągłego sygnału x t( ) , dla chwil

czasu określonych przez zależność:

DSP-MATLAB, Ćwiczenie 4, P.Korohoda, KE AGH

24

t n Tn (12)

Natomiast wartości ciągu X k[ ] (czyli w dziedzinie indeksów częstotliwościowych) stanowią wartości

chwilowe ciągłej funkcji X f( ) (wyniku D-TFT), a więc zarazem funkcji T v( ) (tj. wyniku C-TFT

dla spróbkowanej funkcją grzebieniową - z krokiem próbkowania T - funkcji x t( ) ):

X k X k fk f

TvN T

N

T k[ ] ( ) ( )

(13)

Zatem X k[ ] jest jednocześnie wartością T v( ) (czyli wyniku C-TFT) dla:

v vk f

Tk vk

N

N

(14)

gdzie vt

N 1

i oznacza odwrotność przedziału czasu, z którego pochodzą próbki czasowe, czyli

przedziału, w którym badamy funkcję czasu zakładając, że poza nim jest ona zerowa (a ściślej, że

próbki są zerowe poza tym przedziałem czasu).