Ćwiczenie 2.
Discrete Fourier Transform (DFT).
Dyskretna Transformata Fouriera. Metody obliczania i podstawowe właściwości.
ZADANIA
Zadanie 1
Oblicz DFT ciągu {xn}=……………………………………………….
Stosując wzór definicyjny (napisz m-skrypt lub m-funkcję, pamiętaj o unikatowej nazwie, np. moja_dft1….)
Narysuj widmo amplitudowo-fazowe transformaty {Xn}.
Porównaj otrzymane wyniki z tymi uzyskanymi z pomocą wbudowanej funkcji fft.
Zadamie 2
Sformułuj i zweryfikuj numerycznie (zilustruj odpowiednimi m-procedurami) następujące właściwości transformaty DFT:
Okresowość
Liniowość
Symmetris
Uwaga: Symmetria: Jeżeli Xk jest transoramatą DFT ciągu x[n], wówczas
Pytanie dodatkowe : Jaka jest symetria
oraz
jeżeli N jest liczbą parzystą.?
Zadanie 3
Porównaj czas wykonywania procedury fft z napisaną własnoręcznie (Zadanie 1). Zastosuj parę komend ti, toc ( toc mierzy czas od momentu wykonania tic). Stwórz m-plik do pomiarów testowych, skomentuj otrzymane wyniki.
Uwagi:
porównaj DFT oraz FFT dla N=110 , N=2048, N=4096
utwórz wektor n=0:N-1; x=(-1)^n
przykładowy kod procedury testowej:
N=500;
n=0:N-1;
x=(-1).^n;
disp('my DFT');
tic
X=mydft(x);
toc
disp('FFT');
tic
X=fft(x);
toc
Zadanie 4
Zaimplementuj nowy test porównawczy dla procedury fft: porównaj szybkość fft dla: N=2^20, N=950000, N=750000, N=550000. Skomentuj wyniki!
UWAGA: zastosuj dyskretny wektor o wartościach x=(-1)^n.
Zadanie 5
Napisz m-skrypt (lub m-funkcję) obliczjącą odwrotną dyskretną transformatę Fouriera (ze wzoru definicyjnego! - porównaj jej działanie z wbudowaną funkcją ifft.
Zadanie 6
Oblicz dyskretny splot sygnałów okresowych (N=4):
x1(n)=…………………………
x2(n)=…………………………
Zastosuj:
Procedurę z poprzedniego ćwiczenia.
Procedurę wbudowaną conv
Twierdzenie o DFT splotu ciągów okresowych .
Zadanie 7
Powtórz poprzednie zadanie dla ciągów nieokresowych x1(n) i x2(n),
W jakich warunkach można i czy w ogóle stosować tu Twierdzenie o DFT splotu kołowego (sygnałów okresowych)?
Materiały pomocnicze:
Procedury służące do obliczania Dyskretnej Transformaty Fouriera i Odwrotnej Dyskretnej Transformaty Fouriera (Matlab 5.3):
Syntax (Składnia)
Y = fft(X)
Oblicza i umieszcza w wektorze Y Dyskretną Transformatę Fouriera obliczoną algorytmem FFT.
Y = fft(X,n)
Oblicza i umieszcza w wektorze Y n-punktową FFT (jeśli długość X jest mniejsza niż n, wektor X jest uzupełniany zerami, jeśli długość X jest większa to wektor jest skracany)
Y = fft(X,[],dim)
Y = fft(X,n,dim)
Wykonuje FFT „wzdłuż” wymiaru dim macierzy X.
.
.
Funkcje X = fft(x) oraz x = ifft(X)stanowią parę dysktretych transformat Fouriera (prosta i odwrotna) dla wektorów o długości N:
Procedury potrzebne do operacji na liczbach zespolonych:
complex c = complex(a,b) tworzy zespoloną liczbę (w zasadzie wektor) z dwóch liczb (wektorów) rzeczywistych i jest niezwykle użytecznym odpowiednikiem innego zapisu liczby zespolonej:
imag zwraca część urojoną liczby zespolonej
real zwraca część rzeczywistą liczby zespolonej
abs umożliwia wyznaczenie modułu liczby zespolonej
angle zwraca argument liczby zespolonej
conj wyznacza wartość sprzężoną liczby zespolonej.
Definicja splotu dyskretnego:
Definicja splotu funkcji dyskretnych okresowych (o okresie N):
W przypadku splotu funkcji okresowych można wykorzystać Twierdzenie o transformacie splotu dyskretnego: Jeżeli X1(n) i X2(n) są transformatami DFT okresowych ciągów x1(n) oraz x2(n), wówczas:
gdzie IDFT oznacza odwrotną transformatę dyskretną Fouriera.
1