Instrukcja do laboratorium z cyfrowego przetwarzania sygnałów. Wybrane właściwości Dyskretnej Transformacji Fouriera

Podobne dokumenty
DSP-MATLAB, Ćwiczenie 5, P.Korohoda, KE AGH. Ćwiczenie 5. Przemysław Korohoda, KE, AGH

Ćwiczenie 3. Właściwości przekształcenia Fouriera

Przekształcenia widmowe Transformata Fouriera. Adam Wojciechowski

9. Dyskretna transformata Fouriera algorytm FFT

DYSKRETNA TRANSFORMACJA FOURIERA

Analiza obrazu. wykład 5. Marek Jan Kasprowicz Uniwersytet Rolniczy 2008

FFT i dyskretny splot. Aplikacje w DSP

uzyskany w wyniku próbkowania okresowego przebiegu czasowego x(t) ze stałym czasem próbkowania t takim, że T = t N 1 t

7. Szybka transformata Fouriera fft

Andrzej Leśnicki Laboratorium CPS Ćwiczenie 6 1/8 ĆWICZENIE 6. Dyskretne przekształcenie Fouriera DFT

8. Analiza widmowa metodą szybkiej transformaty Fouriera (FFT)

CYFROWE PRZTWARZANIE SYGNAŁÓW (Zastosowanie transformacji Fouriera)

1 Wartości własne oraz wektory własne macierzy

Instrukcja do laboratorium z cyfrowego przetwarzania sygnałów. Ćwiczenie 3. Transformata Z; blokowe struktury opisujące filtr

2. Próbkowanie Sygnały okresowe (16). Trygonometryczny szereg Fouriera (17). Częstotliwość Nyquista (20).

Transformata Fouriera

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

Zestaw 2. Definicje i oznaczenia. inne grupy V 4 grupa czwórkowa Kleina D n grupa dihedralna S n grupa symetryczna A n grupa alternująca.

Transformata Fouriera. Sylwia Kołoda Magdalena Pacek Krzysztof Kolago

Szybka transformacja Fouriera (FFT Fast Fourier Transform)

INTERPOLACJA I APROKSYMACJA FUNKCJI

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

DYSKRETNE PRZEKSZTAŁCENIE FOURIERA C.D.

Zajęcia nr. 3 notatki

1 Układy równań liniowych

Liczby zespolone. x + 2 = 0.

Algebra liniowa z geometrią

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

Andrzej Leśnicki Laboratorium CPS Ćwiczenie 7 1/7 ĆWICZENIE 7. Splot liniowy i kołowy sygnałów

Układy równań i nierówności liniowych

z = x + i y := e i ϕ z. cos ϕ sin ϕ = sin ϕ cos ϕ

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania. Podstawy Automatyki

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Zad. 3: Układ równań liniowych

= i Ponieważ pierwiastkami stopnia 3 z 1 są (jak łatwo wyliczyć) liczby 1, 1+i 3

Elementy metod numerycznych

3. Macierze i Układy Równań Liniowych

Podstawy Przetwarzania Sygnałów

Układy równań liniowych

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Wielomiany podstawowe wiadomości

Przetwarzanie obrazów wykład 6. Adam Wojciechowski

Matematyka A kolokwium 26 kwietnia 2017 r., godz. 18:05 20:00. i = = i. +i sin ) = 1024(cos 5π+i sin 5π) =

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Transformaty. Kodowanie transformujace

macierze jednostkowe (identyczności) macierze diagonalne, które na przekątnej mają same

Teoria sygnałów Signal Theory. Elektrotechnika I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Dyskretne przekształcenie Fouriera cz. 2

Przetwarzanie i transmisja danych multimedialnych. Wykład 8 Transformaty i kodowanie cz. 2. Przemysław Sękalski.

2 1 3 c c1. e 1, e 2,..., e n A= e 1 e 2...e n [ ] M. Przybycień Matematyczne Metody Fizyki I

Przestrzeń unitarna. Jacek Kłopotowski. 23 października Katedra Matematyki i Ekonomii Matematycznej SGH

A A A A A A A A A n n

Metody numeryczne Wykład 4

3 1 + i 1 i i 1 2i 2. Wyznaczyć macierze spełniające własność komutacji: [A, X] = B

