CYFROWE PRZETWARZANIE SYGNAAÓ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 z Panem mgr inż. Aukaszem
Buczkiem oraz literatury podanej w zródłach. W przypadku ewentualnych błędów proszę zgłaszać poprawki do autora.
(michalgasior89@gmail.com 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 WSTPU
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).
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)
2
TREŚCI SPIS
MATEMATYKA ............................................................................................................................................................................. 6
LICZBY ZESPOLONE (complex numbers) ................................................................................................................................ 6
WZORY EULERA (Euler s formula) .......................................................................................................................................... 7
MACIERZE (matrix) mnożenie macierzy ............................................................................................................................. 8
MACIERZE (matrix) macierz odwrotna (inverted matrix) ................................................................................................. 9
CAAKOWANIE PRZEZ CZŚCI ................................................................................................................................................ 12
MATLAB - WPROWADZENIE ................................................................................................................................................... 13
PODSTAWY ............................................................................................................................................................................. 13
MACIERZE ............................................................................................................................................................................... 14
LICZBY ZESPOLONE w MatLab ie......................................................................................................................................... 15
PRZYKAAD WYKORZYSTANIA MatLab................................................................................................................................ 16
PRZYDATNE FUNKCJE ........................................................................................................................................................... 17
PODSTAWOWE SYGNAAY ........................................................................................................................................................ 19
DELTA DIRACA (t)................................................................................................................................................................ 19
SKOK JEDNOSTKOWY 1(t) .................................................................................................................................................... 19
IMPULS PROSTOKTNY (t) ................................................................................................................................................ 20
ZNAK DZIEDZINY/FUNKCJA ZNAKU sgn(t) ........................................................................................................................ 20
SYGNAA WYKAADNICZY NARASTAJCY .............................................................................................................................. 20
SYGNAA WYKAADNICZY MALEJCY ..................................................................................................................................... 21
FUNKCJA SINC sinc t .............................................................................................................................................................. 21
FALA PROSTOKTNA BIPOLARNA....................................................................................................................................... 22
FALA PROSTOKTNA UNIPOLARNA .................................................................................................................................... 22
Podział sygnałów .................................................................................................................................................................. 23
APROKSYMACJA ........................................................................................................................................................................ 23
ORTONORMALNOŚĆ i ORTOGONALNOŚĆ............................................................................................................................. 27
ORTOGONALNOŚĆ (orthogonality) ....................................................................................................................................... 28
ORTONORMALNOŚĆ (orthonormality) ................................................................................................................................. 28
EFEKTY ORTONORMALNOŚCI .............................................................................................................................................. 29
NORMALIZACJA w MatLab ie................................................................................................................................................ 32
BAZY HAARA i WALSHA........................................................................................................................................................... 33
BAZA HAARA ........................................................................................................................................................................... 33
BAZA WALSHA ........................................................................................................................................................................ 35
FORMUAY dla MatLab a ........................................................................................................................................................ 38
SZEREG FOURIER a ................................................................................................................................................................... 39
TRANSFORMACJA FOURIER a ................................................................................................................................................. 39
3
WSTP ..................................................................................................................................................................................... 39
WAASNOŚCI TRANSFORMACJI FOURIER a .......................................................................................................................... 39
PODSTAWOWE TRANSFORMATY ........................................................................................................................................ 39
DFT Discrete Fourier Transform ........................................................................................................................................ 39
MACIERZ PRZEJŚCIA DLA DFT .............................................................................................................................................. 39
PRÓBKOWANIE i OBLICZENIA w DFT ................................................................................................................................. 42
INTERPRETACJA DYSKRETNEGO WIDMA ........................................................................................................................... 44
DFT dla MatLab ..................................................................................................................................................................... 46
DFT dla DWÓCH WYMIARÓW .............................................................................................................................................. 47
IDFT inverse discrete Fourier transform ........................................................................................................................ 48
TRANSFORMACJA Z .................................................................................................................................................................. 49
WSTP ..................................................................................................................................................................................... 49
PRZYKAADY delta Diraca .................................................................................................................................................... 49
PRZYKAADY skok jednostkowy ........................................................................................................................................... 50
FILTRY i TRANSMITANCJA ...................................................................................................................................................... 50
FIR (Finite Impulse Response) ................................................................................................................................................ 50
ZADANIE 1............................................................................................................................................................................... 51
ZADANIE 2............................................................................................................................................................................... 52
ZADANIA ..................................................................................................................................................................................... 54
ZADANIE 1 dualizm ............................................................................................................................................................. 54
ZADANIE 2 filtry/transformata Z ........................................................................................................................................ 54
ZADANIE 3 filtry/FIR ........................................................................................................................................................... 55
ZADANIE 4 stabilność .......................................................................................................................................................... 55
ZADANIE 5 transformata Fouriera ..................................................................................................................................... 56
ZADANIE 6 aproksymacja/baza Walsh a ........................................................................................................................... 57
ZADANIE 7 transmitancja/filtry ......................................................................................................................................... 59
ZADANIE 8 stabilność/filtry ................................................................................................................................................ 59
ZADANIE 9 własności transformaty Fouriera .................................................................................................................... 60
ZADANIE 10 FFT .................................................................................................................................................................. 61
ZADANIE 11 transformata Z ............................................................................................................................................... 62
ZADANIE 12 transmitancja/filtry ....................................................................................................................................... 63
ZADANIE 13 filtry ................................................................................................................................................................ 63
MARATON................................................................................................................................................................................... 64
ZADANIE 1 szereg Fouriera ................................................................................................................................................. 64
ZADANIE 2 transformata Fourier a/splot .......................................................................................................................... 67
ZADANIE 3 transformata Fourier a .................................................................................................................................... 69
ZADANIE 4 splot ................................................................................................................................................................... 70
ZADANIE 5 falki ................................................................................................................................................................... 73
4
ZADANIE 6 kryterium stabilności ........................................................................................................................................ 74
ZADANIE 7 energia .............................................................................................................................................................. 76
EGZAMIN 2010 termin I........................................................................................................................................................ 77
ZADANIE 1 ortogonalność ................................................................................................................................................... 77
ZADANIE 2 transformata Fouriera ..................................................................................................................................... 78
ZADANIE 3 DFT 2D .............................................................................................................................................................. 82
ZADANIE 4 filtry ................................................................................................................................................................... 85
EGZAMIN 2010 termin II ...................................................................................................................................................... 86
ZADANIE 1 aproksymacja.................................................................................................................................................... 86
ZADANIE 2 energia .............................................................................................................................................................. 91
ZADANIE 3 IDFT................................................................................................................................................................... 92
ZADANIE 4 filtry ................................................................................................................................................................... 93
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 Aą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
WKA) 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 WPROWADZAJCA
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.
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 i stosować literkę j, co by się z natężeniem prądu nie myliło. 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łaszczyznie
zespolonej (complex plane - płaszczyzna zwana również płaszczyzną Arganda lub Gaussa).
Im
z=a+ib
b
Re
0 a
| |
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).
6
Im
|z|
b
Ć
Re
0 a
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:
cos sin
cos sin
Dzięki tym dwóm równaniom, możemy wyprowadzić postać wykładniczą liczby zespolonej:
cos sin cos sin
2 sin
7
sin
2
Teraz cosinus:
cos sin cos sin 2 cos
cos
2
Co w sumie daje nam:
| | cos sin
2
| | | | | |
2 2 2 2
| |
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:
Preferowanym przeze mnie stylem mnożenia jest schemat Falk a. Przykładowo:
2 3
3 1 2 0
1 4
3 3 1 4
5 1
B
3 -1 2 0
-2 -3 1 4
2 3 0 -11 7 12
A -1 4 -11 -11 2 16
5 1 13 -8 11 4
2 3 3 2 0 1 3 4 2 11
2 1 3 3 11 1 1 4 3 11
2 2 3 1 7 1 2 4 1 2
2 0 3 4 12 1 0 4 4 16
0 11 7 12
11 11 2 16
13 8 11 4
Proszę jednak pamiętać, iż mnożenie macierzy nie jest przemienne! Mnożąc macierz otrzymujemy
macierz , ale mnożąc macierz otrzymujemy już zupełnie inny wynik! Przykładowo:
1 2 3 1 0 5
3 2 1 0 5 1
1 0 1 1 5 5
8
1 2 3 1 0 5 4 25 22
3 2 1 0 5 1 4 15 22
1 0 1 1 5 5 2 5 10
1 0 5 1 2 3 6 2 8
0 5 1 3 2 1 16 10 6
1 5 5 1 0 1 21 12 13
MACIERZE (matrix) macierz odwrotna (inverted matrix)
Procedura odwracania macierzy do najprzyjemniejszych nie należy. Macierz odwrotną do macierzy X
oznaczamy jako lub . Obrót macierzy jest potrzebny do wykonania operacji przeciwnej do mnożenia:
1
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 2 5
det 6 5 6 17
1 2 2
0 1 0
3 2 5
1 2 2
3 2 0 1 1 5 0 2 2 5 2 0 2 1 3 0 2 1
0 1 0
3 2 5
1 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:
1 2 3
I jej macierz minorów:
2 3
1 3 1 2
2 3 1 3 1 2
Przy tworzeniu poszczególnych minorów posługujemy się poniższą zasadą, wykreślając odpowiednie kolumny i
wiersze macierzy zródłowej:
9
1 2 3
2 3
1 3 1 2
1 2 3
2 3 1 3 1 2
1 2 3
c) wyliczamy macierz dopełnień algebraicznych (cofactor),
Macierz dopełnień powstaje przez użycie odpowiedniego wzoru:
1
Gdzie i i k to numer kolumny i wiersza. Stąd wiemy, iż znak wszystkich nieparzystych elementów macierzy
będzie zmieniony, np.:
1 1 1
1 2 3 1 2 3
1 1 1 2 1 3 1
1 1 1
d) wyliczamy macierz dołączoną (transponowana macierz dopełnień algebraicznych),
Podczas transponowania zamieniamy miejscami składniki macierzy w sposób lustrzany względem (umownie
nazwijmy) jej środka:
1
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.
1
det
PRZYKAAD
By zilustrować zastosowanie macierzy odwrotnej, wykonajmy poniższe działanie:
1 3 1/3
3 1 1 9 1 2/3
1 2 1
2 0 5/3
Teraz problem pojawia się, jeśli chcemy uzyskać odwrotne działanie, czyli:
1
Musimy obliczyć macierz odwrotną:
10
1
det
1 3 1/3
5 2 5 7 70
3 1 1
det 0 6 0 3 3 6 15
3 3 3 3 3
2 0 5/3
Macierz minorów:
1 1 3 1
3 1
0 5/3 2 5/3
2 0
5/3 7 2
3 1/3 1 1/3
1 3 5 7/3 6
0 5/3 2 5/3 10/3 0 10
2 0
3 1/3 1 1/3 1 3
1 1 3 1 3 1
Macierz dopełnień algebraicznych:
5/3 7 2
1 5 7/3 6
10/3 0 10
Macierz transponowana:
5/3 5 10/3
7 7/3 0
2 6 10
Macierz odwrotna:
5/70 15/70 1/7
5/3 5 10/3
1 3
3/10 1/10 0
7 7/3 0
det 70
6/70 18/70 3/7
2 6 10
1/14 3/14 1/7
3/10 1/10 0
3/35 9/35 3/7
I teraz ponowne mnożenie:
1/14 3/14 1/7
9 1 2/3 3/10 1/10 0
1 2 1
3/35 9/35 3/7
1 3 2 3 9 3 2
9 1 1
14 10 3 35 14 10 35
3 1 2 9 27 1 6
9 1 2
14 10 3 35 14 10 35
1 2 3 9 2
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ą:
11
1/14 3/14 1/7 1 3 1/3
1 0 0
3/10 1/10 0 3 1 1
0 1 0
3/35 9/35 3/7 2 0 5/3
0 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
CAAKOWANIE 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:
Zapiszmy nasz wzór dodatkowo notacją Leibniz a (osobiście preferuję właśnie ją, aczkolwiek dla ułatwienia
będzie w obu).
Odejmując od obu stron otrzymujemy:
Przecałkujmy teraz obie strony równania:
Ponieważ w przypadku
liczymy całkę z pochodnej, stąd wracamy po prostu do naszej funkcji
pierwotnej, dzięki czemu otrzymujemy:
12
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:
ln
Zakładając, że ln , a , otrzymujemy:
ln
ln 1 1
3
1 1 1 1 1
ln ln
3 3 3 3
1 1 1 1 1
ln ln
3 3 3 3 9
Dla pewności spróbujmy teraz policzyć pochodną z funkcji pierwotnej a(x):
( ) 1 1
( ) ( ) ln
3 9
1 1 1 1 1 1
( ) ln ln ln
3 3 3 3 3 3
1 1 1 1 1 1 1 1
( ) 3 ln 0 ln ln
3 3 3 3 3 3 3
( ) ln
MATLAB - WPROWADZENIE
LEKCJA PIERWSZA
PODSTAWY
Na sam początek dobrze jest zapoznać się nie co 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/).
13
Pierwszą rzeczą jaką chcemy zrobić, to stworzyć wektor . W tym celu wpisujemy polecenie
0 3 1
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 0 3,4 1 , to musimy użyć kropki x=[0 3.4 1]. Chcąc utworzyć
macierz 2 na 3 używamy średnika, bądz 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
3 1
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ądz funkcji) zachodzi przez wpisanie jej nazwy plus ENTER. Jednocześnie należy wspomnieć, że w
programie zapisane są takie stałe jak i (bądz j ), czyli jednostka urojona oraz pi , czyli liczba pi.
By utworzyć wektor zawierający liczby od 1 do 7 ( 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 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 0 0,2 0,4 0,6 0,8 . Jednocześnie zawsze
można wygenerować wektor z tendencją spadkową, czyli przykładowo 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ózniejsza 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 .
14
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:
5 6 7 7 6 5
Natomiast stosując średnik (czyli przejście do nowego wiersza) d=[b;c] otrzymujemy:
5 6 7
7 6 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ądz 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 19
36 43
Wedle schematu 1 4 2 6 16, 3 5 4 7 15 28 43. Jednakże wpisując
polecenie a.*b otrzymujemy wyniki:
4 10
18 28
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 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:
cos sin
"
3 1
exp cos sin
6 6 6 2 2
15
3 1
"
6 3 3"3 3 3 3"3
2 2
W konsekwencji okazuje się, iż liczba nie zawiera części urojonej, a argument (faza) jest równy 0 stopni.
PRZYKAAD 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 3 4 5 6 7 8 9
2 2 2 2 2
" " " " "
1 0 1 0
2 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ę:
sin 2
Oraz
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 . Pierwszy krok to
utworzenie skali czasowej t=[-20:0.1:20]. Następnie tworzymy sinusoidę s1=sin(t). Pózniej 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).
16
PRZYDATNE FUNKCJE
Pełniejszy spis funkcji wraz z ich zastosowaniem znajduje się w opracowaniu Pana doktora Korohody.
FUNKCJA OPIS
zakończenie pracy z pakietem Matlab (zamknięcie wszystkich okien
quit
pakietu i skasowanie danych)
clear usuwanie z pamięci wszystkich zmiennych lub wskazanej zmiennej
wyświetla nazwy wszystkich zmiennych istniejących w pamięci, tzn.
who
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
zmienia format wyświetlania liczb (najczęściej używane opcje to:
format
short i long)
length zwraca ilość elementów wektora (wierszowego lub kolumnowego)
zwraca dwuelementowy wektor (dwie liczby) - liczbę wierszy i
size
liczbę kolumn danej macierzy
do tworzenia wykresów dwuwymiarowych przy liniowym opisie
plot 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
tworzy macierz o zadanych wymiarach wypełnioną samymi
ones
jedynkami
17
zeros tworzy macierz o zadanych wymiarach wypełnioną samymi zerami
tworzy macierz o zadanych wymiarach wypełnioną zerami z
eye
wyjątkiem przekątnej głównej, wypełnionej jedynkami
tworzy macierz o zadanych wymiarach wypełnioną liczbami w
rand przedziale od 0 do 1 wylosowanymi za pomocą generatora liczb
pseudolosowych o równomiernym rozkładzie
Wybrane funkcje matematyczne:
FUNKCJA OPIS
sinus - kolejno dla każdej wartości macierzy podanej jako parametr
sin
wejściowy
kosinus - kolejno dla każdej wartości macierzy podanej jako parametr
cos
wejściowy
tangens - kolejno dla każdej wartości macierzy podanej jako parametr
tan
wejściowy
arcus tangens - kolejno dla każdej wartości macierzy podanej jako
atan parametr wejściowy (wynik z przedziału od -pi/2 do +pi/2, zgodnie z
def. funkcji)
logarytm naturalny - kolejno dla każdej wartości macierzy podanej
log
jako parametr wejściowy
eksponenta (czyli liczba e do zadanej potęgi) - kolejno dla każdej
exp
wartości macierzy podanej jako parametr wejściowy
pierwiastek kwadratowy - kolejno dla każdej wartości macierzy
sqrt 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)
18
PODSTAWOWE SYGNAAY
LEKCJA DRUGA
DELTA DIRACA (t)
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:
0, ś
1, ś
Dla nas delta Kroneckera będzie wyglądała nie co inaczej:
0, ś 0
( ) 1, ś 0
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, 0
1, 0
1
0
Rys. Skok jednostkowy
19
IMPULS PROSTOKTNY (t)
Impuls prostokątny (rectangular function) inaczej nazywany jest bramką prostokątną i oznaczany za pomocą
dużej litery pi lub skrótu rect .
1
| |
1,
2
1 1
rect
| |
,
2 2
1
| |
1,
2
1
1 1
0
2 2
Rys. Impuls prostokątny
Oczywiście nie możemy zapominać, iż dla impulsu prostokątnego granicznymi wartościami NIE S tylko i
wyłącznie i !
ZNAK DZIEDZINY/FUNKCJA ZNAKU sgn(t)
Z angielska funkcja nazywana jest sign (signum) function. Jej definicja to:
1, 0
sgn 0, 0
1, 0
1
0
1
Rys. Funkcja znaku
SYGNAA WYKAADNICZY NARASTAJCY
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 , 0
0, 0
20
1
0
Rys. Sygnał wykładniczy narastający
SYGNAA WYKAADNICZY MALEJCY
Po angielsku exponential decay, opisany równaniem:
, 0 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 .
sin
sinc
Korzystając z twierdzenia d Hospitala, jesteśmy w stanie wyznaczyć jej wartość w zerze:
sin cos cos 0
lim sinc lim lim 1
1 1
21
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 PROSTOKTNA BIPOLARNA
Po angielsku bipolar square wave, fala opisana jest wzorem:
, ,
, ,
0, ,
0
Rys. Fala prostokątna bipolarna
FALA PROSTOKTNA UNIPOLARNA
Fala unipolarna (unipolar square wave) od bipolarnej różni się tym, iż amplituda fali unipolarnej nie zawiera
wartości ujemnych.
, ,
2 2
,
2 2
0, pozostałych
22
0
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 .
, 0 1
1, 1 2
1
0
1 1
Rys. Aproksymowany sygnał s(t)
Funkcje jakie wykorzystamy do aproksymacji to:
23
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 znalezć 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
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
24
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 1 1 1
1 1 1 1 0
3 2 3 3 2 3 3 2 3
0
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
16 8
4 4
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:
( ) 0 0 0
( )
Wracając jednak do zadania:
25
, )
( ) ( ) ( ) ( )
2 2 1
( , )
( ) ( )
2
1 2
( , ) 1 1 1 1 1 1 1 1
2
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 a :
3
( , )
( ) ( )
1 0
( , )
( ) ( )
2 1
( , )
( ) ( )
2
1 2
( , ) 1 1 1 1 1 1 1 1
2
5 3 4 5 3 3 4 5
0 1
( , ) 1 8 8 32 1
2 4 0
5 3 3 5 3
8 32 38
4
3 5 15
4 16 19
2
3 5 15
Teraz, mając wszystkie trzy równania, musimy wyliczyć współczynniki. Można tego dokonać macierzowo:
1 1 4/3 2/3
2 8/3 4 7/4
4/3 2 16/5 19/15
26
Bez względu na metodę, otrzymujemy wynik:
0,25 1,5 0,4375
Dzięki czemu wiemy, iż aproksymacja będzie miała formę:
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ą:
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.
27
ORTOGONALNOŚĆ (orthogonality)
Teraz musimy wywnioskować cóż nam po tym, że coś jest ortonormalne, czyli ortogonalne. Na początek
potrzebujemy dwóch dowolnych wektorów:
0 , 2 , 3 , 8 1 , 2 , 4 , 1
Wedle definicji, dwa wektory są do siebie ortogonalne jeśli:
, 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:
( ) ( )
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:
( )
, ( )
gdzie to liczba elementów wektora (np. dla wektora , 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
1 5
1 , 3 , 2 3 , 1 , 0 , 1 ,
3 3
are orthogonal to each other, since
( )
1 3 3 1 2 0 0
1 5
( )
3 1 1 0 0
3 3
1 5
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)
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:
, 1
Co oznacza, iż oba nasze wcześniejsze wektory (X i Y) nie są wektorami unormowanymi, bowiem:
0 , 2 , 3 , 8 0 , 2 , 3 , 8 0 4 9 64 77
1 , 2 , 4 , 1 1 , 2 , 4 , 1 1 4 16 1 22
28
Istnieje jednak proces pozwalający na normalizację wektora (unormowanie wektora) używając
następującego wzoru:
" ,
gdzie 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
4 2 4 2 1 2
0 , 4 , 2 , 4
0 , , , 0 , , ,
6 6 6 6 3 3 3
2 2 1 1 2 2 4 1 4 9
, 0 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:
0,
, 1,
Co jest niczym innym jak deltą Kroneckera.
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:
4 2 2 4
4 2
2 4
Wektory są do siebie ortogonalne:
( )
, 4 2 2 4 0
Wykonajmy teraz mnożenie:
3 1
4 2
3 1 14 2
2 4
Teraz problem pojawia się, jeśli chcemy uzyskać odwrotne działanie, czyli:
1
29
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:
1
det
det 4 2 4 4 2 2 16 4 20
2 4
Macierz minorów:
4 2
2 4
Macierz dopełnień algebraicznych:
1 4 2
2 4
Macierz transponowana:
4 2
2 4
Macierz odwrotna:
1 1
0,2 0,1
4 2
0,1 0,2
det 20 2 4
I teraz ponowne mnożenie:
0,2 0,1
14 2
0,1 0,2 3 1
14 0,2 2 0,1 2,8 0,2 3
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?
, 16 4 20
, 4 16 20
Znormalizujmy wektory:
2 1
4 2 4 2
20 2 5 " "
5 5
" "
1 2
2 4
20 5 5
" " "
Po unormowaniu możemy jeszcze sprawdzić ponownie ortogonalność:
2 1 1 2
, 0
5 5 5 5
" " " "
30
Reasumując otrzymaliśmy dość dziwną bazę:
2 1
5 5
" "
1 2
5 5
" "
Spróbujmy teraz obrócić macierz unormowaną:
1
det
2 1
2 2 1 1 4 1
5 5
" "
det 1
1 2
5 5
5 5 5 5
" " " "
5 5
" "
Macierz minorów:
2 1
5 5
" "
1 2
5 5
" "
Macierz dopełnień algebraicznych:
2 1
5 5
" "
1
1 2
5 5
" "
Macierz transponowana:
2 1
5 5
" "
1 2
5 5
" "
Macierz odwrotna:
2 1 2 1
1 1
5 5 5 5
" " " "
1 2 1 2
det 1
5 5 5 5
" " " "
Jaki otrzymujemy wniosek? Iż macierz ortonormalna po obróceniu jest taka sama:
1
Proszę zwrócić uwagę, iż bez obracania macierzy, wciąż otrzymujemy te same wyniki:
31
2 1
2 1 1 2 7 1 1
5 5
" "
3 3
3 1 14 2
1 2
5 5 5 5 5 5 20
" " " " " " "
5 5
" "
2 1
7 1 7 2 1 1 7 1 1 2
15 5
5 5
" "
3 1
1 2
5 5
5 5 5 5 5 5 5 5 5 5
" " " " " " " " " "
5 5
" "
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ózniej 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
;
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:
;
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.).
32
BAZY HAARA i WALSHA
LEKCJA PITA
BAZA HAARA
Definicja funkcji Haara pochodzi ze strony http://mathworld.wolfram.com/HaarFunction.html. Opisane są
one następującym wzorem:
1
1, 0
2
( ) 2
1
1, 1
2
0,
gdzie jest liczbą nieujemną, natomiast należy do przedziału 0 2 1. Obliczmy pierwsze 8 funkcji
Haara stosując powyższy wzór:
funkcja interpretacja graficzna
( ) ( ) ( )
,
1
t
1
, 0
0
( )
-1
, 1
,
( ) ( ) ( )
,
1
t
1
, 0
0
( )
-1
,
,
( ) ( )
,
1
t
1
,
0
( )
-1
, 1
,
( ) ( )
,
1
t
1
, 0
0
( )
-1
,
,
33
,
1
t
1
,
0
-1
,
,
( ) ( )
,
1
t
1
,
0
( )
-1
,
,
( ) ( )
,
1
t
1
,
0
( )
-1
, 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):
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
Powyższa macierz zwana jest macierzą przejścia. Przykładowo mamy pewien sygnał w bazie Haara:
6 2 1 1
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ł:
1 1 1 0 6 9
1 1 1 0 2 7
1 1 0 1 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. ( , ) 1 6 1 2 1 1 0 1 9) co mocno ułatwia sprawę, aczkolwiek
34
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ł:
3 6 2 5 7 3 1 8
3 18
1 1 1 0 1 0 0 0
6 4
1 1 1 0 1 0 0 0
2 10
1 1 1 0 0 1 0 0
5 4
1 1 1 0 0 1 0 0
7 3
1 1 0 1 0 0 1 0
3 1
1 1 0 1 0 0 1 0
1 0
1 1 0 1 0 0 0 1
8 16
1 1 0 1 0 0 0 1
w bazie Haara powinniśmy dostać
Wiemy w tym miejscu, iż z macierzy
18 4 10 4 3 1 0 16
w bazie kanonicznej. Metoda z zastosowaniem schematu polega na
3 6 2 5 7 3 1 8
uśrednianiu parami kolejnych wartości występujących w sygnale:
18 4 10 4 3 1 0 16
11 7 2 8
9 3
3
Teraz należy znalezć różnice między poszczególnymi krokami, np. między 11 4 7, 8 16 8, co
zapisujemy:
18 4 10 4 3 1 0 16
7 3 1 8
11 7 2 8
2
5
9 3
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 .
3 6 2 5 7 3 1 8
BAZA WALSHA
Opis funkcji Walsha wzorem matematycznym nie jest najprostszy. Na początek potrzebujemy funkcji
podstawowej w postaci:
35
1, 0 1
(2 ), 0 0,5
1, 0 0,5
( )
( ) 1, 0,5 1
2 1 , 0,5 1
Co możemy graficznie zinterpretować:
1
1
0 0,5 1
0 0,5 1
-1
-1
Ze względu na iteracyjny charakter funkcji Walsha, kolejne funkcje będą generowane za pomocą funkcji
poprzednich:
( )
2 , 0 0,5
,
( )
, , ( ) ( ) , ( )
1 2 1 , 0,5 1
( )
2 , 0 0,5
,
( )
, , ( )
( ) , ( )
1 2 1 , 0,5 1
Gdzie
1, 2, 3, &
1, 2, 3, & 2
Kolejne funkcje numeruje się według wzoru:
( ) ( )
2 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 2 2 1
Stosujemy teraz wzór (A):
( )
2
,
( ) ( ) , ( )
,
1 2 1
( ) ( )
2 2
, ,
( )
,
( )
( ) , ( ) 2 1
1 2 1
,
( )
Funkcja 2 to inaczej w numeracji :
,
2 1 2 1 1 1
( )
Natomiast funkcja 2 to:
,
36
2 1 2 1 1 2
Czyli otrzymujemy:
2 , 0 0,5
2 1 , 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ę :
1, 0 0,25
1, 0,25 0,5
1, 0,5 0,75
1, 0,75 1
A w interpretacji graficznej:
1
0 0,5 1
-1
By uzyskać stosujemy wzór (B) dla 1 i 1
2 , 0 0,5
,
,
1 2 1 , 0,5 1
,
2
( )
2 , 0 0,5
,
,
( )
( ) , ( ) 2 1 , 0,5 1
1 2 1
2 1
( ) ( )
,
2 2 1 3
Co po odpowiednich podstawieniach daje nam:
1, 0 0,25
1, 0,25 0,5
( )
1, 0,5 0,75
1, 0,75 1
1
0 0,5 1
-1
37
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
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
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!
2 21
1 1 1 1 1 1 1 1
3 1
1 1 1 1 1 1 1 1
1 5
1 1 1 1 1 1 1 1
5 3
1 1 1 1 1 1 1 1
4 3
1 1 1 1 1 1 1 1
3 3
1 1 1 1 1 1 1 1
2 7
1 1 1 1 1 1 1 1
1 3
1 1 1 1 1 1 1 1
Chcąc powrócić do poprzedniej bazy wykonujemy mnożenie sygnału wyjściowego i macierzy przejścia:
21 16 2
1 1 1 1 1 1 1 1
1 24 3
1 1 1 1 1 1 1 1
5 8 1
1 1 1 1 1 1 1 1
1
3 40 5
1 1 1 1 1 1 1 1 1
3 32 4
1 1 1 1 1 1 1 1 8
3 24 3
1 1 1 1 1 1 1 1
7 16 2
1 1 1 1 1 1 1 1
3 8 1
1 1 1 1 1 1 1 1
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.
FORMUAY 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]
38
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]
SZEREG FOURIER a
LEKCJA SZÓSTA
TRANSFORMACJA FOURIER a
LEKCJA SIÓDMA
WSTP
Z braku czasu, w tym miejscu odsyłam do książki Pana Tomasza P. Zielińskiego.
WAASNOŚCI TRANSFORMACJI FOURIER a
Z braku czasu, w tym miejscu odsyłam do książki Pana Tomasza P. Zielińskiego.
PODSTAWOWE TRANSFORMATY
Z braku czasu, w tym miejscu odsyłam do książki Pana Tomasza P. Zielińskiego.
DFT Discrete Fourier Transform
LEKCJA ÓSMA
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
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
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:
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:
39
2 2
cos sin
2 2
cos sin cos sin
8 8 4 4
, , , , ,
, , , , ,
, , , , ,
, , , , ,
, , , , ,
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
Im(z)
Re(z)
0 cos 0 1 sin 0 1 1
0 1
4 4
Im(z)
" "
2 2
Re(z)
1
cos sin
0 1
4 4 2 2
Im(z)
Re(z)
2 cos sin
0 1
2 2
40
Im(z)
3 3 2 2 0 Re(z)
" "
3
cos sin
1
2 2 2 2
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 2 3 4 5 6 7
1 1
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.
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!
41
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:
W konsekwencji nasza macierz przejścia wygląda w sposób następujący:
PRÓBKOWANIE i OBLICZENIA w DFT
Spróbujmy nasz przykładowy sygnał , przedstawić graficznie na
1 2 1 0 1 2 1 0
wykresie:
amplituda
2
1
numer próbki [n]
0
1 2 3 4 5 6 7
Widać wyraznie 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
42
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 . Ponieważ
nasz okres to 4 próbki (przykładowo 4), więc otrzymujemy, iż w dziedzinie czasu:
4 0,25 1
Co w dziedzinie częstotliwości daje nam:
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:
1 8
0
2
4
1
0 0
1 0
2 0
1 4
0
0
Wykonując powyższą operację, mnożymy każdy wiersz macierzy przejścia, przez kolumnę naszego sygnału
wejściowego, np. dla pierwszego wiersza:
( ) ( ) ( ) ( ) ( ) ( ) ( )
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
43
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
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
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:
, 0
2 , 1, & , 1
Dzięki czemu otrzymujemy:
8 4 4
| |
0 2 0 0 0 2 0 1 0 1 0 0 0 1 0
8 8 8
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 2 1 0 1
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
44
W którym wyraznie widać, iż widmo ma formę . Jednakże jak
8 0 4 0 0 0 4 0
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
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:
4
" 0,5
8
Dzięki czemu możemy teraz skorygować oś na wykresie:
amplituda
2
1
częstotliwość [Hz]
0
0,5 1 1,5 2 2,5 3 3,5
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
45
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 0.23463 - 0.00000i 0.41421 - 0.00000i 1.76537 - 0.00000i -5.02734 + 0.00000i
Columns 6 through 8:
1.76537 + 0.00000i 0.41421 + 0.00000i 0.23463 + 0.00000i
Zapisując DFT jako macierz:
8,2 0,23 0,41 1,77 5 1,77 0,41 0,23
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 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 PRZYKAAD WYKORZYSTANIA MatLab):
sin 2
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
46
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.00000i
-0.00000 + 0.00000i
-0.00000 - 4.00000i
-0.00000 + 0.00000i
0.00000 - 0.00000i
-0.00000 - 0.00000i
-0.00000 + 4.00000i
0.00000 - 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:
W tym równaniu jest macierzą przejścia, którą tworzymy według schematu znanego z podrozdziału
MACIERZ PRZEJŚCIA dla DFT (lekcja ósma):
Gdzie to numer wiersza, to numer kolumny macierzy:
0, 1, & , 1
0, 1, & , 1
A jest wymiarem macierzy w osi X (ilość elementów w poziomie). Jeśli jest równe (co niekoniecznie
musi się stać zadanie 3 z drugiego terminu egzaminu a.d. 2010, lekcja czternasta), to możemy zapisać, iż:
47
Należy tu również nadmienić, iż macierze i są symetryczne (ortonormalne, ). Podczas
stosowania powyższego wzoru nie można zapomnieć, iż kolejność wykonywania mnożeń ma olbrzymie
znaczenie! Wykonując mnożenie w formie:
Nie otrzymujemy macierzy widma, a jedynie wracamy z powrotem do macierzy sygnału ( )!
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 , bowiem otrzymujemy zależność:
Stąd dla sygnałów jednowymiarowych tryb postępowania jest wyjątkowo prosty:
1
Gdzie jest liczbą elementów w sygnale. Przykładowo mamy sygnał .
0 3 0 3 0 3 0 3
Wykonujemy jego DFT:
0 12
3 0
0 0
3 0
0 12
3 0
0 0
3 0
Teraz chcąc znów otrzymać sygnał wykonujemy takie samo mnożenie:
12 0
0 3
0 0
1 1
0 3
8 12 0
0 3
0 0
0 3
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.
48
TRANSFORMACJA Z
LEKCJA DZIEWITA
WSTP
Podczas projektowania filtrów nasz spróbkowany sygnał transformujemy do dziedziny liczb zespolonych
transformacją Z. Ogólny wzór na tą transformację to:
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:
( ) ( ) ( ) 1 0 2 3
( )
( ) 1 1 0 2 3 1 2 3
Proszę w tym miejscu jednak zwrócić uwagę, iż dla z=0, szereg ten nie ma sensu, bowiem:
1 1
0
A każdy dobrze wie, że dzielić przez zero nie wolno (bo wybuchnie).
PRZYKAADY delta Diraca
Wiedząc już jak mniej-więcej działa transformata Z, spróbujmy policzyć transformatę dla delty Kroneckera
(bądz jak kto woli, delty Diraca). Na podstawie definicji delty (z dyskretnym czasem, stąd n zamiast t):
0, ś 0
( ) 1, ś 0
otrzymujemy wniosek, iż wszystkie n różne od zera możemy pominąć, stąd granica naszej sigmy (sumy)
będzie:
( ) ( ) 0 1 1 1
( )
Jednocześnie możemy stwierdzić, iż szereg ten jest zbieżny dla wszystkich z.
49
PRZYKAADY skok jednostkowy
Osobiście zamiast zapisu 1(n) preferuję raczej u(n), stąd:
0, ś 0
1, ś 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:
( ) ( ) ( )
Ponieważ dla każdego n większego lub równego zero, u(n) jest równe 1, stąd możemy zapisać:
( ) 1 1
Bardzo szybko da się zauważyć, iż nasz ciąg jest ciągiem geometrycznym. Wzór na sumę ciągu
geometrycznego to:
1 1
gdzie a to nasze 1, a q to z-1, stąd możemy zapisać, iż:
0
1
( ) ( )
1 1 1
FILTRY i TRANSMITANCJA
LEKCJA DZIESITA
Przykładowo mamy pewną ścieżkę dzwię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 dzwięk (bądz 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ą odpowiedz impulsową (co to znaczy, będzie wyjaśnione nie co 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:
( )
( )
50
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 osobny
współczynnik h . Przykładowo, konstruując prosty wzmacniacz, który wzmacnia sygnał 2 razy, otrzymamy:
n
2
Reasumując, nasz filtr graficznie można przedstawić jako swego rodzaju pudełeczko (czarną skrzynkę
zawierającą współczynniki h ), do której coś wchodzi (s ) i z której co wychodzi (s ). Na poniższej ilustracji
n we wy
wyraznie widać, iż w środku mamy zbiór współczynników, których jest w ilości od n=0 do N.
s (m) s (m)
we wy
Okazuje się jednak, że do obliczania współczynników h najlepiej nadaje się transformata Z. Jak więc będzie
n
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):
Nasze s(m) to:
Dzięki czemu otrzymujemy:
Teraz musimy sobie przypomnieć twierdzenie o przesunięciu w transformacie Z:
Suma współczynników h jest nazywana transmitancją H(z):
n
ZADANIE 1
51
Otrzymujemy równanie różnicowe w formie:
1 2 3
1 2 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:
1 2
W tym momencie jesteśmy w stanie stwierdzić (porównując oba wzory na s (n) i y(n) ), iż współczynnik b
wy 0
będzie równy b , współczynnik b będzie równy współczynnikowi b i tak dalej. Taki sam wynik uzyskujemy dla
0 1 1
współczynników a:
Korzystając z wzoru na transmitancję:
" "
" " 1
1 1
Wiedząc, iż za z możemy podstawić eksponentę w postaci:
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
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:
x(n) y(n)
z-1
y(n-1)
52
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 odpowiedz impulsową filtru. W tym celu przygotujmy specjalną tabelkę:
numer
n -1 0 1 2 3 4 5
próbki
sygnał
x(n) 0 1 0 0 0 0 0
wejściowy
sygnał
y(n) 0 1 -2 4 -8 16 -32
wyjściowy
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:
Ł=1+0=1
x(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:
Ł=0-2=-2
x(1)=0 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:
1
53
We wzorze współczynnik b jest równy 1, a współczynnik a =a, stąd otrzymujemy transmitancję:
0 1
1 1
1 1 2
Porównując nasz wynik ze znanymi już transformatami Z:
1 0, ś 0
, ś 0
1
Otrzymujemy odpowiedz, iż:
0, ś 0
( ) ( 2) , ś 0
ZADANIA
LEKCJA JEDYNASTA
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:
sin
| |
0,
2 2
| |
1,
2
1 2 2
Odpowiedz częstotliwość winna wynosić 2 Hz.
ZADANIE 2 filtry/transformata Z
Na wejście filtru podano sygnał:
0, 0
2 , 0
Jakie wartości ma sygnał wyjściowy ?
Rozwiązanie:
2 2 2
2 1
54
2
1
1 1 2
2 4 1 2
1 1 2 1
2 0, 0
2, 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:
0 0
0,5 , , 1
Musimy teraz skorzystać z symetrii współczynników, mówiącej, iż:
Z czego w konsekwencji wynika:
2 1 1 2
2
1 1
2
4 2
1 1 1
4 2 4
ZADANIE 4 stabilność
Zbadać stabilność filtru przyczynowego, którego odpowiedz na impuls:
1, 0
0, 0
wynosi 2 .
Rozwiązanie:
2
55
Przejście do dziedziny z:
1
2
2
2 1
1
1 1 2
1 &
1 2 &
Warunek stabilności wymaga, by moduł każdego ze współczynników był mniejszy od jedynki:
| | 1
1
1 2 2
Warunek nie jest spełniony, bowiem moduł z 2 jest większy od 1.
ZADANIE 5 transformata Fouriera
Oblicz transformatę Fouriera sygnału:
1, 1 0
1, 0 1
1, 1 2
3, 2 3
0,
Rozwiązanie:
Na początek rysunek:
1
t
-1 0 1 2 3
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:
56
sin 2
2 sin 2 2
"
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:
sin sin
" "
sin
1
" "
ZADANIE 6 aproksymacja/baza Walsh a
Dokonaj aproksymacji sygnału:
0,5, 0 0,5
, 0,5 1
0,
za pomocą pierwszych czterech funkcji Walsha.
0,5
t
0 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
57
,
1
0,5
; 0,5 1 1 0,5 0,5 0,5
0
,
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:
,
1
0,5
; 0,5 1 1 0,5 0,5 0,5
0
,
0,25 0,5 0,75 0,125
W przypadku trzeciego współczynnika, w wektorze pojawiają się aż 4 przedziały, które musimy uwzględnić w
zakresach całek:
, , ,
; 0,5 1 0,5 1 1 1
, , ,
1
0,25 0,5 0,5 0,5 0,25 0,5 0,75 0,5 0,75 0,5 1 0,75 0,75 0,5
0,5
0,0625
Teraz jeszcze tylko współczynnik :
, , ,
; 0,5 1 0,5 1 1 1
, , ,
1
0,25 0,5 0,5 0,5 0,25 0,5 0,75 0,5 0,75 0,5 0,75 0,5 1 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:
0,625 0,125 0,0625 0,0625
Otrzymujemy mnożenie:
0,625 0,5
1 1 1 1
1 1 1 1 0,125 0,5
0,0625 0,625
1 1 1 1
0,0625 0,875
1 1 1 1
58
Przedstawiając rozwiązanie graficznie:
0,5
t
0 0,5 1
Jak widać, przybliżenie w zakresie od 0 do 0,5 dokładnie pokrywa się z przebiegiem oryginalnego sygnału.
ZADANIE 7 transmitancja/filtry
Znalezć odpowiedz 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):
1
1 0,5
Rozwiązanie:
1
1 0,5
Dla 0:
1 2 4
0
1 0,5 1,5 3
4
| |
3
Dla 0,25:
1 , 1 1
0,25 2 2
1 0,5 , 1 0,5 1 0,5
2 2 "4 4 2"2
ZADANIE 8 stabilność/filtry
Zbadać stabilność filtru o równaniu różnicowym:
1 2 3 1 2 2 4 3
59
Rozwiązanie:
3 1 2 2 4 3 1 2
"
"
1
1 1 1 1
1 3 2 4 1 3 2 4 3 2 4
| |
Warunek stabilności to 1, stąd zajmiemy się tylko dolną częścią ułamka (mianownikiem? :P ). W tym
miejscu musimy użyć schematu Hornera:
1 -3 -2 4
2 1 -1 -4 -4
1 1 -2 -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"5
2 2 5
"
1 "5 1 "5
2
3 2 4 1 1 "5 1 "5
Ponieważ 5 2,23, więc otrzymujemy współczynniki, których moduły są większe od 1, co oznacza, iż filtr
"
jest niestabilny:
| |
1 "5 1 2,23 3,23 1
ZADANIE 9 własności transformaty Fouriera
Niech sygnał posiada widmo Fouriera . Jakie jest widmo sygnału 2 1 ?
Rozwiązanie:
60
sin
2
4
1
sin sin
1 1
2 2 4
2
1
2
4 2 8
sin
4 8 sin 4
2 1
8
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
Rozwiązanie:
Na początek tworzymy macierz przejścia:
2 2
cos sin
4 0, & , 1
0 1 2 3
1 1 cos sin 0
2 2
2 1 cos sin 1
3 3
3 1 cos sin 0
2 2
Pomijając już pozostałe obliczenia, otrzymujemy:
1 1 1 1
1 1
1 1 1 1
1 1
Natomiast po wymnożeniu macierzy przejścia i sygnału:
1 1 1 1 3
0
1 1
1
1 1 1 1 3
0
1 1
2
Co w schemacie (algorytmie) motylkowym wygląda następująco:
61
0 0 0
0 0 3
1 1 2
3 3 3
2 0 1
0 0
3 2 3
1
A rozpisując na równania:
2 2 1
Gdzie , a , co w rezultacie daje nam (przykładowo dla k=0 i k=1):
0 2 2 1
0 2 2 1 0 2 1 3 3
1 2 2 1
1 0 2 1 3
1 0 0 1 2 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ądz niejasność, to należy wyprowadzić rozwiązanie według wzorów).
ZADANIE 11 transformata Z
Jaka jest z-transformata sygnału:
1, 1
0,5 , 2
Rozwiązanie:
1 1
2
2
2 2
1 1
2 2
62
1
1 1
1 1 1 1
1
1
2 2 2
1
2
1
1
1
1
2
ZADANIE 12 transmitancja/filtry
Wyznaczyć charakterystyki częstotliwościowe i składową stałą dla 2 .
Rozwiązanie:
2 2 2 cos 2 sin 2
2 cos 2 sin 2
4 4 cos 2 cos 2 sin 2 4 4 cos 2 1 5 4 cos 2
Obliczenia dla fazy:
sin 2
tg tg
2 cos 2
Obliczenia dla składowej stałej:
0 2 cos 0 sin 0 2 1 1
ZADANIE 13 filtry
Zapisz równanie filtru:
Rozwiązanie:
1
63
MARATON
LEKCJA DWUNASTA
MARATON ZADAC 18 czerwca 2010 r.
ZADANIE 1 szereg Fouriera
Jakie jest dyskretne widmo sygnału s(t)?
1, 0 1
1, 1 2
Rozwiązanie:
Widmo sygnału dyskretnego to rozwinięcie w szereg Fouriera:
A
1
t
T
0
-1
Ponieważ z podobnym zadaniem problem był podczas kolokwium, stąd nieco zmodyfikowana została treść
zadania obliczenia zostały wykonane dla poniższego sygnału (taki sam sygnał był zadaniem 3 podczas
drugiego dużego kolokwium):
s(t)
A
t
0
T
Na początek musimy policzyć współczynniki c według wzoru:
k
1 1
64
Całkujemy jedynie pół okresu (od 0 do T/2):
1 1 1
|
1
1 1
2
2
Musimy w tym miejscu stwierdzić jakie wartości przyjmują współczynniki c dla k parzystych i dla k
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
1 cos sin 1
2 2
I teraz podstawiamy:
k
1 -1 0
2 1 0 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:
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:
Czyli nasz wektor obraca się do tyłu o 360 stopni, co graficznie wygląda tak:
65
Im(z)
-1 Re(z)
0 1
A w praktyce oznacza, iż wektor przyjmuje wartość 1.
Teraz wyznaczamy współczynnik c (albo z granicy i tw. D Hospitala, albo z wartości średniej za pomocą całki):
0
1
lim lim lim
2 2 2 2
1 1
0
2 2 2
2
, 2 1
0, 2
, 0
2
2 1 1 3 3
2 3
2 sin 2 sin 3
2 3
2 1 1
sin sin 3 sin 3
2 3 5
66
-3 -2 -
0 0
0
0 2 3
0 0 0
t
ZADANIE 2 transformata Fourier a/splot
Jakie jest widmo sygnału s(t)?
1, 1 1
| |
0, 1
1, 1 0
1, 0 1
| |
0, 1
Rozwiązanie:
Splot w dziedzinie czasu to iloczyn w dziedzinie widm:
s (t)
1
1
t
-1 0 1
Widmo bramki to:
sin 2
s (t)
2
W przypadku sygnału s (t) sytuacja się nieco
2
komplikuje:
1
t
-1 0 1
67
By policzyć widmo sygnału trójkątnego, najpierw musimy policzyć jego pochodną:
1
t
1
0
-1
-1
Otrzymujemy dwie przesunięte bramki (plus, druga bramka obrócona), stąd możemy skorzystać z twierdzenia o
przesunięciu:
s (t)
1
1
t
-0,5 0 0,5
sin 2
1
sin 2
2
,
t
-1 0 1
,
68
sin 2 0,5 sin
,
0,5
sin 2 0,5 sin
,
0,5 1
sin sin sin
Korzystając z wzorów Eulera:
cos sin cos sin 2 sin
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:
0
Jednak przed dokonaniem podstawienia do wzoru musimy policzyć s (0). Korzystając z reguły d Hospitala
3
otrzymujemy:
sin cos
lim lim 1
sin
2 sin 0 1 0 0
0
1 sin sin
0 2 0
2 2
No i teraz łączymy finalnie nasze dwa widma impulsu prostokątnego i trójkątnego dając odpowiedz 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 , 1
| |
0, 1
69
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:
sin
2
sin 100
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 odpowiedz będzie tu dla BADNEGO widma):
sin
2
sin sin
2 2
2
Przy czym częstotliwość f =50, bowiem:
0
sin 100 sin sin 2
ZADANIE 4 splot
x(n) y(n)
h(n)
0, 1, 2, 3, 4, 3, 2, 1
0, 1, 1
70
Rozwiązanie:
Ogólny wzór na splot sygnałów dyskretnych to:
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:
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:
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:
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):
0 0 0 0 0 1 0 1 2 0 2
0 0 0 1 1 2 2
W tym miejscu dokonujemy założenia, iż wszystko co działo się przed chwilą n=0 jest równe również 0:
0 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):
7 7 0 7 0 1 7 1 2 7 2
7 0 7 1 6 2 5
7 0 1 1 2 1 3 2 3 1
71
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):
2 1 1 1 0
0 0*(-1)+0*1+0*0=0
y(n) dla n równego
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:
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):
7 7
7 0 7 1 6 2 5 3 4 4 3 5 2 6 1 7 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):
7 5 2 6 1 7 0
Podstawiając odpowiednie wartości z obu wektorów ( 0, 1, 2, 3, 4, 3, 2, 1 oraz 0, 1, 1 )
otrzymujemy:
7 4 1 3 1 1 0 4 3 1
72
W konsekwencji otrzymaliśmy identyczną odpowiedz. 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ą:
2 3 4
ZADANIE 5 falki
H 2 2
d
H
s
s
we
s
wy
+
2 2 G
s
G
d
1 1
1
1
1 1
;
2 2
" "
2
Rozwiązanie:
Coś nie coś na temat tego zagadnienia można znalezć tu:
http://wavelet.elektro.agh.edu.pl/wyklad/pdf/FalkiCyfrowo.pdf
By układ pracował poprawnie(?), filtry muszą spełniać warunki ortogonalności:
"2
Musimy teraz policzyć pozostałe transmitancje (G , H , G ). By się nam lepiej liczyło dokonamy małej zmiany
d s s
(modyfikacja powoduje bodaj brak ortogonalności):
1 ; 1 2
Wiemy, iż transmitancja H składa się z dwóch elementów, czyli k=2, H (0)=1 oraz H (1)=1. Podstawiając
d d d
wartości do wzoru obliczamy:
1 1
0 2 0 1 1 1 1 1 1 1
1 2 1 1 1 0 1 1 1 1
Stąd otrzymujemy, że transmitancja G jest równa:
d
73
1 ; 1
Analogicznie powinniśmy otrzymać transmitancję H ( 1 ; 1 ) oraz H ( 1 ; 1 ). Nie będzie
s s
spełniony warunek ortogonalności, stąd trzeba będzie przemnożyć s przez normę (w naszym przypadku bodaj
1
2).
n -1 0 1 2 3 4 5 6 7
s 0 1 2 3 0 -1 -2 -3 0
we
H 1 1 0 0 0 0 0 0 0
d
s - 1 3 5 3 -1 -3 -5 -3
1
G 1 -1
d
s - -1 -1 -1 3 1 1 1 -3
2
Teraz musimy zająć się przejściem sygnałów s i s przez układ 2 (wybierający do 2gą próbkę) i 2
1 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, &
Im(z)
Re(z)
0
Reasumując, transmitancję filtru można zapisać również w postaci:
74
&
&
Gdzie współczynniki (bieguny transmitancji) p muszą mieścić się w kole:
k
| | 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:
1
1
Przykładowo niestabilny filtr:
1
2 2
2 2
1
1 2 2 2 2
1
3 4 8
1 3
Im(z)
4
2
8
0
-2
2 Re(z)
0
75
-2
Przykładowo stabilny filtr:
Im(z)
2
-2
2 Re(z)
0
-2
Przykładowo poprawne współczynniki:
1
3 4 8
0 0 0 0 & 0 0
0 0 & 0 0
" & 0 0
& & & & & & & & &
0 0 0 0 0 0 & 0
0
5 1 0
"
8 12 5
0 0
0 0 8
" 5 0
" 5 12 8 1 52 0
" 8 " 416 0
Układ jest stabilny.
ZADANIE 7 energia
| |
Energia w częstotliwości jest równa energii w czasie. Stąd licząc energię dla sygnału:
sin
76
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 TRZYNASTA
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:
; 0
Ewentualnie warunek ortogonalności dwóch baz ( Cyfrowe przetwarzanie sygnałów od teorii do zastosowań
- T. Zieliński, WKA, Warszawa 2009, str. 51)
; 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
HAAR WALSH
1 1
1
0,5
0 1 0 0,5
-1 -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
77
; 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 odpowiedz 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).
; 1
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:
| |, | | 1
| |
0, 1
Rozwiązanie:
Sygnał kryjący się pod powyższą formułą prezentuje się następująco:
78
1
t
0
-1 1
Zadanie to można było rozwiązać na przynajmniej dwa sposoby. Oba w konsekwencji powinny dać odpowiedz:
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.
1
t
-1 0 1
-1
Teraz konieczne jest właściwe rozbicie sygnału na poszczególne elementy. Otrzymaliśmy dwie delty Diraca
(bądz Kroneckera jak kto woli) oraz dwie bramki prostokątne. Wzór na przesunięcie w czasie wygląda
następująco:
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).
t
-1 0
79
Ponieważ widmo delty Diraca to 1, stąd otrzymujemy:
1 1
1 1
Sumaryczne widmo delt to:
Musimy teraz odwołać się do wzorów Eulera:
cos sin
cos sin
cos sin cos sin 2 sin
Czyli:
2 sin 2 sin 2
Teraz musimy obliczyć widma bramek. Korzystając z wyprowadzonych widm dla sygnałów standardowych,
widmo impulsu prostokątnego to:
sin sin 2
2
(t)
1
t
-T 0 T
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.
,
t
-1 0 1
,
80
Po raz drugi odwołujemy się do wzoru dotyczącego przesunięcia sygnału w czasie:
sin 2 0,5 sin
,
0,5 1
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:
sin 2 0,5 sin
,
0,5
Korzystając z liniowości transformaty Fourier a:
sin sin sin
Odwołując się po raz kolejny do wzorów Eulera:
cos sin cos sin 2 sin
Otrzymujemy:
sin sin sin
2 sin 2
Dodając teraz do siebie widmo delt Kroneckera oraz bramek otrzymujemy:
sin sin
2 sin 2 2 2 sin 2
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):
0
Nim podstawimy wszystko do powyższego wzoru, musimy najpierw sprawdzić, czy X(0)=0:
sin
0 2 sin 2 0 2 sin 0
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
Dzięki czemu otrzymujemy, iż:
81
0 2 sin 0 2 sin 0 1 0
1 sin
0 2 sin 2 0
2 2
sin 2 sin
SPOSÓB DRUGI addytywność:
Drugi sposób wymaga nieco innego spojrzenia na sygnał (pozdrowienia dla Rafała M.). 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 1
0
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
Natomiast dla impulsu trójkątnego o T=1 otrzymujemy ( Teoria sygnałów Izydorczyk, Płonka, Tyma, Helion,
Gliwice 2006, str. 43):
4
sin
2
4 1 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:
sin 2 sin
ZADANIE 3 DFT 2D
Policz DFT następującego obrazu:
82
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
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):
Ponieważ jest równe , 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 SPEANIA 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:
Czyli reasumując wykonujemy działanie:
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
Po pierwszym mnożeniu otrzymujemy:
8 0 0 0 0 0 0 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 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
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:
83
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8
W pozostałych mnożeniach strzałki się zerują. Wykonanie drugiego mnożenia daje nam rezultat:
16 8 4"2 1 8 1 8 4"2 1 0 8 4"2 1 8 1 8 4"2 1
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
Dlaczego tak? Ano, ponieważ:
8 8 8 8 8 8 8 8 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 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
Kolejnym krokiem w rozwiązaniu jest podstawienie odpowiednich wartości liczbowych pod odpowiednie
strzałki (lekcja ósma):
16 8 8 8 0 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 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
" " " " " " " "
" " " " " " " "
16 8 1 8 1 8 1 0 8 1 8 1 8 1
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
16 8 4"2 4"2 8 1 8 4"2 4"2 0 8 4"2 4"2 8 1 8 4"2 4"2
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
16 8 4"2 1 8 1 8 4"2 1 0 8 4"2 1 8 1 8 4"2 1
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
84
ZADANIE 4 filtry
Jaka jest odpowiedz impulsowa filtru ? 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ą odpowiedz na
pierwszą część zadania:
2
1 1 2
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:
2 2 2
2 1
2
2 2 2
Przyrównując powyższe wyprowadzenie z wzorem na transformatę Z otrzymujemy bardzo łatwo odpowiedz:
Tak więc otrzymujemy informację, iż odpowiedz impulsowa filtru to:
2 2
Teraz druga część pytania czy filtr jest stabilny? Skorzystajmy z drugiego sposobu zapisu transmitancji w
dziedzinie Z:
"
"
1
Warunek mówi, iż filtr jest stabilny jeśli:
| | 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
1 2 2
85
2
| | 2 1
Warunek stabilności filtru niespełniony filtr nie jest stabilny.
EGZAMIN 2010 termin II
LEKCJA CZTERNASTA
ZADANIE 1 aproksymacja
Który z sygnałów , s sin 2 czy s cos 2 jest lepiej, w sensie minimalizacji energii odchyłki w
przestrzeni 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ę:
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:
sin 2
WSPÓACZYNNIKI
Zabieramy się więc za zadanie. Przez oznaczenie rozumiemy sygnał, a przez oznaczenie , pierwszą funkcję
Walsha (
). Nasz sygnał po aproksymacji to .
1 1 1 1
1 1
1
; sin 2 1 cos 2 cos 2 cos 0 0
2 0 2
Współczynnik :
,
; sin 2 1 sin 2 1
,
1 1 1
1 1
0,5 0,5
cos 2 cos 2 cos 2 cos 2
0,5 0,5
2 0 2 2 0
86
1 1 2
cos cos 0 cos 2 cos 1 1 1 1
2 2
Współczynnik :
, , ,
; sin 2 1 sin 2 1 sin 2 1 sin 2 1
, , ,
1
0,5 0,75 1
0,25
cos 2 cos 2 cos 2 cos 2
0,25 0,5 0,75
2 0
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
Współczynnik :
, , ,
; sin 2 1 sin 2 1 sin 2 1 sin 2 1
, , ,
1
0,5 0,75 1
0,25
cos 2 cos 2 cos 2 cos 2
0,25 0,5 0,75
2 0
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/
1 1 1 1 2/
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ż:
1
cos 2 sin 2
2
1 1
1
; cos 2 1 sin 2 sin 2 sin 0 0
2 0 2
Współczynnik :
87
1 1 1
1 1
0,5 0,5
sin 2 sin 2 sin 2 sin 2
0,5 0,5
2 0 2 2 0
1
0 0 0 0 0
2
Współczynnik :
1
0,5 0,75 1
0,25
sin 2 sin 2 sin 2 sin 2
0,25 0,5 0,75
2 0
1 2
1 0 0 1 1 0 0 1
2
Współczynnik :
1
0,5 0,75 1
0,25
sin 2 sin 2 sin 2 sin 2
0,25 0,5 0,75 0
2 0
Reasumując, nasz aproksymowany sygnał ma postać:
2/
0
1 1 1 1
0
1 1 1 1 2/
2/
2/
1 1 1 1
2/
1 1 1 1
0
Teraz musimy skorzystać z minimalizacji energii odchyłki, czyli wzorku:
2
sin 2
2
cos 2
ODCHYAKA SINUS
No i teraz policzenie tych całek wymaga trochę ekwilibrystyki& Pomijając na moment granicę i podstawiając, iż
:
sin 2 sin 2 2 sin 2
Rozbijamy całkę na 3 mniejsze (stałe w wynikach całek pomijamy, ponieważ i tak pózniej pojawia się
oznaczenie w całce, które samo w sobie eliminuje stałą):
88
sin 2 sin 2 2 sin 2
Problematycznym elementem jest całka z sin 2 , ale nam, jako wytrawnym matematykom, na pewno nie
sprawi trudności&
sin 2 sin 2
sin 2 1
2 cos 2 cos 2
2
1 1
sin 2 cos 2 sin 2 2 cos 2 cos 2
2 2
Ponieważ całka z sin 2 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 ):
1
sin 2 cos 2 sin 2 cos 2
2
Korzystając z własności trygonometrycznej (cos 2 1 sin 2 ) otrzymujemy:
1
sin 2 cos 2 sin 2 1 sin 2
2
1 1
sin 2 cos 2 sin 2 sin 2 cos 2 sin 2 sin 2
2 2
Dodajemy teraz stronami całkę z sinus kwadrat:
1
2 sin 2 cos 2 sin 2
2
Otrzymując wynik (korzystając z tożsamości trygonometrycznej 2 cos sin sin 2 ):
1 4 sin 4
sin 2 cos 2 sin 2
4 2 8
Wprowadzając oznaczenie otrzymujemy:
1
4 sin 4 4 1 sin 4 1 4 0 1
sin 2 0
8 8 8 2
0
Wracając teraz do naszych do pełnej formy rozwiązania zadanej całki:
sin 2 sin 2 2 sin 2
Musimy pamiętać, iż funkcja też jest zmienna w czasie, stąd dwie ostatnie całki po prawej muszą być
liczone przedziałami:
2
2 sin 2 2 sin 2
89
, , ,
4
2 sin 2 1 sin 2 1 sin 2 1 sin 2 1 sin 2
, , ,
, , ,
4
2 sin 2 sin 2 sin 2 sin 2 sin 2
, , ,
4 1
0,5 1
2 sin 2 cos 2 0,25 cos 2 0,25 cos 2 0,75 cos 2 0,75
0,5
2 0
2 2 4
2 sin 2 1 0 1 0 0 1 1 0 2
Teraz druga całka:
, , ,
2 4 4
1 1 1 1
, , ,
, , ,
4 4 4 4
1 0
, , ,
Dzięki czemu otrzymujemy wreszcie wynik:
2 1 4 4 1
sin 2
2 2
ODCHYAKA COSINUS
Dla cosinusa wynik całki wyglądają podobnie:
2
cos 2
cos 2 cos 2 2 cos 2
Korzystając już z tablic matematycznych oraz od razu wprowadzając oznaczenie otrzymujemy:
1
4 sin 4 4 1 sin 4 1 1
cos 2 0
8 8 2
0
2 2
1 1 1 1
90
2
2 cos 2 2 cos 2
, , ,
4
2 cos 2 cos 2 cos 2 cos 2 cos 2
, , ,
2
0,5 1
2 cos 2 sin 2 0,25 sin 2 0,25 sin 2 0,75 sin 2 0,75
0,5
0
2 2 4
2 cos 2 1 1 1 1 2
2 4 4 4 4
1 0
2 1
cos 2
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).
1
2
Post Scriptum:
Wniosek z tego zadania jest taki na egzaminie warto mieć tablice matematyczne. Oczywiście znając tożsamość
trygonometryczną w postaci sin całkę liczymy w tempie ekspresowym:
1 1 1 1 1 1
sin 2 1 cos 4 cos 4 sin 4
2 2 2 2 2 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:
91
1
| | | |
Na początek zacznijmy od transformaty Fourier a bramki prostokątnej (impuls prostokątny):
1 sin sin 2 sin 2
2 2
2
Ponieważ widmo naszego sygnału to , więc możemy wywnioskować, iż 1. Reasumując,
przekształcając sinc do dziedziny czasu:
sin 2 sin
| |
0,
2
| |
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:
| | 2 2 1 2 2 0 2 1 2
| | | |
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 2 0
6 0 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:
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:
Co powoduje, iż nie musimy wykonywać procesu odwracania macierzy, by wykonać poniższe działanie:
By wykonać działanie , macierz musi mieć wymiary 2 na 2. Musimy jednak skorzystać z wzoru
(MACIERZ PRZEJŚCIA dla DFT lekcja ósma):
2 2
cos sin
92
Gdzie 2:
cos sin
,
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 1
1 1
1 1
6 0 2 0 0 0 0 0
1
6 0 2 0 12 0 4 0
Teraz potrzebujemy wykonać działanie . W tym celu macierz przejścia musi mieć tyle wierszy, co
macierz kolumn, czyli 4:
2 2
cos sin cos sin
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
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:
1 1 1 1
0 0 0 0 1 1 0 0 0 0
1 1 1 1
12 0 4 0 8 16 8 16
1 1 1
By wykalibrować obraz dzielimy macierz przez odpowiednie współczynniki:
1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0
8 16 8 16 2 4 8 16 8 16 1 2 1 2
ZADANIE 4 filtry
Jaka jest odpowiedz impulsowa filtru ? (1 pkt)
,
Rozwiązanie:
Na początek przypomnijmy sobie wzór na sumę wyrazów nieskończonego ciągu geometrycznego:
93
| |
, 1
1
Porównując ze sobą wzór na transmitancję H(z) oraz sumę ciągu, otrzymujemy niemalże gotową odpowiedz na
pierwszą część zadania:
2
1 1 2
1
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:
1 1 1
2 1
2 2 2
1 1
2 2
2 2
Przyrównując powyższe wyprowadzenie z wzorem na transformatę Z otrzymujemy bardzo łatwo odpowiedz:
Tak więc otrzymujemy informację, iż odpowiedz impulsowa filtru to:
1
2
2
0, 0
1
2 , 0
2
94
Wyszukiwarka
Podobne podstrony:
CHEMIA materiały dodatkoweAnaliza samobójstw w materiale sekcyjnym Zakładu Medycyny Sądowej AMB w latach 1990 20031 Materiały tymczasoweMateriały pomocnicze Krzysztof ŻywickiMaterialyWyklad6,7Geologiamaterialsnotatek pl dr in Jaros aw Chmiel, Nauka o materia ?h, Przemiany podczas odpuszczaniaNauka o materiałach 2 VI12 Wykonywanie sterylizacji instrumentów, materiałówexams materials?emstr tb05materialmaterialy?us intelligence exploitation of enemy material 2006WDIS Materialy 4Ćwiczenie laboratoryjne nr 6 materiaływięcej podobnych podstron