Instrukcja do laboratorium z cyfrowego przetwarzania
Transkrypt
Instrukcja do laboratorium z cyfrowego przetwarzania
DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH Instrukcja do laboratorium z cyfrowego przetwarzania sygnałów Ćwiczenie 5 Wybrane właściwości Dyskretnej Transformacji Fouriera Przemysław Korohoda, KE, AGH Zawartość instrukcji: 1 Materiał z zakresu DSP 1.1 Macierzowy zapis DFT 1.2 Symetrie transformaty DFT 1.2.1 Ciąg o długości parzystej 1.2.2 Ciąg o długości nieparzystej 1.3 Szybka Transformacja Fouriera 1.4 DFT jako rozkład na ciągi bazowe 1.5 Transformata DFT ciągu pochodzącego z próbkowania sygnału zespolonego typu i kosinusoidy 1.6 Pojęcie niższej i wyższej częstotliwości 1.7 Efekt Gibbsa e j2 vt 2 Korzystanie z pakietu MATLAB 2.1 Uwagi ogólne 2.2 Przykłady rozwiązań wybranych problemów 2.2.1 Badanie efektu skończonej precyzji obliczeń dla FFT pojedynczej długości ciągu wyznaczanie błędu średniokwadratowego (rmse) powstałego po przeprowadzeniu transformacji w przód i wstecz: 2.2.2 Test na ilość operacji zmiennoprzecinkowych w FFT w zależności od długości ciągu: 2.2.3 Macierzowa interpretacja DFT. 2.2.4 Rozkład ciągu na ciągi bazowe 2.2.5 Sprawdzanie ortonormalności układu ciągów (wektorów) bazowych 2.2.6 Transformaty ciągów pochodzących z próbkowania wybranych sygnałów ciągłych 2.2.7 Błąd w dziedzinie pierwotnej wynikający ze zmiany wartości współczynników transformaty 3 Zadania do wykonania 1 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH Na instrukcję składają się następujące części: 1 Materiał z zakresu DSP 2 Korzystanie z pakietu MATLAB 3 Zadania do wykonania 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. 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] 2 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH 1 Materiał z zakresu DSP 1.1 Macierzowy zapis DFT Wzór (33) z poprzedniej instrukcji definiujący transformatę DFT (a także transformatę odwrotną) przedstawia kombinację liniową elementów ciągu x[n] . Wynika z tego, że można go zapisać w postaci macierzowej i transformację DFT zinterpetować jako przekształcenie macierzowe. Faktycznie, jeśli ciągi x[n] oraz X [ k ] przedstawimy w postaci wektorów kolumnowych, to równanie (33) przybierze postać: X [0] x[0] X [1] x[1] A X [ N 1] x[ N 1] (1) gdzie każdy element macierzy A jest określony następująco: j 2 k n a k ,n exp N Analogicznie można zapisać transformację odwrotną, wyrażoną poprzez macierz każdy element jest określony równaniem: bk ,n (2) B A 1 , której 1 j 2 k n exp N N (3) 1.2 Symetrie transformaty DFT W większości przypadków ciąg pierwotny zawiera wyłącznie elementy o zerowej części urojonej. W takiej sytuacji transformata DFT wykazuje pewne charakterystyczne symetrie. W pewnym uproszczeniu można stwierdzić, że jeżeli dla ciągu transformaty X [ k ] ciągu rzeczywistego x[n] zostanie określony (w przybliżeniu) punkt środkowy, to wartości amplitud transformaty w punktach położonych symetrycznie po obu stronach tego środka będą takie same, natomiast wartości faz będą takie same co do modułu, jednak przeciwnego znaku. Można to stwierdzenie sformułować również tak: wartości amplitud będą względem tego środkowego punktu parzyste, a wartości faz nieparzyste. W pewnych przypadkach konieczne jest jednak dokładniejsze określenie zarówno punktu środkowego, jak i powstałych symetrii. Szczegółowe wyjaśnienie zawierają poniższe podrozdziały. 1.2.1 Ciąg o długości parzystej W przypadku, gdy długość ciągu x[n] jest parzysta, to jako punkt środkowy należy przyjąć element N i ani ten element, ani element X[0] nie posiadają swoich “bliźniaczych” 2 odpowiedników. Przedstawiono to na rys.1. Ponadto ani X[0] , ani X [ N / 2] nie może mieć części transformaty o numerze urojonej. Warto się zastanowić, jak taką właściwość zaobserwować na wykresach amplitudy i fazy. 3 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH Rys.1. Ilustracja symetrii transformaty parzystego ciągu rzeczywistego - z lewej amplituda, z prawej faza 1.2.2 Ciąg o długości nieparzystej W przypadku, gdy długość ciągu x[n] jest nieparzysta, to punkt środkowy leży pomiędzy elementami N 1 N 1 i . W takiej sytuacji jedynie element X[0] nie posiada swojego 2 2 “bliźniaczego” odpowiednika. Przedstawiono to na rys.2. Ponadto element X[0] nie może mieć o numerach w takiej sytuacji niezerowej części urojonej. Rys.2. Ilustracja symetrii transformaty nieparzystego ciągu rzeczywistego - z lewej amplituda, z prawej faza Warto zauważyć, że symetria amplitudy jest identyczna z symetrią części rzeczywistej, natomiast symetria fazy jest taka sama, jak symetria części urojonej. W ramach ćwiczenia domowego proszę udowodnić za pomocą odpowiednich przekształceń równania (33) powstawanie opisanych symetrii. 1.3 Szybka Transformacja Fouriera Można zauważyć, że bezpośrednie stosowanie wzoru (33), (35) lub (39) z poprzedniej instrukcji powoduje wielokrotne przeprowadzanie podobnych operacji na podobnych liczbach. Ponieważ DFT jest dość powszechnie stosowaną transformacją, więc opracowano wiele algorytmów wyliczających transformatę za pomocą znacznie mniejszej liczby operacji arytmetycznych niż wynika to ze wspomnianych wzorów. W literaturze uzupełniającej można znaleźć szereg przykładów oraz oszacowanie zmniejszenia liczby operacji w wyniku zastosowania algorytmów tak zwanej Szybkiej Transformacji Fouriera, w skrócie FFT (ang. Fast Fourier Transform). Ponieważ powszechnie dostępne są gotowe procedury algorytmów FFT, zagadnienie szczegółowych rozwiązań tych algorytmów nie zostało zawarte w zakresie niniejszego laboratorium. Zainteresowani studenci z łatwością znajdą odpowiednią literaturę uzupełniającą. Ze względu jednak na prawidłowe posługiwanie się gotowymi procedurami, w ramach ćwiczeń zostanie zbadana efektywność obliczeniowa algorytmu FFT w zależności od długości ciągu pierwotnego. Należy podkreślić, że FFT to nie kolejna wersja Transformacji Fouriera, lecz algorytm do szybszego wyliczania DFT. Zatem, jeśli interesuje nas wynik transformacji, a nie sposób jego wyznaczania, i mówimy skrótowo “transformata FFT”, to zawsze oznacza to transformatę DFT. 4 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH 1.4 DFT jako rozkład na ciągi bazowe Ciąg o długości długości: N można przedstawić jako liniową kombinację ciągów bazowych o tej samej x[n] K a k 0 k bk [n] : n 0,1,..., N 1 (4) Transformata DFT zawiera współczynniki (zespolone) takiego rozwinięcia dla ciągów bazowych o postaci: bk [n] e Gdy ciąg j2 nk N : k 0,1,..., N 1 (5) x[n] jest rzeczywisty, to można również przyjąć ciągi bazowe w postaci: 2 k n bk [n] cos N k : k 0,1,..., K (6) N N 1 , dla N nieparzystego: K . Ponadto dla dowolnego 2 2 N : 0 0 lub 0 , natomiast dla N parzystego dodatkowo także: N /2 0 lub N /2 . Przy czym dla N parzystego: K Po to by stwierdzić, że dla ciągów bazowych (5) prawdziwy jest wzór (4) wystarczy podstawić ciągi bazowe (5) do (4) i porównać otrzymaną zależność ze wzorem na odwrotną transformację DFT: j 2 k n 1 N 1 x[n] X [ k ] e N N k 0 (7) Z powyższego porównania otrzymuje się natychmiast zależność pomiędzy współczynnikami rozwinięcia (4) - czyli a k - i współczynnikami transformaty X [ k ] : ak X [k ] N (8) Zależność ta jest, jak widać, bardzo prosta. Niestety ciągi (5) są zespolone. Dla rzeczywistych ciągów bazowych (6) pomiędzy współczynnikami rozwinięcia i współczynnikami transformaty zachodzi nieco inny związek uwzględniający obecność fazy k w opisie k-tego ciągu bazowego: ak Przez X [ k ] 2 X [k ] N oznaczono fazę elementu k X [ k ] (9) X [ k ] transformaty. Właśnie obecność w każdym ciągu bazowym (6) fazy, zależnej od ciągu ciągów bazowych jest w takim przypadku równa około połowie x[n] , powoduje, że ilość N. Warto zauważyć, że ciągi bazowe (5) tworzą układ ortogonalny i wszystkie te ciągi mają takie same normy (w metryce euklidesowej). Co można na ten temat powiedzieć w przypadku ciągów bazowych (6)? Uwaga - zależności (7), (8) i (9) oraz wypływające z nich wnioski dotyczą wersji DFT zaimplementowanej w MATLAB’ie. 5 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH 1.5 Transformata DFT ciągu pochodzącego z próbkowania sygnału zespolonego typu i kosinusoidy e j2 vt Z powyższych rozważań na temat rozkładu na ciągi bazowe można wywnioskować co następuje. Jeżeli ciąg pierwotny o długości N jest typu: x[n] e j 2 k n N (10) dla k 0,1,..., N 1 , to jego transformata DFT zawiera same zera poza jednym elementem o indeksie k oraz X [ k ] N . Ponieważ ciąg (10) nie jest rzeczywisty, więc jego transformata nie posiada symetrii typowych dla transformaty ciągu rzeczywistego. Jeżeli ciąg pierwotny jest typu: 2 k n x[n] cos N (11) k 0,1,..., N 1 , to jego transformata zawiera jedynie jeden lub dwa elementy niezerowe. Gdy N N jest parzyste, wówczas jedyny element niezerowy pojawi się dla k 0 lub k . Dla N 2 nieparzystego jedyny element niezerowy pojawi się tylko dla k 0 . W pozostałych przypadkach pojawią się dokładnie dwa elementy niezerowe, o indeksach k oraz N k , które muszą dodatkowo dla spełniać odpowiednie symetrie, ponieważ ciąg (11) jest rzeczywisty, czyli: X [k ] X[ N k] N 2 X [ k ] X [ N k ] (12) Gdy ciąg pierwotny jest typu: x[n] cos2 f n i częstotliwość cyfrowa (13) f nie spełnia zależności (14): f k N (14) to transformata takiego ciągu zawiera więcej niż dwie wartości niezerowe. Ponadto można zauważyć, że w takim przypadku N kolejnych odcinków rozdzielających na osi ciągłego czasu punkty próbkowania nie odpowiada całkowitej ilości okresów kosinusoidy. Warto pamiętać, że transformacja DFT jest operacją liniową, zatem dowolny stały współczynnik zmieniający amplitudę wszystkich wyrazów ciągu (10), (11) lub (13) pojawi się również jako współczynnik skalujący amplitudy wszystkich elementów transformaty. 1.6 Pojęcie niższej i wyższej częstotliwości Opierając się na poprzednich dwóch podrozdziałach można wyjaśnić, dlaczego uważa się, że w dziedzinie transformaty DFT najwyższa częstotliwość znajduje się w okolicy elementu środkowego. Dokładniej, dla N parzystego maksymalna częstotliwość jest reprezentowana przez element 6 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH N , natomiast dla N nieparzystego maksymalną częstotliwość reprezentuje 2 N 1 N 1 para elementów o indeksach oraz . Dla dowolnej długości ciągu składowa stała jest 2 2 reprezentowana przez element o indeksie 0 , natomiast najniższa niezerowa częstotliwość odpowiada parze elementów transformaty o indeksach 1 oraz N 1 i częstotliwość ta rośnie w miarę zbliżania transformaty o indeksie się do elementów odpowiadających częstotliwości maksymalnej. Należy jednak pamiętać, że powyższe wnioski odnośnie wysokości częstotliwości dotyczą wyłącznie dyskretnych wartości częstotliwości cyfrowej określonych dla k 0,1,..., N 1 przez wzór (14). Wartości te można z kolei, dysponując częstotliwością próbkowania, przeliczyć na dyskretne wartości częstotliwości w Hz. Każdej innej częstotliwości cyfrowej z przedziału 0, 1) nie spełniającej warunku (14) będzie odpowiadać większa ilość prążków rozłożona po całym przedziale, więc ciąg taki zawiera z punktu widzenia takiej interpretacji różne częstotliwości - zarówno te wyższe, jak i niższe. Przykładowo, dla N 64 ciąg: x[n] cos2 0,125 n (15) odpowiada w dziedzinie transformaty DFT dwóm prążkom o indeksach 8 i 56. Identycznie opisany ciąg, jednak dla N 66 , będzie odpowiadał wielu prążkom, choć dominować będą elementy 8 i 58. Zatem w tym drugim przypadku nie da się powiedzieć, że z punktu widzenia DFT jest to ciąg o określonej częstotliwości, bowiem zawiera tych częstotliwości wiele. Jest to dość istotna różnica w stosunku do D-TFT, gdzie niemal zawsze (z wyjątkiem sytuacji prowadzącej do ciągu nieokresowego) próbkowana kosinusoida o f 0 odpowiada dwóm prążkom lokalizującym jednoznacznie częstotliwość, przy czym częstotliwość ta w przypadku D-TFT rośnie wraz z oddalaniem się od punktu f 0 . Opisana różnica wynika z faktu, iż DFT operuje na skończonym ciągu próbek. Jak, opierając się na obserwacjach poczynionych dla DFT oraz relacjach pomiędzy DFT i D-TFT zbadanych w ramach poprzedniego ćwiczenia, wykazać słuszność powyższego porównania? Ciąg transformaty DFT jest dla rzeczywistego ciągu pierwotnego symetryczny oraz częstotliwości rosną w kierunku środkowego elementu tej transformaty, by następnie maleć w miarę zbliżania się do elementu ostatniego, zatem często rozważa się jedynie połowę (w przybliżeniu) ciągu transformaty zawierającą kompletną informację o wszystkich częstotliwościach typu (14). 1.7 Efekt Gibbsa Jeżeli w dziedzinie transformaty wprowadzi się pewien błąd zmieniając nieco wartość jednego tylko współczynnika tej transformaty - na przykład o indeksie k - to po powrocie do dziedziny pierwotnej odtworzony ciąg x[n] nie będzie już identyczny z ciągiem początkowym x[n] . Z liniowości transformacji DFT oraz rozważań na temat rozkładu na ciągi bazowe można wywnioskować, że zmiana elementu X [ k ] transformaty o X [ k ] spowoduje wprowadzenie do ciągu pierwotnego błędu w postaci ciągu bazowego o amplitudzie X [ k ] (w implementacji MATLAB’a): N X [ k ] X [ k ] X [ k ] X [ k ] x[n] x[n] e N j2 k n N (16) Gdyby transformatę ciągu rzeczywistego zmodyfikować tak, że zachowane będą odpowiednie symetrie, na przykład tak: X [ k ] X [ k ] X [ k ] X [ N k ] X [ N k ] conjX [ k ] (17) 7 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH to do ciągu pierwotnego zostanie wprowadzony błąd, będący odwrotną transformatą ciągu składającego się z samych zer i tylko dwóch elementów niezerowych: X err [ N k ] conj X [ k ] , czyli: xerr [n] x[n] x[n] 2 X [ k ] 2 k n cos N N X err X err [ k ] X [ k ] oraz X [ k ] (18) Biorąc pod uwagę liniwość transformacji DFT można zatem stwierdzić, że wprowadzenie błędu typu (16) dla pewnej ilości wartości k spowoduje, że w dziedzinie pierwotnej wprowadzony błąd będzie kombinacją liniową ciągów typu (18). W przypadku wykreślenia takiego ciągu błędu otrzymuje się zazwyczaj obraz oscylacji. Opisany efekt pojawienia się zmian w ciągu pierwotnym w wyniku wprowadzenia błędu w dziedzinie transformaty nazywa się efektem Gibbsa. Często rozważa się szczególny przypadek tego błędu, gdy w dziedzinie transformaty pomija się zupełnie pewną grupę współczynników, przyjmując w ich miejsce wartości zerowe. Efekt Gibbsa może dotyczyć także sytuacji odwrotnej - gdy błąd wprowadza się do wybranych elementów ciągu pierwotnego, co daje w rezultacie błąd o wyglądzie oscylacji w dziedzinie transformaty. Wyjaśnienie takiego wariantu jest bardzo podobne, co wynika z podobieństwa wzorów na transformatę DFT w przód i odwrotną. 8 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH 2 Korzystanie z pakietu MATLAB 2.1 Uwagi ogólne Warto pamiętać, że numeracja elementów wektorów w MATLAB’ie rozpoczyna się od “1”, zatem indeksy czasowe i częstotliwościowe z rozważań z zakresu DSP - rozdział 1 instrukcji - są w stosunku do tej numeracji przesunięte o “1” (pierwszy element ciągu pierwotnego lub transformaty ma tam zwykle indeks “0”). Z punktu widzenia czytelnego przedstawienia zagadnienia dość istotne jest jaka forma wizualizacji zostanie wybrana dla danego zestawu danych. Niekiedy lepsze jest wypisanie na ekranie wartości wszystkich lub tylko wybranych - w postaci liczbowej, a innym razem korzystniejszy jest wykres typu plot, stem lub mesh. 2.2 Przykłady rozwiązań wybranych problemów Poniżej przedstawiono przykłady częściowych rozwiązań problemów podobnych do tych, które będą tematem ćwiczeń. Przykłady nie zawierają etapu badania otrzymanych wyników - ten fragment należy uzupełnić samodzielnie. 2.2.1 Badanie efektu skończonej precyzji obliczeń dla FFT pojedynczej długości ciągu wyznaczanie błędu średniokwadratowego (rmse) powstałego po przeprowadzeniu transformacji w przód i wstecz: >> N=128; >> x=rand(1,N); X=fft(x); xi=ifft(X); >> rmse=sqrt(sum(abs(x-xi).^2)/N); sqrt jest funkcją Matlab’a wyznaczającą pierwiastek kwadratowy 2.2.2 Test na ilość operacji zmiennoprzecinkowych w FFT w zależności od długości ciągu: >> for N=2:2^8, x=rand(1,N); flops(0); X=fft(x); oper(N-1)=flops; end; 2.2.3 Macierzowa interpretacja DFT. >> N=32; >> MDFT=fft(eye(N)); >> x=rand(N,1); >> X=MDFT*x; uwaga - wektor “x” jest tym razem kolumnowy Jakie przykłady należałoby zbadać, by się upewnić, czy metoda wyznaczania macierzy MDFT jest poprawna? 2.2.4 Rozkład ciągu na ciągi bazowe W tym przykładzie najpierw zostanie wygenerowany zestaw ortogonalnych ciągów bazowych ułożonych w postaci kolumn macierzy “B”: >> N=8; >> x=rand(N,1); kolumnowy wektor reprezentujący ciąg przeznaczony do rozwinięcia >> B0=zeros(N,N); >> for k=1:N, B0(1:k,k)=rand(k,1)+0.5; end; kolumny powinny być liniowo niezależne >> rank(B0) sprawdzenie, czy faktycznie tak jest >> B(:,1)=B0(:,1)/sqrt(sum(abs(B0(:,1)).^2)); normalizacja pierwszej kolumny poniżej procedura ortonormalizacyjna: >> for k=2:N, b=B0(:,k); for m=1:k-1; b=b-(b’*B(:,m))*B(:,m);end; B(:,k)=b./sqrt(sum(abs(b).^2)) ;end ciąg “x” jest teraz rozwijany w szereg, gdzie kolumny macierzy “B” to ciągi bazowe: >> X=B*x; >> x2=zeros(N,1); for k=1:N, x2=x2+X(k)*B(:,k);end >> err=x2-x; 9 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH Jak uzasadnić sposób, w jaki macierz “B” została wykorzystana do wyznaczania współczynników poszukiwanego rozwinięcia? 2.2.5 Sprawdzanie ortonormalności układu ciągów (wektorów) bazowych Niekiedy może się okazać przydatne stwierdzenie, czy dany układ wektorów jest ortogonalny oraz, czy jest znormalizowany. Zbadamy zatem ortogonalność kolumn macierzy “B0” oraz “B” z poprzedniego przykładu: >> for k=1:N, for m=1:N, ILSKAL(k,m)=conj(B0(:,k)’)*conj(B0(:,m)); end; end; >> mesh(ILSKAL); >> for k=1:N, for m=1:N, ILSKAL(k,m)=conj(B(:,k)’)*conj(B(:,m)); end; end; >> mesh(ILSKAL); Jak powinna wyglądać macierz “ILSKAL” dla układu ortogonalnego, a jak dla nieortogonalnego? Sprawdzenie normy ciągów bazowych: >> for k=1:N, NORMA(k)=sqrt(conj(B(:,k)’)*conj(B(:,k))); end Można również sprawdzić, że dla układu ortonormalnego macierz odwrotną do macierzy “B” można otrzymać przez transpozycję macierzy “B”. O czym powinna przypominać zastosowana przy wyznaczaniu iloczynu skalarnego i normy funkcja conj (wartość sprzężona)? Czy można by w tym przykładzie z tej funkcji zrezygnować? 2.2.6 Transformaty ciągów pochodzących z próbkowania wybranych sygnałów ciągłych >> N=64; >> k=7; >> n=0:63; i następnie: >> x=exp(j*2*pi*k*n/N+pi/7); albo: >> x=cos(2*pi*k*n/N+pi/7); po czym: >> X=fft(x); i pozostaje już tylko sprawdzić odpowiednie hipotezy. 2.2.7 Błąd w dziedzinie pierwotnej wynikający ze zmiany wartości współczynników transformaty >> N=64; >> x=rand(1,N); >> X=fft(x); >> k=4; >> DX=3*exp(j*pi/5); wyraźnie widać jaką amplitudę i fazę ma błąd >> X(k)=X(k)+DX; >> X(N-k)=X(N-k)+conj(DX); >> xinv=ifft(X); >> xerr=xinv-x; i teraz można postudiować właściwości ciągu “xerr”. 10 DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH 3 Zadania do wykonania 1. Pokazać na przykładzie, na czym polega macierzowa interpretacja DFT. 2. Sprawdzić poprawność algorytmu FFT zaimplementowanego w funkcji fft Matlab’a. 3. Zbadać efektywność algorytmu FFT w zależności od długości ciągu. 4. Potwierdzić istnienie odpowiednich symetrii w transformacie DFT rzeczywistego ciągu pierwotnego. Pokazać, że symetrie te powstają także w ciągu pierwotnym, gdy transformata jest rzeczywista (bez części urojonej) i wyjaśnić ten efekt. 5. Zademonstrować, co oznacza stwierdzenie, że transformata DFT zawiera współczynniki rozwinięcia sygnału w szereg sygnałów bazowych. 6. Wykazać, na czym polega podział na wyższe i niższe częstotliwości w kontekście transformaty DFT. 7. Wyznaczyć transformaty DFT wybranych ciągów cyfrowych i wyjaśnić zaobserwowane cechy tych transformat. 8. Pokazać za pomocą przykładów, na czym polega efekt Gibbsa. 11