CYFROWE PRZETWARZANIE SYGNAŁÓW Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 4
Rozwiązania zadań pochodzą z notatek własnych na podstawie zajęć laboratoryjnych oraz literatury podanej w źródłach. W przypadku ewentualnych błędów proszę zgłaszać poprawki do autora. (
[email protected] http://student.agh.edu.pl/~bonesaaa)
"Theory is when you know all and nothing works. Practice is when all works and nobody knows why. In this case we have put together theory and practice: nothing works... and nobody knows why!” (anonymous author) 1
GWOLI WSTĘPU Na początek kilka zmian, przede wszystkim wizualnych. Mam nadzieję, że przypadną one Wam do gustu. Nowa czcionka oraz odświeżone logo. Dodatkowo standard już z poprzednich opracowań – gdzie się da, tam zapisuję odpowiedniki anglojęzyczne. Pozdrawiam i życzę powodzenia w zgłębianiu tajników cyfrowego przetwarzania sygnałów (lub być może poprawniej – przetwarzaniu cyfrowych sygnałów, bo z angielska mamy przecież Digital Signal Processing). Opracowanie z czasem coraz bardziej się rozrasta, stąd na końcu pojawia się mała nowość – lekcje dodatkowe, które najprawdopodobniej przydadzą się w dalszych etapach nauki (np. przedmiot Automatyka i Robotyka).
POPRAWKI: Wersja 1.1 – Str. 47 – poprawiony schemat FFT, dodana lekcja ósma, uzupełniony opis baz Walsha i Haara Wersja 1.2 – rozszerzony artykuł o bazie Walsha, poprawki kosmetyczne Wersja 1.3 – poprawa literówek, poprawione rozwiązanie na str. 81 do DFT 2D, rozszerzony fragment o mnożeniu macierzy, dodany dział o DFT 2D i IDFT oraz rozwiązania z 2 terminu egzaminu 2010, poprawka bazy Walsha w zadaniu 6 (lekcja 11) Wersja 1.4 – poprawione drobne błędy oraz rozwinięte rozwiązanie zadania 2 (egzamin 2010 – termin II) Wersja 2.1 – aktualizacja – o pochodzeniu liczby urojonej (12 maja 2011 rok) Wersja 2.2 – nowy przykład w szeregach Fourier’a, egzamin 2011, lekcja dodatkowa A (transformata Laplace’a), poprawione marginesy stron i „nieco”, lekcja o splocie, transformata Fouriera dla cos i exp dodane artykuły o pochodnych oraz o twierdzeniu trzech ciągów
2
TREŚCI SPIS MATEMATYKA .................................................................................................................................................................. 6 LICZBA UROJONA (imaginary number) ........................................................................................................................ 6 LICZBY ZESPOLONE (complex numbers) ...................................................................................................................... 8 WZORY EULERA (Euler’s formula)................................................................................................................................ 9 MACIERZE (matrix) – mnożenie macierzy ................................................................................................................. 10 MACIERZE (matrix) – macierz odwrotna (inverted matrix) ..................................................................................... 11 CAŁKOWANIE PRZEZ CZĘŚCI ..................................................................................................................................... 14 TWIERDZENIE O TRZECH CIĄGACH (squeeze theorem)........................................................................................... 16 POCHODNA (derivative) – wstęp ............................................................................................................................... 18 POCHODNA (derivative) – wyprowadzenia .............................................................................................................. 19 RÓŻNICZKA NUMERYCZNA (numerical differentiation) ........................................................................................... 20 MATLAB - WPROWADZENIE ........................................................................................................................................ 21 PODSTAWY................................................................................................................................................................... 21 MACIERZE ..................................................................................................................................................................... 22 LICZBY ZESPOLONE w MatLab’ie .............................................................................................................................. 23 PRZYKŁAD WYKORZYSTANIA MatLab ..................................................................................................................... 24 PRZYDATNE FUNKCJE ................................................................................................................................................. 24 PODSTAWOWE SYGNAŁY ............................................................................................................................................. 26 DELTA DIRACA δ(t) ..................................................................................................................................................... 26 SKOK JEDNOSTKOWY 1(t) .......................................................................................................................................... 27 IMPULS PROSTOKĄTNY Π(t) ..................................................................................................................................... 27 ZNAK DZIEDZINY/FUNKCJA ZNAKU sgn(t) .............................................................................................................. 28 SYGNAŁ WYKŁADNICZY NARASTAJĄCY .................................................................................................................... 28 SYGNAŁ WYKŁADNICZY MALEJĄCY........................................................................................................................... 29 FUNKCJA SINC sinc t .................................................................................................................................................... 29 FALA PROSTOKĄTNA BIPOLARNA ............................................................................................................................ 30 FALA PROSTOKĄTNA UNIPOLARNA ......................................................................................................................... 30 Podział sygnałów ........................................................................................................................................................ 31 APROKSYMACJA ............................................................................................................................................................. 31 ORTONORMALNOŚĆ i ORTOGONALNOŚĆ .................................................................................................................. 35 ORTOGONALNOŚĆ (orthogonality) ............................................................................................................................ 36 ORTONORMALNOŚĆ (orthonormality) ...................................................................................................................... 36 EFEKTY ORTONORMALNOŚCI.................................................................................................................................... 37 NORMALIZACJA w MatLab’ie ..................................................................................................................................... 40 BAZY HAARA i WALSHA ................................................................................................................................................ 41 3
BAZA HAARA ................................................................................................................................................................ 41 BAZA WALSHA ............................................................................................................................................................. 44 FORMUŁY dla MatLab’a ............................................................................................................................................. 47 SPLOT ............................................................................................................................................................................... 47 SZEREG FOURIER’a......................................................................................................................................................... 51 PRZYKŁAD – Sygnał prostokątny, bipolarny .............................................................................................................. 52 PRZYKŁAD – Trójkątny, bipolarny (triangle, bipolar) ............................................................................................... 54 PRZYKŁAD – Piła (sawtooth, saw wave) ..................................................................................................................... 56 TRANSFORMACJA FOURIER’a ...................................................................................................................................... 58 WSTĘP........................................................................................................................................................................... 59 WŁASNOŚCI TRANSFORMACJI FOURIER’a ............................................................................................................... 59 PODSTAWOWE TRANSFORMATY .............................................................................................................................. 59 PRZYKŁAD – TRANSFORMATA COSINUSA................................................................................................................ 60 PRZYKŁAD – TRANSFORMATA SYGNAŁU TRÓJKĄTNEGO...................................................................................... 61 TRÓJKĄT, BRAMKA, SPLOT ........................................................................................................................................ 63 DFT – Discrete Fourier Transform ............................................................................................................................. 63 MACIERZ PRZEJŚCIA DLA DFT ................................................................................................................................... 63 PRÓBKOWANIE i OBLICZENIA w DFT ....................................................................................................................... 66 INTERPRETACJA DYSKRETNEGO WIDMA ................................................................................................................ 69 DFT dla MatLab ........................................................................................................................................................... 70 DFT dla DWÓCH WYMIARÓW.................................................................................................................................... 71 IDFT – inverse discrete Fourier transform ............................................................................................................. 72 WIDMA – PODSUMOWANIE ....................................................................................................................................... 73 TRANSFORMACJA Z ........................................................................................................................................................ 74 WSTĘP........................................................................................................................................................................... 74 PRZYKŁADY – delta Diraca ......................................................................................................................................... 74 PRZYKŁADY – skok jednostkowy ................................................................................................................................. 75 FILTRY i TRANSMITANCJA ........................................................................................................................................... 75 FIR (Finite Impulse Response) ...................................................................................................................................... 75 ZADANIE 1 .................................................................................................................................................................... 77 ZADANIE 2 .................................................................................................................................................................... 77 IIR (Infinite Impulse Response) .................................................................................................................................... 79 ZADANIA .......................................................................................................................................................................... 79 ZADANIE 1 – dualizm ................................................................................................................................................... 79 ZADANIE 2 – filtry/transformata Z ............................................................................................................................. 80 ZADANIE 3 – filtry/FIR................................................................................................................................................. 80 ZADANIE 4 – stabilność ................................................................................................................................................ 81 ZADANIE 5 – transformata Fouriera ........................................................................................................................... 82 4
ZADANIE 6 – aproksymacja/baza Walsh’a ................................................................................................................. 83 ZADANIE 7 – transmitancja/filtry ............................................................................................................................... 85 ZADANIE 8 – stabilność/filtry ...................................................................................................................................... 85 ZADANIE 9 – własności transformaty Fouriera .......................................................................................................... 86 ZADANIE 10 – FFT........................................................................................................................................................ 86 ZADANIE 11 – transformata Z ..................................................................................................................................... 88 ZADANIE 12 – transmitancja/filtry............................................................................................................................. 88 ZADANIE 13 – filtry ...................................................................................................................................................... 89 MARATON ........................................................................................................................................................................ 89 ZADANIE 1 – szereg Fouriera ...................................................................................................................................... 89 ZADANIE 2 – transformata Fourier’a/splot ................................................................................................................ 92 ZADANIE 3 – transformata Fourier’a .......................................................................................................................... 95 ZADANIE 4 – splot ........................................................................................................................................................ 96 ZADANIE 5 – falki ......................................................................................................................................................... 98 ZADANIE 6 – kryterium stabilności ............................................................................................................................. 99 ZADANIE 7 – energia.................................................................................................................................................. 102 EGZAMIN 2010 – termin I ........................................................................................................................................... 102 ZADANIE 1 – ortogonalność ...................................................................................................................................... 102 ZADANIE 2 – transformata Fouriera ......................................................................................................................... 104 ZADANIE 3 – DFT 2D .................................................................................................................................................. 108 ZADANIE 4 – filtry ...................................................................................................................................................... 110 EGZAMIN 2010 – termin II .......................................................................................................................................... 111 ZADANIE 1 – aproksymacja (metodą matematyczną) ............................................................................................. 111 ZADANIE 1 – aproksymacja (metodą graficzną) ...................................................................................................... 117 ZADANIE 2 – energia.................................................................................................................................................. 121 ZADANIE 3 – IDFT ...................................................................................................................................................... 121 ZADANIE 4 – filtry ...................................................................................................................................................... 123 EGZAMIN 2011 .............................................................................................................................................................. 124 ZADANIE 1 – widmo częstotliwościowe i twierdzenie o próbkowaniu .................................................................... 124 ZADANIE 2 – DFT ....................................................................................................................................................... 124 ZADANIE 3 – charakterystyki częstotliwościowe filtru ............................................................................................ 124 ZADANIE 4 – kompresja bezstratna (predyktor) ...................................................................................................... 124 TRANSFORMACJA LAPLACE’a .................................................................................................................................... 124
5
Głównym problemem przedmiotu jest brak jednoznacznych oznaczeń, w związku z czym będziemy się trzymać symboliki stosowanej przez wykładowcę przedmiotu dla inżynierii biomedycznej, Pana prof. Mariusza Ziółkę. Co do literatury, to polecam „Cyfrowe przetwarzanie sygnałów – od teorii do zastosowań” Tomasza P. Zielińskiego (Wydawnictwo Komunikacji i Łączności) oraz „Teoria sygnałów” panów Jacka Izydorczyka, Grzegorza Płonki i Grzegorza Tymy (wydawnictwo Helion). Dla relaksu można czasem zaglądnąć do „Wprowadzenie do cyfrowego przetwarzania sygnałów” pana Richard’a G. Lyons’a (ponownie WKŁ) oraz skryptu (baaardzo słabo dostępnego) „Funkcje zespolone – szeregi i przekształcenia Fouriera, przekształcenia całkowe Laplace’a, przekształcenia Laurenta (Z)” pana Franciszka Bierskiego (skrypt AGH). No i oczywiście bardzo przydatne bywają notatki oraz slajdy z wykładów.
MATEMATYKA LEKCJA WPROWADZAJĄCA
Na sam początek trzeba sobie przypomnieć trochę matematyki. W centrum naszego zainteresowania będą macierze (szczególnie potrzebne w MatLabie) oraz liczby zespolone, na których bazują wszystkie transformacje. No i na koniec słowo o tym co lubią wszyscy, czyli całeczkach.
LICZBA UROJONA (imaginary number) Z definicji, liczba urojona to taka liczba, która podniesiona do kwadratu daje wartość ujemną. Zacznijmy jednak od historii – ponoć istnienie tych liczb zauważył już grecki inżynier i matematyk Heron z Aleksandrii żyjący pomiędzy rokiem 10, a 70 naszej ery. W roku 1572 Rafael Bombelli po raz pierwszy ustanowił zasady mnożenia liczb zespolonych, jednakże w tamtym czasie koncepcja liczb zespolonych była słabo rozumiana, a przez część uważana za bezsensowną i niepotrzebną. Rzecz zaczęła się zmieniać począwszy od Rene Descartesa, znanego również jako Kartezjusz (1596–1650), który w swym dziele La Géométrie po raz pierwszy użył nazwy liczby urojone (fr. nombre imaginaire – stąd zresztą skrót Im oznacza imaginaire, a nie imaginary z angielskiego). Szersze użycie liczb urojonych nie było akceptowane aż do ukazania się prac Leonarda Eulera (1707–1783) i Carla Friedricha Gaussa (1777–1855). Zajmijmy się jednak graficzną interpretacją. Na początek wyobraźmy sobie oś liczbową liczb rzeczywistych, z zaznaczonymi punktami dla zera i jedynki: 1
0
Proszę zwrócić uwagę, iż mnożąc jedynkę przez minus jeden, w wyniku otrzymujemy minus jeden. Reasumując, dokonaliśmy „obrotu” położenia jedynki o 180 stopni! 1 1 1
0
Jednocześnie, by wrócić ponownie na prawą stronę osi liczbowej, musimy znów „obrócić” liczbę o 180 stopni, czyli pomnożyć razy minus jeden wynik poprzedniego mnożenia:
0
1 1 1
6
Stąd już bardzo blisko do bardzo ważnego wniosku, iż obrót o 360 stopni otrzymujemy przez mnożenie razy minus jeden do kwadratu (czyli dwa obroty o 180 stopni): 1 1 1
0
Podsumowując, wiemy, iż obrót o 180 uzyskujemy mnożąc razy minus jeden do potęgi pierwszej (1 180°), natomiast obrót o 360 stopni mnożąc razy minus jeden do potęgi drugiej (1 360°). Jak zatem uzyskać obrót o 90 stopni? Skoro dwukrotnie większy obrót uzyskujemy dwukrotnie większą potęgą, stąd o połowę mniejszy obrót od 180 stopni powinniśmy uzyskać przez o połowę mniejszą potęgę:
90° 1 1 √1
Czyli odpowiedź jest następująca – obrót o 90 stopni uzyskujemy mnożąc przez pierwiastek z minus jeden: 1 √1 √1
√ 1
0
Jeśli odnotujemy fakt, iż kwadrat liczby urojonej to minus jeden: 1
otrzymamy w rezultacie bardzo ładną płaszczyznę liczb zespolonych: 1
1
1
0
1
Liczby zespolone najłatwiej interpretować na zasadzie dwuwymiarowego układu współrzędnych tak, jakby tradycyjne liczby (reel współrzędną x) zostały rozszerzone o drugi wymiar (imaginaire 7
współrzędną y). Znaczenie geometrycznej interpretacji liczb zespolonych zostało odkryte przez Caspara Wessela (1745–1818). Oczywiście istnieje rozszerzenie liczb o jeszcze jeden wymiar – w 1843 roku irlandzki matematyk, pan William Rowan Hamilton wymyślił system trójwymiarowy tworząc tzw. kwaterniony (quaternion): 1
LICZBY ZESPOLONE (complex numbers) Z zakresu rachunku liczb zespolonych musimy sobie przypomnieć kilka podstawowych własności, które w dalszych rozważaniach będą kluczowe. Podstawą liczb zespolonych jest jednostka urojona, która spełnia warunek: 1
Elektrotechnicy wolą zamiast stosować literkę , co by się z natężeniem prądu nie myliło. Aczkolwiek, w dalszej części opracowania (począwszy od lekcji pierwszej) stosować będziemy notację elektrotechniczną, czyli . Liczby zespolone zapisujemy w formie:
gdzie to część rzeczywista (real part), natomiast to część urojona (imaginary part), co możemy zapisać:
Należy w tym miejscu podkreślić, iż skróty Re i Im nie pochodzą z angielskiego, lecz francuskiego, od reel i imaginaire. Liczby zespolone można przedstawić graficznie jako współrzędne wektora na płaszczyźnie zespolonej (complex plane - płaszczyzna zwana również płaszczyzną Arganda lub Gaussa). Im z=a+ib
b
0
a
Re
Jak widać, na wykresie mamy bardzo ładny trójkąt, o bokach i oraz przeciwprostokątnej o długości ||, czyli modułu z liczby zespolonej (moduł po angielsku to modulus, magnitude lub też absolute value, od którego jest polecenie abs w MatLab’ie).
8
Im
|z|
b
φ 0
a
Re
Jak policzyć ten moduł? Najłatwiej zastosować twierdzenie Pitagorasa:
|| !
Kolejnym krokiem jest wyjaśnienie, czym jest argument liczby zespolonej – otóż na schemacie został zaznaczony kąt φ (fi), który nazywany jest właśnie argumentem (argument) lub fazą (phase). Liczy się go przy pomocy funkcji cyklometrycznej tangensa (funkcja odwrotna, arcus tangens): arc tan
' arg
W przypadku liczb zespolonych, mamy możliwość zapisu każdej z nich przy pomocy funkcji sinus i cosinus: ||
|| || ) * ||cos ' sin ' || || || ||
Należy tu jeszcze wspomnieć o sprzężeniu (conjugation), w którym znak części urojonej zostaje zamieniony, czyli w najprostszej formie: .
Czasami stosuje się również zapis z gwiazdką, czyli . . Sprzężenie powoduje odbicie liczby zespolonej względem osi OX. Po co to? Czasem się przydaje gdy chcemy pozbyć się z równania części urojonej, ale o tym zapewne będzie mowa trochę dalej. WZORY EULERA (Euler’s formula) Jako, że nie warto zaśmiecać swej pamięci zbędnymi wzorami, warto umieć wyprowadzić pewne zależności. Dowód na poprawność poniższych dwóch zależności pozostawiam jednak Wam: JK cos L sin L MJK cos L sin L
Dzięki tym dwóm równaniom, możemy wyprowadzić postać wykładniczą liczby zespolonej: JK MJK cos L sin L cos L sin L
9
JK MJK 2 sin L sin L
Teraz cosinus:
JK MJK 2
JK MJK cos L sin L cos L sin L 2 cos L cos L
Co w sumie daje nam: || S
JK MJK 2
||cos L sin L
JK MJK JK MJK JK MJK JK MJK 2 JK T || S T || S T 2 2 2 2 || JK
MACIERZE (matrix) – mnożenie macierzy Podstawą jest umiejętność mnożenia macierzy i ogólne pojęcie jak się macierz odwraca. Macierze możemy ze sobą mnożyć w momencie gdy liczba kolumn pierwszej jest równa liczbie wierszy drugiej macierzy: UV WJX YZ U[ WX\ YZ ] ^_J\ ` Preferowanym przeze mnie stylem mnożenia jest schemat Falk’a. Przykładowo: 2 3 V a1 4d 5 1
A
2 -1 5
[ e
3 4 1
_
2 3 3 2 0 _ 2 1 3 3 11 _ 2 2 3 1 7 _ 2 0 3 4 12
3 -2 0 -11 13
0 ] V [ a11 13
3 1 2 0 f 3 3 1 4 B -1 -3 -11 -11 -8
2 1 7 2 11
0 4 12 16 4
_ 1 3 4 2 11 _ 1 1 4 3 11 _ 1 2 4 1 2 _ 1 0 4 4 16
11 7 11 2 8 11
12 16d 4
Proszę jednak pamiętać, iż mnożenie macierzy nie jest przemienne! Mnożąc macierz V [ otrzymujemy macierz ], ale mnożąc macierz [ V otrzymujemy już zupełnie inny wynik! Przykładowo:
10
1 2 h i3 2 1 0
1 h j i3 1
3 1i 1
1 0 j i0 5 1 5
2 3 1 0 5 4 2 1i i0 5 1i i4 0 1 1 5 5 2
1 2 1 0 5 j h i0 5 1i i3 2 1 0 1 5 5
5 1i 5
25 22 15 22i 5 10
3 6 2 1i i16 10 1 21 12
8 6i 13
MACIERZE (matrix) – macierz odwrotna (inverted matrix) Procedura odwracania macierzy do najprzyjemniejszych nie należy. Macierz odwrotną do macierzy X
oznaczamy jako h M lub . Obrót macierzy jest potrzebny do wykonania operacji przeciwnej do k mnożenia: l jh
j l
1 l h M
h
Podczas obracania macierzy wykonujemy następujące czynności: a) obliczamy wyznacznik macierzy (determinant),
W przypadku macierzy o rozmiarach 2 na 2 i 3 na 3 nie ma raczej większych problemów (reguła Sarrusa). Przykładowo:
3 a1 0 3 1
3 2 det V i1 2 0 1
5 2i 6 5 6 17 0
2 5 2 2d 3 2 0 1 1 5 0 2 2 5 2 0 2 1 3 0 2 1 1 0 2 5 2 2
Używając schematu Sarrusa, przepisujemy dwa górne wiersze na dół macierzy, a następnie rysujemy strzałki jak powyżej. Te, skierowane od lewej do prawej (niebieskie), po przemnożeniu dodajemy do siebie, natomiast od prawej do lewej odejmujemy (czerwone).
b) wyliczamy macierz minorów, Macierz minorów jest mało przyjemnym elementem. Wymaga sporo liczenia (dla macierzy 3 na 3 musimy obliczyć 9 macierzy 2 na 2) i łatwo się pomylić. Poniżej przykładowa macierz 3 na 3: V m a1 L
[ 2 n
] 3d
11
I jej macierz minorów:
2 q rn p [ WmJX Y pr pn p[ os 2
3 r ] r ] s 3
1 2 1 3 s s r r L n v L u V [u V ] s s r r L n u L V ] V [u s s s s 1 3 1 2t
Przy tworzeniu poszczególnych minorów posługujemy się poniższą zasadą, wykreślając odpowiednie kolumny i wiersze macierzy źródłowej:
V m a1 L
[ 2 n
2 q rn p [ WmJX Y pr pn p[ os 2
] 3d
3 1 2 1 3 r s s r r L n v L u ] V [u V ] r s s r r L nu L ] V ] V [u s s s s s 3 1 3 1 2t
V m a1 L V m a1 L
[ 2 n [ 2 n
] 3d ] 3d
c) wyliczamy macierz dopełnień algebraicznych (cofactor), Macierz dopełnień powstaje przez użycie odpowiedniego wzoru:
^hJ\ ` 1Jw\ WmJX Y
Gdzie i i k to numer kolumny i wiersza. Stąd wiemy, iż znak wszystkich nieparzystych elementów macierzy będzie zmieniony, np.: V h 1Jw\ a 1 L
[ 2 n
V 1 w
] 3 d x 1 1w
L 1w
[ 1 w 2 1w n 1w
] 1 w V [ 3 1w y a1 2 L n 1w
d) wyliczamy macierz dołączoną (transponowana macierz dopełnień algebraicznych),
] 3d
Podczas transponowania zamieniamy miejscami składniki macierzy w sposób lustrzany względem (umownie nazwijmy) jej środka: { m a[ ] z
1 L | nd 3 }
Proszę zwrócić uwagę, iż pogrubione elementy nie zmieniły swojego położenia. e) mnożymy macierz dołączoną przez odwrotność współczynnika macierzy. mM
1 m~ det m
12
PRZYKŁAD By zilustrować zastosowanie macierzy odwrotnej, wykonajmy poniższe działanie: 1 3 1/3 ` 3 1 1 d ^9 1 a 1 2 0 5/3
l j h ^1 2
2/3 `
Teraz problem pojawia się, jeśli chcemy uzyskać odwrotne działanie, czyli: j l Musimy obliczyć macierz odwrotną:
1 det h i3 2
h M
1 1 3 qr 0 5/3r r2 p 3 1/3 1 WmJX Y p r r r 0 5/3 2 p p 3 1/3 1 s s o s1 1 3
Macierz dopełnień algebraicznych: ^hJ\ ` Macierz transponowana:
h
M
1 h~ det h
3 1/3 5 2 5 7 70 1 1 i 0 6 ) * 0 ) * 3 3 6 15 3 3 3 3 3 0 5/3
Macierz minorów:
Macierz odwrotna:
1 l h M
h
1Jw\
1 3 1 r s sv 5/3 2 0 5/3 7 u 1/3 1 3 u a 5 7/3 r s s 5/3 2 0 u 10/3 0 1/3 1 3 u s s s 3 1 t 1 5/3 WmJX Y a 5 10/3
5/3 h ~ ^hJ\ `z a 7 2
5/3 1 3 ~ h a 7 det h 70 2 h
M
7 2 7/3 6 d 0 10
5 10/3 7/3 0 d 6 10
5/70 5 10/3 7/3 0 d a3/10 6/70 6 10
1/14 a3/10 3/35
2 6 d 10
3/14 1/10 9/35
1/7 0 d 3/7
15/70 1/7 1/10 0 d 18/70 3/7
13
I teraz ponowne mnożenie: lh
M
^9
n 9
n 9
1/14 1 2/3 ` a3/10 3/35
3/14 1/7 1/10 0 d ^1 2 9/35 3/7
1 3 2 3 9 3 2 1 1 14 10 3 35 14 10 35
1`
3 1 2 9 27 1 6 1 ) * 2 14 10 3 35 14 10 35
1 2 3 9 2 n 9 1 0 ) * 1 7 3 7 7 7
Wedle definicji, mnożąc macierz X i macierz do niej odwrotną X-1 powinniśmy otrzymać macierz jednostkową: h M h
1/14 3/14 1/7 1 3/10 1/10 0 a d a3 2 3/35 9/35 3/7
3 1/3 1 1 1 d a0 0 5/3 0
0 0 1 0d 0 1
1 3 1 1 9 4 1 3 2 1 14 14 7 14 14 14
1 3 3 0 0 14 14
1 1 3 1 5 1 9 10 0 14 3 14 7 3 42 42 42
CAŁKOWANIE PRZEZ CZĘŚCI Nie jest to konieczne, aczkolwiek może się kiedy przydać (każdy inżynier winien umieć całkować przez części, a jak wzoru nie pamięta, to go wyprowadzi). Wzór na pochodną dwóch mnożonych funkcji to: ^L L` L L L L
Zapiszmy nasz wzór dodatkowo notacją Leibniz’a (osobiście preferuję właśnie ją, aczkolwiek dla ułatwienia będzie w obu). Proszę pamiętać, iż całkując zawsze powinniśmy oznaczać po czym całkujemy (w naszym przypadku po L)! ^L` ^L` ^L` ^L` L L L L L L
Odejmując od obu stron L
^
K` K
otrzymujemy:
^L L` L L L L
^L` ^L` ^L` ^L` L L L L L L
14
Przecałkujmy teraz obie strony równania: ^L L` L L L L L L L
^L` ^L` ^L` ^L` L L L L L L L L L
Ponieważ w przypadku liczymy całkę z pochodnej, stąd wracamy po prostu do naszej K K funkcji pierwotnej, dzięki czemu otrzymujemy: ^K`
^
K`
L L L L L L L L L L L
^L` ^L` L L L L L
Powstaje jednak pytanie, co się z tym robi? Bardzo ładne wyprowadzenie, ale teraz trzeba jakoś zastosować nasz piękny wzorek. Obliczmy całkę z funkcji: L L ln L
Zakładając, że L ln L, a L L , otrzymujemy: L L L L ln L L 1 L L 3
L
L ln L 1 L L L L L L L
1 1 1 1 1 L ln L L L L ln L L L 3 3 L 3 3
L
1 1 1 1 1 L ln L L L ln L L 3 3 3 3 9
Dla pewności spróbujmy teraz policzyć pochodną z funkcji pierwotnej a(x): (L) (L) (L) (L)
^(L)` 1 1 ) L ln L L * L L 3 9
1 1 1 1 1 1 L )ln L * ) L * )ln L * ) L * )ln L * L 3 3 L 3 3 3 L 3
1 1 1 1 1 1 1 1 3 L M )ln L * ) L * ) 0* L )ln L * L L )ln L * 3 3 3 L 3 3 3 3 (L) L ln L
15
TWIERDZENIE O TRZECH CIĄGACH (squeeze theorem) K Czasem w przypadku wyprowadzeń pojawia się kwestia granicy funkcji sinc, czyli . Być może część osób pamięta, że limK de l’Hospitala:
K K
K
1, jednakże najczęstsze wyprowadzenie tej zależności pochodzi z reguły
^sinL` sinL cosL lim lim 1 lim K K K L L 1
Jednakże chcąc wyprowadzić pochodną funkcji sinus, nie powinniśmy korzystać z wyprowadzenia stosującego pochodną funkcji sinus (nawet brzmi to niezbyt ładnie). Stąd musimy zastosować nieco inne podejście. Zasada, której użyjemy nazywa się twierdzeniem o trzech ciągach (ang. squeeze theorem lub sandwich rule). Na początek rysujemy okrąg jednostkowy (unit circle), a w nim trójkąt prostokątny: 1 1
L
n
1
1
Proszę zwrócić uwagę, iż nasz okrąg jest okręgiem jednostkowym, co oznacza, iż dowolne 1. Stąd otrzymujemy, iż sinus kąta L, będzie równy n: sinL
n n n 1
Spróbujmy teraz narysować przedłużenie promienia oraz drugi trójkąt:
1
L
1
sinL
1
1
Powstaje pytanie – jakiej długości jest nowy bok ? Jeśli zapiszemy tangens kąta L, to ponownie dzięki temu, iż okrąg jest jednostkowy, otrzymamy: tgL
1
16
Czyli: 1
tgL
L
1
sinL
1
1
Spróbujmy teraz policzyć pola poszczególnych trójkątów znajdujących się na powyższym rysunku:
A
B
C
1
Pole trójkąta A to iloczyn połowy wysokości (
K
1
) i podstawy ():
1 sinL sinL 2 2
W przypadku pola wycinka B sprawa się trochę komplikuje. Pole całego koła to , natomiast nasz kawałek stanowi L całości. Ponieważ 180 stopni to 2, więc pole wycinka to:
Na koniec pozostał jeszcze ostatni trójkąt, C:
L L L 1 2 2 2
1 tgL tgL 2 2
Bardzo łatwo można zauważyć, iż pola kolejnych obszarów są coraz większe, co możemy zapisać jako: sinL L tgL 2 2 2
sinL L tgL 17
Oczywiście, powyższe twierdzenie jest prawdziwe tylko do momentu, gdy znajdujemy się w pierwszej ćwiartce okręgu jednostkowego (no i poniekąd też dla czwartej ćwiartki), czyli dla przedziału 0 L . Następny krok to podzielenie całego wyrażenia przez sinL: sinL L tgL sinL sinL sinL 1
1
L sinL 1 sinL cosL sinL
1 L sinL cosL
Przekręcając wszystkie wartości otrzymujemy:
cosL
sinL 1 L
Gdy L zmierza do zera L 0, to funkcja cosinus jest zmierza do jedynki cosL 1. Korzystając w tym momencie z twierdzenia o trzech ciągach – jeśli mając trzy ciągi liczb rzeczywistych: _ ,
lim lim _
To granica drugiego ciągu również musi zmierzać do tej samej wartości:
Stąd otrzymujemy, iż limK
sinL L
lim
1.
POCHODNA (derivative) – wstęp Skoro całka, to tak naprawdę pole pod wykresem krzywej (symbol całki to nieco zmodyfikowana litera S, tzw. długie s, od słowa łacińskiego summa, czyli suma), więc czym jest różniczka (zwana pochodną)? Wedle nazwy, różniczka to nieskończenie mała różnica między dwoma punktami funkcji L. Jeśli duża różnica oznaczana była deltą ( L), tak nieskończenie mała różniczka to mała delta, czyli L. Jako przykład zastosujmy funkcję liniową: n L
Na jej podstawie spróbujmy policzyć pochodną funkcji:
n n L L L L L L n n L L
Jeśli za L podstawimy n, to otrzymamy:
n n n L
Rozpisując to trochę dalej otrzymujemy:
L n
n ¡ ¢ n L ¡ ¢ L
18
n L L £ L L £ L L £ L L L £
W ten oto sposób otrzymujemy definicję pochodnej:
L £ L ¤ £
L lim
Zobaczmy, czy powyższy wzór działa. Sprawdzimy go na dwóch przypadkach – dla funkcji kwadratowej L L _:
L
L £ L £ _ L L _ L £ L lim lim ¤ ¤ £ £
1 L lim ^L 2£L £ L £ _ L L _` ¤ £ 1 L lim L 2£L £ L £ _ L L _ ¤ £ 1 2£L £ £ lim 2L £ ¤ £ ¤
L lim
Teraz należy zauważyć, że w przypadku gdy £ 0, to wyrażenie £ będzie tak małe, iż można uznać £ ¥ 0, stąd: L lim 2L £ 2L ¤
Czyli:
L L L _ 2L
POCHODNA (derivative) – wyprowadzenia Dział ten opracowany jest w oparciu o serwis Matematyka.pl (źródło – www.matematyka.pl/23319.htm). DEFINICJA POCHODNEJ:
POCHODNA STAŁEJ L :
L £ L ¤ £
L lim
L £ L lim 0 ¤ ¤ £ £
L lim
POCHODNA SUMY ^L L`:
L £ L £ L L L £ L L £ L lim ¤ ¤ £ £
^L L` lim
L £ L L £ L lim L L ¤ ¤ £ £
^L L` lim
19
POCHODNA ILOCZYNU ^L L`:
L £ L £ L L ¤ £
^L L` lim
L £ L £ L L L L £ LL £ ¤ £
^L L` lim
L ^L £ L` L £ ^L £ L` ¤ £
^L L` lim
L ^L £ L` L £ ^L £ L` lim ¤ ¤ £ £
^L L` lim
Ponieważ £ 0, więc L £ ¥ L:
^L £ L` ^L £ L` L lim ¤ ¤ £ £
^L L` L lim
POCHODNA SIN L sin L:
^L L` L L L L sinL £ sinL ¤ £
L lim
Korzystając z tożsamości trygonometrycznej – sin ¦ sin 2 sin § ª cos § ª otrzymujemy: L£L L£L £ £ 2 sin § ª cos § ª 2 sin §2ª cos §L 2ª 2 2 L lim lim ¤ ¤ £ £ ¨¦©
¨«©
Korzystamy teraz z reguły de l’Hospitala mówiącej, iż limK K 1 (oczywiście należy tu zaznaczyć, iż jest to nieco niestosowne by korzystać z twierdzenia z pochodną sinusa w wyprowadzeniu pochodnej tej samej funkcji – stosowniejsze uzasadnienie znajduje się w dziale TWIERDZENIE O TRZECH CIĄGACH): K
L lim
¤
£ £ sin §2ª cos §L 2ª £ 2
cosL lim
¤
£ sin §2ª £ 2
cosL 1 cosL
RÓŻNICZKA NUMERYCZNA (numerical differentiation) PIERWSZA POCHODNA Istnieje jednakże jeszcze problem, jak policzyć pochodną w momencie, gdy nie posiadamy przepisu funkcji, a jedynie zbiór punktów (przenosimy się ze strefy ciągłej do dyskretnej). Najprostszym założeniem jest przyjęcie £ 1, wtedy: L
L £ L £
L L 1 L
20
Powyższy wzór pochodzi od przybliżenia dwupunktowego. Jest to przybliżenie dwupunktowe „w przód”. Istnieje jeszcze przybliżenie dwupunktowe „w tył”: L
L L £ £
Korzystając z tego typu rozwiązania dokładność rośnie wraz z malejącym £. Niestety równocześnie wzrastają koszty obliczeniowe. Rozwiązaniem są przybliżenia wielopunktowe. W przypadku przybliżenia trójpunktowego otrzymujemy lepsze rezultaty (linia pochodnej numerycznej jest bardziej zbliżona do zwykłej): L
L £ L £ 2£
Oczywiście możemy stosować jeszcze więcej punktów (np. wzory pięciopunktowe), lecz wiąże się to z efektami brzegowymi, bowiem skąd na początku wziąć wartości próbek -1 oraz -2 dla L oraz na końcu +1 i +2 dla L ? DRUGA POCHODNA Druga pochodna numeryczna (second numerical derivative) figuruje głównie w wersji trzypunktowej: £ £ L £ L L L £ §L ª §L ª 2 2 £ £ L ¥ ¥ £ £ L ¥
L £ 2L L £ £
http://www.math.montana.edu/frankw/ccp/modeling/continuous/heatflow2/secondder.htm http://galaxy.uci.agh.edu.pl/~ttward/numer/Ca%B3kowanie%20i%20r%F3%BFniczkowanie%20numeryczne.pdf
MATLAB - WPROWADZENIE LEKCJA PIERWSZA
PODSTAWY Na sam początek dobrze jest zapoznać się nieco z programem, który będzie wałkowany przez najbliższy semestr. Mat z nazwy nie pochodzi tu od matematyki, lecz od matrix, czyli macierz, bowiem wszelakie obliczenia bazują właśnie na macierzach. Darmową alternatywą tego programu jest GNU Octave, który nie posiada wbudowanego interfejsu graficznego (wszystko wklepujemy w dosowe okienko). Program do zdobycia na stronie www.gnu.org/software/octave/download.html (lub po prostu www.octave.org). Jednocześnie mając dostęp do Internetu można skorzystać z Web Interface to Octave dostępnego na stronie http://hara.mimuw.edu.pl/weboctave (serwer bodaj Uniwersytetu Warszawskiego). W zakresie nauki użytkowania programu polecam „Wybrane elementy syntaktyki pakietu Matlab” Pana doktora Przemysława Korohody (katedra elektroniki AGH – plik .doc dostępny na stronie http://galaxy.uci.agh.edu.pl/~ph/TS/). Pierwszą rzeczą jaką chcemy zrobić, to stworzyć wektor L ^0 3 1`. W tym celu wpisujemy polecenie x=[0 3 1] oddzielając poszczególne cyfry spacją. Oczywiście można użyć również przecinków – x=[0,3,1]. Gdybyśmy chcieli utworzyć wektor L ^0 3,4 1`, to musimy użyć kropki – x=[0 3.4 1]. 21
Chcąc utworzyć macierz 2 na 3 używamy średnika, bądź wciskamy ENTER jako przejście do następnej linii (dopiero zamknięcie klamry jest sygnałem dla MatLab’a, iż macierz ma być w danej postaci). Przykładowo: 1 2 n a3 1 d 2 3
Wprowadzimy jako y=[1 2;3 1;2 3] (lub z przecinkami y=[1,2;3,1;2,3]). Wywołanie zdefiniowanej macierzy (bądź funkcji) zachodzi przez wpisanie jej nazwy plus ENTER. Jednocześnie należy wspomnieć, że w programie zapisane są takie stałe jak „i” (bądź „j”), czyli jednostka urojona oraz „pi”, czyli liczba pi.
By utworzyć wektor zawierający liczby od 1 do 7 (L ^1 2 3 4 5 6 7`) nie musimy wpisywać wszystkich liczb po kolei. Wystarczy, że użyjemy formuły x=[1:7], który wygeneruje ciąg liczb od 1 do 7. Podobnie, chcąc wygenerować wektor z liczbami od 5 do 30, wpisujemy x=[5:30]. Jeśli interesowałoby nas utworzenie ciągu liczb od 1 do 10, ale zawierającego jedynie liczby nieparzyste, to stosujemy formułę x=[1:2:10], dzięki czemu otrzymujemy wektor L ^1 3 5 7 9`. Podobny efekt otrzymalibyśmy stosując komendę x=[1:2:9], gdzie 2 w środku to „skok” z jakim generowane są kolejne liczby. Chcąc wygenerować wektor od 0 do 0,8 ze skokiem 0,2, wpisujemy formułę x=[0:0.2:0.8], otrzymując wektor L ^0 0,2 0,4 0,6 0,8`. Jednocześnie zawsze można wygenerować wektor z tendencją spadkową, czyli przykładowo L ^0,8 0,6 0,4 0,2 0` za pomocą komendy x=[0.8:-0.2:0].
Za pomocą polecenia clear all, kasujemy wszystkie zdefiniowane elementy z pamięci. Oczywiście możemy również kasować pojedyncze funkcje, np. chcąc wykasować funkcję lubieplacki wpisujemy clear lubieplacki. Polecenie help wywołuje okno pomocy, natomiast polecenie clc czyści cały ekran.
MACIERZE Z wcześniej utworzonej macierzy zawsze możemy „wyciągać” pewne jej elementy. Przykładowo, utwórzmy macierz d=[1:10]. Chcemy teraz, by g było równe trzeciemu elementowi macierzy d, czyli 3. By tego dokonać wpisujemy polecenie g=d(1,3), gdzie 1 to numer wiersza, a 3 to numer kolumny. Teraz kolejny przykład – tworzymy macierz 2 na 2 t=[1 2;3 4], a następnie chcemy, by £ 3 nie wpisując wprost polecenia h=3, lecz wyciągając element z macierzy t. Ponieważ 3 w macierzy t pojawia się w drugim wierszu i pierwszej kolumnie, stąd wpisujemy h=t(2,1). Możliwa jest również późniejsza edycja elementów utworzonej macierzy. Przykładowo, po utworzeniu macierzy d=[1:10], chcemy zamienić szóstkę na zero tworząc macierz ^1 2 3 4 5 0 7 8 9 10`. W tym celu wpisujemy komendę d(1,6)=0, czyli element z pierwszego wiersza i szóstej kolumny ma być elementem równym zero. Podobnie sprawa wygląda z większymi macierzami – na początek tworzymy macierz 3 na 3 poleceniem a=[1 1 1;8 8 7;2 2 2]. Ponieważ jednak okazało się, iż w drugim wierszu mają być trzy 8, musimy zamienić 7 na 8. Możemy tego dokonać wpisując polecenie a(2,3)=8, otrzymując na wyjściu macierz: 1 1 1 8 8 8 2 2 2
Bardzo przydatnym poleceniem okazuje się być end, bowiem nie znając rezultatu wcześniej wykonywanego działania, nowo utworzona macierz „wyciąga” wszystkie wartości aż do końca. Przykładowo wcześniej już wałkowana macierz d=[1:10]. Chcemy z niej wyciągnąć liczby od 5 wzwyż, więc wpisujemy polecenie o=d([5:end]) otrzymując macierz ¬ ^5 6 7 8 9 10`.
Nowe macierze można tworzyć z wcześniej zdefiniowanych. Przykładowo tworzymy macierze b=[5 6 7] oraz c=[7 6 5]. Teraz możemy uzyskać dwa rezultaty – używając przecinka lub średnika. Polecenie z przecinkiem d=[b,c] daje efekt: 22
5 6
7 7 6
5
Natomiast stosując średnik (czyli przejście do nowego wiersza) d=[b;c] otrzymujemy:
5 6 7 6
7 5
Teraz postawmy poprzeczkę nieco wyżej. Chcemy otworzyć macierz:
5 6 6 5
Stosując albo macierz d, albo b i c. Używając macierzy d musimy wpisać polecenie f=d([1:2],[2:3]), natomiast stosując b i c wpisujemy f=[b([1:2]);c([2:3])]. Przy mnożeniu macierzy pojawia się pewna dyskretna różnica. Mianowicie można zastosować mnożenie „z kropeczką”, bądź bez niej. Mnożenie bez kropeczki jest zwykłym mnożeniem macierzy wedle schematu przedstawionego na stronie 7 (MACIERZE – mnożenie macierzy), natomiast mnożenie „z kropką”, to mnożenie każdego elementu odpowiadający mu element drugiej macierzy. Przykład – mamy dwie macierze a=[1 2;3 4] oraz b=[4 5;6 7]. Po wykonaniu operacji a*b otrzymujemy: ¡
16 36
19 43
¡
4 18
10 28
Wedle schematu ¡
1 4 2 6 16, ¡ 3 5 4 7 15 28 43. Jednakże wpisując polecenie a.*b otrzymujemy wyniki: Ponieważ mnożone są ze sobą odpowiadające elementy – ¡
1 4 4, ¡ 2 5 10, ¡ 3 6 18 i ¡ 4 7 28. LICZBY ZESPOLONE w MatLab’ie W przypadku liczb zespolonych pojawiają się następujące polecenia – exp(nazwa) to eksponenta funkcji „nazwa”, czyli liczba Eulera podniesiona do potęgi wyniku funkcji „nazwa”. Moduł liczby zespolonej liczony jest komendą abs(nazwa). Część urojona wyliczana jest poleceniem imag(nazwa), natomiast część rzeczywista poleceniem real(nazwa). Fazę podanej liczby (lub macierzy) oblicza komenda angle(nazwa). Swego czasu na kolokwium pojawiło się zadanie – wyznaczyć moduł, argument, część rzeczywistą i X urojoną z liczby 6 exp § ® ª 3 oraz podać jak to zrobić w MatLab’ie. Na początek rozpisujemy liczbę do postaci matlabowej a=6*exp(i*pi./6)-3*i, a następnie stosujemy po kolei polecenia – moduł abs(a), argument angle(a), część rzeczywista real(a) i część urojona imag(a). Rozwiązanie pierwszej części zadania to:
exp
6S
XK cos L sin L
√3 1 cos sin 6 6 2 2 6
√3 1 T 3 3√3 3 3 3√3 2 2
23
W konsekwencji okazuje się, iż liczba nie zawiera części urojonej, a argument (faza) jest równy 0 stopni.
PRZYKŁAD WYKORZYSTANIA MatLab Na początek wygenerujmy sobie macierz zawierającą przedział od 0 do 2 podzielony na 200 punktów poleceniem x=[0:pi/100:2*pi]. Teraz spróbujmy wyliczyć sinus dla każdego z tych punktów, zawierając wyniki w macierzy y – y=sin(x). W ten oto prosty sposób otrzymaliśmy współrzędne punktów dla naszego wykresu. Teraz jeszcze tylko musimy zastosować polecenie plot(x,y), by otrzymać piękny przebieg. Stosując polecenie plot(x,y,’.’) zmienia się nieco graficzne przedstawienie wykresu, bowiem punkty przestają być połączone ze sobą (pokazane są jedynie pojedyncze punkty tworzące wykres). Spróbujmy teraz przenieść nasze doświadczenie na oś czasu. Najpierw generujemy oś czasu t=[1:1:9], gdzie 1 w środku jest czasem próbkowania ¯° 1 (czas próbkowania jest odwrotnością częstotliwości próbkowania równej 1Hz). Rozpiszmy teraz dwie macierze – macierz czasu t oraz macierz sinusoidy y: ¯
1 2 √2 1 n 2
3 4 5 6 7 8 9 √2 √2 √2 √2 0 1 0 2 2 2 2
Proszę zwrócić uwagę, iż drugie 0 pojawia się w 8 sekundzie, co oznacza, iż częstotliwość sinusoidy to
². Składając wszystko w logiczną całość, otrzymujemy uniwersalny wzór na sinusoidę: ±
Oraz
n sin2 ¯ ¯ ³:
1 : ´ °
Gdzie jest początkiem przedziału czasu, a jego końcem. Natomiast jest skokiem (odstępem) z jakim
µ
mają być generowane kolejne elementy macierzy czasu. Przykładowo – w przypadku t=[0:0.0001:0.1] częstotliwość próbkowania to 10 000 Hz, co jest już dość dużą częstotliwością, dzięki której powinniśmy uzyskać precyzyjny wykres. Wraz ze spadającą częstotliwością próbkowania, otrzymujemy coraz mniej precyzyjny wykres sinusoidy (mniej płynne zmiany – bardziej kanciasty i ostry przebieg sygnału). Spróbujmy teraz zmieszać ze sobą dwie sinusoidy – wpisując s1=sin(2*pi*t*50) i s2=sin(2*pi*t*200) otrzymujemy sinusoidę o częstotliwości 50Hz i 200Hz. Teraz sumujemy je w jeden sygnał poleceniem s=s1+s2 i dokonujemy wizualizacji za pomocą komendy plot(t,s). Na koniec wygenerujemy w MatLab’ie sygnał sinc, który opisany jest wzorem ¡_ L K . Pierwszy krok to utworzenie skali czasowej – t=[-20:0.1:20]. Następnie tworzymy sinusoidę s1=sin(t). Później dokonujemy dzielenia s=s1./t (proszę nie zapomnieć o kropce w tym miejscu, która pełni rolę „zabezpieczenia” obliczeń) oraz wizualizacji poleceniem plot(t,s). K
PRZYDATNE FUNKCJE Pełniejszy spis funkcji wraz z ich zastosowaniem znajduje się w opracowaniu Pana doktora Korohody. 24
FUNKCJA
OPIS
quit
zakończenie pracy z pakietem Matlab (zamknięcie wszystkich okien pakietu i skasowanie danych)
clear
usuwanie z pamięci wszystkich zmiennych lub wskazanej zmiennej
who
wyświetla nazwy wszystkich zmiennych istniejących w pamięci, tzn. stworzonych w trakcie danej sesji lub przywołanych z pliku
whos
j.w. oraz ponadto pokazuje wymiary każdej ze zmiennych
help
wyświetla opis podanej funkcji lub słowa kluczowego
format
zmienia format wyświetlania liczb (najczęściej używane opcje to: short i long)
length
zwraca ilość elementów wektora (wierszowego lub kolumnowego)
size
zwraca dwuelementowy wektor (dwie liczby) - liczbę wierszy i liczbę kolumn danej macierzy
plot
do tworzenia wykresów dwuwymiarowych przy liniowym opisie obu osi - można dobierać sposób wykreślania (linia ciągła, linia przerywana, za pomocą symboli), kolor itd.
Operatory arytmetyczne (odnoszą się do macierzy!): OPERATOR
OPIS
∗
mnożenie (dla macierzy nie jest przemienne)
/
dzielenie
\
dzielenie lewostronne (ważne w przypadku macierzy)
+
dodawanie
-
odejmowanie
^
potęgowanie
‘
transponowanie (UWAGA: w przypadku macierzy zespolonych nie jest to tylko zamiana wierszy i kolumn, ale dodatkowo sprzężenie)
.* .^ ./
kropka przed operatorem powoduje wykonanie operacji element po elemencie - mnożenia, potęgowania lub dzielenia
inv
obrót macierzy
Funkcje pozwalające na szybkie tworzenie macierzy i skalarów: FUNKCJA
OPIS
ones
tworzy macierz o zadanych wymiarach wypełnioną samymi jedynkami
zeros
tworzy macierz o zadanych wymiarach wypełnioną samymi zerami 25
eye
rand
tworzy macierz o zadanych wymiarach wypełnioną zerami z wyjątkiem przekątnej głównej, wypełnionej jedynkami tworzy macierz o zadanych wymiarach wypełnioną liczbami w przedziale od 0 do 1 wylosowanymi za pomocą generatora liczb pseudolosowych o równomiernym rozkładzie
Wybrane funkcje matematyczne: FUNKCJA
OPIS
sin
sinus - kolejno dla każdej wartości macierzy podanej jako parametr wejściowy
cos
kosinus - kolejno dla każdej wartości macierzy podanej jako parametr wejściowy
tan
tangens - kolejno dla każdej wartości macierzy podanej jako parametr wejściowy
atan
arcus tangens - kolejno dla każdej wartości macierzy podanej jako parametr wejściowy (wynik z przedziału od -pi/2 do +pi/2, zgodnie z def. funkcji)
log
logarytm naturalny - kolejno dla każdej wartości macierzy podanej jako parametr wejściowy
exp
eksponenta (czyli liczba e do zadanej potęgi) - kolejno dla każdej wartości macierzy podanej jako parametr wejściowy
sqrt
pierwiastek kwadratowy - kolejno dla każdej wartości macierzy podanej jako parametr wejściowy (zamiast tej funkcji można stosować operator potęgowania: ^(0.5) )
Funkcje do operacji na liczbach zespolonych: FUNKCJA
OPIS
real
część rzeczywista z podanej liczby (lub macierzy)
imag
część urojona z podanej liczby (lub macierzy)
abs
moduł z podanej liczby (lub macierzy)
angle
faza dla podanej liczby (lub macierzy)
PODSTAWOWE SYGNAŁY LEKCJA DRUGA
DELTA DIRACA δ(t)
26
W Cyfrowym Przetwarzaniu Sygnałów często pojawia się pojęcie delty Diraca (ang. Dirac delta function), inaczej funkcji impulsowej. Jest ono czysto teoretyczne, bowiem sygnał ten w całym czasie swojego trwania jest równy 0, natomiast w czasie równym t=0 sygnał jest równy ∞, co zapisujemy: ·¯ ¸
0, ∞,
ś¹ ¯ º 0 » ś¹ ¯ 0 1
¯
0 Rys. Delta Kroneckera
Należy w tym miejscu podkreślić, iż pole (całka) delty Diraca ma wartość 1, a amplituda to ∞. Oczywiście istnieje pewne przybliżenie delty Diraca w postaci delty (symbolu) Kroneckera (ang. Kronecker delta), której definicja to: ·JX ¸
0, 1,
ś¹ º » ś¹
0, 1,
ś¹ ¯ º 0» ś¹ ¯ 0
Dla nas delta Kroneckera będzie wyglądała nieco inaczej: ·¯ ¸
SKOK JEDNOSTKOWY 1(t) Skok jednostkowy (ang. unit step function – stąd czasem oznaczany jako u(t) ) nazywany jest również funkcją skokową Heaviside’a (ang. Heaviside step function), przez co oznacza się ją również jako H lub H(t). ²¯ ¸
0, 1,
1
¹ ¯ 0» ¹ ¯ ¼ 0
0
¯
Rys. Skok jednostkowy
IMPULS PROSTOKĄTNY Π(t) Impuls prostokątny (rectangular function) inaczej nazywany jest bramką prostokątną i oznaczany za pomocą dużej litery pi ½ lub skrótu rect¯.
27
Á1, ¿ 1 rect¯ ½¯ , À2 ¿ ¾ 1,
1 2 1 ¹ |¯| » 2 1 ¹ |¯| 2
¹ |¯| Â
1
1 2
1 2
0
¯
Rys. Impuls prostokątny
wyłącznie i !
Oczywiście nie możemy zapominać, iż dla impulsu prostokątnego granicznymi wartościami NIE SĄ tylko i
ZNAK DZIEDZINY/FUNKCJA ZNAKU sgn(t) Z angielska funkcja nazywana jest sign (signum) function. Jej definicja to: 1, sgn¯ Ã0, 1, 1
0
¹ ¯ Â 0 ¹ ¯ 0» ¹ ¯ 0
¯
1
Rys. Funkcja znaku
SYGNAŁ WYKŁADNICZY NARASTAJĄCY Po angielsku exponential growth, opisany równaniem (proszę zwrócić uwagę na obecność skoku jednostkowego w równaniu, który niejako blokuje możliwość istnienia sytuacji, w której x nie jest równy zero dla t<0): 1 MÄÅ ¯, L¯ ¸ 0,
¹ ¯ ¼ 0» ¹ ¯ 0
28
1
¯ 0 Rys. Sygnał wykładniczy narastający
SYGNAŁ WYKŁADNICZY MALEJĄCY Po angielsku exponential decay, opisany równaniem: L¯ ¸
V MÄÅ , 0, V
¹ ¯ ¼ 0» ¬ Æ Â 0 ¹ ¯ 0
¯
0 Rys. Sygnał wykładniczy malejący
FUNKCJA SINC sinc t Jest to jedna z najważniejszych funkcji, występująca po angielsku pod podobną nazwą - sinc function. Funkcja pojawia się też czasami jako funkcja interpolująca lub oznaczana jako Sa¯. sinc¯
sin¯ ¯
Korzystając z twierdzenia d’Hospitala, jesteśmy w stanie wyznaczyć jej wartość w zerze:
sin¯ cos¯ cos0 lim sinc¯ lim lim 1 Ê Ê Ê ¯ 1 1
29
1
¯
0 Rys. Funkcja sinc
Rysunek oczywiście jest mocno nieudolny, ale mam nadzieję, iż we właściwy sposób oddaje sens tej funkcji.
FALA PROSTOKĄTNA BIPOLARNA Po angielsku bipolar square wave, fala opisana jest wzorem:
V, ¹ ¯ Ë Ì, Ì Í L¯ ÃV, ¹ ¯ Ë Ì Í, Ì Ì» 0, ¹ ¯ · Ì, Ì Í V
L¯ 0
V
Í
Ì
¯
Rys. Fala prostokątna bipolarna
FALA PROSTOKĄTNA UNIPOLARNA Fala unipolarna (unipolar square wave) od bipolarnej różni się tym, iż amplituda fali unipolarnej nie zawiera wartości ujemnych. L¯
ÁV, ¿ À ¿ ¾
Í Í ¹ ¯ Ë §Ì , Ì ª 2 2 » V Í , ¹ ¯ Ì ¦ 2 2 0, ¹ ¯ pozostałych
30
V
Í
0
L¯
Í
¯
Ì
Rys. Fala prostokątna unipolarna
Podział sygnałów Na koniec należy wspomnieć, iż sygnały możemy podzielić ze względu na czas trwania (sygnały okresowe, nieokresowe, impulsowe, nieskończone) i energię (o ograniczonej i nieograniczonej energii). Sygnały impulsowe o ograniczonej energii to np. impuls prostokątny i trójkątny. Sygnały o nieskończonym czasie trwania i ograniczonej energii to przykładowo sygnał wykładniczy malejący oraz sinc. Przebiegi nieokresowe o ograniczonej mocy średniej to między innymi skok jednostkowy, funkcja znaku oraz sygnał wykładniczy narastający. Z przebiegów okresowych warto wymienić sygnał sinusoidalny oraz falę prostokątną (bipolarną i unipolarną).
APROKSYMACJA LEKCJA TRZECIA
Pod pojęciem aproksymacji (ang. approximation) kryje się działanie zmierzające do przybliżenia pewnego sygnału za pomocą kilku innych dostępnych sygnałów, wyznaczając jedynie odpowiednie współczynniki. Dzięki takiemu procesowi, możemy uzyskać efekt kompresji. By lepiej zrozumieć problem, spróbujmy przybliżyć sygnał ¯ za pomocą funkcji ¯, ¯ i ¯. ¯, ¯ ¸ 1, ¯
1 0
¹ 0 ¯ 1» ¹ 1 ¯ 2
1
1
¯
Rys. Aproksymowany sygnał s(t)
31
Funkcje jakie wykorzystamy do aproksymacji to: ¯ 1
¯ ¯
¯ ¯
Poniżej znajduje się bodaj wzór na błąd jaki uzyskujemy podczas aproksymacji (podniesienie do kwadratu różnicy pozwala na zminimalizowanie małych błędów i uwidocznienie dużych). Reasumując, dążymy do jak najmniejszego Ð:
Ð Ñ , ̃ ̃ ¯
Gdzie to nasz sygnał ¯, natomiast ̃ to przebieg przybliżony występujący w formie: ̃ ¯ ¯ ¯ ¯ ¯
Otrzymujemy przez to funkcję wielu zmiennych Ð , , . Musimy teraz znaleźć takie wartości współczynników , i , by błąd był jak najmniejszy. W jaki sposób? Otóż użyjemy pochodnej cząstkowej, przyrównując ją do zera (pochodna jest nieskończenie małą zmianą – nam chodzi o znalezienie tak małej zmiany, by była jak najbliższa zeru):
ÓÑ , ̃ 0 Ó
Ð , , ¯ ¯ ¯ ¯ 1 ¯ ¯ ¯
A więc zabieramy się do liczenia pochodnych:
ÓÑ , ̃ ^¯ ¯ ¯ ` ¯ ^1 ¯ ¯ ` ¯ 0 Ó
Ponieważ mamy tutaj zarówno funkcję zewnętrzną, jak i wewnętrzną, stąd najpierw policzmy pochodną funkcji wewnętrznej po : Ó ¯ ¯ ¯ 0 1 0 0 1 Ó
Teraz policzmy pochodną funkcji zewnętrznej, od razu łącząc ją z powyżej obliczoną funkcją wewnętrzną: Ó ¯ ¯ ¯ 2 ¯ ¯ ¯ 1 2 ¯ ¯ ¯ Ó
Dzięki czemu otrzymujemy:
ÓÑ , ̃ 2 ¯ ¯ ¯ ¯ 2 1 ¯ ¯ ¯ Ó
32
Reasumując, (dla tych, którzy nie pamiętają jak się liczyło tego typu pochodną) całość obliczeń można zapisać w następujący sposób: Ó Ó ¯ ¯ ¯ 2 ¯ ¯ ¯ ¯ ¯ ¯ Ó
Ó
Na niebiesko oznaczona jest pochodna funkcji zewnętrznej, natomiast na czerwono, pochodna funkcji wewnętrznej. Nie tracąc jednak czasu przechodzimy dalej – czas obliczyć całki oznaczone:
ÓÑ , ̃ 2 ¯ ¯ ¯ ¯ 2 1 ¯ ¯ ¯ Ó
1 2 ÓÑ , ̃ 1 1 1 1 1 2 ) ¯ ¯ ¯ ¯ * 2 )¯ ¯ ¯ ¯ * Ó
3 2 3 2 3 0 1
Ze względu na deficyt miejsca, rozbijemy tutaj rozwiązanie na dwie części (następne pochodne będą jednak rozwiązywane mniej dokładnie): 1 1 1 1 1 1 1 V ) ¯ ¯ ¯ ¯ * ) 1 1 1 1 * 0 3 2 3 3 2 3 0 1 1 1 3 2 3
2 1 1 1 1 1 1 [ )¯ ¯ ¯ ¯ * )2 2 2 2 * )1 * 2 3 2 3 2 3 1 8 1 1 3 7 [ 2 2 2 1 1 3 2 3 2 3 ÓÑ , ̃ 1 1 1 3 7 2 ) * 2 )1 * Ó
3 2 3 2 3
2 2 14 8 16 ÓÑ , ̃ 2 2 2 3 4 4 0 Ó
3 3 3 3 3 8 16 4 4 0 3 3 4 4
16 8 3 3
4 2 3 3
Udało nam się wyliczyć pierwsze z trzech równań. Teraz czas na kolejne:
ÓÑ , ̃ ^¯ ¯ ¯ ` ¯ ^1 ¯ ¯ ` ¯ 0 Ó
Jednocześnie w tym miejscu zaznaczam, iż pochodna funkcji wewnętrznej to: 33
Ó Ó ¯ ¯ ¯ 0 0 ¯ 0 ¯ Ó Ó
Wracając jednak do zadania:
ÓÑ , ̃ ^2 ¯ ¯ ¯ ¯` ¯ ^2 1 ¯ ¯ ¯` ¯ Ó
ÓÑ , ̃ 2 x¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯y Ó
1 2 ÓÑ , ̃ 1 1 1 1 1 1 1 1 2 a) ¯ ¯ ¯ ¯ * ) ¯ ¯ ¯ ¯ * d 4 2 3 4 2 2 3 4 Ó 0 1
ÓÑ , ̃ 1 1 1 1 8 1 1 1 1 2 )2 2 4 * Ó 4 2 3 4 3 2 2 3 4 1 8 1 7 8 ÓÑ , ̃ 2 ) 2 2 4 * 2 ) 2 4 * 0 Ó 4 3 2 4 3 7 8 2 4 0 4 3 8 7 2 4 3 4
Teraz ostatnia z pochodnych, liczona względem współczynnika a3:
ÓÑ , ̃ ^¯ ¯ ¯ ` ¯ ^1 ¯ ¯ ` ¯ 0 Ó
ÓÑ , ̃ 2 x ¯ ¯ ¯ ¯ ¯ ¯ 1 ¯ ¯ ¯y Ó
ÓÑ , ̃ 2 x¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯y Ó
1 2 ÓÑ , ̃ 1 Ô 1 1 1 1 1 1 1 Ô Ô 2 a) ¯ ¯ ¯ ¯ * ) ¯ ¯ ¯ ¯ * d Ó 5 3 4 5 3 3 4 5 0 1 ÓÑ , ̃ 1 8 8 32 1 2 ) 4 * 0 Ó 5 3 3 5 3 32 38 8 4 5 15 3
34
16 19 4 2 5 15 3
Teraz, mając wszystkie trzy równania, musimy wyliczyć współczynniki. Można tego dokonać macierzowo: 1 1 8/3 a 2 4/3 2
Bez względu na metodę, otrzymujemy wynik: 0,25
4/3
2/3 4 d a d a 7/4 d 16/5 19/15
1,5
Dzięki czemu wiemy, iż aproksymacja będzie miała formę:
0,4375
1 3 7 ̃ ¯ ¯ ¯ ¯ 4 2 16
Na koniec otrzymujemy taki oto wykres przedstawiający na niebiesko sygnał, a na zielono jego aproksymację (wykresy wykonane na stronie http://rechneronline.de/function-graphs/).
ORTONORMALNOŚĆ i ORTOGONALNOŚĆ LEKCJA CZWARTA
Cytując za wikipedią: 35
Ortogonalność (z gr. ortho – proste, gonia – kąt) – uogólnienie pojęcia prostopadłości znanego z geometrii euklidesowej na przestrzenie z określonym iloczynem skalarnym (przestrzenie unitarne). Ortonormalność – ortogonalność wraz z dodanym warunkiem unormowania, tzn. wymagania, aby elementy ortogonalne miały długość jednostkową (były wersorami). Jest to podstawowa własność wektorów bazy ortonormalnej danej przestrzeni unitarnej.
ORTOGONALNOŚĆ (orthogonality) Teraz musimy wywnioskować cóż nam po tym, że coś jest ortonormalne, czyli ortogonalne. Na początek potrzebujemy dwóch dowolnych wektorów: h ^0 , 2 , 3 , 8`
j ^1 , 2 , 4 , 1`
Wedle definicji, dwa wektory są do siebie ortogonalne jeśli: L , n  0
No tak… bardzo ładna definicja, lecz cóż z nią począć? Otóż powyższe równanie mówi nam, iż iloczyn skalarny (dot product) dwóch wektorów ma być równy 0, czyli: h Õ j ^0 , 2 , 3 , 8` Õ ^1 , 2 , 4 , 1` 0 1 2 2 3 4 8 1 0 4 12 8 0
W iloczynie skalarnym dwóch wektorów, mnożymy każdy element z odpowiadającym mu elementem w drugim wektorze, a następnie wyniki dodajemy do siebie. Można to zapisać z sumą jako: ×
L , n Â Ö L¡n¡ Ø
gdzie Ù to liczba elementów wektora (np. dla wektora h, Ù 4). Skoro już wiemy jak sprawdzić ortogonalność wektorów (ich prostopadłość), ponownie odwołamy się do wikipedii, przytaczając jeden z przykładów (http://en.wikipedia.org/wiki/Orthogonality#Examples): „The vectors
V ^1 , 3 , 2`
are orthogonal to each other, since
[ ^3 , 1 , 0`
1 5 ] ,1 , 3 3
V Õ [ 1 3 3 1 2 0 0
1 5 [ Õ ] 3 1 1 0 ) * 0 3 3 1 5 V Õ ] 1 3 1 2 ) * 0 3 3
Observe also that the dot product of the vectors with themselves are the norms of those vectors, so to check for orthogonality, we need only check the dot product with every other vector.”
ORTONORMALNOŚĆ (orthonormality) 36
Jak zostało to odnotowane wcześniej, wektory, które są do siebie ortonormalne, są zarówno prostopadłe (ortogonalne) jak i unormowane. Definicja unormowania jest następująca: L , L Â 1
Co oznacza, iż oba nasze wcześniejsze wektory (X i Y) nie są wektorami unormowanymi, bowiem: h Õ h ^0 , 2 , 3 , 8` Õ ^0 , 2 , 3 , 8` 0 4 9 64 77 j Õ j ^1 , 2 , 4 , 1` Õ ^1 , 2 , 4 , 1` 1 4 16 1 22
Istnieje jednak proces pozwalający na normalizację wektora (unormowanie wektora) używając następującego wzoru: L L ÚLÚ √ L , L Â
gdzie ÚLÚ to tzw. norma. Spróbujmy znormalizować wektor D: Û ^0 , 4 , 2 , 4`
Û , Û Â 0 4 4 2 2 4 4 16 4 16 36 Ü
ÚÛÚ ! Û , Û Â √36 6
^0 , 4 , 2 , 4` Û 4 2 4 2 1 2 0 , , , 0 , , , ÚÛÚ 6 6 6 6 3 3 3
Ü , Ü Â 0
2 2 1 1 2 2 4 1 4 9 ) * ) * 1 3 3 3 3 3 3 9 9 9 9
gdzie wektor E jest unormowanym wektorem D. Reasumując, warunek ortonormalności można zapisać w sposób następujący: L , n  ¸ Co jest niczym innym jak deltą Kroneckera.
0, 1,
L º n» L n
EFEKTY ORTONORMALNOŚCI Na koniec pozostaje pytanie, po co nam ortonormalne wektory? Składając kilka wektorów w macierz, otrzymujemy bazę. Stwórzmy przykładową bazę z wektorów: V ^4
Wektory są do siebie ortogonalne:
Wykonajmy teraz mnożenie:
2`
4 h e 2
[ ^2 4` 2 f 4
V , [ Â 4 2 2 4 0 37
l j h ^3
j ^3
4 1` e 2
1`
2 f ^14 2` 4
Teraz problem pojawia się, jeśli chcemy uzyskać odwrotne działanie, czyli: j l
1 l h M
h
Bowiem wymaga od nas wielu obliczeń prowadzących do obrócenia macierzy X. Oczywiście w MatLabie załatwiamy wszystko jednym poleceniem inv(X), lecz mając dostępną jedynie kartkę musimy przejść przez wszystkie trudy obracania macierzy: h M
Macierz minorów:
1 h~ det h
4 2 det h s s 4 4 2 2 16 4 20 2 4
Macierz dopełnień algebraicznych:
4 2 WmJX Y e f 2 4
^hJ\ ` 1Jw\ WmJX Y e4 2f 2 4
Macierz transponowana:
4 2 f h ~ ^hJ\ `z e 2 4
Macierz odwrotna: h M I teraz ponowne mnożenie:
1 1 0,2 0,1 4 2 h ~ ) * e f e f 0,1 0,2 2 4 det h 20
j l h M ^14
0,2 0,1 f ^3 2`e 0,1 0,2
n 14 0,2 2 0,1 2,8 0,2 3
1`
n 14 0,1 2 0,2 1,4 0,4 1
Pytanie – czy da się szybciej? Owszem. Lecz macierz przejścia musi być ortonormalna. Wiemy, że oba wektory są ortogonalne, lecz czy są unormowane? V , V Â 16 4 20
Znormalizujmy wektory:
[ , [ Â 4 16 20
38
Û
^4 2 ` ^4 2 ` 2 1 V ÚVÚ 2√5 √5 √5 √20
Ü
^2 4` 1 2 [ Ú[Ú √5 √5 √20
Po unormowaniu możemy jeszcze sprawdzić ponownie ortogonalność: Û , Ü Â
2
1
√5 √5
Reasumując otrzymaliśmy dość dziwną bazę:
1
√5
)
2
* 0 √5
2 1 q v √5 √5 p u h p1 2u o√5 √5t
Spróbujmy teraz obrócić macierz unormowaną:
2
Macierz dopełnień algebraicznych:
Macierz transponowana:
Macierz odwrotna:
1 h~ det h
√5 Ý 2 ) 2 * 1 1 4 1 1 2 Ý √5 5 5 √5 √5 √5 √5 √5
det h ÝÝ√5 1 Macierz minorów:
1
h M
2 1 q v √5 √5 u WmJX Y p 2u p 1 o √5 √5t
2 1 q v √5u ^hJ\ ` 1Jw\ WmJX Y p √5 1 2 p u o √5 √5 t 2 1 q v √5u h ~ ^hJ\ `z p √5 1 2 p u o √5 √5 t
39
h M
2 1 2 1 q v v q 1 1 √5 √5 √5 √5 ~ u p u h ) * p 2 u p1 2u det h 1 p 1 o √5 √5 t o√5 √5t
Jaki otrzymujemy wniosek? Iż macierz ortonormalna po obróceniu jest taka sama: h
1 h
Proszę zwrócić uwagę, iż bez obracania macierzy, wciąż otrzymujemy te same wyniki: j h ^3
2 1 q v 2 1 √5 √5 p u )3 * 1` 1 2 √5 √5 p u o√5 t √5
)3
1
√5
1 7 1 * ^14 √5 √5 √5 √20 2
2`
2 1 q v 7 1 7 2 1 1 7 1 1 2 15 5 √5 √5 p u ) * ) * ^3 1 ` l h 5 5 √5 √5 p 1 2 u √5 √5 √5 √5 √5 √5 √5 √5 o√5 √5t
Do wykazania tej prawidłowości użyta została macierz 2 na 2, bowiem obracanie macierzy 3 na 3 to bardzo nieprzyjemna rzecz, biorąc pod uwagę, że jeszcze później trzeba ją znormalizować… Ale jeśli ktoś ma chęci i nerwy, to zapraszam do zabawy! :)
NORMALIZACJA w MatLab’ie Podczas jednego z kolokwiów pojawiło się zadanie – opisz jak znormalizować wektor ortogonalny wraz instrukcją do MatLab’a. W tym miejscu pojawi się rozwiązanie od razu dla całej bazy będącej macierzą 8 na 8 (przykładowo – pierwsze 8 funkcji Haara, które są w stosunku do siebie ortogonalne, lecz nie ortonormalne). 1. Baza Haara jest ortogonalna ( ; ß Â 0), lecz nie jest ortonormalna (( ; º 1 lub Ú Ú º 1. Zakładamy, iż baza została zdefiniowana w MatLabie pod nazwą haar. 2. Normalizacji dokonujemy przez obliczenie iloczynu skalarnego każdego z wektorów bezy według wzoru: ×
1 àJ ; àJ Â Ö àJ àJ Ù JØ
Co w MatLabie zapisujemy skalar=dot(haar(:,1),haar(:,1)./8 lub by otrzymać pełen zakres skalar=dot(haar(:,:),haar(:,:)./8.
3. Następnie dzielimy każdy z wektorów przez pierwiastek z iloczynu skalarnego wedle wzoru: áJ
àJ
! àJ ; àJ Â
40
W MatLabie możemy wykonać ten krok na 2 sposoby: a) tworzymy z macierzy skalar macierz 8 na 8 przez trzykrotne powtórzenie polecenia skalar=[skalar;skalar] b) używamy jednego polecenia skalar=(ones(1,8)’)*skalar. Następny krok jest już wspólny – bazę Haara normalizujemy formułą haar=haar./(sqrt(skalar)). Zawsze na koniec można dokonać jeszcze sprawdzenia normalizacji poleceniem dot(haar(:,:),haar(:,:)./8, co powinno dać nam wynik ¡ 1 1 1 1 1 1 1 1. Jednocześnie można wykazać ortogonalność bazy stosując komendę dot(haar(:,:),haar(:,[8:-1:1])./8 (aczkolwiek polecenie to nie sprawdza wszystkich możliwych kombinacji, a jedynie pierwszy z ostatnim, drugi z siódmym, etc.).
BAZY HAARA i WALSHA LEKCJA PIĄTA
BAZA HAARA Definicja funkcji Haara pochodzi ze strony http://mathworld.wolfram.com/HaarFunction.html. Opisane są one następującym wzorem: £¯
1 2 » 1 ¯1 2 ¯
Á 1, ¿
0¯
À1, ¿ ¾ 0,
£X\ ¯ £U2X ¯ Z
gdzie jest liczbą nieujemną, natomiast należy do przedziału 0 2X 1. Obliczmy pierwsze 8 funkcji Haara stosując powyższy wzór:
funkcja
interpretacja graficzna
âã,ã ä â|ã ä ã âä âä
Á , ¿
À, ¿ ¾ ã,
0¯
|
» ä1 | åæç}äè
1
1
t
0
-1
41
â,ã ä â| ä ã â|ä â|ä
Á , ¿
À, ¿ ¾ ã,
é » ä é | åæç}äè
0¯
â, ä â|ä â|ä
Á , ¿
À, ¿ ¾ ã,
ê ä | é » ê ä1 é åæç}äè
â|,ã ä âéä âéä
Á , ¿
À, ¿ ¾ ã,
ë » ä ë é åæç}äè
0¯
â|, ä âéä âéä
Á , ¿
À, ¿ ¾ ã,
ê ä é ë ê » ä ë | åæç}äè
â|,| ä âéä | âéä |
Á , ¿
À, ¿ ¾ ã,
ì ä | ë ì ê» ä ë é åæç}äè
â|,ê ä âéä ê âéä ê
Á , ¿
À, ¿ ¾ ã,
ê í ä é ë » í ä1 ë åæç}äè
1
1
t
1
t
0
-1
1
0
-1
1
1
t
1
t
0
-1
1
0
-1
1
1
t
1
t
0
-1
1
0
-1
Oczywiście, wszystko to można zawrzeć w jednej macierzy, w postaci 8 wektorów połączonych w jedną bazę (należy w tym miejscu nadmienić, iż pierwsza funkcja Haara jest równa 1 w całym przedziale t od 0 do 1): 42
1 q1 p1 p 1 £ p p1 p1 p1 o1
1 1 1 1 1 1 1 1
1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0
0 0v 0u u 0u 0u 0u 1u 1t
Powyższa macierz zwana jest macierzą przejścia. Przykładowo – mamy pewien sygnał w bazie Haara: LJ ^6 2
1 1 `z
I chcemy powrócić do bazy kanonicznej. Indeks T przy nawiasie macierzy oznacza, iż ma być ona transponowana (nie jest ona pozioma, lecz pionowa). W tym celu musimy przemnożyć macierz przejścia, przez sygnał: LîïÅ
1 1 ð 1 1
1 1 0 6 9 1 1 0 7 2 ñð ñ ð ñ 1 0 1 5 1 1 0 1 1 3
Mnożenie macierzy przejścia i sygnału wejściowego jest bardzo proste, ponieważ macierz przejścia zawiera jedynie jedynki i zera (np. LîïÅ , 1 6 1 2 1 1 0 1 9) co mocno ułatwia sprawę, aczkolwiek problem pojawia się gdy chcemy przejść z bazy kanonicznej do bazy Haara. Można tego dokonać pewnym prostym schematem. Na początek jednak spróbujmy przekonwertować nieco dłuższy sygnał:
îïÅ
1 q1 p1 p 1 p p1 p1 p1 o1
J ^3 6
1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0
2 5
0 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0
7 3 1
8`z
3 18 0 0 0 v q v q 6 4 v 0 0 0 1 0 0 u p2u p 10 u u p u p u 1 0 0 u p5u p 4 u 0 1 0 u p7u p 3 u 0 1 0 u p3u p 1 u 0 0 1 u p1u p 0 u 0 0 1t o8t o16t
Wiemy w tym miejscu, iż z macierzy ^18 4 10 4 3 1 0 16`z w bazie Haara powinniśmy dostać J ^3 6 2 5 7 3 1 8`z w bazie kanonicznej. Metoda z zastosowaniem schematu polega na uśrednianiu parami kolejnych wartości występujących w sygnale: 18
4 ëwé |
11
10
4
w
wí |
9
7
3
1 w
2
0
–16 wM ®
wM±
–3
–8
43
òwMê |
3
Teraz należy znaleźć różnice między poszczególnymi krokami, np. między 11 4 7, 8 16 8, co zapisujemy:
18
4 11
10
4
7
3
3
7
1 2
0
1
8
–8
2
9
–16
–3
5
6
3
Pierwszym elementem macierzy w bazie Haara jest wynik ostatniego uśredniania, czyli 3. Następnie odczytujemy po kolei od dołu do góry, od prawej do lewej poszczególne cyfry (wyniki różnic). Dla ostatniego wiersza tabeli jest to 6, dla środkowego 2 i 5, natomiast dla pierwszego to 7, 3, 1 i 8. Jak widać, wynik doskonale zgadza się z wcześniejszymi założeniami dla J ^3 6 2 5 7 3 1 8`z . ówM
BAZA WALSHA Opis funkcji Walsha wzorem matematycznym nie jest najprostszy. Na początek potrzebujemy funkcji podstawowej w postaci:
¢ ¯ ¸
¢ ¯ 1,
¢ 2¯, ¢ 2¯ 1,
Co możemy graficznie zinterpretować:
1
0
0,5
1
¹ 0 ¯ 1
0 ¯ 0,5» 1, ¸ 1, 0,5 ¯ 1
0 ¯ 0,5» 0,5 ¯ 1
1
á
0
0,5
1
á
-1
-1
Ze względu na iteracyjny charakter funkcji Walsha, kolejne funkcje będą generowane za pomocą funkcji poprzednich: V,
[,
¢ôw ,ßM ¯ õ ¢ôw ,ß ¯ õ
1ß
1ßw
¢ô,ß 2¯, ¢ô,ß 2¯ 1,
¢ô,ß 2¯, ¢ô,ß 2¯ 1,
0 ¯ 0,5» 0,5 ¯ 1
0 ¯ 0,5» 0,5 ¯ 1
44
Gdzie
1, 2, 3, … 1, 2, 3, … 2ôM
Kolejne funkcje numeruje się według wzoru:
¢ ¯ ¢ô,ß ¯
¡ 2ôM 1
Przykładowo, chcąc utworzyć drugą funkcję musimy przejść następujące kroki. Wyjściowo zakładamy najmniejsze możliwe 1. Dla takiego , współczynnik może być równy maksymalnie: 2ôM 2 M 2 1
Stosujemy teraz wzór (A):
¢ôw ,ßM ¯ õ
¢, ¯ õ
¢ô,ß 2¯ » 1ß ¢ô,ß 2¯ 1
¢ , 2¯ » õ ¢ , 2¯ »
1 ¢ , 2¯ 1 ¢ , 2¯ 1
Funkcja ¢ , 2¯ to inaczej w numeracji ¡: Natomiast funkcja ¢, 2¯ to: Czyli otrzymujemy:
¡ 2ôM 1 2 M 1 1 1 ¡ 2M 1 2 1 1 2
¢ ¯ ¸
¢ 2¯, ¢ 2¯ 1,
0 ¯ 0,5» 0,5 ¯ 1
Przed interpretacją graficzną musimy wyliczyć jakie wartości będzie przyjmowała funkcja ¢ ¯ dla konkretnych ¯. Przykładowo, dla ¢ 0 ¢ 2 0 ¢ 0. Teraz musimy sprawdzić jaką wartość przyjmuje funkcja ¢ ¯ dla ¯ 0. W wyniku otrzymujemy 1. Teraz podstawmy przykładowo wartość ¢ ¯ 0,8. Dla ¯ z przedziału 0,5 ¯ 1 funkcja przyjmuje postać: ¢ 2¯ 1 ¢ 2 0,8 1 ¢ 0,6 1 1
Reasumując otrzymujemy następujący przepis na funkcję ¢ ¯:
A w interpretacji graficznej:
1, 1, ¢ ¯ ÷ 1, 1,
0 ¯ 0,25 0,25 ¯ 0,5» 0,5 ¯ 0,75 0,75 ¯ 1
45
1
0
0,5
1
á
-1
By uzyskać ¢ ¯ stosujemy wzór (B) dla 1 i 1 ¢ôw ,ß ¯ õ
¢, ¯ õ
1ßw
¢ô,ß 2¯, ¢ô,ß 2¯ 1,
¢ , 2¯ ¢ 2¯, » ¸ 1 ¢ , 2¯ 1 ¢ 2¯ 1,
0 ¯ 0,5» 0,5 ¯ 1
0 ¯ 0,5» 0,5 ¯ 1
ôM
1 r ¢ ¯ ¢, ¯ r ¡ 2
¡ 2 21 3
Co po odpowiednich podstawieniach daje nam:
1, 1, ¢ ¯ ÷ 1, 1,
0 ¯ 0,25 0,25 ¯ 0,5» 0,5 ¯ 0,75 0,75 ¯ 1
1
0
0,5
1
á
-1
Wszystko oczywiście możemy zapisać macierzowo w postaci bazy, gdzie kolejne kolumny są kolejnymi funkcjami Walsha (np. druga funkcja Walsha to ¢ ^` ^1 1 1 1 1 1 1 1`z ):
1
q 1 p p1 á¹ p1 p1 p1 p1 o1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1vu 1u 1u 1u 1u 1u 1t
Baza Walsha okazuje się być dużo bardziej praktyczna od bazy Haara, bowiem nie tylko jest ona ortogonalna, lecz również unormowana (ortonormalna). Jakąż to korzyść mamy z takowego stanu? Zostało to już stwierdzone dużo wcześniej, w lekcji piątej (ORTOGONALNOŚĆ i ORTONORMALNOŚĆ). Ujmując rzecz krótko i treściwie, przy przechodzeniu między bazą kanoniczną, a Walsha, nie potrzebujemy żadnych schematów! 46
îïÅ
1 q1 p1 p 1 p p1 p1 p1 o1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
21 2 1 v q q v 3 1v 1 u p1u p5u 1 u p u p u 1u p5u p 3 u 1 u p4u p 3 u 1u p3u p 3 u 1 u p2u p7u 1t o1t o3t
Chcąc powrócić do poprzedniej bazy wykonujemy mnożenie sygnału wyjściowego øîïÅ i macierzy przejścia:
J
1 q1 p1 1 p1 p Ù p1 p1 p1 o1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
21 16 2 1 v q v q v q 1 24 3v 1 p 8 u p1u 1 u p5u u p u p u p u 1u p 3 u 1 p40u p5u 1 u p 3 u 8 p32u p4u 1u p 3 u p24u p3u p16u p2u 1 u p7u o 8 t o1t 1t o3t
Funkcje Walsha posiadają bardzo ciekawą własność, bowiem zarówno po odwróceniu macierzy przejścia, jak i transponowaniu (symetria względem jednej z przekątnych – każdy wiersz ma swój odpowiednik w kolumnie, np. pierwsza kolumna jest taka sama jak pierwszy wiersz, druga kolumna jest taka sama jak drugi wiersz, etc.), wciąż otrzymujemy tą samą macierz. á á M á z
FORMUŁY dla MatLab’a W przypadku używania GNU Octave bez interfejsu graficznego, by wkleić formułę do okienka należy kliknąć prawym przyciskiem myszki w pasek z nazwą okna i z listy wybrać opcję Edytuj, a następnie Wklej. walsh=[1 1 1 1 1 1 1 1;1 1 1 1 -1 -1 -1 -1;1 1 -1 -1 -1 -1 1 1;1 1 -1 -1 1 1 -1 1;1 -1 -1 1 1 -1 -1 1;1 -1 -1 1 -1 1 1 -1;1 -1 1 -1 -1 1 -1 1;1 -1 1 -1 1 -1 1 1] haar=[1 1 1 0 1 0 0 0;1 1 1 0 -1 0 0 0;1 1 -1 0 0 1 0 0;1 1 -1 0 0 -1 0 0;1 -1 0 1 0 0 1 0;1 -1 0 1 0 0 -1 0;1 -1 0 -1 0 0 0 1;1 -1 0 -1 0 0 0 -1]
SPLOT LEKCJA SZÓSTA
KONWOLUCJA (convolution) Splot całkowy inaczej nazywany konwolucją (z angielskiego od convolute, czyli „skęcać, zwijać”, co z kolei z łaciny od convolvere, czyli rozbijając od com-, „z, razem; całkowicie, gruntownie, dokładnie” i volvere, czyli „zawijać” – źródło Wikipedia) to operacja, w wyniku której z połączenia dwóch sygnałów 47
otrzymujemy trzeci. Splot funkcji ¯ i ¯ daje nam w wyniku nowy sygnał n¯, który opisany jest wzorem: w
w
n¯ ͯ Í Í ¯ ÍÍ Í M
Natomiast dla sygnałów dyskretnych:
M
n¡ Ö ¡ Ö ¡ \ØM
\ØM
Splot jest operacją, w której jeden z sygnałów jest filtrowany przez drugi. Różne źródła oznaczają go w różny sposób. My będziemy się trzymać oznaczenia krzyżyka w okręgu, czyli ù, żeby dokonać rozróżnienia od symbolu mnożenia . Reasumując wygląda to tak: conv , ¯ ù ¯ ¯
DWIE BRAMKI PROSTOKĄTNE Spróbujmy policzyć splot dyskretny dla dwóch bramek prostokątnych. Dla obu bramek, wartość 1 jest dla próbek o ¡ Ë ^0,5 ; 0,5`: numer próbki
n
-1
-0,75
-0,5
-0,25
0
0,25
0,5
0,75
1
bramka filtrowana
a(n)
0
0
1
1
1
1
1
0
0
Wizualizacja naszej bramki ¡: amplituda 1
a(n)
0,5 numer próbki [n]
-1,25
-1
-0,75 -0,5
-0,25
0
0,25
0,5
0,75
1
Teraz zaczynamy splatać nasze dwie identyczne bramki:
n¡ Ö ¡ \ØM
Ponieważ dopiero od 0,5 nasza bramka filtrowana ma niezerową wartość, stąd właśnie od tego punktu zaczniemy:
n1 Ö 1 0,5 1 0,5 0,25 1 0,25 0 1 û \ØM
n1 1 0,5 0,5 0,25 1 0,25 0 1 û
48
n1 1 1 1 0 1 0 û 1
Jak widać, pierwszy punkt naszego splotu jest równy 0.
n0,75 Ö 0,75 \ØM
n0,75 0,5 0,75 0,5 0,25 0,75 0,25 0 0,75 0,25 0,75 0,25
n0,75 1 0,25 1 0,5 1 0,75 1 1 n0,75 1 1 1 1 1 0 1 0 2
Otrzymaliśmy pierwszy niezerowy punkt. Wyniki te pozwalają nam wysnuć przypuszczenie, iż maksymalna wartość powinna się pojawić dla n0, stąd przeliczmy jeszcze tą część:
n0 Ö 0 \ØM
n0 0,5 0,5 0,25 0,25 0 0 0,25 0,25 0,5 0,5 n0 1 1 1 1 1 5
Zapisując wszystko w ładnej tabeli otrzymujemy następujący efekt (wyniki splotu zostały znormalizowane przez podzielenie ich przez maksymalną możliwą wartość, czyli n0): numer próbki y(n)
interpretacja graficzna
ü, |ì Ö èýþ, |ì ý ã ýØM
ü Ö èýþ ý ýØM
49
üã, íì Ö èýþã, íì ý | ýØM
üã, ì Ö èýþã, ì ý ê ýØM
üã, |ì Ö èýþã, |ì ý é ýØM
üã Ö èýþã ý ì ýØM
üã, |ì Ö èýþã, |ì ý é ýØM
50
amplituda 1
a(n)
y(n) 0,5 numer próbki [n]
-1
-1,25
-0,75 -0,5
0
-0,25
0,25
0,5
0,75
1
1,25
Jak widać, splotem dwóch identycznych bramek jest sygnał trójkątny. Jest to dość istotne spostrzeżenie, dzięki któremu można później wciągnąć bardzo ciekawe wnioski – więcej na ten temat w lekcji o transformacie Fourier’a (fragment Trójkąt, Bramka, Splot).
SZEREG FOURIER’a LEKCJA SIÓDMA
WSTĘP Czasem w zadaniu może się pojawić prośba o policzenie dyskretnego widma sygnału. Wtedy pojawia się znak zapytania, bo nie wiadomo o co chodzi. Ale okazuje się, iż w takiej sytuacji jesteśmy proszeni o zwykłe rozwinięcie w szereg Fourier’a. Nie należy jednak mylić rozwinięcia w szereg z DFT opisanym niżej, bowiem w DFT zarówno sygnał, jak i widmo są dyskretne. Rozwijanie w szereg Fourier’a bazuje na kilku prostych wzorkach, których zastosowanie najlepiej poznać na przykładach. Głównym elementem rozwijania w szereg Fourier’a jest obliczenie współczynników _\ : Å wz
Å wz
Å
Å
1 1 _\ ¯ MX\Å ¯ ¯ MX \Å ¯ Ì Ì
Po obliczeniu współczynników _\ , wyznaczamy współczynnik c0 (albo z granicy i twierdzenia D’Hospitala, albo z wartości średniej za pomocą całki): Å wz
1 _ ¯¯ Ì Å
Później składamy wszystko w całość za pomocą wzorów:
.¯ Ö _\ X \Å
\ØM
.¯ 2 Ö^\ cos ¯ \ sin ¯`
Å wz
\Ø
1 \ ¯ cos ¯ ¯ Ì Å
Å wz
1 \ ¯ sin ¯ ¯ Ì Å
51
_\ \ \ Na koniec pewna adnotacja, która przydaje się przy sprawdzaniu poprawności rozwiązania – jeśli sygnał jest nieparzysty (tak jak na przykład poniższy sygnał prostokątny, bipolarny albo sygnał sinus), to szereg Fourier’a we współczynnikach _\ będzie zawierał jednostkę urojoną . Kolejna uwaga jest następująca – widmo sygnału ciągłego jest funkcją nieokresową (w przeciwieństwie do widma sygnału dyskretnego). Więcej na ten temat w lekcji ósmej (WIDMA – PODSUMOWANIE). Poniżej znajdują się dwie metody rozwiązywania szeregów Fourier’a. Pierwsza zaczerpnięta z książki Pana Tomasza Zielińskiego, druga natomiast pochodzi ze strony http://www.exampleproblems.com/wiki/index.php/Fourier_Series.
PRZYKŁAD – Sygnał prostokątny, bipolarny V,
0¯
¯ ÷ V,
Ì 2»
Ì ¯Ì 2
Amp
A
|
0
t
T
-A Å wz
z/
z
1 1 _\ ¯ MX \Å ¯ x V MX \Å ¯ V MX \Å ¯y Ì Ì Å
z/
z
V x MX \Å ¯ MX \Å ¯y Ì
z/
z/
Ì Ì Ì/2 Ì/2 V 1 1 V 1 MX \Å MX \Å MX \Å MX \Å » » » »d _\ a) * i ) * i d ) * a i i Ì Ì Ì/2 Ì/2 0 0 _\
z z V 1 ) * MX \ MX \ MX \z MX \ Ì
Podstawiając, iż 2
z
: 52
_\
z z V Ì V ) * 2 MX \ 1 MX \z ) * 2 MX z \ 1 MX z \z Ì 2 2
_\ )
V * W2 MX\ 1 MX\ Y 2
Ponieważ MX\ cos2 sin2 i 0, 1, …, więc MX\ 1:
V V V _\ ) * W2 MX\ 2Y ) * W MX\ 1Y ) * ^cos sin 1` 0, _\ Ã V ,
Współczynnik _ obliczamy ze wzoru: Å wz
z/
Å
parzyste
nieparzyste z/
z
»
z
1 1 V V Ì Ì V _ ¯¯ x V ¯ V ¯y x ¯ ¯y 0 Ì 0 0 Ì Ì Ì Ì 2 2 Ì z/
z/
Ostatecznie otrzymujemy wynik:
.¯ _ 2 Ö^\ cos ¯ \ sin ¯` \Ø
\ 0
.¯ 0 2 Ö^\ sin ¯` 2 \Ø
.¯
0, \ Ã2V ,
2¹
2¹ 1
»
2V 2V 2V sin1 ¯ sin3 ¯ sin5 ¯ 1 3 5
4V 1 1 sin ¯ sin3 ¯ sin5 ¯ û 3 5
Graficznie można przedstawić wynik jako: |
-3ω0
-2ω0
| ê
-ω0 0
ω0
2ω0
3ω0
f
53
PRZYKŁAD – Trójkątny, bipolarny (triangle, bipolar) Podziękowania dla Marcina G. 4V ¯ V, Ì ¯ ÷ 4V ¯ V, Ì
Ì , 0* 2 » Ì ¯ )0 , * 2
¯ )
Amp
A
|
|
0
t
-A
2¡ 2¡ ¯* sin ) ¯* .¯ Ö cos ) Ì Ì
Å wz
Ø
2 2¡ ¯* ¯ ¯ cos ) Ì Ì Å
Å wz
2 2¡ ¯ sin ) ¯* ¯ Ì Ì
Współczynniki są równe zero, ponieważ sygnał jest parzysty.
¯
z
Å
Ì 2
2 2¡ ¯ cos ) ¯* ¯ Ì Ì M
z
Ponieważ ¯ cos § z ¯ª jest funkcją parzystą (zarówno ¯ jak i cos § możemy skrócić okres o połowę, ale wynik podwoić:
2
z
z
¯ª są parzyste), stąd
2 2¡ ¯ cos ) ¯* ¯ Ì Ì
54
Operację tą można porównać do obliczania pola prostokąta (graficznie interpretując, wynik całki jest polem pod wykresem funkcji) – po podzieleniu go na pół wystarczy pole jednej z połówek podwoić.
z
z
4 2¡ 4 4V 2¡ ¯ cos ) ¯* ¯ ) ¯ V* cos ) ¯* ¯ Ì Ì Ì Ì Ì
Dzielimy naszą całkę na dwie składowe, które rozwiążemy osobno – i :
z
z
16V 2¡ 4V 2¡ 16V 4V ¯ cos ) ¯* ¯ cos ) ¯* ¯ Ì Ì Ì Ì Ì Ì
Pierwszą całkę rozwiązujemy metodą „przez części”: z
z
Ì/2 2¡ Ì 2¡ » Ì sin )2¡ ¯* ¯ ¯ cos ) ¯* ¯ ¯ sin ) ¯* i Ì 2¡ Ì 2¡ Ì 0 Ì/2 Ì Ì 2¡ Ì Ì 2¡ » sin ) *) * cos ) ¯* i 2¡ 2 Ì 2 2¡ Ì 0
Dla każdego ¡ Ë (¡ należy do zbioru liczb naturalnych, czyli ¡ 0, 1, 2, 3, …) funkcja sin¡ 0, co w wersji mądrej (za pomocą kwantyfikatora ogólnego w notacji uproszczonej) można zapisać:
sin¡ 0
W wersji angielską (z symbolem „for all” ∀) wygląda to następująco: ∀¡ sin¡ 0
Notacja nieuproszczona wygląda natomiast tak:
¡ sin¡ 0
Ale wracając do zadania: )
Ì 2¡ Ì 2¡ Ì * cos ) * cos ) 0* ) * ^cos¡ 1` 2¡ Ì 2 Ì 2¡
Teraz jeszcze druga całka: z
Ì 2¡ Ì 2¡ Ì ^sin¡ sin0` 0 ¯* ¯ sin ) ¯* 2 » cos ) Ì 2¡ Ì 2¡ 0
Czyli wynikiem dla jest:
55
16V Ì 4V 4V ^cos¡ ^cos¡ 1` ) * 1` 0 Ì 2¡ Ì ¡
Jeszcze tylko współczynnik : z
Ì 16V 4V Ì 16V 1 Ì 8V ¯ ¯ ) ¯ * 2 » 2V S 0T 2V 2V 2V 0 Ì Ì 2 Ì 2 Ì 4 0
Ponieważ ¡ Ë , więc możemy zapisać, iż:
cos¡ 1 1 1
Czyli:
4V ^1 1 ` ¡
0, 8V , 2¡ 1
¡ 2¹
» ¡ 2¹ 1
cos )22¡ 1 ¯* 8V 8V 1 Ì .¯ Ö ð ñ Ö cos2¡ 1 ¯ 2¡ 1 2¡ 1 Ø
Ø
PRZYKŁAD – Piła (sawtooth, saw wave)
¯ ¯,
¯ Amp
A
0
|
t
-A
56
¯ 1 1 ¯ cos¡¯ ¯ ¯ cos¡¯ ¯ i 1
M
M
à cos¡¯ 1 1 a¯ sin¡¯ sin¡¯ ¯d i ¡ à sin¡¯ ¡ M
1 1 1 1 1 ¯ sin¡¯ ) * cos¡¯ » sin¡ cos¡ sin¡ cos¡ ¡ ¡ ¡ ¡ ¡
1 1 1 sin¡ cos¡ sin¡ cos¡ 0 ¡ ¡ ¡ sin¡ 0
¯ 1 ¯ sin¡¯ ¯ i 1 M
cos¡ cos¡
à sin¡¯ 1 1 i a¯ cos¡¯ cos¡¯ ¯d ¡ à cos¡¯ ¡ M
1 1 1 1 1 ¯ cos¡¯ sin¡¯ » cos¡ sin¡ cos¡ sin¡ ¡ ¡ ¡ ¡ ¡ 1 1 1 1 cos¡ sin¡ cos¡ sin¡ ¡ ¡ ¡ ¡ cos¡ cos¡
sin¡ sin¡
2 1 1 2 2 cos¡ sin¡ sin¡ cos¡ sin¡ ¡ ¡ ¡ ¡ ¡ Ponieważ ¡ należy do liczb całkowitych (¡ Ë ]), więc sinus jest zawsze równy zeru, natomiast cosinus przyjmuje wartość 1 lub –1: 2 , ÷ ¡ 2 , ¡
¡ 2¹
¡ 2¹ 1
»
Gdzie ¹ 1, 2 … Można jednak zapisać współczynniki w krótszej formie: 2
Stosując wzór:
Otrzymujemy ( 0):
1w
¡
.¯ Ö^ cos¡¯ sin¡¯` 2 Ø
1w
sin¡¯´ .¯ Ö^ sin¡¯` 2 Ö ³ ¡
Ø
Ø
57
1 1 .¯ 2 sin¯ sin2¯ sin3¯ û 2 3
Ale powstaje pytanie – jak nasz wynik prezentuje się graficznie? Otóż prezentuje się całkiem nieźle! Obraz po lewej zawiera maksimum 3 pierwsze harmoniczne, natomiast obraz po prawej składa się z 11 harmonicznych:
.¯ 2 ^sin¯`
niebieski – 1 harmoniczna czerwony – 2 harmoniczne zielony – 3 harmoniczne czarny – 11 harmonicznych . ¯ 2 ³¡L
1 .¯ 2 sin¯ sin2¯ 2
1 1 .¯ 2 sin¯ sin2¯ sin3¯ 2 3 poniżej
¡2L ¡3L ¡4L ¡5L ¡6L ¡7L ¡8L ¡9L ¡10L ¡11L ´ 2 3 4 5 6 7 8 9 10 11
W celu bliższego zapoznania się z drugą metodą rozwijania w szereg polecam strony: http://kwylegala.pl/pl/mathematics/fourier-series/ http://wazniak.mimuw.edu.pl/index.php?title=Analiza_matematyczna_2/Wyk%C5%82ad_5:_Szereg_pot %C4%99gowy._Trygonometryczny_szereg_Fouriera http://www.mardruk.pl/monika/pdf/Szeregi_Fouriera-rozw.pdf
TRANSFORMACJA FOURIER’a LEKCJA ÓSMA 58
WSTĘP Cytując za Wikipedią – „transformacja Fouriera (Fourier transform) jest transformacją całkową z dziedziny czasu w dziedzinę częstotliwości”. Dzięki tej operacji otrzymujemy informację o tym, jakiej częstotliwości sygnały znajdują się w badanym przebiegu. Wedle definicji, transformata wygląda następująco:
h L¯ MXÅ ¯ M
gdzie h to widmo częstotliwościowe, L¯ to nasz sygnał, natomiast to 2 ( jako częstotliwość, jako pulsacja). Czasem przyjmuje się nieco inne oznaczenie widma – widmo sygnału ¯, może być oznaczone jako ̂ lub ̂ (częstotliwość pojawia się w nawiasie w momencie, gdy we wzorze definicji pulsację zamienimy na 2). WŁASNOŚCI TRANSFORMACJI FOURIER’a Z braku czasu, w tym miejscu odsyłam do książki Pana Tomasza P. Zielińskiego. Ewentualnie odsyłam do poniższej strony: http://fourier.eng.hmc.edu/e101/lectures/handout3/node3.html
PODSTAWOWE TRANSFORMATY Jedną z wyprowadzonych transformat, będzie transformata eksponenty w następującej formie:
̂ ¯ M
MXÅ
¯
Korzystając z definicji delty Dirac’a:
¯ X Å
X Å
MXÅ
¯
X MÅ
¯ MXMÅ ¯
MXÅ ¯ 2·
M
MX¦ Å ¯ 2· ¦
M
Otrzymujemy:
̂ MXM Å ¯
1 · 2 59
PRZYKŁAD – TRANSFORMATA COSINUSA Powstaje jednak pytanie, czy to wszystko naprawdę działa? Możemy to sprawdzić przeprowadzając małe doświadczenie – jeśli obliczmy transformatę Fouriera dla sinusa albo cosinusa, to w widmie powinna się pojawić tylko jedna częstotliwość. Czy taka zależność ma miejsce? Na początek zdefiniujmy naszego przykładowego cosinusa. Będzie on miał częstotliwość 2 Hz, czyli 2 ² oraz standardową amplitudę (oscylacja od –1 do 1). Stosując wzór: ¯ cos ¯
Otrzymujemy:
Czas policzyć transformatę:
2
̂ ¯ MXÅ ¯ M
̂ ¯ MXÅ ¯ cos ¯ MXÅ ¯ M
W całce musimy podstawić, iż cos ¯
M
w
:
X Å MX Å 1 ̂ S T MXÅ ¯ a X Å MXÅ ¯ MX Å MXÅ ¯d 2 2 M
M
M
1 ̂ a MXÅM ¯ XÅM ¯d 2 M
M
Korzystając z definicji delty Dirac’a M MXÅ ¯ 2· otrzymujemy:
1 1 ̂ a MXÅM ¯ XÅM ¯d 2 ^· · ` 2 2 M
M
̂ ^· · `
60
f -2ω0
-ω0
0
ω0
2ω0
Proszę teraz zwrócić uwagę, iż ̂ nie jest równe zeru tylko wtedy gdy lub . Obecność drugiej częstotliwości jest wynikiem symetrii widma – po stronie lewej następuje powielenie tego, co jest po stronie prawej. Jeśliby nasz cosinus miał częstotliwość 0, to wtedy 2 0. Jednocześnie widmo byłoby w postaci: ̂ ^· 0 · 0` ^· ·`
Czyli w konsekwencji funkcja byłaby równa 2, tylko wtedy gdy byłby równa zeru: ̂ 2 0
Przypominam, że cosinus o częstotliwości 0 jest tak naprawdę linią prostą o amplitudzie 1, czyli możemy ją traktować jako składową stałą. Wraz ze zmniejszającą się częstotliwością, powstałe „prążki” zaczynają coraz bardziej zbliżać się do środka, aż w końcu „zlepiają się” w jeden. Z tego też powodu trzeba zwrócić uwagę na to, iż amplituda dla składowej stałej jest dwukrotnie większa niż rzeczywista. Problem ten jest rozwiązywany w dyskretnej transformacie Fouriera przez odpowiednie skalowanie widma dyskretnego, ale więcej o tym trochę dalej. Oczywiście możemy przeskalować nasze widmo tak, by odpowiadało temu, czego oczekujemy:
amplituda 1 f [Hz] -4
-2
0
2
4
PRZYKŁAD – TRANSFORMATA SYGNAŁU TRÓJKĄTNEGO Sygnał trójkątny to:
61
ä
¯ Ã
0,
|¯| Â Ì
¯ 1 r r, Ì
|¯| Ì
1
»
t -T
T
0
W tym przypadku skorzystamy z symetrii trójkąta – policzymy jedynie obszar od 0 do T, a całość całki pomnożymy dwukrotnie:
̂ ¯ MXÅ M
z
z
z
¯ 1 ¯ 2 )1 * MXÅ ¯ 2 x MXÅ ¯ ¯ MXÅ ¯y Ì Ì
̂ 2 x MXÅ
z
z Ì 2 z 1 2 ¯ ¯ MXÅ ¯y MXÅ i » ¯ MXÅ ¯ Ì Ì 0 z
2 2 ̂ W MXz 1Y ¯ MXÅ ¯ Ì
Wydzielamy jedna całkę licząc ją przez części: z
¯ MXÅ
¯
z à MXÅ MXÅ Ì MXÅ MXÅ ¯ ¯ i » ¯ 1 à 0
z 1 1 Ì MXz 1 MXÅ Ì» MXz MXÅ WÌ 0Y ¯ ) * i 0
Łącząc wszystko w całość:
Ì MXz 1 MXz ) * W 1Y
2 2 Ì MXz 1 MXz MXz ̂ W 1Y x ) * W 1Yy Ì
2 MXz 2 1 MXz 2 2 1 MXz 2 MXz 1Y ) * W 1Y ) * W 1Y ̂ W Ì Ì
62
Rozwiązanie: Na początek rysunek: Jak widać, sygnał składa się z dwóch trójkątów, stąd dokonamy transformaty jedynie pierwszego (znajdujący się w przedziale -1 do 1), a następnie użyjemy twierdzenia o przesunięciu. Widmo trójkąta: Ì Ì sin §2 ª sin §2 ª 2 y 2 ∆ Ì x Ì Ì 2 2
W przypadku naszego trójkąta, okres jest równy jeden Ì 1, stąd możemy zapisać: TRÓJKĄT, BRAMKA, SPLOT W lekcji mówiącej o splocie, po dokonaniu operacji konwolucji dwóch identycznych bramek, otrzymaliśmy w wyniku funkcję trójkątną. Powstaje pytanie, czy skoro splot w dziedzinie Fouriera to mnożenie, to czy z widm dwóch bramek otrzymamy widmo trójkąta? Okazuje się, że owszem. Od początku jednak. Twierdzenie o splocie:
n¯ ¯ ù ¯ ÍÍ ¯ ¯ n M
Widmo impulsu prostokątnego (rectangular function) to: 2 ½ Widmo funkcji trójkątnej (triangle function) to: 2
sin Ì 2Ì sinc Ì
sin Ì ^2Ì sinc Ì`
Jak widać powyżej, widmo splotu dwóch bramek ( ^rect¯ ù rect¯`) jest widmem funkcji trójkątnej ( ^tri¯`): ^tri¯`
^rect¯ ù rect¯` 2Ì sinc Ì 2Ì sinc Ì 2Ì sinc Ì
DFT – Discrete Fourier Transform LEKCJA DZIEWIĄTA
DFT to skrót od Discrete Fourier Transform, czyli dyskretnej transformaty Fourier’a. Cóż to oznacza? Mianowicie to, że nie jest ona ciągła. A co oznacza, że nie jest ona ciągła? Ano to już najlepiej zobaczyć na przykładzie…
MACIERZ PRZEJŚCIA DLA DFT 63
Obliczanie DFT jest bardzo podobne do przechodzenia między bazami, bowiem operacje wykonuje się mnożąc macierz przejścia i macierz sygnału wejściowego. W konsekwencji otrzymujemy macierz zawierającą widmo częstotliwościowe naszego sygnału. Nasz przykładowy sygnał wejściowy będzie miał następującą formę: ^¡` ^1 2
1 0 1
2 1 0 `z
Indeks T przy prawym rogu macierzy, oznacza, iż macierz ma być pionowa, a nie pozioma (wymaga ona transponowania). Macierz przejścia wylicza się według wzoru:
¢ \ MX × \
Przy czym dla naszego przykładu N=8 (osiem próbek w sygnale), a k oraz n=0,1,2…,N-1. W konsekwencji macierz przejścia będzie macierzą 8 na 8:
¢ \ cos
¢ \ MX × \ cos
2 2 ¡ sin ¡ Ù Ù
2 2 ¡ sin ¡ cos § ¡ª sin § ¡ª 8 8 4 4 ¢ , q ,
¢ p , á p¢ p û p¢ ,® o¢ ,!
¢ , ¢ ,
¢ , û ¢ ,® ¢ ,!
¢ , ¢ ,
¢ , û ¢ ,® ¢ ,!
û û û û û û
¢ ®, ¢ ®,
¢ ®, û ¢ ®,® ¢ ®,!
¢ !, v ¢ !,
u ¢ !, u û u ¢ !,® u ¢ !,! t
W momencie gdy współczynnik n lub k jest równy 0, otrzymujemy wektor czysto realny, o długości 1: Im(z)
Re(z) 0
1
¢ \ cos ¡ sin ¡ cos 0 sin 0 1 4 4 Przeanalizujemy teraz część wiersza dla n=1 rozpatrując 4 przypadki k w poniższej tabeli:
k
"ý#
obrót wektora
64
cos
0
Im(z)
0 1 sin 0 1 1 4 4
Re(z) 0
1
Im(z)
cos
1
√2 √2 sin 4 4 2 2
Re(z) 0
Im(z)
cos sin 2 2
2
1
Re(z) 0
1
Im(z)
cos
3
3 3 √2 √2 sin 2 2 2 2
Re(z)
0 1
Jak widać, w przypadku wiersza n=1, wektor przemieszcza się za każdym razem o 45 stopni w kierunku wskazówek zegara (bodaj w prawo). Dzięki temu możemy wywnioskować, iż dla k=4, wektor przyjmie wartość czysto realną -1. By nie pisać ułamków i pierwiastków zastosujemy bardzo prostą symbolikę nawiązującą do wirującego wektora: √| √| $ | |
%
√| √| $ | |
&
√| √| $ | |
√| √| $ | |
'
(
Dzięki czemu otrzymujemy bardzo przejrzystą tabelkę wyników dla każdego k: k "ý#
0 1
1 % %
2
)
3 & &
4
1 *
5 ' '
6
+
7 ( (
65
Przed wpisaniem odpowiednich wektorów dobrze jest pamiętać o tym, iż macierz jest symetryczna! Czyli to co jest w wierszu n=1 musi być również w kolumnie k=1. q p p á p p p p o
% ) ) & * ' + (
&
*
'
+ (v u u u u u u t
Kolejna własność tej macierzy jest taka, iż „skok” pozostaje stały, w związku z tym proszę się przyjrzeć wierszowi n=4 (piąty od góry) oraz kolumnie k=4 (piąta od lewej). Pierwszy znak jest strzałką w prawo , zaś drugi strzałką w lewo *. Czy to oznacza, iż każda zmiana następuje co 180 stopni i następna strzałka będzie również w prawo? Tak właśnie jest! q p p á p p p p o
% ) ) & * ' + (
&
*
* * * *
'
+ (v u u u * u u u t
Jednocześnie proszę zwrócić uwagę, iż skok narasta co 45 stopni od 0, czyli trzeci wiersz (n=2) i trzecia kolumna (k=2) będą miały skok 90 stopni: q p p á p p p p o
% ) & * ' + (
) * + ) * +
& +
% ) & * ' + (
) * + ) * +
& + % * ( ) '
*
* * * *
' )
+ (v * +u u u * u u u t
W konsekwencji nasza macierz przejścia wygląda w sposób następujący: q p p á p p p p o
* * * *
' ) ( % + &
+ (v * +u u ) 'u * u + &u * )u ) %t
PRÓBKOWANIE i OBLICZENIA w DFT 66
Spróbujmy nasz przykładowy sygnał ^¡` ^1 wykresie:
2 1 0
1 2 1
0`z , przedstawić graficznie na
amplituda 2
1
numer próbki [n] 0
1
2
3
4
5
7
6
Widać wyraźnie zarys sygnału okresowego, przykładowo sinusoidy lub piły. Spróbujmy określić okres tegoż przebiegu. Sygnał zaczyna się na próbce numer 0, natomiast próbka 4 jest powieleniem próbki numer 0. Stąd możemy stwierdzić, iż okres tegoż sygnału to 4 próbki, a na wykresie otrzymujemy 2 pełne obiegi – 0, 1, 2 i 3 oraz 4, 5, 6 i 7. Jednocześnie bardzo ważnym jest spostrzeżenie, iż cały sygnał posiada składową stałą (taki offset), bowiem oscylacje nie zachodzą wokół zera, lecz jedynki (stąd stwierdzamy, iż offset jest równy jeden). Mimo tego, iż wiemy ile próbek zajmuje okres Ì przebiegu, nie jesteśmy w stanie stwierdzić jaka jest jego częstotliwość, bowiem nie znamy delty czasowej (jak dużo czasu minęło między dwoma kolejnymi próbkami). Zakładając, iż częstotliwość próbkowania to: ° 4²
Otrzymujemy wiadomość, iż kolejne próbki zbierane były z szybkością ¯°
µ
0,25 ¡n.
Ponieważ nasz okres to 4 próbki (przykładowo L 4), więc otrzymujemy, iż w dziedzinie czasu: Ì L ¯° 4 0,25 1 ¡
Co w dziedzinie częstotliwości daje nam:
°ô,©J
ï
1 1² Ì
Sumując wszystkie informacje na temat tegoż przebiegu otrzymujemy – częstotliwość sygnału to 1Hz (okres 1 sekunda), amplituda 1 (amplituda peak-to-peak równa 2), składowa stała równa 1 – dwie ostatnie wartości bez jednostek (może to być dowolna jednostka, np. napięcie).
Mamy naszą macierz przejścia oraz sygnał. By uzyskać widmo, musimy obie macierze przemnożyć przez siebie: q p p ̂ ^` á ^¡` p p p p o
% ) & * ' + (
) & * + + % * ) ( * ) + '
* * * *
' ) ( % + &
+ * ) * + * )
8 1 ( v q2 v q 0 v + u p1u p4u u u p u p ' u p0 u p 0 u u p1 u p 0 u & u p2 u p 0 u ) u p1u p 4 u % t o0 t o 0 t
Wykonując powyższą operację, mnożymy każdy wiersz macierzy przejścia, przez kolumnę naszego sygnału wejściowego, np. dla pierwszego wiersza: 67
̂ ^0` 1 2 1 0 1 2 1 0
Podstawiając wartości liczbowe za strzałki ( 1) otrzymujemy:
̂ ^1` 1 2 1 0 1 2 1 0 8
Przy wymnażania macierzy, dobrze jest zauważyć pewien antagonizm strzałek, np. strzałka w prawo neguje strzałkę w lewo (ale tylko w momencie gdy mnożymy te same liczby np. sytuacja w drugim wierszu macierzy przejścia, czyli 1 * 1 0 – należy o tym pamiętać, bowiem nie zawsze otrzymujemy takie proste sytuacje). Przykładowo wykonajmy mnożenie dla czwartego (̂ ^3`, bowiem numerujemy od zera) wiersza macierzy przejścia: ̂ ^3` 1 & 2 + 1 % 0 * 1 ( 2 ) 1 ' 0
Na razie nie podstawiamy konkretnych wartości, lecz grupujemy przeciwne sobie strzałki:
̂ ^3` 1 * 1 & 2 ( 2 ) 1 + 1 ' 0 % 0 0
Jak widać, każda ze strzałek neguje się, co w konsekwencji daje nam zero. Sytuacja taka nie ma miejsca dla trzeciego wiersza macierzy przejścia: ̂ ^2` 1 ) 2 * 1 + 0 1 ) 2 * 1 + 0
Po pogrupowaniu strzałek otrzymujemy:
̂ ^2` * * ) 2 + 0 ) 2 + 0 ̂ ^2` ) 2 + 0 ) 2 + 0 ) 2 ) 2
Strzałka w dół oznacza element ujemny, czysto urojony, czyli ) :
̂ ^2` 2 2 2 2 4
Po wyliczeniu wszystkich równań, otrzymaliśmy następującą macierz: ̂ ^` ^8
0 4
0 0
0 4
0`z
Jest to nasze dyskretne widmo, lecz jeszcze nie w finalnej formie, bowiem musimy jeszcze wyliczyć jego moduł, pozbywając się elementów urojonych: |̂ ^`| ^8 0
4 0 0
0 4
0`z
Na koniec można jeszcze dokonać przeskalowania amplitudy. Na samym początku stwierdziliśmy, iż amplituda sygnału to 1, natomiast w dyskretnym widmie otrzymujemy 4, co koryguje się wzorem:
Dzięki czemu otrzymujemy:
̂ ^` , Ù ̂ ^` ÷ ̂ ^` 2 , Ù
0
1, … , Ù 1
»
68
8 |̂ ^`| 8
4 0 )2 * 0 8
4 )2 * 8
0 0
z
0 ^1
0 1 0
0 0 1
0`z
INTERPRETACJA DYSKRETNEGO WIDMA W początkowej fazie, nasze widmo miało postać zawierającą jednostki urojone. Jeśli widmo zawiera części urojone, to jest to dla nas znak, iż sygnał jest nieparzysty. Czy ma to odwzorowanie w naszym przykładzie? Otóż tak, bowiem jak stwierdziliśmy na początku (podrozdział PRÓBKOWANIE i OBLICZENIA w DFT), sygnałem tym może być sinusoida. Jest to całkiem dobry sposób sprawdzenia, czy nasze obliczenia są poprawne. Spytajmy jednak, co by było gdybyśmy nasz przykładowy sygnał przesunęli nieco, tworząc z niego cosinusa: -î. ^¡` ^2
1 0 1
1`z
2 1 0
Używając MatLab’a (lub GNU Octave), po wpisaniu polecenia sygnal=[2 1 0 1 2 1 0 1], a następnie fft(sygnal), otrzymujemy wynik (fft to skrót od szybkiej transformaty Fouriera, która jest przyspieszoną metodą obliczania DFT): ans = 8 + 0i
0 + 0i
4 + 0i
0 + 0i
0 + 0i
0 - 0i
4 - 0i
0 - 0i
W którym wyraźnie widać, iż widmo ma formę ̂-î. ^` ^8 0 4 0 0 0 4 0`z . Jednakże jak odczytywać to widmo? Spróbujmy przedstawić je na rysunku, aczkolwiek już po przeskalowaniu amplitudy, tak jak zostało to opisane na końcu poprzedniego podrozdziału: |̂ ^`| ^1 0
1 0 0
0 1 0 `z
amplituda 2
1
numer próbki [k] 0
1
2
3
4
5
6
7
Proszę zwrócić uwagę, iż na osi poziomej występują numery próbek [k]. Aczkolwiek czego są to próbki? Otóż są to wartości związane z częstotliwością. Tylko, że stwierdziliśmy, iż sygnał ma jedną częstotliwość o wartości 1Hz, a tutaj na widmie pojawiają się 3 prążki?! Dlaczego?! Prążek w punkcie k=0, to składowa stała (umownie, częstotliwość 0Hz). Jak widać, jego amplituda zgadza się z wcześniejszymi ustaleniami, iż składowa stała jest równa 1. Teraz powstaje jednak pytanie, dlaczego drugi prążek pojawia się dla k=2, a nie k=1? Otóż poziomą oś wykresu należy jeszcze odpowiednio przeskalować (tak jak i robiliśmy to z amplitudą) za pomocą wzoru: \ ∆ Dzięki czemu skorygować oś
amplituda 2
° 4 0,5 Ù 8
możemy teraz na wykresie:
1
częstotliwość [Hz] 0
0,5
1
1,5
2
2,5
3
3,5
69
Niby wszystko się zgadza – prążek 0Hz o amplitudzie 1, czyli składowa stała, prążek 1Hz o amplitudzie naszej sinusoidy… ale skąd ten prążek dla 3Hz? Okazuje się, iż biorąc wykres naszego przebiegu, przy tych samych „kropkach” jesteśmy w stanie narysować nieskończenie wiele sinusoid, m.in. jedną o częstotliwości 1Hz i jedną o częstotliwości 3Hz, tak jak to widać poniżej: amplituda 2
1
czas [sek] 0
0,5
1
1,5
2
Warto na koniec wspomnieć jeszcze o zjawisku przecieku, które pojawia się, gdy cz częstotliwość obecna w sygnale nie może pojawić się na dyskretnym widmie przez za dużą deltę częstotliwości. Np. w momencie gdyby w naszej sinusoidzie pojawił się sygnał o częstotliwości 1,75Hz, to w związku z dyskretnym wymiarem transformaty, prążki pojawiłyby się zarówno przy 1,5Hz jak i 2Hz (w odpowiedniej proporcji do siebie). W celu udowodnienia posłużymy się MatLabem (w następnym podrozdziale znajdują się szczegółowe instrukcje). Próbkujemy z szybkością 4Hz, definiując to w stałej fp=4. Jeden sinus będzie miał częstotliwość 1,75Hz f0=1.75. Generujemy teraz macierz czasu t=[0:1./fp:2-1./fp] i sinus x=sin(2*pi*f0*t)+1 zawierający składową stałą (w komendzie pojawia się jako +1 na końcu). Na koniec obliczamy dft przez polecenie fft(x): Columns 1 through 5: 8.19891 + 0.00000i -5.02734 + 0.00000i
0.23463 - 0.00000i
0.41421 - 0.00000i
0.41421 + 0.00000i
0.23463 + 0.00000i
1.76537 - 0.00000i
Columns 6 through 8: 1.76537 + 0.00000i
Zapisując DFT jako macierz:
L^` ^8,2 0,23 0,41 1,77 5 1,77 0,41
0,23`z
Widzimy, iż ponoć w sygnale znajdują się przynajmniej 3 częstotliwości, co nie jest prawdą i pokazuje niedoskonałość metody.
DFT dla MatLab Bardzo szybko można dokonać dyskretnej transformaty stosując polecenie fft(nazwa), gdzie nazwa, to macierz zawierająca sygnał wejściowy. PROSZĘ JEDNAK UWAŻAĆ ZE STOSOWANIEM TEGO POLECENIA DLA OBRAZÓW (macierze dwuwymiarowe)! Jednakże spróbujmy sami napisać kolejno polecenia, które pozwolą nam otrzymać transformatę. Na początek zacznijmy od zdefiniowania częstotliwości próbkowania i sygnału – wpisujemy dla częstotliwości próbkowania polecenie fp=8, czyli 8 Hz, a dla częstotliwości sygnału f0=2, czyli czterokrotnie mniej (dzięki czemu spełniamy warunek Nynquista – 70
°/0× 2 , mówiący o minimalnej częstotliwości próbkowania). Teraz definiujemy macierz czasu, która tak czy inaczej, jest skwantowana (dyskretna) poleceniem t=[0:1./fp:1-1./fp], gdzie fp jest wcześniej zdefiniowaną częstotliwością próbkowania, dzięki czemu odstępy między kolejno
generowanymi próbkami czasu będą równe delcie czasowej (szybkość zbierania próbek ¯° ∆¯). µ
Część 1-1./fp ma na celu stworzenie wektora składającego się z 8 elementów (pisząc komendę w postaci t=[0:1./fp:1] otrzymujemy 9 elementów w macierzy). Teraz musimy obliczyć poszczególne wartości sinusa w konkretnych chwilach czasu. W tym celu użyjemy wzoru, który pojawił się już wcześniej (lekcja pierwsza – PRZYKŁAD WYKORZYSTANIA MatLab): L sin2 ¯
My do naszego sinusa dodamy składową stałą o wartości 2. W tym celu wpisujemy polecenie x=sin(2*pi*f0*t)+2. Kolejnym krokiem jest wygenerowanie macierzy przejścia w nieco bardziej złożony sposób: N=8 for n=0:N-1 for k=0:N-1 W(k+1,n+1)=exp(-j*2*pi./N*n*k) end end
By otrzymać DFT, mnożymy macierz przejścia W i nasz sygnał x wpisując Wout=W*x’ (macierz x musi być transponowana z poziomej, na pionową). Dzięki czemu otrzymujemy: Wout = 16.00000 -0.00000 -0.00000 -0.00000 0.00000 -0.00000 -0.00000 0.00000
+ + + -
0.00000i 0.00000i 4.00000i 0.00000i 0.00000i 0.00000i 4.00000i 0.00000i
By przedstawić wynik na wykresie, wpisujemy figure(2),plot(abs(Wout),’.’) lub by otrzymać połączone punkty – figure(2),plot(abs(Wout)). Interpretacja takiego widma znajduje się we wcześniejszym podrozdziale.
DFT dla DWÓCH WYMIARÓW Wykonywanie DFT dla macierzy dwuwymiarowych (inaczej mówiąc – dla obrazu) jest w metodyce bardzo podobne do wykonywania DFT jednowymiarowego. W MatLab’ie, by wykonać DFT 2D stosujemy polecenie fft2(nazwa). Skorzystamy w tym miejscu ze wzorów znajdujących się w wykładach oraz na wielu różnych stronach, przykładowo poniżej znajdująca się: http://fourier.eng.hmc.edu/e101/lectures/Image_Processing/node6.html Jedno z zadań dotyczące transformaty obrazu pojawiło się na egzaminie (pierwszy termin, sesja letnia, a.d. 2010) i jego rozwiązanie znajduje się w lekcji trzynastej (zadanie 3 – 2D DFT), stąd tutaj zajmiemy się jedynie ogólnym omówieniem problemu. Stosując zapis macierzowy, gdzie ̂ to macierz widma częstotliwościowego, a to macierz sygnału, otrzymujemy: ̂ áK á1
71
W tym równaniu áK jest macierzą przejścia, którą tworzymy według schematu znanego z podrozdziału MACIERZ PRZEJŚCIA dla DFT (lekcja ósma): áK
\ W¢K 2 2 Y
MX
\ ×2 2 2
Gdzie ¡K to numer wiersza, K to numer kolumny macierzy:
¡K 0, 1, … , ÙK 1 K 0, 1, … , ÙK 1
A ÙK jest wymiarem macierzy w osi X (ilość elementów w poziomie). Jeśli ÙK jest równe Ù1 (co niekoniecznie musi się stać – zadanie 3 z drugiego terminu egzaminu a.d. 2010, lekcja czternasta), to możemy zapisać, iż: áK á1
̂ áK áK
Należy tu również nadmienić, iż macierze áK i á1 są symetryczne (ortonormalne, áK áKz áKM ). Podczas stosowania powyższego wzoru nie można zapomnieć, iż kolejność wykonywania mnożeń ma olbrzymie znaczenie! Wykonując mnożenie w formie: áK
̂ º áK
áK
̂ áK
Nie otrzymujemy macierzy widma, a jedynie wracamy z powrotem do macierzy sygnału (áK )! Poprawną metodą jest wykonanie mnożenia w formie:
Niby mała różnica, a jednak bardzo znacząca. Z tego właśnie powodu, dwukrotne zastosowanie polecenia fft(nazwa) w MatLab’ie nie powoduje wyliczenia widma, a jedynie powrót do macierzy sygnału. W tym miejscu odsyłam na początek opracowania do wstępu mówiącego o mnożeniu macierzy.
IDFT – inverse discrete Fourier transform Skoro umiemy policzyć widmo sygnału, to pasuje też umieć na podstawie widma policzyć macierz sygnału (odwrotna dyskretna transformata Fourier’a). W tej kwestii istnieje bardzo duża wygoda związana z symetrią macierzy przejścia á ¢ \ MX 5 \ , bowiem otrzymujemy zależność: 34
á á z á M
Stąd dla sygnałów jednowymiarowych tryb postępowania jest wyjątkowo prosty: ̂ á
1 á ̂ Ù
Gdzie Ù jest liczbą elementów w sygnale. ^¡` ^0 3 0 3 0 3 0 3`z . Wykonujemy jego DFT:
Przykładowo
–
mamy
sygnał
72
q % p ) p & ̂ á p p * p ' p + o (
) * + ) * +
& + % * ( ) '
* * * *
' ) ( % + &
+ * ) * + * )
q p 1 1 p á ̂ p Ù 8 p p p o
% ) & * ' + (
) * + ) * +
& + % * ( ) '
* * * *
' ) ( % + &
0 12 ( v q3v q 0 v + u p0u p 0 u u u p u p ' u p3u p 0 u u p0u p12u & u p3u p 0 u ) u p0u p 0 u % t o3t o 0 t
Teraz chcąc znów otrzymać sygnał wykonujemy takie samo mnożenie:
12 0 + ( v q 0 v q3v * + u p 0 u p0u u p u u p ) ' u p 0 u p3u * u p12u p0u + & u p 0 u p3u * ) u p 0 u p0u ) % t o 0 t o3t
W MatLab’ie załatwiamy to poleceniem ifft(nazwa) (oraz ifft2(nazwa) dla macierzy dwuwymiarowych). W przypadku obliczania obrazu (dwuwymiarowa macierz) na podstawie jego widma metoda jest podobna. Przykładowe zadanie znajduje się w lekcji trzynastej – zadanie 3 – IDFT 2D.
WIDMA – PODSUMOWANIE By zobaczyć, a dokładniej usłyszeć wszystko wpływ zmian w widmie na sygnał, warto zajrzeć na stronę: http://www.falstad.com/fourier/e-triangle.html Korzystając z wikipedii (http://pl.wikipedia.org/wiki/Widmo_sygnału) zamieszczam stosunkowo przydatne informacje dotyczące widm. Widma sygnałów posiadają własności bezpośrednio wynikające z własności transformacji Fouriera: • jeśli sygnał ma wartości rzeczywiste, to widmo posiada symetrię sprzężoną (hermitowską), to znaczy 6 6 , a z tego wynika, że widmo amplitudowe jest funkcją parzystą, czyli m m, a widmo fazowe jest funkcją nieparzystą, czyli 7 7, • dla sygnałów, które są parzyste w dziedzinie czasu, to znaczy L¯ L¯, ich widmo jest rzeczywiste, to znaczy 8h9 0, • dla sygnałów, które są nieparzyste w dziedzinie czasu, to znaczy L¯ L¯, ich widmo jest funkcją urojoną, to znaczy 8h9 0. W zależności od szczególnych cech sygnału, jego widmo posiada odpowiednie własności: • widmo sygnału nieokresowego jest funkcją ciągłą (choć może zawierać impulsy Diraca), • widmo sygnału okresowego o częstotliwości składa się wyłącznie z impulsów Diraca (takie widmo określa się mianem widma prążkowego), występujących w punktach na osi częstotliwości odpowiadających całkowitym wielokrotnościom jego częstotliwości , gdzie Ë ], • widmo sygnału ciągłego jest funkcją nieokresową, • widmo sygnału dyskretnego jest funkcją okresową.
73
TRANSFORMACJA Z LEKCJA DZIESIĄTA
WSTĘP Podczas projektowania filtrów nasz spróbkowany sygnał transformujemy do dziedziny liczb zespolonych transformacją Z. Ogólny wzór na tą transformację to:
Ö ¡ M ØM
By zobaczyć jak ten wzorek „działa” załóżmy, że nasz sygnał ma następującą formę: ¡ ^1 , 0 , 2 , 3`
Sygnał przyjmuje dla kolejnych numerów próbek wartości podane w poniższej tabeli: Numer próbki
0
1
2
3
Wartość sygnału
1
0
-2
3
Wedle wzoru na transformację Z otrzymujemy, iż nasz sygnał będzie wyglądał następująco:
Ö ¡ ØM
M
Ö ¡ M 1 M 0 M 2 M 3 M Ø
1 1 0 2 M 3 M 1 2 M 3 M
Proszę w tym miejscu jednak zwrócić uwagę, iż dla z=0, szereg ten nie ma sensu, bowiem: M
1 1 0
A każdy dobrze wie, że dzielić przez zero nie wolno (bo wybuchnie).
PRZYKŁADY – delta Diraca Wiedząc już jak mniej-więcej działa transformata Z, spróbujmy policzyć transformatę dla delty Kroneckera (bądź jak kto woli, delty Diraca). Na podstawie definicji delty (z dyskretnym czasem, stąd n zamiast t): ·¡ ¸
0, 1,
ś¹ ¡ º 0» ś¹ ¡ 0
otrzymujemy wniosek, iż wszystkie n różne od zera możemy pominąć, stąd granica naszej sigmy (sumy) będzie:
· Ö ·¡ M ·¡ 0 M 1 1 1 Ø
Jednocześnie możemy stwierdzić, iż szereg ten jest zbieżny dla wszystkich z. 74
PRZYKŁADY – skok jednostkowy Osobiście zamiast zapisu 1(n) preferuję raczej u(n), stąd: ¡ ¸
0, 1,
ś¹ ¡ 0» ś¹ ¡ ¼ 0
Od razu w tym miejscu należy podkreślić, iż granica od minus do plus nieskończoności nie ma sensu, bowiem od minus nieskończoności do zera sygnał jest równy zero, stąd:
Ö ¡ ØM
M
Ö ¡ M Ø
Ponieważ dla każdego n większego lub równego zero, u(n) jest równe 1, stąd możemy zapisać:
Ö 1 M M M M û 1 M M û Ø
Bardzo szybko da się zauważyć, iż nasz ciąg jest ciągiem geometrycznym. Wzór na sumę ciągu geometrycznego to: ø
1:
:
M M
M M
M 1
gdzie a0 to nasze 1, a q to z-1, stąd możemy zapisać, iż:
Ö ¡ M Ø
1 1 : 1 M 1
FILTRY i TRANSMITANCJA LEKCJA JEDENASTA
Przykładowo mamy pewną ścieżkę dźwiękową. Chcemy z niej usunąć pasmo wysokich częstotliwości. W momencie, gdy mamy całe nagranie, nie ma żadnego problemu by policzyć transformatę Fouriera dla danego przebiegu, dokonać potrzebnych operacji, a następnie ponownie wrócić do dziedziny czasu. Problem pojawia się w momencie, gdy chcemy dźwięk (bądź inny sygnał) przetwarzać w czasie rzeczywistym. Dlatego teraz zajmiemy się tematyką filtrów. Na początek zajmiemy się filtrami FIR (Finite Impulse Response), które dają skończoną odpowiedź impulsową (co to znaczy, będzie wyjaśnione nieco dalej), a następnie IIR (Infinite Impulse Response), czyli filtry o nieskończonej odpowiedzi impulsowej.
FIR (Finite Impulse Response) Ogólnym wzorem na filtr jest: ×
;1 Ö £ ; ¡ Ø
gdzie N jest rzędem filtru. Proszę zwrócić uwagę, iż granica sumy (Σ) pokazuje nam jak wiele próbek (od n=0 do N) wstecz sięgamy do przetworzenia bieżącej próbki m. Każdy „stopień” (czyli każde n) ma swój 75
osobny współczynnik hn. Przykładowo, konstruując prosty wzmacniacz, który wzmacnia sygnał 2 razy, otrzymamy:
;1 Ö £ ; ¡ £ ; 2 ; Ø
Reasumując, nasz filtr graficznie można przedstawić jako swego rodzaju pudełeczko (czarną skrzynkę zawierającą współczynniki hn), do której coś wchodzi (swe) i z której co wychodzi (swy). Na poniższej ilustracji wyraźnie widać, iż w środku mamy zbiór współczynników, których jest w ilości od n=0 do N.
8â# 9< #Øã
swe(m)
swy(m)
Okazuje się jednak, że do obliczania współczynników hn najlepiej nadaje się transformata Z. Jak więc będzie wyglądał ogólny wzór dla filtrów FIR w Z? Przypomnijmy sobie ogólny wzór na transformatę Z (jednocześnie zmieńmy granicę sumy tak, by miała swój początek w zerze, zakładając, iż nic wcześniej się nie działo, albo nie mamy o tym żadnej informacji):
Ö Mß ßØ
Nasze s(m) to: ×
;1 Ö £ ; ¡ Ø
Dzięki czemu otrzymujemy:
×
×
Ö Mß Ö Ö £ ; ¡ Mß Ö £ Ö ; ¡ Mß ßØM
ßØ Ø
ßØ
Ø
Teraz musimy sobie przypomnieć twierdzenie o przesunięciu w transformacie Z:
Ö ; ¡
ßØ
Mß
¡ L s s Ö ; L MKM Ö ; L MK M ; M L¡ ×
KØ
;1 Ö £ Ö ; ¡ Ø
ßØ
KØ
Mß
Suma współczynników hn jest nazywana transmitancją H(z): ×
² Ö £ M Ø
×
; Ö £ M Ø
;1 ; 76
ZADANIE 1 Otrzymujemy równanie różnicowe w formie:
;1 ¡ ; ¡ ; ¡ 1 ; ¡ 2 ; ¡ 3 ;1 ¡ 1 ;1 ¡ 2 ;1 ¡ 3
Naszym zadaniem jest policzenie wzmocnienia sygnału stałego.
Rozwiązanie: Na początek potrzebujemy obliczyć transmitancję naszego filtru. Ogólny wzór dla filtrów to: /
×
n¡ Ö L¡ Ö \ L¡ L¡ L¡ 1 L¡ 2 û ßØ
\Ø
W tym momencie jesteśmy w stanie stwierdzić (porównując oba wzory – na swy(n) i y(n) ), iż współczynnik b0 będzie równy b0, współczynnik b1 będzie równy współczynnikowi b1 i tak dalej. Taki sam wynik uzyskujemy dla współczynników a:
Korzystając z wzoru na transmitancję:
M ∑Ø M ∑/ M M M M Ø ² M 1 M M M 1 ∑× 1 ∑Ø M Ø
Wiedząc, iż za z możemy podstawić eksponentę w postaci:
X
Musimy teraz przypomnieć sobie, czym jest składowa stała. Otóż jest to wzmocnienie dla częstotliwości równej 0, czyli zapisując transmitancję częstotliwościowo otrzymujemy, że interesuje nas wartość dla: ² ²0
X X 1
Jeśli f=0, to z=1, stąd wzmocnienie dla sygnału stałego to: ² 0
² 1 1
ZADANIE 2 Policz transmitancję filtru:
77
x(n)
y(n)
z-1 y(n-1) a=(-2) Rozwiązanie: Aby poznać transmitancję filtru najlepiej jest podać na wejście układu x(n) deltę Kroneckera, dzięki czemu na wyjściu y(n) otrzymamy odpowiedź impulsową filtru. W tym celu przygotujmy specjalną tabelkę: numer próbki
n
sygnał x(n) wejściowy sygnał y(n) wyjściowy
-1
0
1
2
3
4
5
0
1
0
0
0
0
0
0
1
-2
4
-8
16
-32
Rozważmy jednak dokładniej, co dzieje się z naszym sygnałem. W chwili n=-1 zarówno na wejściu jak i wyjściu otrzymujemy 0. W gdy pojawia się próbka n=0, na wejście przekazywany jest impuls równy 1:
x(0)=1
Σ=1+0=1
y(0)=1
z-1 y(-1)=0 a=(-2) ∙ 0=0 Sytuacja drastycznie się zmienia wraz z próbką n=1, bowiem dla y(n-1) otrzymujemy wartość 1, która następnie jest wzmacniana -2 razy. Jednocześnie na wejściu nie ma już żadnego sygnału, w związku z czym wyjście filtru zaczyna działać w sprzężeniu zwrotnym, co pokazuje, iż filtr jest niestabilny:
78
x(1)=0
Σ=0-2=-2
y(1)=-2
z-1 y(0)=1 a=(-2) ∙ 1=-2 Mimo tego, iż na wejście podany został sygnał o skończonej energii, na wyjściu otrzymujemy szereg, który nie jest zbieżny. Spróbujmy zapisać równanie różnicowe naszego filtru: n¡ L¡ n¡ 1
We wzorze współczynnik b0 jest równy 1, a współczynnik a1=a, stąd otrzymujemy transmitancję: ²
1 1 M
1 2 M
1
Porównując nasz wynik ze znanymi już transformatami Z: ²
1 1 M
Otrzymujemy odpowiedź, iż:
¡ ¸ 0, n¡ ¸ 2 ,
0, ,
ś¹ ¡ 0 » ś¹ ¡ ¼ 0
ś¹ ¡ 0 » ś¹ ¡ ¼ 0
IIR (Infinite Impulse Response)
ZADANIA LEKCJA DWUNASTA
ZADANIE 1 – dualizm Å Jaka musi być częstotliwość próbkowania sygnału ¯ Å aby uniknąć aliasingu? Rozwiązanie: Korzystając z właściwości symetrii (dualizm) przekształcenia Fourier’a: 2
sin >¯ 2? ¯
? ? ¸
0, 1,
|| Â > » || >
79
1
>¯ 2 ¯
° 2 2
Odpowiedź – częstotliwość winna wynosić 2 Hz.
Na wejście filtru ²
M, @
ZADANIE 2 – filtry/transformata Z
M, @
0, ; ¡ A 2 ,
¡ 0» ¡¼0
podano sygnał:
Jakie wartości ma sygnał wyjściowy ;1 ¡? Rozwiązanie: .
;
Ö ¡
.
ØM
;1
M
. ;1 ² . ;
Ö2 Ø
M
² .
2 2 2 Ö) * 1) *) * û Ø
: 2 M
. ; ;
1 1 : 1 2 M
2 4 M
1 2 1 M 1 2 M 1 M
0, . ;1 ¡ 2 ¡ A 2,
¡ 0» ¡¼0
ZADANIE 3 – filtry/FIR Jaki jest model matematyczny FIR drugiego rzędu, z liniową charakterystyką fazową, jeśli jego charakterystyka częstotliwościowa przyjmuje wartości ²0 0 oraz ²0,5 1? Rozwiązanie:
² Ö £ MX £ £ MX £ MX Ø
²0 £ £ MX £ MX £ £ £ 0
²0,5 £ £ MX,Ô £ MX,Ô £ £ MX £ MX £ £ £ 1
Musimy teraz skorzystać z symetrii współczynników, mówiącej, iż: £ £
80
Z czego w konsekwencji wynika: £ £
£ 2
£ £
2£ 1 £ 1 2£
1 4
²
£ 2£
1 1 M 1 M 4 4 2
1 2
ZADANIE 4 – stabilność Zbadać stabilność filtru przyczynowego, którego odpowiedź na impuls: ¡ 0» ¡º0
1, ·¡ A 0,
wynosi ;1 ¡ 2 .
;1 ¡ £¡ ; ¡ 2
Rozwiązanie:
Przejście do dziedziny z:
. .
;
;1
Ö ·¡ M 1 Ø
Ö2
Ø
: 2 M
. ;1
M
2 Ö ) * Ø
1
1 1 : 1 2 M
. ;1 1 ² ; . 1 2 M
²
… B B …
Warunek stabilności wymaga, by moduł każdego ze współczynników B\ był mniejszy od jedynki: ²
|B\ | 1
1 1 2 M 2
Warunek nie jest spełniony, bowiem moduł z 2 jest większy od 1.
81
ZADANIE 5 – transformata Fouriera Oblicz transformatę Fouriera sygnału:
1 ¯ 0 0¯1 1¯2 » 2¯3 ¯
¯ 1, Á¯ 1, ¿ ¯ 1, ¯ À¯ 3, ¿ 0, ¾ ç{ ä
1
t -1
1
0
2
3
Rozwiązanie: Na początek rysunek: Jak widać, sygnał składa się z dwóch trójkątów, stąd dokonamy transformaty jedynie pierwszego (znajdujący się w przedziale -1 do 1), a następnie użyjemy twierdzenia o przesunięciu. Widmo trójkąta: ∆ Ì x
Ì sin §2 2 ª Ì 2 2
y
Ì sin §2 2 ª Ì
W przypadku naszego trójkąta, okres jest równy jeden Ì 1, stąd możemy zapisać: ∆
sin
Nasz sygnał składa się z 2 połączonych trójkątów, co możemy zapisać jako: ¯ ∆ ¯ ∆ ¯ 2
Korzystając z twierdzenia o przesunięciu:
∆ ∆ MXÅ
sin sin MX MX
sin ∆ ∆ U1 MX Z
82
ZADANIE 6 – aproksymacja/baza Walsh’a Dokonaj aproksymacji sygnału:
0,5, ¯ Ã ¯, 0,
za pomocą pierwszych czterech funkcji Walsha.
0 ¯ 0,5 0,5 ¯ 1» ¯
Rozwiązanie: Nie będę się tu rozpisywał o tym skąd się biorą pierwsze 4 funkcje Walsha, bowiem zostało to już zrobione wcześniej, w dziale na temat bazy Haara i Walsha. Jednakże dla wygody zapiszmy je w postaci macierzowej (przypominam, iż wektory bazy są PIONOWO, aczkolwiek ortonormalność bazy Walsha sprawia, iż wektory pionowe pokrywają się z również z poziomymi): 1 1 1 1 1 1 1 1 á¹£ ð ñ 1 1 1 1 1 1 1 1
Ponieważ wektory bazy są w stosunku do siebie ortogonalne, nie będziemy używać błędu kwadratowego. Przez oznaczenie rozumiemy sygnał, a przez oznaczenie ¢ , pierwszą funkcję Walsha (¢ ^1 1 1 1`).
̃ ¢ ¢ ¢ ¢ ,Ô
; ¢ Â ¢ ¯ 0,5 1 ¯ ¯ 1 ¯ ^0,5¯`
,Ô
çä
0,5 ^0,5¯ ` 1 0,5 0
0,5 t 0,5
0
1
0,25 0,5 1 0,25 0,25 0,5 0,75 0,625
Otrzymaliśmy już pierwszy współczynnik. Czas na następny:
,Ô
; ¢ Â ¢ ¯ 0,5 1 ¯ ¯ 1 ¯ ^0,5¯`
,Ô
0,25 0,5 0,75 0,125
0,5 ^0,5¯ ` 1 0,5 0
W przypadku trzeciego współczynnika, w wektorze pojawiają się aż 4 przedziały, które musimy uwzględnić w zakresach całek: 83
çä
0,5 t 0,5
0 ,Ô
,Ô
1 ,!Ô
; ¢ Â 0,5 1 ¯ 0,5 1 ¯ ¯ 1 ¯ ¯ 1 ¯
,Ô
0,25 0,5 0,5 0,5 0,25 ^0,5¯ ` Teraz jeszcze tylko współczynnik : ,Ô
,Ô
,!Ô
1 0,75 ^0,5¯ ` 0,5 1 0,75 0,75 0,5 0,75 0,5
0,0625
,Ô
,!Ô
; ¢ Â 0,5 1 ¯ 0,5 1 ¯ ¯ 1 ¯ ¯ 1 ¯
,Ô
0,25 0,5 0,5 0,5 0,25 ^0,5¯ `
,Ô
,!Ô
1 0,75 ^0,5¯ ` 0,5 0,75 0,5 1 0,75 0,75 0,5
0,0625
Reasumując, nasz przybliżony sygnał wygląda w sposób następujący:
̃ 0,625¢ 0,125¢ 0,0625¢ 0,0625¢
Zapisując współczynniki macierzowo:
Otrzymujemy mnożenie:
^0,625
1 1 ̃ á¹£ ð 1 1
Przedstawiając rozwiązanie graficznie:
0,125 0,0625
0,0625`z
0,625 0,5 1 1 1 0,125 0,5 1 1 1 ñð ñ ð ñ 0,625 0,0625 1 1 1 0,875 0,0625 1 1 1
Jak widać, przybliżenie w zakresie od 0 do 0,5 dokładnie pokrywa się z przebiegiem oryginalnego sygnału.
84
ZADANIE 7 – transmitancja/filtry Znaleźć odpowiedź częstotliwościową dla 0 i 0,25 transmitancji (treść tego zadania niestety gdzieś mi zaginęła, stąd istnieje prawdopodobieństwo, że brzmiała nieco inaczej): ²
X
Rozwiązanie:
²
Dla 0:
²0
Dla 0,25:
1 M
1 0,5 M
1 MX
1 0,5 MX
1 2 4 1,5 3 1 0,5
V ! ||
4 3
1 MX,Ô 1 M X 1 ²0,25 2 2 1 0,5 MX,Ô 1 0,5 MX 1 0,5 V !2 2 √4 4 2√2
ZADANIE 8 – stabilność/filtry Zbadać stabilność filtru o równaniu różnicowym:
;1 ¡ ; ¡ ; ¡ 1 ; ¡ 2 3 ;1 ¡ 1 2 ;1 ¡ 2 4 ;1 ¡ 3
Rozwiązanie:
;1 ¡ 3 ;1 ¡ 1 2 ;1 ¡ 2 4 ;1 ¡ 3 ; ¡ ; ¡ 1 ; ¡ 2 ∑Ø M . ;1 ² ; . 1 ∑Ø M /
²
×
;1 Ö ; ¡ Ö ;1 ¡ Ø
Ø
1 M M 1 1 M 1 M 1 3 M 2 M 4 M 1 3 M 2 M 4 M 3 2 4 85
Warunek stabilności to |B\ | 1, stąd zajmiemy się tylko dolną częścią ułamka (mianownikiem? :P ). W tym miejscu musimy użyć schematu Hornera: 1 1 1
2 1
-3 -1 -2
-2 -4 -4
4 -4 0
Jak widać powyżej, liczba 2 nie może być pierwiastkiem wielomianu, aczkolwiek liczba 1 już tak (1 1 3 2 i dalej 1 2 2 4 oraz na koniec 1 4 4 0): 3 2 4 2 4 1
Teraz jeszcze musimy rozbić równanie kwadratowe:
2 4 0
∆ 4_ 4 16 20
2 2√5 1 √5 2
√∆ 2√5
1 √5
3 2 4 1U 1 √5ZU 1 √5Z
Ponieważ √5 ¥ 2,23, więc otrzymujemy współczynniki, których moduły są większe od 1, co oznacza, iż filtr jest niestabilny: B C1 √5C |1 2,23| 3,23 Â 1
Niech sygnał ¯ posiada widmo Fouriera ̂
ZADANIE 9 – własności transformaty Fouriera
Rozwiązanie: ̂ 1 Ư h § ª Æ Æ ¯ Í h MXD
. Jakie jest widmo sygnału 2¯ 1?
3 3 3
sin § 2 ª 4
¯
1 1 sin § 2 2ª sin § 4 ª 2¯ 1 2 4 2 8
2¯ 1
sin § 4 ª 8
MX
8 MX sin § 4 ª
ZADANIE 10 – FFT Wyznaczyć schemat algorytmu wyliczania FFT i szczegółowo przeanalizować jego realizację, jeżeli sygnał poddawany analizie ma postać ^0 1 0 2`z
86
Rozwiązanie: Na początek tworzymy macierz przejścia:
MX × \ cos ) Ù 4
2 2 ¡* sin ) ¡* Ù Ù 2 3`
¡ 0, … , Ù 1 ^0 1
1 ¡ 1
cos
2 ¡ 1
sin 0 2 2
cos sin 1
3 ¡ 1
cos
Pomijając już pozostałe obliczenia, otrzymujemy:
3 3 sin 0 2 2
1 1 1 1 1 1 V ð ñ 1 1 1 1 1 1
Natomiast po wymnożeniu macierzy przejścia i sygnału: 1 1 1 ̂ V ¯ ð 1 1 1
3 1 1 0 1 1 ñð ñ ð ñ 3 1 1 0 1 2
Co w schemacie (algorytmie) motylkowym wygląda następująco: 0
0
0
0
2
0
0
0
1 3
1
3
2
1
3
̂ 0
̂ 1
3
3 ̂ 2
̂ 3
A rozpisując na równania: × M
× M
̂ Ö 2¡ ¢×\ ¢×\ Ö 2¡ 1 ¢×\
Ø
Ø
Gdzie ¢× MX 5 , a ¢5 MX 5 , co w rezultacie daje nam (przykładowo dla k=0 i k=1): 34
3
E4
M
M
̂ 0 Ö 2¡ MX \ MX \ Ö 2¡ 1 MX \ Ø
Ø
87
̂ 0 Ö 2¡ MX Ø
MX
Ö 2¡ 1 MX 0 2 1 3 3
̂ 1 Ö 2¡ Ø
Ø
MX
MX
Ö 2¡ 1 MX Ø
̂ 1 0 MX 2 MX MX W1 MX 3 MX Y
̂ 1 0 MX 0 MX MX W1 MX 2 MX Y ^1 1 2 1`
Jak widać, wszystkie 3 metody dają te same rozwiązania. Należy w tym miejscu podkreślić, iż to, co dzieje się na schemacie motylkowym jest ściśle związane z powyższymi wzorami (jeśli schemat motylkowy zdaje się mieć błąd, bądź niejasność, to należy wyprowadzić rozwiązanie według wzorów).
ZADANIE 11 – transformata Z Jaka jest z-transformata sygnału: ¡ ¸
Rozwiązanie:
. Ö ¡ ØM
.
M
Ö ØM
Ö
ßØM
M
ß
M
M
Ö
ßØ
1, 0,5 , M
¡ 1» ¡¼2
1 M M 1 ß ¡2 Ö) * s s Ö Ö ) * MßM ¡ 2 2 2
Ø
ØM
ßØ
1 ß 1 ß Ö ) * Mß M Ö ß M Ö ) * Mß 2 2
ßØ
ß
1
ßØ
ßØ
û 1: 1
1 ß 1 1 1 M Ö ) * ³1 ) * ) * û ´ M 1 2 2 2 1 §2ª ßØ 1 . M 1 1 1 2 M
ZADANIE 12 – transmitancja/filtry Wyznaczyć charakterystyki częstotliwościowe i składową stałą dla ² 2 M . Rozwiązanie:
²U X Z 2 XM 2 MX 2 cos 2 sin 2 C²U X ZC ! !2 cos 2 sin 2
88
C²U X ZC !4 4 cos 2 cos 2 sin 2 !4 4 cos 2 1 !5 4 cos 2 Obliczenia dla fazy:
sin 2 'W²U X ZY _ tg ) * _ tg ) * 2 cos 2
Obliczenia dla składowej stałej:
²U X Z ¹ 0 ²U X Z 2 cos 0 sin 0 2 1 1
ZADANIE 13 – filtry Zapisz równanie filtru: }
F#
Rozwiązanie:
þã ^â`
M
þã ^âã`
ü#
n¡ L¡ L¡ 1
MARATON LEKCJA TRZYNASTA
MARATON ZADAŃ – 18 czerwca 2010 r. ZADANIE 1 – szereg Fouriera Jakie jest dyskretne widmo sygnału s(t)? ¯ ÷
V, 0,
0¯
Ì 2»
Ì ¯Ì 2
Rozwiązanie: Widmo sygnału dyskretnego to rozwinięcie w szereg Fouriera:
89
s(t)
A
t |
0
T
Na początek musimy policzyć współczynniki ck według wzoru: Å wz
Å wz
Å
Å
1 1 _\ ¯ MX\Å ¯ ¯ MX \Å ¯ Ì Ì Całkujemy jedynie pół okresu (od 0 do T/2): _\
z
z z 1 1 V 1 V V MX \Å ¯ MX \Å | ) MX \ * Ì Ì Ì
_\
z 1 V V ) MX z \ 1* U MX\ 1Z Ì 2 2 Ì
Musimy w tym miejscu stwierdzić jakie wartości przyjmują współczynniki ck dla k parzystych i dla k nieparzystych (z wyłączeniem k=0, bowiem dzielić przez zero nie wolno, bo jak każdy dobry i niedobry student wie – bo wybuchnie). Można tego dokonać na dwa sposoby – przechodząc do sinusa i cosinusa, albo bawiąc się płaszczyzną liczb zespolonych: metoda SIN/COS
_\
I teraz podstawiamy:
V V cos sin 1 U MX\ 1Z 2 2
k
GHI ý
$ IJK ý
1
-1
0
2
1
0
Lý
V 0
metoda e–jπk W tej metodzie posługujemy się płaszczyzną liczb zespolonych. Nasza eksponenta to wirujący wektor. Ponieważ ma znak minus przy jednostce urojonej (-jπk), stąd obrót wektora następuje zgodnie ze wskazówkami zegara (bodaj to jest obrót w prawo). Dla k=1 otrzymujemy wyrażenie: MX\ MX MX MX ±° 90
Czyli nasz wektor obraca się do tyłu o 180 stopni, co graficznie wygląda tak: Im(z)
-1
Re(z) 0
Teraz parzyste k - dla k=2 otrzymujemy wyrażenie:
MX\ MX MX MX®°
Czyli nasz wektor obraca się do tyłu o 360 stopni, co graficznie wygląda tak: Im(z)
-1
Re(z) 0
1
A w praktyce oznacza, iż wektor przyjmuje wartość 1. Teraz wyznaczamy współczynnik c0 (albo z granicy i tw. D’Hospitala, albo z wartości średniej za pomocą całki):
VU1 MX\ Z V V MX\ V MX\ V _ lim lim lim \ \ \ 2 2 2 2 _
z
z
1 1 V Ì V Ì V ¯¯ V¯ ) 0* Ì Ì Ì 2 Ì 2 2
2V , Á ¿ _\ 0, À V ¿ , ¾ 2
2¹ 1
2¹ 0
»
.¯ Ö _\ X \Å \ØM
91
.¯
V V V V V X Å X ÅM X Å X ÅM û 1 3 3 2 1 .¯
V V X Å V U MX Å Z U X Å MX Å Z û 2 3
.¯
.¯
-3ω0
V V V ^2 sin3 ¯` û ^2 sin ¯` 2 3
1 1 V 2V sin ¯ sin3 ¯ sin3 ¯ û 3 5 2
-2ω0
-ω0
|
|
0
ZADANIE 2 – transformata Fourier’a/splot Jakie jest widmo sygnału s(t)?
| ê
ω0
2ω0
3ω0
f
¯ Í ¯ ÍÍ ù M
¯ ¸
1, 0,
¯ 1, ¯ ï 1, 0,
1 ¯ 1» |¯| ¼ 1
Rozwiązanie: Splot w dziedzinie czasu to iloczyn w dziedzinie widm:
1 ¯ 0 0¯1 » |¯| Â 1
¯ ù ¯ s1(t) 1
t -1
0
1 92
Widmo bramki to:
sin 2
W przypadku sygnału s2(t) sytuacja się nieco komplikuje:
s2(t) 1
t -1
0
1
By policzyć widmo sygnału trójkątnego, najpierw musimy policzyć jego pochodną: çê
Mç| ä Mä
1
1
t
0
-1
-1
Otrzymujemy dwie przesunięte bramki (plus, druga bramka obrócona), stąd możemy skorzystać z twierdzenia o przesunięciu:
s1(t) 1
t -0,5
0
0,5
93
1 sin 2 Ì sin 2 2 L
ä ã, ì t -1
0
1
ä ã, ì
½¯ 0,5 ½
sin 2 0,5 MXM,Ô sin X
½¯ 0,5 ½ 1
½ ½ Korzystając z wzorów Eulera:
sin MX sin 2 0,5 MX,Ô
sin sin sin X X MX U MX Z
JK MJK cos L sin L cos L sin L 2 sin L
sin sin 2 sin 2 Na koniec nie wolno zapomnieć o policzeniu całki z widma, bowiem policzyliśmy tutaj dopiero widmo pochodnej! Wedle definicji: Å
LNN M
h h0·
Jednak przed dokonaniem podstawienia do wzoru musimy policzyć s3(0). Korzystając z reguły d’Hospitala otrzymujemy:
sin cos lim lim 1 K K
0
sin ^2 sin 0` 1 0 0
1 sin sin h0· 2 0 2 2 94
No i teraz łączymy finalnie nasze dwa widma – impulsu prostokątnego i trójkątnego dając odpowiedź na pytanie o widmo sygnału s(t), będącego splotem:
sin 2 sin sin sin 2
ZADANIE 3 – transformata Fourier’a Jakie jest widmo sygnału s(t), pomnożone przez okno Bartlett’a (Bartlett window): ¯ sin 100¯
¢¯ ¸
1 |¯|, 0,
|¯| 1» |¯| Â 1
Rozwiązanie: Okno Bartlett’a to poniekąd impuls trójkątny (triangular, hat, tent function):
w(t) 1
t -1
0
1
Należy w tym miejscu zastosować twierdzenie o modulacji rzeczywistej dla sinusa: ¯ L¯ sin ¯ ^h h ` 2 ¯ ¢¯ sin100¯
Korzystając z poprzedniego zadania, widmo trójkąta to (i tutaj jest zonk, bowiem nie całkowaliśmy widma, które uzyskaliśmy z przesuniętych bramek, stąd odpowiedź będzie tu dla BŁĘDNEGO widma): sin ¢ 2
sin sin ³2 2 ´ 2
Przy czym częstotliwość f0=50, bowiem:
sin100¯ sin ¯ sin2 ¯ 95
ZADANIE 4 – splot
x(n)
y(n)
h(n)
×
n¡ Ö L£¡ ßØ
L¡ ^0, 1, 2, 3, 4, 3, 2, 1` £¡ ^0, 1, 1`
Rozwiązanie: Ogólny wzór na splot sygnałów dyskretnych to:
n¡ Ö L£¡ Ö £L¡ \ØM
\ØM
Na początek zajmiemy się drugą wersja wzoru (zawierającą h(k) ), a następnie pokażemy, iż pierwsza daje takie same rezultaty jak druga. Na początek wzór:
n¡ Ö £L¡ \ØM
Musimy się teraz zastanowić nad granicą naszej sumy (sigmy). Czy potrzebujemy zawierać w naszej sumie wszystkie współczynniki h(k) od minus do plus nieskończoności? Otóż nie! Według naszego wzoru: £¡ ^0, 1, 1`
wystarczą jedynie k od 0 do 2 (ba! nawet k od 1 do 2, bowiem h(0)=0, co w rezultacie również da zero). Reasumując zapisujemy:
n¡ Ö £L¡ \Ø
Możemy oczywiście w tym miejscu zaznaczyć, iż górna granica sumy to N=2 (nawiązując do wzoru z samego początku zadania). Teraz potrzebujemy naszego sygnału wejściowego: L¡ ^0, 1, 2, 3, 4, 3, 2, 1`
Dla n=0 mamy x(0)=0, dla n=1 mamy x(1)=1, a dla np. n=6 otrzymujemy wynik x(6)=2. Sprawa prosta, więc możemy przystąpić do obliczenia splotu dla y(0):
n0 Ö £L0 £0L0 0 £1L0 1 £2L0 2 \Ø
n0 £0L0 £1L1 £2L2
96
W tym miejscu dokonujemy założenia, iż wszystko co działo się przed chwilą n=0 jest równe również 0: n0 0 0 1 0 1 0 0
Co by czasu nie marnować i siłą rozpędu dalsze współczynniki wyliczyć, przeskoczymy od razu do próbki wyjściowej n=7, czyli y(7):
n7 Ö £L7 £0L7 0 £1L7 1 £2L7 2 \Ø
n7 £0L7 £1L6 £2L5
n7 0 1 1 2 1 3 2 3 1
Wszystkie te obliczenia można zawrzeć w bardzo ładnej tabeli, która wyłania się poniżej. Jedyne o czym trzeba pamiętać, to o zamianie współczynników dla h(n) – pierwszy współczynnik jest ostatnim, a ostatni pierwszym. Wynika to z definicji splotu, iż dla h(0) przypada np. x(5), a dla h(2) przypada x(3). n
-2
-1
0
1
2
3
4
5
6
7
8
9
x(n)
0
0
0
1
2
3
4
3
2
1
0
0
h(n)
-1
1
0
y(n)
-
-
0
0
1
1
1
1
-1
-1
-1
-1
Podczas wykonywania obliczeń z wykorzystaniem tabelki, należy pamiętać o przenoszeniu współczynników transmitancji w prawo, robiąc co próbkę jedno przesunięcie. Jednocześnie można w tym miejscu zaznaczyć, iż cały wiersz dla h(n) można dopełnić zerami (miejsca dla próbek od 1 do 9), bowiem nie zmienia to w żaden sposób wyniku. Poniżej znajdują się przykładowe rozwiązania dla różnych n, według schematu (zapis schematu jest tylko i wyłącznie moim wymysłem, ale działa): n¡ L¡ 2 1 L¡ 1 1 L¡ 0 y(n) dla n równego
0
0*(-1)+0*1+0*0=0
3
1*(-1)+2*1+3*0=1
7
3*(-1)+2*1+1*0=-1
Teraz wykonajmy obliczenia dla pierwszej części wzoru, czyli:
n¡ Ö L£¡ \ØM
Dokonajmy stosownych podstawień prowadzących do obliczenia y(7). W tym miejscu musimy jednak wspomnieć, iż granica k się zmienia! Już nie od 0 do 2, lecz od 0 do 7, bowiem tym razem mamy x(k), który składa się z 8 próbek (oczywiście moglibyśmy wszystko liczyć od minus do plus nieskończoności, jedynie pozostaje pytanie po co, skoro zakładamy, że poza tymi 8 próbkami, sygnał ma wartość równą zero): 97
!
n7 Ö L£7 \Ø
n7 L0£7 L1£6 L2£5 L3£4 L4£3 L5£2 L6£1 L7£0
Ponieważ wszystkie h od 3 do 7 uznajemy za zerowe (np. h(5)=0 ), więc w konsekwencji w obliczeniach pozostaną jedynie h(2), h(1) oraz h(0): n7 L5£2 L6£1 L7£0
Podstawiając odpowiednie wartości z obu wektorów (L¡ ^0, 1, 2, 3, 4, 3, 2, 1` oraz £¡ ^0, 1, 1`) otrzymujemy: n7 4 1 3 1 1 0 4 3 1
W konsekwencji otrzymaliśmy identyczną odpowiedź. Drugą metodą obliczenia splotu jest przejście do dziedziny Z, ale z tego co widzę, nie jest to opłacalne, bo moje notatki zaraz się ucinają: L M 2 M 3 M 4 M û
ZADANIE 5 – falki
Hd
2)
2+
Hs
swe
+ 2)
Gd
2+
swy
Gs
O ¡ ² ¡ 1 1M
². ¡ ² ¡ 1 O. ¡ O ¡ 1 ²
×M
1
√2
;
1
√2
Ö £ ¡£ ¡ 2 ·
Ø
Rozwiązanie: Coś niecoś na temat tego zagadnienia można znaleźć tu: http://wavelet.elektro.agh.edu.pl/wyklad/pdf/FalkiCyfrowo.pdf By układ pracował poprawnie(?), filtry muszą spełniać warunki ortogonalności: ×M
Ö £ ¡ √2
Ø
98
Musimy teraz policzyć pozostałe transmitancje (Gd, Hs, Gs). By się nam lepiej liczyło dokonamy małej zmiany (modyfikacja powoduje bodaj brak ortogonalności): ² ¡ ^1 ; 1` 2
Wiemy, iż transmitancja Hd składa się z dwóch elementów, czyli k=2, Hd(0)=1 oraz Hd(1)=1. Podstawiając wartości do wzoru obliczamy: O ¡ ² ¡ 1 1M
O 0 ² 2 0 1 1M ² 1 1 1 1 1 O 1 ² 2 1 1 1 M ² 0 1 1 1 1
Stąd otrzymujemy, że transmitancja Gd jest równa:
O ¡ ^1 ; 1`
Analogicznie powinniśmy otrzymać transmitancję Hs (². ¡ ^1 ; 1`) oraz Hs (O. ¡ ^1 ; 1`). Nie będzie spełniony warunek ortogonalności, stąd trzeba będzie przemnożyć s1 przez normę (w naszym przypadku bodaj 2). n
-1
0
1
2
3
4
5
6
7
swe
0
1
2
3
0
-1
-2
-3
0
Hd
1
1
0
0
0
0
0
0
0
s1
-
1
3
5
3
-1
-3
-5
-3
Gd
1
-1
s2
-
-1
-1
-1
3
1
1
1
-3
Teraz musimy zająć się przejściem sygnałów s1 i s2 przez układ 2) (wybierający do 2gą próbkę) i 2+ (nadpróbkowywujący – wypełnia zerami). ^1, 3, 5, 3, 1, 3, 5, 3` " ^1, 0, 5, 0, 1, 0, 5, 0`
Całe zadanie opiera się na 4-krotnym obliczeniu splotu oraz 2-krotnym podpróbkowaniu i nadpróbkowaniu.
ZADANIE 6 – kryterium stabilności W dziedzinie Z mamy warunek (twierdzenie o stabilności filtrów IIR) – filtr IIR jest asymptotycznie stabilny wtedy i tylko wtedy, gdy wszystkie zera wielomianu charakterystycznego leżą wewnątrz koła jednostkowego, tzn.: | | 1, ¹ ¡ 1, 2, 3, … Ù
99
Im(z)
Re(z) 0
Reasumując, transmitancję filtru można zapisać również w postaci: ²
… B B …
Gdzie współczynniki (bieguny transmitancji) pk muszą mieścić się w kole: |B\ | 1
Jednocześnie w dziedzinie s (Laplace’a) jest warunek, iż wszystkie współczynniki c są większe od zera: Im(z)
Re(z) 0
Przy czym przejście z Z do s dokonuje się za pomocą podstawienia: Przykładowo – niestabilny filtr:
1 1
B 1
B 2 2
B 2 2 100
²
1 1^ 2 2`^ 2 2` ²
_ 1
_ 3
1 4 8
3
_ 4
_ 8
_ 0
Im(z) 2
Przykładowo – stabilny
filtr: -2
2
Re(z)
2
Re(z)
0 Im(z) 2 -2 -2 0
-2
Przykładowo – poprawne współczynniki:
_M
q_ p M ∆× p_MÔ p … o 0
²
_
_M _M … 0
_ ∆ a_ 0
0
1 3 4 8
_M
_M … 0 _ _
0
0 _
_M … 0
0 0
_M
… 0
0 5 1 _ d a8 12 _ 0 0
∆ 5 Â 0
0 0 _ … 0
0 5d 8
∆ 5 12 8 1 52 Â 0
… … … … …
0 0 0 … 0
0 0v u 0u …u _ t
101
Układ jest stabilny.
ZADANIE 7 – energia
∆ 8 ∆ 416 Â 0
Ü |L¯| ¯ M
Energia w częstotliwości jest równa energii w czasie. Stąd licząc energię dla sygnału: L¯
sin ¯ ¯
przy całkowaniu otrzymalibyśmy granicę od minus nieskończoności do plus nieskończoności, co mogłoby być bardzo niewygodne do obliczenia. Jednocześnie możemy skorzystać z własności, iż widmem sinc’a jest bramka, której energię bardzo łatwo obliczyć.
EGZAMIN 2010 – termin I LEKCJA CZTERNASTA
ZADANIE 1 – ortogonalność Czy funkcje Haar’a są ortogonalne do funkcji Walsh’a? Rozwiązanie: Jak zapowiedział Pan Prof. Ziółko - „czegoś takiego jeszcze nie było”. Tak więc byliśmy swego rodzaju ewenementem w dziedzinie Przetwarzania Cyfrowych Sygnałów na naszej Alma mater AGH. Ale wracając do zadania! Sednem okazało się być pisemne uzasadnienie swojego zdania na temat ortogonalności dwóch baz. Na początek należało sobie przypomnieć warunek ortogonalności: L; n  0
Ewentualnie warunek ortogonalności dwóch baz („Cyfrowe przetwarzanie sygnałów – od teorii do zastosowań” - T. Zieliński, WKŁ, Warszawa 2009, str. 51) ×
þ\ ; þQ Â Ö \ ¡Q ¡ ¸ Ø
0, _,
º ¹» ¹
Gdzie b* oznacza sprzężenie zespolone (jednostka urojona z przeciwnym znakiem), ale że nasze funkcje są czysto rzeczywiste, stąd ten element nas nie interesuje. Reasumując losujemy dwie dowolne funkcje – jedną z bazy Walsh’a, drugą z bazy Haar’a: £ ^1 , 1 , 1 , 1 , 0 , 0 , 0 , 0`
¢ ^1 , 1 , 1 , 1 , 1 , 1 , 1 , 1` 102
HAAR
WALSH
1
1
1
0,5 0
0
1
-1
0,5
-1
Co otrzymamy po wymnożeniu tych dwóch funkcji? Jaki będzie ich iloczyn skalarny? £ ; ¢ Â 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 £ ;¢ Â 1 1 1 1 0 0 0 0 4
1
0
0,5
1
-1
I w tym miejscu powinno już być po zadaniu. Bazy nie są do siebie ortogonalne i kropka… Ale czemu nie jest? Bo jak ktoś miał pecha (i nie sprawdził większej ilości konfiguracji) to mógł trafić na: £ ^0 , 0 , 0 , 0 , 1 , 1 , 1 , 1`
¢ ^1 , 1 , 1 , 1 , 1 , 1 , 1 , 1`
£ ; ¢ Â 0 0 0 0 1 1 1 1 1 1 1 1 £ ;¢ Â 1 1 1 1 0
No i jeśli wyciągnęło się za szybko wnioski, to błędna odpowiedź gotowa. Jednakże pojawia się tutaj pewna kontrowersja (abstrahując od tego, iż już stwierdziliśmy, że funkcje nie są do siebie ortogonalne, a jeśli są, to nie wszystkie). Ortogonalność dwóch pierwszych baz. Obie są takie same: £ ¢ ^1 , 1 , 1 , 1 , 1 , 1 , 1 , 1`
Warunek ortogonalności mówi, że funkcje powinny być różne. Tutaj jednak sprawdzamy bardziej warunek unormowania, niż ortogonalności (wzór na warunek unormowania poniżej). L; L Â 1
103
Powstaje jednak pytanie, czy funkcje unormowane można z góry traktować jako ortogonalne? Na szczęście (lub nie), rozważania te nie wpływają na generalny wniosek o tym, iż bazy ortogonalnymi nie są.
ZADANIE 2 – transformata Fouriera Policz transformatę Fourier’a sygnału: ¯ ¸
|¯|, 0,
|¯| 1» |¯| ¼ 1
Rozwiązanie: Sygnał kryjący się pod powyższą formułą prezentuje się następująco: çä 1
t -1
0
1
Zadanie to można było rozwiązać na przynajmniej dwa sposoby. Oba w konsekwencji powinny dać odpowiedź: sin 2 sin SPOSÓB PIERWSZY – widmo pochodnej sygnału: Musimy na początek policzyć pochodną sygnału. Nasz sygnał składa się z 4 elementów. Skok z 0 do 1 w punkcie -1 na osi x, funkcja s(t)=–t w przedziale od -1 do 0, funkcja s(t)=t w przedziale od 0 do 1 oraz skok z 1 na 0 w punkcie 1 na osi x. çM
Mçä Mä
1
t -1
0
1
-1
104
Teraz konieczne jest właściwe rozbicie sygnału na poszczególne elementy. Otrzymaliśmy dwie delty Diraca (bądź Kroneckera – jak kto woli) oraz dwie bramki prostokątne. Wzór na przesunięcie w czasie wygląda następująco: L¯ ¯ MXÅ h
Jeśli w chwili t=(-1) chcemy otrzymać to, co dzieje się dla δ(0), to musimy do sygnału dodać jedynkę, czyli otrzymujemy δ(t+1). Rä ä t -1
0
Ponieważ widmo delty Diraca to 1, stąd otrzymujemy:
·¯ 1 · MXM 1 X
Sumaryczne widmo delt to:
·¯ 1 · MX 1 MX
Û · · X U MX Z X MX
Musimy teraz odwołać się do wzorów Eulera:
MJK cos L sin L JK cos L sin L
Czyli:
JK MJK cos L sin L cos L sin L 2 sin L Û 2 sin 2 sin 2
Teraz musimy obliczyć widma bramek. Korzystając z wyprowadzonych widm dla sygnałów standardowych, widmo impulsu prostokątnego to: 2
sin Ì sin 2Ì Π(t)
1
t -T
0
T
105
Czas trwania naszych bramek to 1, co oznacza, że T=0,5. Jednocześnie musimy stwierdzić jakie są przesunięcia w czasie obu impulsów.
ä ã, ì -1
t
0
1 ä ã, ì
Po raz drugi odwołujemy się do wzoru dotyczącego przesunięcia sygnału w czasie: ½¯ 0,5 ½ 1
sin X sin 2 0,5 MXM,Ô
Minus przy powyższym widmie wziął się z tego, iż ten impuls prostokątny jest jeszcze dodatkowo obrócony. Teraz jeszcze musimy zapisać wzór dla drugiej bramki: ½¯ 0,5 ½
sin 2 0,5 MX,Ô sin MX
Korzystając z liniowości transformaty Fourier’a: [ ½ ½
sin MX sin X sin MX U X Z
Odwołując się po raz kolejny do wzorów Eulera:
Otrzymujemy:
MJK JK cos L sin L cos L sin L 2 sin L
[
sin MX sin sin 2 sin 2 U X Z
Dodając teraz do siebie widmo delt Kroneckera oraz bramek otrzymujemy: Û [ 2 sin 2 2
sin sin 2 Ssin 2 T
106
Ponieważ mamy już widmo pochodnej, musimy teraz całkując „wrócić” do widma funkcji pierwotnej. Musimy jednak skorzystać ze specjalnego wzoru („Teoria sygnałów” Izydorczyk, Płonka, Tyma, Helion, Gliwice 2006, str. 35): Å
LNN M
h h0·
Nim podstawimy wszystko do powyższego wzoru, musimy najpierw sprawdzić, czy X(0)=0: 0 2 sin2 0 2 sin 0
sin
W tym miejscu rodzi się problem, bowiem nie można dzielić przez zero. W związku z tym skorzystamy z reguły d’Hospitala:
sin cos lim lim 1 K K Dzięki czemu otrzymujemy, iż:
0 2 sin0 2 sin0 1 0
sin 1 0· 2 Ssin 2 T 0 · 2 2
sin 2 sin
SPOSÓB DRUGI – addytywność (podziękowania dla Rafała M.): Drugi sposób wymaga nieco innego spojrzenia na sygnał. Należy w pierwszej kolejności zobaczyć na schemacie bramkę prostokątną, a następnie odjęty od niej impuls trójkątny: çä 1
t -1
0
1
Widmo zarówno impulsu prostokątnego, jak i trójkątnego są widmami standardowymi, stąd nie będziemy ich wyprowadzać. Dla impulsu prostokątnego o T=1 otrzymujemy: ½
sin 2 Ì sin 2 1 sin 2
107
Natomiast dla impulsu trójkątnego o T=1 otrzymujemy („Teoria sygnałów” Izydorczyk, Płonka, Tyma, Helion, Gliwice 2006, str. 43):
S
S
Ì 4V sin ) * 2 Ì
41 2 1 sin sin ) * 1 2 2
Możemy teraz albo odjąć impuls trójkątny od bramki prostokątnej, lub dodać obrócony impuls trójkątny do bramki prostokątnej – tak czy inaczej wychodzi to samo: ½ S
ZADANIE 3 – DFT 2D Policz DFT następującego obrazu:
1 q1 p1 p 1 p p1 p1 p1 o1
0 0 0 0 0 0 0 0
sin 2 sin
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
1 1v 1u u 1u 1u 1u 1u 1t
Rozwiązanie (podziękowania dla Andrzeja G.): Sam wstęp do rozwiązania tego zadania znajduje się w lekcji 8 o DFT (macierz przejścia dla DFT). Teraz jednak wracając do sedna zadania. Musimy w tym miejscu skorzystać ze wzorów znajdujących się w wykładach CPS dla MSiB (Macierzowy zapis 2-D DFT, strona 24, wykład Analiza częstotliwościowa sygnałów dyskretnych – prof. Mariusz Ziółko): ̂ áK á1
Ponieważ ÙK jest równe Ù1 , więc możemy całe działanie zapisać jako: ̂ á á
Proszę w tym miejscu pamiętać, iż mnożenie macierzy nie jest obojętne w kwestii kolejności! Z tego też powodu stosowanie polecenia fft(nazwa) w MatLabie w przypadku obrazu NIE SPEŁNIA SWEGO ZADANIA, w tym celu stosujemy polecenie fft2(nazwa)! Wykonując dwukrotnie mnożenie: á
̂ á
á
̂ á
NIE OTRZYMUJEMY WIDMA! Przy takim sposobie mnożenia (przez ortonormalność macierzy przejścia) ponownie wracamy do obrazu (w tym miejscu odsyłam do działu dotyczącego bazy Walsha – lekcja piąta)! Mnożenie musi być wykonane w formie:
108
Czyli reasumując wykonujemy działanie:
1 q % ) & * ' + ( v q1 p ) * + ) * + u p1 p up & + % * ( ) ' u p1 ̂ á á p p * * * u p1 p ' ) ( * % + & u p1 p + * ) + * ) u p1 o ( + ' * & ) % t o1
Po pierwszym mnożeniu otrzymujemy: 8 q0 p0 p 0 ̂ á p p0 p0 p0 o0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
8 0 v q 0 u p up 0 u p 0 u p 0 u p 0 u p 0 t o
0 0 0 0 0 0 0 0
% ) & * ' + (
0 0 0 0 0 0 0 0
) * + ) * +
0 0 0 0 0 0 0 0
1 1v q % ) & * ' + ( v 1u p ) * + ) * + u up u 1u p & + % * ( ) ' u 1u p * * * u 1u p ' ) ( * % + & u 1u p + * ) + * ) u 1t o ( + ' * & ) % t
& + % * ( ) '
* * * *
' ) ( % + &
+ * ) * + * )
(v +u u 'u u &u )u %t
Dlaczego tylko dwie ósemki w rogach? Ponieważ przyjęliśmy, iż strzałka w prawo to 1, więc mnożąc pierwszą kolumnę macierzy przez pierwszy wiersz macierzy przejścia otrzymujemy: 1111111111111111 8
W pozostałych mnożeniach strzałki się zerują. Wykonanie drugiego mnożenia daje nam rezultat: q16 p0 p0 ̂ á p 0 p0 p0 p0 o0
8 4√21 0 0 0 0 0 0 0
8 1 0 0 0 0 0 0 0
8 4√21 0 0 0 0 0 0 0
0 8 4√21 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 1 0 0 0 0 0 0 0
8 4√21 v 0 u 0 u 0 u 0 u u 0 u 0 t 0
Dlaczego tak? Ano, ponieważ: q p p p p p p o
8 8 8 8 ( 8 8 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 8 ' 8 8 * 8 8 & 8 8 ) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 8 % v 0 u 0 u 0 u 0 u 0 u u 0 t 0
Kolejnym krokiem w rozwiązaniu jest podstawienie odpowiednich wartości liczbowych pod odpowiednie strzałki (lekcja ósma): 16 8 ( 8 + q0 0 0 p 0 0 p0 0 0 p0 0 0 p0 0 0 p0 p0 0 0 o0 0 0
8 ' 0 0 0 0 0 0 0
0 8 & 8 ) 8 % v 0 0 0 0 u 0 0 0 0 u 0 0 0 0 u 0 0 0 0 u 0 0 0 0 u u 0 0 0 0 t 0 0 0 0
109
√| √| $ | |
%
√| √| $ | |
&
'
q16 8 S1 √| $ √|T 8 1 8 S1 √| $ √|T | | | | p p0 0 0 0 p0 0 0 0 p 0 0 0 p0 0 0 0 p0 0 0 0 p0 p0 0 0 0 o0 0 0 0 q16 U8 4√2 4√2Z 8 1 0 0 p0 0 0 p0 0 0 p0 0 0 p0 p0 0 0 p0 0 0 o0 0 0 q16 8 4√21 0 p0 0 p0 0 p0 0 p0 p0 0 p0 0 o0 0
U8 4√2 4√2Z 0 0 0 0 0 0 0
8 1 8 4√21 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ZADANIE 4 – filtry Jaka jest odpowiedź impulsowa filtru ²
√| √| $ | |
w, @
0 8 S1 0 0 0 0 0 0 0
√| √| $ | | (
√| √| √| √| $ T 8 1 8 S1 $ Tv | | | | u u 0 0 0 u 0 0 0 u 0 0 0 u 0 0 0 u 0 0 0 u u 0 0 0 t 0 0 0
0 U8 4√2 4√2Z 8 1 U8 4√2 4√2Zv 0 0 0 0 u 0 0 0 0 u 0 0 0 0 u 0 0 0 0 u u 0 0 0 0 u 0 0 0 0 t 0 0 0 0
0 8 4√21 8 1 8 4√21 v 0 0 0 0 u 0 0 0 0 u 0 0 0 0 u 0 0 0 0 u u 0 0 0 0 u 0 0 0 0 t 0 0 0 0
? Czy jest to filtr stabilny?
Rozwiązanie: Na początek przypomnijmy sobie wzór na sumę wyrazów nieskończonego ciągu geometrycznego: ø
, |:| 1 1:
Porównując ze sobą wzór na transmitancję H(z) oraz sumę ciągu, otrzymujemy niemalże gotową odpowiedź na pierwszą część zadania: 2 1 : 1 2 M
2
: 2 M
Skoro mamy już te wszystkie informacje, to wiemy, że nasz ciąg musiał wyglądać w przybliżeniu w sposób następujący: 2 2 2 h : : û 2^1 ) * ) * ) * û ` w w 2 h 2 Ö ) * 2 Ö2 M
Ø
Ø
110
Przyrównując powyższe wyprowadzenie z wzorem na transformatę Z otrzymujemy bardzo łatwo odpowiedź: w
h Ö L¡ M ØM
Tak więc otrzymujemy informację, iż odpowiedź impulsowa filtru to: ;1 ¡ 2 2
Teraz druga część pytania – czy filtr jest stabilny? Skorzystajmy z drugiego sposobu zapisu transmitancji w dziedzinie Z: ²
M û ∑/ Ø × 1 ∑Ø M B B û
Warunek mówi, iż filtr jest stabilny jeśli:
|B\ | 1
Dlaczego? Ponieważ w momencie gdy dół ułamka (tak tak, nie pamiętam, że to się nazywa mianownik) zbliża się do zera, to cała funkcja zmierza do nieskończoności. ²
2 2 M
1 2 2 B 2
|B | 2 Â 1
Warunek stabilności filtru niespełniony – filtr nie jest stabilny.
EGZAMIN 2010 – termin II LEKCJA PIĘTNASTA
ZADANIE 1 – aproksymacja (metodą matematyczną) Który z sygnałów , s sin 2¯ czy s cos 2¯ jest lepiej, w sensie minimalizacji energii odchyłki w przestrzeni T 0,1, reprezentowany przez pierwsze cztery funkcje Walsha? (2pkt)
Rozwiązanie: Zadanie 6 w lekcji jedenastej jest bardzo podobne, stąd będziemy się nim posiłkować. W zadaniu mamy dane dwie funkcje aproksymowane (sinus i cosinus) i cztery funkcje aproksymujące – pierwsze cztery funkcje Walsha. Na początek przypomnijmy sobie jak one wyglądają korzystając z zapisu macierzowego:
1 1 1 1 á¹ ð1 1 1 1ñ 1 1 1 1 1 1 1 1
Na początek zajmiemy się sinusem. Nasz sygnał ma formę:
111
¯ sin¯
Jednakże w tym miejscu pojawia się ACHTUNG! Funkcje Walsha zmieniają się od 0 do 1, a sinus od 0 do 2π, stąd nasz sygnał zapiszemy w formie: ¯ sin2¯
WSPÓŁCZYNNIKI Zabieramy się więc za zadanie. Przez oznaczenie rozumiemy sygnał, a przez oznaczenie ¢ , pierwszą funkcję Walsha (¢ ^1 1 1 1`). Nasz sygnał po aproksymacji to ̃ .
̃ ¢ ¢ ¢ ¢
; ¢ Â ¢ ¯ sin2¯ 1 ¯
Współczynnik :
,Ô
1 1 1 ^cos2¯` ^cos2 cos0` 0 0 2 2
; ¢ Â ¢ ¯ sin2¯ 1 ¯ sin2¯ 1 ¯
)
,Ô
1 1 1 1 0,5 0,5 ^cos2¯` 1 * ^cos2¯` ) * ^cos2¯` ) * ³^cos2¯` ´ 0,5 0,5 0 0 2 2 2
)
1 1 2 * ^cos cos0 cos2 cos` ) * ^1 1 1 1` 2 2
Współczynnik :
; ¢ Â
,Ô
,Ô
,!Ô
sin2¯ 1 ¯ sin2¯ 1 ¯ sin2¯ 1 ¯
sin2¯ 1 ¯
)
,Ô
,!Ô
1 0,25 ^cos2¯` 0,5 ^cos2¯`0,75 ^cos2¯` 1 * ³^cos2¯` ´ 0,75 0,25 0,5 0 2
)
1 3 3 * cos § ª 1 1 cos § ª cos ) * 1 1 cos ) * 2 2 2 2 2
Ponieważ cos § ª cos § ª 0, więc:
,Ô
)
1 3 * 2 cos § ª 2 cos ) * 0 2 2 2
112
Współczynnik :
; ¢ Â
,Ô
,Ô
,!Ô
sin2¯ 1 ¯ sin2¯ 1 ¯ sin2¯ 1 ¯
,Ô
,Ô
sin2¯ 1 ¯
)
)
,!Ô
1 0,25 ^cos2¯` 0,5 ^cos2¯`0,75 ^cos2¯` 1 * ³^cos2¯` ´ 0,75 0,25 0,5 0 2
1 3 3 * cos § ª 1 1 cos § ª cos ) * 1 1 cos ) * 0 2 2 2 2 2
Czyli nasz aproksymowany sygnał ma postać:
2/ 0 1 1 1 1 2/ 2/ ̃ ð1 1 1 1ñ ð ñ ð ñ 2/ 1 1 1 1 0 2/ 1 1 1 1 0
Teraz współczynniki musimy wyliczyć dla cosinusa. By nie rozpisywać wszystkiego od początku,
zamieniamy cosinusy na sinusy jako wyniki całek oraz §ª zamiast § ª, ponieważ:
cos2¯ ¯
1 sin2¯ 2
; ¢ Â ¢ ¯ cos2¯ 1 ¯
Współczynnik : )
1 1 1 ^sin2¯` ^sin2 sin0` 0 0 2 2
1 1 1 1 0,5 0,5 ^sin2¯` 1 * ^sin2¯` ) * ^sin2¯` ) * ³^sin2¯` ´ 0,5 0,5 0 0 2 2 2 1 ) * ^0 0 0 0` 0 2
Współczynnik :
1 0,25 ^sin2¯` 0,5 ^sin2¯`0,75 ^sin2¯` 1 ) * ³^sin2¯` ´ 0,75 0,25 0,5 0 2
Współczynnik :
)
1 2 * ^1 0 0 1 1 0 0 1` 2
113
1 0,25 ^sin2¯` 0,5 ^sin2¯`0,75 ^sin2¯` 1 ) * ³^sin2¯` ´ 0 0,75 0,25 0,5 0 2
Reasumując, nasz aproksymowany sygnał ma postać:
2/ 0 1 1 1 1 2/ 0 ñ ð ̃ ð1 1 1 1ñ ð ñ 2/ 2/ 1 1 1 1 2/ 1 1 1 1 0
Teraz musimy skorzystać z minimalizacji energii odchyłki, czyli wzorku: D
ÐßJ ø ¢ ¢ ¢ ¢ ¯
ÐßJ .J
2 sin2¯ ¢ ¯
ÐßJ -î. cos2¯
2 ¢ ¯
ODCHYŁKA SINUS No i teraz policzenie tych całek wymaga trochę ekwilibrystyki… Pomijając na moment granicę i podstawiając, iż ¢ : ^sin2¯ ` ¯ ^sin 2¯ 2 sin2¯ ` ¯
Rozbijamy całkę na 3 mniejsze (stałe w wynikach całek pomijamy, ponieważ i tak później pojawia się oznaczenie w całce, które samo w sobie eliminuje stałą): ^sin2¯ ` ¯ sin 2¯ ¯ 2 sin2¯ ¯ ¯
Problematycznym elementem jest całka z sin 2¯, ale nam, jako wytrawnym matematykom, na pewno nie sprawi trudności… L sin2¯ n sin2¯ 1 sin 2¯ ¯ L 2 cos2¯ n cos2¯ 2 sin 2¯ ¯
1 1 cos2¯ sin2¯ ^2 cos2¯` cos2¯ ¯ 2 2
Ponieważ całka z sin2¯ jest całką pętlącą się (zwrotną), stąd licząc całkę znajdującą się po prawej stronie równania (całka z cos 2¯), powinniśmy powrócić do całki znajdującej się po lewej stronie równania (całka z sin 2¯): sin 2¯ ¯
1 cos2¯ sin2¯ cos 2¯ ¯ 2
114
Korzystając z własności trygonometrycznej (cos 2¯ 1 sin2¯) otrzymujemy: sin 2¯ ¯
sin 2¯ ¯
1 cos2¯ sin2¯ ^1 sin 2¯` ¯ 2
1 1 cos2¯ sin2¯ ¯ sin 2¯ ¯ cos2¯ sin2¯ ¯ sin 2¯ ¯ 2 2
Dodajemy teraz stronami całkę z sinus kwadrat:
2 sin 2¯ ¯
1 cos2¯ sin2¯ ¯ 2
Otrzymując wynik (korzystając z tożsamości trygonometrycznej 2 cosV sinV sin 2V): sin 2¯ ¯
¯ 4¯ sin4¯ 1 cos2¯ sin2¯ 2 8 4
Wprowadzając oznaczenie otrzymujemy:
sin 2¯ ¯ ³
4¯ sin4¯ 1 4 1 sin4 1 4 0 1 ´ 0 8 8 8 2 0
Wracając teraz do naszych do pełnej formy rozwiązania zadanej całki:
^sin2¯ ` ¯ sin 2¯ ¯ 2 sin2¯ ¯ ¯
Musimy pamiętać, iż funkcja ¢ też jest zmienna w czasie, stąd dwie ostatnie całki po prawej muszą być liczone przedziałami:
2 sin2¯ ¯ 2
2 sin2¯ ¯
,Ô
,Ô
2 ¢ sin2¯ ¯
,!Ô
4 x 1 sin2¯ ¯ 1 sin2¯ ¯ 1 sin2¯ ¯ 1 sin2¯ ¯y
,Ô
,Ô
,Ô
,Ô
,!Ô
,!Ô
4 2 sin2¯ ¯ x sin2¯ ¯ sin2¯ ¯ sin2¯ ¯ sin2¯ ¯y
2 sin2¯ ¯
,Ô
,Ô
,!Ô
4 1 1 0,5 0,75 0,25 ) * ^cos2¯` ^cos2¯` ^cos2¯` ^cos2¯` 0,75 0,25 0,5 0 2
115
2 sin2¯ ¯ )
2 2 4 * ^1 0 1 0 0 1 1 0` ) * 2
Teraz druga całka:
,Ô
,Ô
,!Ô
2 4 4 ¯ ) ¢ * ¯ ¢ ¯ x 1 ¯ 1 ¯ 1 ¯ 1 ¯y
,Ô
,Ô
,!Ô
,Ô
,Ô
,!Ô
4 4 4 4 ¯ x ¯ ¯ ¯ ¯y ¯ ^1 0`
,Ô
,!Ô
,Ô
Dzięki czemu otrzymujemy wreszcie wynik:
ÐßJ .J sin2¯
2 1 4 4 1 ¢ ¯ 2 2
ODCHYŁKA COSINUS Dla cosinusa wynik całki wyglądają podobnie: ÐßJ -î.
2 cos2¯ ¢ ¯
^cos2¯ ` ¯ cos 2¯ ¯ 2 cos2¯ ¯ ¯ Korzystając już z tablic matematycznych oraz od razu wprowadzając oznaczenie otrzymujemy:
cos
2¯
4¯ sin4¯ 1 4 1 sin4 1 1 ¯ ³ ´ 0 8 8 2 0
2 2 ¢ ^1
1 1 1`z
2 cos2¯ ¯ 2
,Ô
,Ô
2 ¢ cos2¯ ¯
,!Ô
4 2 cos2¯ ¯ x cos2¯ ¯ cos2¯ ¯ cos2¯ ¯ cos2¯ ¯y
2 cos2¯ ¯
,Ô
,Ô
,!Ô
2 1 0,5 0,75 0,25 ^sin2¯` ^sin2¯` ^sin2¯` ^sin2¯` 0,75 0,25 0,5 0
116
2 cos2¯ ¯
2 2 4 ^1 1 1 1` 2
2 4 4 4 4 ¯ ) ¢ * ¯ ¢ ¯ ¯ ^1 0`
ÐßJ -î.
2 1 cos2¯ ¢ ¯ 2
WNIOSKI Podsumowując, otrzymaliśmy, iż odchyłka dla cosinusa i sinusa jest taka sama, co oznacza, iż są one w takim samym stopniu aproksymowane (pierwsze 4 funkcje Walsha tak samo dobrze nadają się do przybliżenia cosinusa jak i sinusa, ponieważ posiadają taki sam błąd). ÐßJ .J ÐßJ -î.
1 2
Post Scriptum: Wniosek z tego zadania jest taki – na egzaminie warto mieć tablice matematyczne. Oczywiście znając
MUV tożsamość trygonometryczną w postaci sinV całkę liczymy w tempie ekspresowym: sin2¯ ¯
1 1 1 1 1 1 ^1 cos4¯` ¯ ¯ cos4¯ ¯ ¯ sin4¯ 2 2 2 2 2 4
ZADANIE 1 – aproksymacja (metodą graficzną) Który z sygnałów , s sin 2¯ czy s cos 2¯ jest lepiej, w sensie minimalizacji energii odchyłki w przestrzeni T 0,1, reprezentowany przez pierwsze cztery funkcje Walsha? (2pkt)
Rozwiązanie (podziękowania dla Mateusza B.): Ponieważ rozwiązanie Mateusza zostało przez niego dość dobrze opisane, więc zajmę się tylko cytowaniem z małymi adnotacjami (przy rozwiązaniu zadania trzymamy się oznaczeń z metody matematycznej):
117
„Zadanie pierwsze można rozwiązać graficznie bez liczenia jakiejkolwiek całki. Plusem tej metody jest to, że nie wymaga żadnych działań, co minimalizuje prawdopodobieństwo błędu rachunkowego. Jednocześnie wszystko zajmuje trochę mniej miejsca. Minusem jest konieczność posiadania pewniej wyobraźni przestrzennej i umiejętności słownego zinterpretowania tego co się robi. Już prezentuję jak: 1) Należy zacząć od narysowania wykresów funkcji, które będziemy aproksymować (sin i cos) oraz funkcji składających się na bazę Walsha (w0, w1, w2, w3): 2) Naturalnym krokiem w analitycznym rozwiązywaniu tego problemu byłoby skorzystanie z iloczynów skalarnych w celu wyznaczenia aproksymacji sygnału w bazie Walsha, tak jak w przypadku metody matematycznej. Nie inaczej będzie tutaj. Ponieważ iloczyn skalarny dwóch funkcji, jest całką z iloczynu tych funkcji, więc graficzną reprezentacją iloczynu skalarnego jest w takim razie pole ograniczone wykresem iloczynu funkcji (gwiazdka oznacza sprzężenie zespolone):
118
z
L , n ÂW3 L¯n ¯ ¯
Funkcje Walsha przyjmują wartości -1 lub 1 co sprawia, że rysowanie wykresów ich iloczynów jest banalnie proste i sprowadza się do przerysowania części oryginalnego wykresu na odcinku gdzie funkcja Walsha przyjmuje wartość 1 lub narysowaniu odwrotności oryginalnej funkcji w przedziale, w którym funkcja Walsha przyjmuje wartość -1. Powyżej znajdują się 4 wykresy przedstawiające iloczyny funkcji Walsha z sinusem (po lewej). Jednocześnie analogicznie rozważania przeprowadzamy dla funkcji cosinus (z prawej). Analizując otrzymane wykresy (a właściwie pola powierzchni nimi ograniczone) możemy szybko wyznaczyć współczynniki liczbowe, które będą występować przed kolejnymi funkcjami Walsha we wzorze na aproksymację sinusa w tejże bazie. Pozwolę sobie wprowadzić oznaczenia analogiczne do tych, które pojawiły się w metodzie matematycznej:
sin2¯ sin2¯ sin2¯ sin2¯
, ¢ ¯ Â , ¢ ¯ Â , ¢ ¯ Â , ¢ ¯ Â
Zgodnie z tym co napisałem powyżej jest polem ograniczonym wykresem funkcji: ¯ sin2¯ ¢ ¯ sin2¯
Jak widać na wykresie, składa się ono z dwóch „grzbietów” o przeciwnych znakach, ale takich samych powierzchniach, w związku z czym ich suma będzie wynosiła 0 (co można zapisać prostą całką):
119
L¯ sin2¯ ¯
1 1 1 1 cos2¯ i » ^cos2 cos0` ^1 1` 0 2 2 2 0
Reasumując, otrzymujemy informację, iż 0. Z tego samego powodu, wyzerowana zostanie wartość współczynników i .
W przypadku pierwszej funkcji Walsha i współczynnika widzimy od razu, że pole jest niezerowe. Oczywiście można je dokładnie wyznaczyć obliczając całkę (jak w rozwiązaniu matematycznym). Nie jest to jednak konieczne. Wystarczy, że na ten moment zapamiętamy, że przyjmuje wartość niezerową. Wracając teraz do cosinusów – przyjmując oznaczenia analogiczne do wcześniejszych otrzymujemy:
cos2¯ cos2¯ cos2¯ cos2¯
, ¢ ¯ Â , ¢ ¯ Â , ¢ ¯ Â , ¢ ¯ Â
Analizując pola wykresów dochodzimy do wniosków: 0 oraz różne od zera.
3) Porównując wykresy reprezentujące i dochodzimy do wniosku, że pola nimi ograniczone są sobie równe, więc . W ten oto sposób otrzymaliśmy informację jak będą wyglądały aproksymacje funkcji sin i cos przez 4 pierwsze funkcje bazy Walsha. Aproksymacja sinusa ( ): Aproksymacja cosinusa:
¨°ôîK ¯ ¢ ¯ ¢ ¯ ¨°ôîK ¯ ¢ ¯ ¢ ¯
Następnym etapem rozwiązania jest analiza wzoru opisującego kryterium minimalizacji energii. Należy zauważyć, że odchyłka Ð jest całką (a więc sumą) różnicy sygnału i jego aproksymacji podniesionej do kwadratu: D
ÐßJ ø ̃ ¯
Po wykonaniu rysunku wykresów i ich aproksymacji otrzymujemy następujący rezultat: Na uwagę zasługuje fakt, że obie aproksymacje przyjmują wartości -k lub k. Widzimy, że składają się one z „takich samych fragmentów” tylko „ustawionych w różnej kolejności”. Stąd można wnioskować, że zgodnie z przemiennością dodawania (całka jako sumowanie po nieskończenie małych wartościach) wartości Q dla obu przypadków będą jednakowe.”
120
By zachować matematyczną poprawność, można w tym miejscu odnieść się do rozwiązania matematycznego. Proszę w tym miejscu zwrócić uwagę, iż zastosowanie rozwiązania graficznego zmniejsza liczbę koniecznych do obliczenia całek z 10 do 4.
ZADANIE 2 – energia Jaka jest energia sygnału, w sensie całki z kwadratu sygnału, jeśli jego widmo Fouriera ma postać ? (2 pkt)
Rozwiązanie (nie do końca jestem pewien jego poprawności): W tym zadaniu należało skorzystać ze wzoru na energię sygnału, przy czym najlepiej było obliczyć tą energię dla sygnału w dziedzinie czasu, bowiem energia zarówno dla widma jak i sygnału jest identyczna – równość Parsevala:
M
|L¯|
1 ¯ |h| M
Na początek zacznijmy od transformaty Fourier’a bramki prostokątnej (impuls prostokątny):
Bz ¯
M
MXÅ
z
¯ Mz
sin 2Ì
MXÅ
Ì 1 MXz Xz sin Ì sin 2Ì MXÅ » ¯ i 2 2 2 Ì
Ponieważ widmo naszego sygnału to przekształcając sinc do dziedziny czasu:
, więc możemy wywnioskować, iż Ì 1. Reasumując,
sin2 sin 0, 2 Bz ¯ ¸ 1,
|¯| Â Ì» |¯| Ì
Ponieważ musimy obliczyć pole pod prostokątem, stąd zajmiemy się jedynie jego połową, mnożąc wynik całki dwukrotnie, ponownie wracając do równości Parsevala:
z
z
z
|L¯| ¯ 2 |Bz ¯| ¯ 2 |1| ¯ 2 ¯ 2 ^Ì 0` 2 1 2
M
Sygnał z tego zadania okazuje się być znaną bramką, a jego energia wynosi 2.
ZADANIE 3 – IDFT Jaki obraz ma widmo ̂ ? (1 pkt)
6 0 ̂ e 6 0
2 0 f 2 0
Rozwiązanie: Mając na egzaminie program MatLab, zadanie rozwiązujemy wpisując komendę ifft2(nazwa)… Nie mając jednak programu i rozwiązując to zadanie na kartce, dobrze jest przypomnieć sobie schemat postępowania podczas obliczania DFT 2D (lekcja ósma). Wzór na DFT 2D to: 121
̂ áK á1
Ponieważ macierz widma nie jest kwadratowa, stąd będziemy musieli stworzyć dwie macierze przejścia o różnych wymiarach. Należy jednak pamiętać, iż mimo tego, wciąż są to macierze symetryczne: áK áKM
á1 á1M
Co powoduje, iż nie musimy wykonywać procesu odwracania macierzy, by wykonać poniższe działanie: áKM ̂ á1M áK ̂ á1
By wykonać działanie áK ̂ , macierz áK musi mieć wymiary 2 na 2. Musimy jednak skorzystać z wzoru (MACIERZ PRZEJŚCIA dla DFT – lekcja ósma): Gdzie ÙK 2:
¢ \2 2
MX
\ ×2 2 2
cos
2 2 K ¡K sin K ¡K ÙK ÙK
¢ \2 2 cos K ¡K sin K ¡K
¢ , cos 0 0 sin 0 0 1 0 1 ¢ , cos 0 1 sin 0 1 1 0 1 ¢ , cos 1 0 sin 1 0 1 0 1 ¢ , cos 1 1 sin 1 1 1 0 1 1 áK ̂ e 1
1 áK e 1
1 f 1
6 0 2 0 0 1 fe f e 6 0 2 0 12 1
0 0 0 f 0 4 0
Teraz potrzebujemy wykonać działanie á1 . W tym celu macierz przejścia á1 musi mieć tyle wierszy, co macierz kolumn, czyli Ù1 4: ¢ \X X cos S
2 2 1 ¡1 T sin S 1 ¡1 T cos § 1 ¡1 ª sin § 1 ¡1 ª Ù1 Ù1 2 2
Wypełniając według wzoru przykładowe 4 elementy:
¢ , cos 0 0 sin 0 0 1 0 1 ¢ , cos 1 1 sin 1 1 0 1 ¢ , cos 2 2 sin 2 2 1 0 1 ¢ , cos 3 3 sin 3 3 1 0 1 1 1 1 1 1 1 á1 ð ñ 1 1 1 1 1 1 1
W celu weryfikacji zawsze można skorzystać z MatLab’a (DFT dla MatLab – lekcja ósma, w serii poleceń zamieniamy stałą z N=8 na N=4). Wykonujemy teraz drugie mnożenie:
122
0 áK ̂ á1 á1 e 12
1 1 0 0 0 fð 1 0 4 0 1
1 1 1 1 0 0 ñ e 1 1 1 8 16 1 1
By wykalibrować obraz dzielimy macierz przez odpowiednie współczynniki:
1 1 0 e ÙK Ù1 8
0 0 16 8
1 1 0 0 0 f e 16 2 4 8 16
ZADANIE 4 – filtry Jaka jest odpowiedź impulsowa filtru ²
M,Ô, @
0 0 0 f e 8 16 1
0 0 2 1
0 0 f 8 16 0 f 2
? (1 pkt)
Rozwiązanie: Na początek przypomnijmy sobie wzór na sumę wyrazów nieskończonego ciągu geometrycznego: ø
, |:| 1 1:
Porównując ze sobą wzór na transmitancję H(z) oraz sumę ciągu, otrzymujemy niemalże gotową odpowiedź na pierwszą część zadania: 2 1 : 1 2 M
1 : ) M * 2
2
Skoro mamy już te wszystkie informacje, to wiemy, że nasz ciąg musiał wyglądać w przybliżeniu w sposób następujący: h : : û 2^1 ) w
1 1 1 * ) * ) * û` 2 2 2
w
1 1 h 2 Ö ) * 2 Ö ) * M 2 2 Ø
Ø
Przyrównując powyższe wyprowadzenie z wzorem na transformatę Z otrzymujemy bardzo łatwo odpowiedź: w
h Ö L¡ M ØM
Tak więc otrzymujemy informację, iż odpowiedź impulsowa filtru to:
1 2 ) * 2 0, ¡0 » 1 ;1 ¡ 2) * , ¡¼0 2 ;1 ¡
123
EGZAMIN 2011 LEKCJA SZESNASTA
ZADANIE 1 – widmo częstotliwościowe i twierdzenie o próbkowaniu Mamy sygnał taki, Ŝe dla m=0 przyjmuje 1 dla m=1 przyjmuje 2 a dla reszty zero. Sygnał ten został otrzymany przez próbkowanie zgodne z tw. Kotielnikowa-Shannona o delta t=1. Oblicz charakterystykę częstotliwościową analogowej postaci tego sygnału. Oblicz DFT jakiegoś wektora cztero elmentowego nie pamietam jakiego. Oblicz charakterystyki częstotliwościowe filtru o równaniu róŜnicowym swy(n)=swe(n)-swe(n-1)+swy(n-1). (Nie pamiętam czy minusy i plusy w dobrych miejscach dałem). Oblicz jakie sygnał trzeba przesłać przy bezstratnej kompresji róŜnicowej o predyktorze równym p(n)=2s(n-1)-s(n-2). No i był do tego sygnał pierwotny podany 9 - elementowy. ( Znowy mogłem minusy z plusami zamienić ze sobą;p ) 1. sygnał analogowy spróbkowano zgodnie z twierdzeniem Kotielnikova (delta t =1) i otrzymano: s(m)= 1 dla m=0 2 dla m=1 0 dla pozostałych Jakie jest widmo sygnału analogowego?
ZADANIE 2 – DFT 2. Jaka jest DFT sygnału s=[0 1 2 3]
ZADANIE 3 – charakterystyki częstotliwościowe filtru 3. Podać charakterystyki częstotliwościowe filtru o równaniu róŜnicowym: swy(n)=swe(n)-swe(n-1)-swy(n-1)
ZADANIE 4 – kompresja bezstratna (predyktor) 4 Podczas kompresji bezstratnej uŜyto predyktora o równaniu p(n)=2s(n-1)-s(n-2) jakie wartości są transmitowane jeśli sygnał to 0012334543
TRANSFORMACJA LAPLACE’a LEKCJA DODATKOWA A
124