Estymacja wektora stanu w prostym układzie elektroenergetycznym

dr inż. Artur Zieliński Katedra Elektrochemii, Korozji i Inżynierii Materiałowej Wydział Chemiczny PG pokój 311

Informacja o przestrzeniach Hilberta

2. Układy równań liniowych

ĆWICZENIE III ANALIZA WIDMOWA SYGNAŁÓW DYSKRETNYCH. ver.3

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Robert Susmaga. Instytut Informatyki ul. Piotrowo 2 Poznań

PODSTAWY RACHUNKU WEKTOROWEGO

Logarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne.

Przetwarzanie sygnału cyfrowego (LabVIEW)

Wykład z Technologii Informacyjnych. Piotr Mika

CYFROWE PRZETWARZANIE SYGNAŁÓW

1. PODSTAWY TEORETYCZNE

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Zakłócenia w układach elektroenergetycznych LABORATORIUM 3

Luty 2001 Algorytmy (7) 2000/2001

Zasada indukcji matematycznej

Funkcje - monotoniczność, różnowartościowość, funkcje parzyste, nieparzyste, okresowe. Funkcja liniowa.

5. Rozwiązywanie układów równań liniowych

φ(x 1,..., x n ) = a i x 2 i +

Badanie widma fali akustycznej

Przetwarzanie sygnałów

6. FUNKCJE. f: X Y, y = f(x).

dr inż. Artur Zieliński Katedra Elektrochemii, Korozji i Inżynierii Materiałowej Wydział Chemiczny PG pokój 311

Przykładowe zadania z teorii liczb

KARTA PRZEDMIOTU. Techniki przetwarzania sygnałów, D1_3

Przekształcenie Fouriera obrazów FFT

Cyfrowe Przetwarzanie Obrazów i Sygnałów

Zadania egzaminacyjne

Katedra Elektrotechniki Teoretycznej i Informatyki

przy warunkach początkowych: 0 = 0, 0 = 0

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

DRGANIA SWOBODNE UKŁADU O DWÓCH STOPNIACH SWOBODY. Rys Model układu

Algebra liniowa II. Lista 1. 1 u w 0 1 v 0 0 1

13. Równania różniczkowe - portrety fazowe

jest rozwiązaniem równania jednorodnego oraz dla pewnego to jest toŝsamościowo równe zeru.

Indukcja matematyczna

Przetwarzanie sygnałów

Własności wyznacznika

Metody numeryczne Wykład 6

Kurs ZDAJ MATURĘ Z MATEMATYKI MODUŁ 6 Teoria funkcje cz. 2

Zajęcia nr 1 (1h) Dwumian Newtona. Indukcja. Zajęcia nr 2 i 3 (4h) Trygonometria

Cyfrowe Przetwarzanie Obrazów i Sygnałów

Nieskończona jednowymiarowa studnia potencjału

Transkrypt:

Instrukcja do laboratorium z cyfrowego przetwarzania sygnałów 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. Symetrie transformaty DFT 1..1 Ciąg o długości parzystej 1.. Ciąg o długości nieparzystej 1.3 Szybka Transformacja Fouriera 1.4 DFT jako rozkład na ciągi bazowe e j π v t 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 Korzystanie z pakietu MATLAB.1 Uwagi ogólne. Przykłady rozwiązań wybranych problemów..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:.. Test na ilość operacji zmiennoprzecinkowych w FFT w zależności od długości ciągu:..3 Macierzowa interpretacja DFT...4 Rozkład ciągu na ciągi bazowe..5 Sprawdzanie ortonormalności układu ciągów (wektorów) bazowych..6 Transformaty ciągów pochodzących z próbkowania wybranych sygnałów ciągłych..7 Błąd w dziedzinie pierwotnej wynikający ze zmiany wartości współczynników transformaty 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 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 oraz materiału z poprzednich ćwiczeń mogą zostać przez prowadzącego skontrolowane w trakcie zajęć. 1

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 Xk [ ] przedstawimy w postaci wektorów kolumnowych, to równanie (33) przybierze postać: X[ 0] x[ 0] X[] 1 x[] 1 = A M M X[ 1] x [ 1] (1) gdzie każdy element macierzy A jest określony następująco: j π akn, = exp () Analogicznie można zapisać transformację odwrotną, wyrażoną poprzez macierz B = A 1, której każdy element jest określony równaniem: 1 j π bkn, = exp (3) 1. 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 Xk [ ] 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..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 transformaty o numerze i ani ten element, ani element X[ 0 ] nie posiadają swoich bliźniaczych odpowiedników. Przedstawiono to na rys.1. Ponadto ani X[ 0 ], ani X[ / ] nie może mieć części urojonej. Warto się zastanowić, jak taką właściwość zaobserwować na wykresach amplitudy i fazy. Rys.1. Ilustracja symetrii transformaty parzystego ciągu rzeczywistego - z lewej amplituda, z prawej faza 1.. 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 o numerach 1 + 1 i. W takiej sytuacji jedynie element X[ 0 ] nie posiada swojego bliźniaczego odpowiednika. Przedstawiono to na rys.. Ponadto element X[ 0 ] nie może mieć w takiej sytuacji niezerowej części urojonej. Rys.. 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. ależ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. 3

1.4 DFT jako rozkład na ciągi bazowe Ciąg o długości można przedstawić jako liniową kombinację ciągów bazowych o tej samej długości: K xn [ ] = ak bk[ n] : n= 01,,..., 1 (4) Transformata DFT zawiera współczynniki (zespolone) takiego rozwinięcia dla ciągów bazowych o postaci: k = 0 b [ n] = e : k = 01,,..., 1 k j π nk Gdy ciąg x[ n] jest rzeczywisty, to można również przyjąć ciągi bazowe w postaci: b k (5) π [ n] = cos + ϕk : k = 01,,..., K (6) Przy czym dla parzystego: K =, dla nieparzystego: K 1 =. Ponadto dla dowolnego : ϕ 0 = 0 lub ϕ0 =± π, natomiast dla parzystego dodatkowo także: ϕ / = 0 lub ϕ / = ± π. 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: 1 j π 1 xn [ ] = Xk [ ] e (7) k = 0 Z powyższego porównania otrzymuje się natychmiast zależność pomiędzy współczynnikami rozwinięcia (4) - czyli - i współczynnikami transformaty Xk [ ]: Xk [ ] ak = a k (8) Zależność ta jest, jak widać, bardzo prosta. iestety 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 = Xk [ ] ϕk = ϕ ( Xk [ ]) (9) ( ) Przez ϕ Xk [ ] oznaczono fazę elementu Xk [ ] transformaty. Właśnie obecność w każdym ciągu bazowym (6) fazy, zależnej od ciągu x[ n], powoduje, że ilość ciągów bazowych jest w takim przypadku równa około połowie. 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. 4

j π v t 1.5 Transformata DFT ciągu pochodzącego z próbkowania sygnału zespolonego typu e i kosinusoidy 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 jest typu: xn [ ] = e j π (10) dla k = 01,,..., 1, to jego transformata DFT zawiera same zera poza jednym elementem o indeksie k oraz Xk [ ]=. 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: π xn [ ] = cos + β (11) dla k = 01,,..., 1, to jego transformata zawiera jedynie jeden lub dwa elementy niezerowe. Gdy jest parzyste, wówczas jedyny element niezerowy pojawi się dla k = 0 lub k =. Dla 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 k, które muszą dodatkowo spełniać odpowiednie symetrie, ponieważ ciąg (11) jest rzeczywisty, czyli: Xk [ ] = X [ k] = ( Xk [ ]) ( X [ k] ) ϕ = ϕ = β (1) Gdy ciąg pierwotny jest typu: ( ) xn [ ] = cos π f n + β (13) i częstotliwość cyfrowa f nie spełnia zależności (14): f k = (14) to transformata takiego ciągu zawiera więcej niż dwie wartości niezerowe. Ponadto można zauważyć, że w takim przypadku 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 parzystego maksymalna częstotliwość jest reprezentowana przez element transformaty o indeksie, natomiast dla 1 + 1 nieparzystego maksymalną częstotliwość reprezentuje para elementów o indeksach oraz. Dla dowolnej długości ciągu składowa stała jest reprezentowana przez element o indeksie 0, natomiast najniższa niezerowa 5

częstotliwość odpowiada parze elementów transformaty o indeksach 1 oraz 1 i częstotliwość ta rośnie w miarę zbliżania się do elementów odpowiadających częstotliwości maksymalnej. ależ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 = 01,,..., 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 < 01, ) 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 = 64 ciąg: ( 0 15 n) xn [ ] = cos π, (15) odpowiada w dziedzinie transformaty DFT dwóm prążkom o indeksach 8 i 56. Identycznie opisany ciąg, jednak dla = 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 xn $[ ] 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 Xk [ ] transformaty o ΔX[ k] spowoduje wprowadzenie do ΔXk [ ] ciągu pierwotnego błędu w postaci ciągu bazowego o amplitudzie (w implementacji MATLAB a): Xk Xk [ ] Xk $ [ ] [ ] = Xk [ ] xn [ ] xn $[ ] = Δ Δ e j π k n (16) Gdyby transformatę ciągu rzeczywistego zmodyfikować tak, że zachowane będą odpowiednie symetrie, na przykład tak: Δ ( Δ ) Xk $ [ ] = Xk [ ] + Xk [ ] X $ [ k ] = X [ k ] + conj Xk [ ] (17) 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: Xerr[ k] = Δ X[ k] oraz X [ k ] = err conj( Δ X [ k ]), czyli: ΔXk [ ] π xerr[ n] = x$[ n] x[ n] = cos + ϕ ( ΔXk [ ] ) (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 X err 6

(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ą. 7

Korzystanie z pakietu MATLAB.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. iekiedy 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.. 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...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: >> =18; >> x=rand(1,); X=fft(x); xi=ifft(x); >> rmse=sqrt(sum(abs(x-xi).^)/); sqrt jest funkcją Matlab a wyznaczającą pierwiastek kwadratowy.. Test na ilość operacji zmiennoprzecinkowych w FFT w zależności od długości ciągu: >> for =:^8, x=rand(1,); flops(0); X=fft(x); oper(-1)=flops; end;..3 Macierzowa interpretacja DFT. >> =3; >> MDFT=fft(eye()); >> x=rand(,1); uwaga - wektor x jest tym razem kolumnowy >> X=MDFT*x; Jakie przykłady należałoby zbadać, by się upewnić, czy metoda wyznaczania macierzy MDFT jest poprawna?..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 : >> =8; >> x=rand(,1); kolumnowy wektor reprezentujący ciąg przeznaczony do rozwinięcia >> B0=zeros(,); >> for k=1:, 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)).^)); normalizacja pierwszej kolumny poniżej procedura ortonormalizacyjna: >> for k=:, b=b0(:,k); for m=1:k-1; b=b-(b *B(:,m))*B(:,m);end; B(:,k)=b./sqrt(sum(abs(b).^)) ;end ciąg x jest teraz rozwijany w szereg, gdzie kolumny macierzy B to ciągi bazowe: >> X=B*x; >> x=zeros(,1); for k=1:, x=x+x(k)*b(:,k);end >> err=x-x; Jak uzasadnić sposób, w jaki macierz B została wykorzystana do wyznaczania współczynników poszukiwanego rozwinięcia?..5 Sprawdzanie ortonormalności układu ciągów (wektorów) bazowych iekiedy 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:, for m=1:, ILSKAL(k,m)=conj(B0(:,k) )*conj(b0(:,m)); end; end; 8

>> mesh(ilskal); >> for k=1:, for m=1:, 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:, ORMA(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ć?..6 Transformaty ciągów pochodzących z próbkowania wybranych sygnałów ciągłych >> =64; >> k=7; >> n=0:63; i następnie: >> x=exp(j**pi*k*n/+pi/7); albo: >> x=cos(*pi*k*n/+pi/7); po czym: >> X=fft(x); i pozostaje już tylko sprawdzić odpowiednie hipotezy...7 Błąd w dziedzinie pierwotnej wynikający ze zmiany wartości współczynników transformaty >> =64; >> x=rand(1,); >> 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(-k)=X(-k)+conj(DX); >> xinv=ifft(x); >> xerr=xinv-x; i teraz można postudiować właściwości ciągu xerr. 9