cyfrowe przetwarzanie sygnałów

Transkrypt

cyfrowe przetwarzanie sygnałów
CYFROWE PRZETWARZANIE SYGNAŁÓW
Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010
SEMESTR 4
Rozwiązania zadań pochodzą z notatek własnych na podstawie zajęć laboratoryjnych z Panem mgr inż. Łukaszem
Buczkiem oraz literatury podanej w źródłach. W przypadku ewentualnych błędów proszę zgłaszać poprawki do autora.
([email protected] http://student.agh.edu.pl/~bonesaaa)
"Theory is when you know all and nothing works. Practice is when all works and nobody knows why. In this case we have
put together theory and practice: nothing works... and nobody knows why!” (anonymous author)
1
GWOLI WSTĘPU
Na początek kilka zmian, przede wszystkim wizualnych. Mam nadzieję, że przypadną one Wam do gustu.
Nowa czcionka oraz odświeżone logo. Dodatkowo standard już z poprzednich opracowań – gdzie się da, tam
zapisuję odpowiedniki anglojęzyczne. Pozdrawiam i życzę powodzenia w zgłębianiu tajników cyfrowego
przetwarzania sygnałów (lub być może poprawniej – przetwarzaniu cyfrowych sygnałów, bo z angielska
mamy przecież Digital Signal Processing).
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
CAŁKOWANIE PRZEZ CZĘŚCI ................................................................................................................................................ 12
MATLAB - WPROWADZENIE ................................................................................................................................................... 13
PODSTAWY ............................................................................................................................................................................. 13
MACIERZE ............................................................................................................................................................................... 14
LICZBY ZESPOLONE w MatLab’ie......................................................................................................................................... 15
PRZYKŁAD WYKORZYSTANIA MatLab................................................................................................................................ 16
PRZYDATNE FUNKCJE ........................................................................................................................................................... 17
PODSTAWOWE SYGNAŁY ........................................................................................................................................................ 19
DELTA DIRACA δ(t)................................................................................................................................................................ 19
SKOK JEDNOSTKOWY 1(t) .................................................................................................................................................... 19
IMPULS PROSTOKĄTNY Π(t) ................................................................................................................................................ 20
ZNAK DZIEDZINY/FUNKCJA ZNAKU sgn(t) ........................................................................................................................ 20
SYGNAŁ WYKŁADNICZY NARASTAJĄCY .............................................................................................................................. 20
SYGNAŁ WYKŁADNICZY MALEJĄCY ..................................................................................................................................... 21
FUNKCJA SINC sinc t .............................................................................................................................................................. 21
FALA PROSTOKĄTNA BIPOLARNA....................................................................................................................................... 22
FALA PROSTOKĄTNA 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
FORMUŁY dla MatLab’a ........................................................................................................................................................ 38
SZEREG FOURIER’a ................................................................................................................................................................... 39
TRANSFORMACJA FOURIER’a ................................................................................................................................................. 39
3
WSTĘP ..................................................................................................................................................................................... 39
WŁASNOŚ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
WSTĘP ..................................................................................................................................................................................... 49
PRZYKŁADY – delta Diraca .................................................................................................................................................... 49
PRZYKŁADY – 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 Łączności) oraz „Teoria sygnałów” panów Jacka
Izydorczyka, Grzegorza Płonki i Grzegorza Tymy (wydawnictwo Helion). Dla relaksu można czasem
zaglądnąć do „Wprowadzenie do cyfrowego przetwarzania sygnałów” pana Richard’a G. Lyons’a (ponownie
WKŁ) oraz skryptu (baaardzo słabo dostępnego) „Funkcje zespolone – szeregi i przekształcenia Fouriera,
przekształcenia całkowe Laplace’a, przekształcenia Laurenta (Z)” pana Franciszka Bierskiego (skrypt AGH).
No i oczywiście bardzo przydatne bywają notatki oraz slajdy z wykładów.
MATEMATYKA
LEKCJA WPROWADZAJĄCA
Na sam początek trzeba sobie przypomnieć trochę matematyki. W centrum naszego zainteresowania będą
macierze (szczególnie potrzebne w MatLabie) oraz liczby zespolone, na których bazują wszystkie
transformacje. No i na koniec słowo o tym co lubią wszyscy, czyli całeczkach.
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łaszczyźnie
zespolonej (complex plane - płaszczyzna zwana również płaszczyzną Arganda lub Gaussa).
Im
z=a+ib
b
0
a
Re
Jak widać, na wykresie mamy bardzo ładny trójkąt, o bokach i oraz przeciwprostokątnej o długości ||,
czyli modułu z liczby zespolonej (moduł po angielsku to modulus, magnitude lub też absolute value, od
którego jest polecenie abs w MatLab’ie).
6
Im
|z|
b
φ
0
a
Re
Jak policzyć ten moduł? Najłatwiej zastosować twierdzenie Pitagorasa:
|| Kolejnym krokiem jest wyjaśnienie, czym jest argument liczby zespolonej – otóż na schemacie został
zaznaczony kąt φ (fi), który nazywany jest właśnie argumentem (argument) lub fazą (phase). Liczy się go
przy pomocy funkcji cyklometrycznej tangensa (funkcja odwrotna, arcus tangens):
arc tan
arg W przypadku liczb zespolonych, mamy możliwość zapisu każdej z nich przy pomocy funkcji sinus i cosinus:
|| || || ||cos sin ||
||
||
||
Należy tu jeszcze wspomnieć o sprzężeniu (conjugation), w którym znak części urojonej zostaje zamieniony,
czyli w najprostszej formie:
Czasami stosuje się również zapis z gwiazdką, czyli . Sprzężenie powoduje odbicie liczby zespolonej
względem osi OX. Po co to? Czasem się przydaje gdy chcemy pozbyć się z równania części urojonej, ale o tym
zapewne będzie mowa trochę dalej.
WZORY EULERA (Euler’s formula)
Jako, że nie warto zaśmiecać swej pamięci zbędnymi wzorami, warto umieć wyprowadzić pewne zależności.
Dowód na poprawność poniższych dwóch zależności pozostawiam jednak Wam:
<= 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 <=
F || E
F || E
F
|| E
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:
GH I<J KL GM I
JN KL O PQ<N R
Preferowanym przeze mnie stylem mnożenia jest schemat Falk’a. Przykładowo:
2 3
H S1 4W
5 1
A
2
-1
5
3
4
1
Q[[ 2 3 3 2 0
Q[ 2 1 3 3 11
Q[\ 2 2 3 1 7
Q[^ 2 0 3 4 12
3 1 2
MX
3 3 1
0
Z
4
B
3
-2
0
-11
13
-1
-3
-11
-11
-8
2
1
7
2
11
0
4
12
16
4
Q[ 1 3 4 2 11
Q 1 1 4 3 11
Q\ 1 2 4 1 2
Q^ 1 0 4 4 16
0
11
O H M S11 11
13
8
7 12
2 16W
11 4
Proszę jednak pamiętać, iż mnożenie macierzy nie jest przemienne! Mnożąc macierz H M otrzymujemy
macierz O, ale mnożąc macierz M H otrzymujemy już zupełnie inny wynik! Przykładowo:
1
a b3
1
2 3
2 1b
0 1
1 0 5
c b 0 5 1b
1 5 5
8
1 2
a c b3 2
1 0
1
c a b0
1
3
1 0
1b b0 5
1
1 5
1
0 5
5 1b b3
1
5 5
5
4 25
1b b4 15
5
2 5
2 3
6
2 1b b16
0 1
21
2
10
12
22
22b
10
8
6b
13
MACIERZE (matrix) – macierz odwrotna (inverted matrix)
Procedura odwracania macierzy do najprzyjemniejszych nie należy. Macierz odwrotną do macierzy X
[
oznaczamy jako a ?[ lub . Obrót macierzy jest potrzebny do wykonania operacji przeciwnej do mnożenia:
d
ce
e ca
1
e a ?[
a
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
S1
0
3
1
3
det H b1
0
2 5
2 2b 6 5 6 17
1 0
2 5
2 2W 3 2 0 1 1 5 0 2 2 5 2 0 2 1 3 0 2 1
1 0
2 5
2 2
Używając schematu Sarrusa, przepisujemy dwa górne wiersze na dół macierzy, a następnie rysujemy strzałki jak
powyżej. Te, skierowane od lewej do prawej (niebieskie), po przemnożeniu dodajemy do siebie, natomiast od
prawej do lewej odejmujemy (czerwone).
b) wyliczamy macierz minorów,
Macierz minorów jest mało przyjemnym elementem. Wymaga sporo liczenia (dla macierzy 3 na 3 musimy
obliczyć 9 macierzy 2 na 2) i łatwo się pomylić. Poniżej przykładowa macierz 3 na 3:
I jej macierz minorów:
H
f S1
>
2
j kg
i
M
If<J K ik
ig
iM
hl 2
M
2
g
3
1
k l
>
O
H
k l
>
O
H
l l
3
1
O
3W
1 2
3
l k
k
>
g o
n
H Mn
O
l k
k
> gn
O
H Mn
l l
l
3
1 2m
Przy tworzeniu poszczególnych minorów posługujemy się poniższą zasadą, wykreślając odpowiednie kolumny i
wiersze macierzy źródłowej:
9
H
f S1
>
M
2
g
2
j kg
i
M
If<J K ik
ig
iM
hl 2
O
3W
H
f S1
>
3
1 2
1 3
k l
l k
k
>
g o
> n
O
H Mn
H O
k l
l k
k
> gn
> O
H O
H Mn
l l
l l
l
3
1 3
1 2m
H
f S1
>
c) wyliczamy macierz dopełnień algebraicznych (cofactor),
M
2
g
M
2
g
O
3W
O
3W
Macierz dopełnień powstaje przez użycie odpowiedniego wzoru:
Pa<N R 1<pN If<J K
Gdzie i i k to numer kolumny i wiersza. Stąd wiemy, iż znak wszystkich nieparzystych elementów macierzy
będzie zmieniony, np.:
a
1<pN
H
S1
>
M
2
g
H 1[p[
O
3 W q 1 1p[
> 1\p[
M 1[p
2 1p
g 1\p
O 1[p\
H M
p\
1
2
1
rS
3
\p\
> g
1
O
3W
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:
t
f s SM
O
1
u
3
>
gW
v
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.
f?[ 1
fw
det f
PRZYKŁAD
By zilustrować zastosowanie macierzy odwrotnej, wykonajmy poniższe działanie:
1
e c a P1 2 1 R S 3
2
3
1/3
1
1 W P9
0 5/3
1 2/3 R
Teraz problem pojawia się, jeśli chcemy uzyskać odwrotne działanie, czyli:
ce
Musimy obliczyć macierz odwrotną:
1
e a ?[
a
10
a ?[ 1
aw
det a
1 3
1/3
5
2
5
7
70
1 b 0 6 0 3 3 6 15 det a b3 1
3
3
3
3
3
2 0 5/3
1
1
jk 0 5/3k
i
3 1/3
If<J K i k
k
i 0 5/3
i 3 1/3
l
h l1
1
Macierz minorów:
3
1
3 1
k
k l
lo
2 5/3
2 0
5/3
7
2
n
1 1/3
1 3 n S 5 7/3 6 W
k
k l
l
2 5/3
2 0 n
10/3
0
10
1 1/3
1 3 n
l
l l
l
3 1 m
3
1
Macierz dopełnień algebraicznych:
Pa<N R 1<pN
Macierz transponowana:
a Pa<N
w
Macierz odwrotna:
a ?[ 5/3
7
7/3
If<J K S 5
10/3
0
Rs
5/3
5
S 7
7/3
2
6
5/3
5
1
3
aw S 7
7/3
det a
70
2
6
a
I teraz ponowne mnożenie:
ea
?[
P9 1
g[ 9 g 9 ?[
10/3
0 W
10
5/70
10/3
3/10
W
S
0
6/70
10
1/14 3/14
1/7
3/10
1/10
0 W
S
3/35 9/35 3/7
1/14
2/3 R S3/10
3/35
2
6 W
10
3/14
1/10
9/35
15/70
1/10
18/70
1/7
0 W
3/7
1/7
0 W P1 2 1 R
3/7
1
3 2 3
9
3
2
1
1
14
10 3 35 14 10 35
3
1
2 9
27 1
6
1 2
14
10
3 35 14 10 35
1
2
3
9 2
g\ 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ą:
a ?[ a 11
1/14
S3/10
3/35
3/14
1/10
9/35
[[ 1/7
1 3
1/3
1 0
0 W S3 1
1 W S0 1
2 0 5/3
3/7
0 0
1
3
1
1
9
4
1
3 2
1
14
14
7
14 14 14
[\ [ 0
0W
1
1
3
3
00
14
14
1 1 3 1 5
1
9 10
0
14 3 14 7 3 42 42 42
CAŁKOWANIE PRZEZ CZĘŚCI
Nie jest to konieczne, aczkolwiek może się kiedy przydać (każdy inżynier winien umieć całkować przez
części, a jak wzoru nie pamięta, to go wyprowadzi). Wzór na pochodną dwóch mnożonych funkcji to:
Pz> {>R| z>| {> z> {>|
Zapiszmy nasz wzór dodatkowo notacją Leibniz’a (osobiście preferuję właśnie ją, aczkolwiek dla ułatwienia
będzie w obu).
}P{>R
}Pz>R }P{>R }Pz>R
{> z> }>
}>
}>
}>
Odejmując od obu stron z> ~P=R
~=
otrzymujemy:
Pz> {>R| z> {>| z>| {>
}Pz>R }P{>R
}P{>R }Pz>R
z> {>
}>
}>
}>
}>
Przecałkujmy teraz obie strony równania:
€Pz> {>R| € z> {>| € z>| {>
€
}Pz>R }P{>R
}P{>R
}Pz>R
€ z> €
{>
}>
}>
}>
}>
Ponieważ w przypadku  ~= ~= liczymy całkę z pochodnej, stąd wracamy po prostu do naszej funkcji
pierwotnej, dzięki czemu otrzymujemy:
~P‚=R
~P=R
z> {> € z> {>| € z>| {>
12
z> {> € z> }P{>R
}Pz>R
€
{>
}>
}>
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 z> > , otrzymujemy:
z>„ > > € > ln > }> ƒ
1
z> > \
3
> {> ln >
1 ƒ z> {> € z> {>|
|
{> >
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):
(>) (>) (>) (>)| }P(>)R
} 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 > P0 3 1R. W tym celu wpisujemy polecenie
x=[0 3 1] oddzielając poszczególne cyfry spacją. Oczywiście można użyć również przecinków – x=[0,3,1].
Gdybyśmy chcieli utworzyć wektor > P0 3,4 1R, to musimy użyć kropki – x=[0 3.4 1]. Chcąc utworzyć
macierz 2 na 3 używamy średnika, bądź wciskamy ENTER jako przejście do następnej linii (dopiero
zamknięcie klamry jest sygnałem dla MatLab’a, iż macierz ma być w danej postaci). Przykładowo:
1 2
g S3 1W
2 3
Wprowadzimy jako y=[1 2;3 1;2 3] (lub z przecinkami y=[1,2;3,1;2,3]). Wywołanie zdefiniowanej macierzy
(bądź funkcji) zachodzi przez wpisanie jej nazwy plus ENTER. Jednocześnie należy wspomnieć, że w
programie zapisane są takie stałe jak „i” (bądź „j”), czyli jednostka urojona oraz „pi”, czyli liczba pi.
By utworzyć wektor zawierający liczby od 1 do 7 (> P1 2 3 4 5 6 7R) 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 > P1 3 5 7 9R. 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 > P0 0,2 0,4 0,6 0,8R. Jednocześnie zawsze
można wygenerować wektor z tendencją spadkową, czyli przykładowo > P0,8 0,6 0,4 0,2 0R za
pomocą komendy x=[0.8:-0.2:0].
Za pomocą polecenia clear all, kasujemy wszystkie zdefiniowane elementy z pamięci. Oczywiście możemy
również kasować pojedyncze funkcje, np. chcąc wykasować funkcję lubieplacki wpisujemy clear
lubieplacki. Polecenie help wywołuje okno pomocy, natomiast polecenie clc czyści cały ekran.
MACIERZE
Z wcześniej utworzonej macierzy zawsze możemy „wyciągać” pewne jej elementy. Przykładowo, utwórzmy
macierz d=[1:10]. Chcemy teraz, by g było równe trzeciemu elementowi macierzy d, czyli { 3. By tego
dokonać wpisujemy polecenie g=d(1,3), gdzie 1 to numer wiersza, a 3 to numer kolumny. Teraz kolejny
przykład – tworzymy macierz 2 na 2 t=[1 2;3 4], a następnie chcemy, by ‰ 3 nie wpisując wprost polecenia
h=3, lecz wyciągając element z macierzy t. Ponieważ 3 w macierzy t pojawia się w drugim wierszu i
pierwszej kolumnie, stąd wpisujemy h=t(2,1).
Możliwa jest również późniejsza edycja elementów utworzonej macierzy. Przykładowo, po utworzeniu
macierzy d=[1:10], chcemy zamienić szóstkę na zero tworząc macierz } P1 2 3 4 5 0 7 8 9 10R. 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
8 8
2 2
1
8
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 Š P5 6 7 8 9 10R.
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:
z
5 6
6 5
Stosując albo macierz d, albo b i c. Używając macierzy d musimy wpisać polecenie f=d([1:2],[2:3]),
natomiast stosując b i c wpisujemy f=[b([1:2]);c([2:3])].
Przy mnożeniu macierzy pojawia się pewna dyskretna różnica. Mianowicie można zastosować mnożenie „z
kropeczką”, bądź bez niej. Mnożenie bez kropeczki jest zwykłym mnożeniem macierzy wedle schematu
przedstawionego na stronie 7 (MACIERZE – mnożenie macierzy), natomiast mnożenie „z kropką”, to mnożenie
każdego elementu odpowiadający mu element drugiej macierzy. Przykład – mamy dwie macierze a=[1 2;3 4]
oraz b=[4 5;6 7]. Po wykonaniu operacji a*b otrzymujemy:
‹Œ 16
36
19
43
‹Œ 4
18
10
28
Wedle schematu ‹Œ[[ 1 4 2 6 16, ‹Œ 3 5 4 7 15 28 43. Jednakże wpisując
polecenie a.*b otrzymujemy wyniki:
Ponieważ mnożone są ze sobą odpowiadające elementy – ‹Œ[[ 1 4 4, ‹Œ[ 2 5 10, ‹Œ[ 3 6 18 i ‹Œ 4 7 28.
LICZBY ZESPOLONE w MatLab’ie
W przypadku liczb zespolonych pojawiają się następujące polecenia – exp(nazwa) to eksponenta funkcji
„nazwa”, czyli liczba Eulera podniesiona do potęgi wyniku funkcji „nazwa”. Moduł liczby zespolonej liczony
jest komendą abs(nazwa). Część urojona wyliczana jest poleceniem imag(nazwa), natomiast część
rzeczywista poleceniem real(nazwa). Fazę podanej liczby (lub macierzy) oblicza komenda angle(nazwa).
Swego czasu na kolokwium pojawiło się zadanie – wyznaczyć moduł, argument, część rzeczywistą i urojoną z
JŽ
liczby 6 exp   3‘ oraz podać jak to zrobić w MatLab’ie. Na początek rozpisujemy liczbę do postaci

matlabowej a=6*exp(i*pi./6)-3*i, a następnie stosujemy po kolei polecenia – moduł abs(a), argument
angle(a), część rzeczywista real(a) i część urojona imag(a). Rozwiązanie pierwszej części zadania to:
exp
J= cos > ‘ sin >
‘’
’
’ √3 1
cos ‘ sin ‘
6
6
6
2
2
15
√3 1
6 E ‘F 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.
PRZYKŁAD WYKORZYSTANIA MatLab
Na początek wygenerujmy sobie macierz zawierającą przedział od 0 do 2’ podzielony na 200 punktów
poleceniem x=[0:pi/100:2*pi]. Teraz spróbujmy wyliczyć sinus dla każdego z tych punktów, zawierając
wyniki w macierzy y – y=sin(x). W ten oto prosty sposób otrzymaliśmy współrzędne punktów dla naszego
wykresu. Teraz jeszcze tylko musimy zastosować polecenie plot(x,y), by otrzymać piękny przebieg. Stosując
polecenie plot(x,y,’.’) zmienia się nieco graficzne przedstawienie wykresu, bowiem punkty przestają być
połączone ze sobą (pokazane są jedynie pojedyncze punkty tworzące wykres).
Spróbujmy teraz przenieść nasze doświadczenie na oś czasu. Najpierw generujemy oś czasu t=[1:1:9], gdzie
1 w środku jest czasem próbkowania ”• 1 (czas próbkowania jest odwrotnością częstotliwości
próbkowania równej 1Hz). Rozpiszmy teraz dwie macierze – macierz czasu t oraz macierz sinusoidy y:
”
g
1 2 3 4
√2
√2
1
0
2
2
5
6
7
8 9
√2
√2
√2
1 0
2
2
2
Proszę zwrócić uwagę, iż drugie 0 pojawia się w 8 sekundzie, co oznacza, iż częstotliwość sinusoidy to
[
z– — ˜. Składając wszystko w logiczną całość, otrzymujemy uniwersalny wzór na sinusoidę:
g sin2’ ” z– Oraz
” ™:
1
: š
z•
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 Œ‹Q > = . Pierwszy krok to
utworzenie skali czasowej – t=[-20:0.1:20]. Następnie tworzymy sinusoidę s1=sin(t). Później dokonujemy
dzielenia s=s1./t (proszę nie zapomnieć o kropce w tym miejscu, która pełni rolę „zabezpieczenia” obliczeń)
oraz wizualizacji poleceniem plot(t,s).
œž =
16
PRZYDATNE FUNKCJE
Pełniejszy spis funkcji wraz z ich zastosowaniem znajduje się w opracowaniu Pana doktora Korohody.
FUNKCJA
OPIS
quit
zakończenie pracy z pakietem Matlab (zamknięcie wszystkich okien
pakietu i skasowanie danych)
clear
usuwanie z pamięci wszystkich zmiennych lub wskazanej zmiennej
who
wyświetla nazwy wszystkich zmiennych istniejących w pamięci, tzn.
stworzonych w trakcie danej sesji lub przywołanych z pliku
whos
j.w. oraz ponadto pokazuje wymiary każdej ze zmiennych
help
wyświetla opis podanej funkcji lub słowa kluczowego
format
zmienia format wyświetlania liczb (najczęściej używane opcje to:
short i long)
length
zwraca ilość elementów wektora (wierszowego lub kolumnowego)
size
zwraca dwuelementowy wektor (dwie liczby) - liczbę wierszy i
liczbę kolumn danej macierzy
plot
do tworzenia wykresów dwuwymiarowych przy liniowym opisie
obu osi - można dobierać sposób wykreślania (linia ciągła, linia
przerywana, za pomocą symboli), kolor itd.
Operatory arytmetyczne (odnoszą się do macierzy!):
OPERATOR
OPIS
∗
mnożenie (dla macierzy nie jest przemienne)
/
dzielenie
\
dzielenie lewostronne (ważne w przypadku macierzy)
+
dodawanie
-
odejmowanie
^
potęgowanie
‘
transponowanie (UWAGA: w przypadku macierzy zespolonych nie
jest to tylko zamiana wierszy i kolumn, ale dodatkowo sprzężenie)
.*
.^
./
kropka przed operatorem powoduje wykonanie operacji element
po elemencie - mnożenia, potęgowania lub dzielenia
inv
obrót macierzy
Funkcje pozwalające na szybkie tworzenie macierzy i skalarów:
FUNKCJA
ones
OPIS
tworzy macierz o zadanych wymiarach wypełnioną samymi
jedynkami
17
zeros
eye
rand
tworzy macierz o zadanych wymiarach wypełnioną samymi zerami
tworzy macierz o zadanych wymiarach wypełnioną zerami z
wyjątkiem przekątnej głównej, wypełnionej jedynkami
tworzy macierz o zadanych wymiarach wypełnioną liczbami w
przedziale od 0 do 1 wylosowanymi za pomocą generatora liczb
pseudolosowych o równomiernym rozkładzie
Wybrane funkcje matematyczne:
FUNKCJA
OPIS
sin
sinus - kolejno dla każdej wartości macierzy podanej jako parametr
wejściowy
cos
kosinus - kolejno dla każdej wartości macierzy podanej jako parametr
wejściowy
tan
tangens - kolejno dla każdej wartości macierzy podanej jako parametr
wejściowy
atan
arcus tangens - kolejno dla każdej wartości macierzy podanej jako
parametr wejściowy (wynik z przedziału od -pi/2 do +pi/2, zgodnie z
def. funkcji)
log
logarytm naturalny - kolejno dla każdej wartości macierzy podanej
jako parametr wejściowy
exp
eksponenta (czyli liczba e do zadanej potęgi) - kolejno dla każdej
wartości macierzy podanej jako parametr wejściowy
sqrt
pierwiastek kwadratowy - kolejno dla każdej wartości macierzy
podanej jako parametr wejściowy (zamiast tej funkcji można
stosować operator potęgowania: ^(0.5) )
Funkcje do operacji na liczbach zespolonych:
FUNKCJA
OPIS
real
część rzeczywista z podanej liczby (lub macierzy)
imag
część urojona z podanej liczby (lub macierzy)
abs
moduł z podanej liczby (lub macierzy)
angle
faza dla podanej liczby (lub macierzy)
18
PODSTAWOWE SYGNAŁY
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,
” ¡
∞,
1
‘ś¢ ” £ 0 ¤
‘ś¢ ” 0
”
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,
<J ¡
1,
‘ś¢ £ ‘¤
‘ś¢ ‘
Dla nas delta Kroneckera będzie wyglądała nie co inaczej:
0,
(”) ¡
1,
‘ś¢ ” £ 0¤
‘ś¢ ” 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,
1,
1
}¢ ” ¥ 0¤
}¢ ” ¦ 0
0
”
Rys. Skok jednostkowy
19
IMPULS PROSTOKĄTNY Π(t)
Impuls prostokątny (rectangular function) inaczej nazywany jest bramką prostokątną i oznaczany za pomocą
dużej litery pi § lub skrótu rect”.
«1,
©
1
rect” §” ,
ª2
©
¨ 1,
1
2
1
}¢ |”| ¤
2
1
}¢ |”| ¥
2
}¢ |”| ¬
1
1
2
”
1
2
0
Rys. Impuls prostokątny
wyłącznie i !
[ [
Oczywiście nie możemy zapominać, iż dla impulsu prostokątnego granicznymi wartościami NIE SĄ tylko i
ZNAK DZIEDZINY/FUNKCJA ZNAKU sgn(t)
Z angielska funkcja nazywana jest sign (signum) function. Jej definicja to:
1,
sgn” ­0,
1,
1
0
}¢ ” ¬ 0
}¢ ” 0¤
}¢ ” ¥ 0
”
1
Rys. Funkcja znaku
SYGNAŁ WYKŁADNICZY NARASTAJĄCY
Po angielsku exponential growth, opisany równaniem (proszę zwrócić uwagę na obecność skoku
jednostkowego w równaniu, który niejako blokuje możliwość istnienia sytuacji, w której x nie jest równy zero
dla t<0):
>” ¡
1 ?®¯ °”,
0,
}¢ ” ¦ 0¤
}¢ ” ¥ 0
20
1
”
0
Rys. Sygnał wykładniczy narastający
SYGNAŁ WYKŁADNICZY MALEJĄCY
Po angielsku exponential decay, opisany równaniem:
H ?®¯ ,
}¢ ” ¦ 0¤
>” ¡
Š± ² ¬ 0
0,
}¢ ” ¥ 0
H
”
0
Rys. Sygnał wykładniczy malejący
FUNKCJA SINC sinc t
Jest to jedna z najważniejszych funkcji, występująca po angielsku pod podobną nazwą - sinc function. Funkcja
pojawia się też czasami jako funkcja interpolująca lub oznaczana jako Sa”.
sinc” sin”
”
Korzystając z twierdzenia d’Hospitala, jesteśmy w stanie wyznaczyć jej wartość w zerze:
–
sin” ‡–ˆ
cos” cos0
lim sinc” lim
¸¹ lim
1
¶·–
¶·–
¶·–
”
1
1
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 PROSTOKĄTNA BIPOLARNA
Po angielsku bipolar square wave, fala opisana jest wzorem:
H,
}¢ ” º »¼, »¼ ½
>” ­H,
}¢ ” º »¼ ½, »¼ ¼¤
0, }¢ ” » · ¼, »¼ ½
H
>”
0
H
½
¼
”
Rys. Fala prostokątna bipolarna
FALA PROSTOKĄTNA UNIPOLARNA
Fala unipolarna (unipolar square wave) od bipolarnej różni się tym, iż amplituda fali unipolarnej nie zawiera
wartości ujemnych.
>” «H,
©
ª
©
¨
½
½
}¢ ” º »¼ , »¼ 
2
2
¤
H
½
,
}¢ ” »¼ ¿
2
2
0, }¢ ” pozostałych
22
>”
H
”
½
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 Œ\ ”.
Œ” ¡
”,
1,
}¢ 0 ¥ ” À 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 znaleźć takie wartości
współczynników [ , i \ , by błąd był jak najmniejszy. W jaki sposób? Otóż użyjemy pochodnej cząstkowej,
przyrównując ją do zera (pochodna jest nieskończenie małą zmianą – nam chodzi o znalezienie tak małej
zmiany, by była jak najbliższa zeru):
[
Åà Œ , Œ̃ 0
Å[
Â[ , , \ €” [ ” \ ”
–
}” €1 [ ” \ ” }”
[
A więc zabieramy się do liczenia pochodnych:
[
Åà Œ , Œ̃ €P” [ ” \ ” R„ }” €P1 [ ” \ ” R| }” 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 \
\
H ” [ ” ” \ ” 1\ [ 1 1 \ 1\ 0 [ \
2
3
3
2
3
3
2
3
3
0
2
1
1
1
1
1
1
\
M ” [ ” ” \ ” 2 [ 2 2 \ 2\ 1 [ \ 2
3
2
3
2
3
1
8
1
1
3
7
M 2 2[ 2 \ 1 [ \ 1 [ \
3
2
3
2
3
Åà (Œ , Œ̃ )
1
1
1
3
7
2 [ \ 2 1 [ \ Å[
3
2
3
2
3
2
2
14
8
16
Åà (Œ , Œ̃ )
2[ \ 2 2[ 3 \ 4[ 4 \ 0
Å[
3
3
3
3
3
8
16
4[ 4 0
3
3 \
4[ 4 16
8
\ 3
3
4
2
[ \ 3
3
Udało nam się wyliczyć pierwsze z trzech równań. Teraz czas na kolejne:
[
Åà (Œ , Œ̃ )
€P(” [ ” \ ” ) R„ }” €P(1 [ ” \ ” ) R| }” 0
Å
–
[
Jednocześnie w tym miejscu zaznaczam, iż pochodna funkcji wewnętrznej to:
Å
Å
(” [ ” \ ” ) 0 0 ( ”) 0 ”
Å
Å Wracając jednak do zadania:
25
[
Åà Œ , Œ̃ )
€P2 (” [ ” \ ” ) (”)R }” €P2 (1 [ ” \ ” ) (”)R }”
Å
–
[
[
Åà (Œ , Œ̃ )
2 q€(” \ [ ” ” \ ” \ ) }” €(” [ ” ” \ ” \ ) }”r
Å
–
[
1
2
Åà (Œ , Œ̃ )
1
1
1
1
1
1
1
1
2 S ” ^ [ ” ” \ \ ” ^ ” [ ” ” \ \ ” ^ W
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
8
7
2[ 4\ 0
3
4
8
7
2[ 4\ 3
4
Teraz ostatnia z pochodnych, liczona względem współczynnika a3:
[
Åà (Œ , Œ̃ )
€P(” [ ” \ ” ) R„ }” €P(1 [ ” \ ” ) R| }” 0
Å\
–
[
[
Åà (Œ , Œ̃ )
2 q€ ” (” [ ” \ ” ) }” € ” (1 [ ” \ ” ) }”r
Å
–
[
[
Åà (Œ , Œ̃ )
2 q€(” ^ [ ” ” \ \ ” ^ ) }” €(” [ ” ” \ \ ” ^ ) }”r
Å
–
[
1
2
Åà (Œ , Œ̃ )
1
1
1
1
1
1
1
1
2 S ” Æ [ ” \ ” ^ \ ” Æ ” \ [ ” \ ” ^ \ ” Æ W
Å
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:
2/3
1
1
4/3 [
8/3
4 W S W S 7/4 W
S 2
19/15
4/3
2
16/5 \
26
Bez względu na metodę, otrzymujemy wynik:
[ 0,25
1,5
Dzięki czemu wiemy, iż aproksymacja będzie miała formę:
\ 0,4375
1 3
7 Œ̃ [ ” \ ” ” ”
4 2
16
Na koniec otrzymujemy taki oto wykres przedstawiający na niebiesko sygnał, a na zielono jego aproksymację
(wykresy wykonane na stronie http://rechneronline.de/function-graphs/).
ORTONORMALNOŚĆ i ORTOGONALNOŚĆ
LEKCJA CZWARTA
Cytując za wikipedią:
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:
a P0 , 2 , 3 , 8R
c P1 , 2 , 4 , 1R
Wedle definicji, dwa wektory są do siebie ortogonalne jeśli:
¥ > , g ¬ 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:
a Ç c P0 , 2 , 3 , 8R Ç P1 , 2 , 4 , 1R 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:
É
¥ > , g ¬ È >(‹)g(‹)
ÊË[
gdzie Ì to liczba elementów wektora (np. dla wektora a, Ì 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
H P1 , 3 , 2R
are orthogonal to each other, since
M P3 , 1 , 0R
1
5
O ‡ ,1 , ˆ
3
3
H Ç M 1 3 3 (1) 2 0 0
5
1
M Ç O 3 (1) 1 0 0
3
3
1
5
H Ç O 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:
a Ç a P0 , 2 , 3 , 8R Ç P0 , 2 , 3 , 8R 0 4 9 64 77
c Ç c P1 , 2 , 4 , 1R Ç P1 , 2 , 4 , 1R 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:
Î P0 , 4 , 2 , 4R
¥ Î , Î ¬ 0 4 4 2 2 (4) (4) 16 4 16 36
Ï
ÍÎÍ ¥ Î , Î ¬ √36 6
P0 , 4 , 2 , 4R
4 2
4
2 1
2
Î
‡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:
¥ > , g ¬ ¡
Co jest niczym innym jak deltą Kroneckera.
0,
1,
> £ g¤
>g
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:
H P4 2R
aX
Wektory są do siebie ortogonalne:
Wykonajmy teraz mnożenie:
M P2
4 2
Z
2 4
4R
¥ H , M ¬ 4 2 2 (4) 0
c P3 1R
4 2
e c a P3 1 R X
Z P14
2 4
2R
Teraz problem pojawia się, jeśli chcemy uzyskać odwrotne działanie, czyli:
ce
1
e a ?[
a
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:
Macierz minorów:
4
det a l
2
Macierz dopełnień algebraicznych:
Macierz transponowana:
a ?[ 1
aw
det a
2
l 4 4 2 2 16 4 20
4
If<J K X
4 2
Z
2 4
Pa<N R 1<pN If<J K X4 2Z
2 4
a w Pa<N Rs X
Macierz odwrotna:
a ?[ I teraz ponowne mnożenie:
4 2
Z
2 4
1
1
0,2 0,1
4 2
a w X
ZX
Z
0,1 0,2
2
4
det a
20
0,2 0,1
c e a ?[ P14 2 R X
Z P3 1 R
0,1 0,2
g[ 14 0,2 2 0,1 2,8 0,2 3
g 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?
¥ H , H ¬ 16 4 20
¥ M , M ¬ 4 16 20
Znormalizujmy wektory:
Î
P4 2R P4 2R
2
1
H
‡
ˆ
ÍHÍ
2√5
√5 √5
√20
Ï
P2 4R
1
2
M
ˆ
‡
ÍMÍ
√5
√5
√20
Po unormowaniu możemy jeszcze sprawdzić ponownie ortogonalność:
¥ Î , Ï ¬
2
1
√5 √5
1
√5
2
0
√5
30
Reasumując otrzymaliśmy dość dziwną bazę:
2
1
j
o
√5
√5
i
n
a 1
2
i
n
h√5
√5m
Spróbujmy teraz obrócić macierz unormowaną:
2
1
a ?[ 1
aw
det a
√5 Ð 2 2 1 1 4 1 1
2 Ð √5
5 5
√5
√5 √5
√5
√5
det a ÐÐ√5
1
Macierz minorów:
Macierz dopełnień algebraicznych:
2
1
j
o
√5
√5
i
n
If<J K 2n
i 1
h √5 √5m
2
1
j
o
√5n
Pa<N R 1<pN If<J K i √5
1
2
i
n
h √5 √5 m
Macierz transponowana:
2
1
j
o
√5n
a w Pa<N Rs i √5
1
2
i
n
h √5 √5 m
Macierz odwrotna:
a ?[
2
1
2
1
j
o
o j
1
1
√5
√5
√5
√5
w
ni
n
a i
2 n i1
2n
det a
1 i 1
h √5 √5 m h√5
√5m
Jaki otrzymujemy wniosek? Iż macierz ortonormalna po obróceniu jest taka sama:
a 1
a
Proszę zwrócić uwagę, iż bez obracania macierzy, wciąż otrzymujemy te same wyniki:
31
2
1
j
o
2
1
1
1
2
7
1
√5
√5
n ‡3 3 ˆ ‡
c a P3 1R i
ˆ
P14
√5 √5
√5 √5
√5 √5
√20
i1 2n
h√5
√5m
7
e a ‡
√5
2
1
j
o
1
7
2
1
1
7
1
1
2
15
√5
√5
n ‡ ˆ ‡
ˆi
5
√5 i 1 2 n
√5 √5 √5 √5
√5 √5 √5 √5
h√5
m
√5
2R
5
ˆ P3
5
1R
Do wykazania tej prawidłowości użyta została macierz 2 na 2, bowiem obracanie macierzy 3 na 3 to bardzo
nieprzyjemna rzecz, biorąc pod uwagę, że jeszcze później trzeba ją znormalizować… Ale jeśli ktoś ma chęci i
nerwy, to zapraszam do zabawy! :)
NORMALIZACJA w MatLab’ie
Podczas jednego z kolokwiów pojawiło się zadanie – opisz jak znormalizować wektor ortogonalny wraz
instrukcją do MatLab’a. W tym miejscu pojawi się rozwiązanie od razu dla całej bazy będącej macierzą 8 na 8
(przykładowo – pierwsze 8 funkcji Haara, które są w stosunku do siebie ortogonalne, lecz nie ortonormalne).
1. Baza Haara jest ortogonalna (¥ ŒÊ ; ŒÒ ¬ 0), lecz nie jest ortonormalna ((¥ ŒÊ ; ŒÊ ¬£ 1 lub
ÍŒÊ Í £ 1. Zakładamy, iż baza została zdefiniowana w MatLabie pod nazwą haar.
2. Normalizacji dokonujemy przez obliczenie iloczynu skalarnego każdego z wektorów bezy
według wzoru:
É
1
¥ Ó< ; Ó< ¬ È Ó< Ó<
Ì
<Ë[
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 PIĄTA
BAZA HAARA
Definicja funkcji Haara pochodzi ze strony http://mathworld.wolfram.com/HaarFunction.html. Opisane są
one następującym wzorem:
‰” 1
2
¤
1
À”¥1
2
±Œ”
« 1,
©
0À”¥
ª1,
©
¨ 0,
‰JN (”) ‰G2J ” »L
gdzie ‘ jest liczbą nieujemną, natomiast » należy do przedziału 0 À » À 2J 1. Obliczmy pierwsze 8 funkcji
Haara stosując powyższy wzór:
funkcja
interpretacja graficzna
ÕÖ,Ö (×) Õ(uÖ × Ö) Õ(×)
Õ(×) « °,
©
ª°,
©
¨ Ö,
0À”¥
°
u
¤
°
À×¥1
u
ØÙÚv×Û
Õ°,Ö (×) Õ(u° × Ö) Õ(u×)
Õ(u×) « °,
©
ª°,
©
¨ Ö,
°
Ü
°
°¤
À×¥
Ü
u
ØÙÚv×Û
0À”¥
Õ°,° (×) Õ(u× °)
Õ(u× °) « °,
©
ª°,
©
¨ Ö,
°
Ý
À×¥
u
Ü
¤
Ý
À×¥1
Ü
ØÙÚv×Û
Õu,Ö (×) Õ(Ü×)
Õ(Ü×) « °,
©
ª°,
©
¨ Ö,
°
Þ
°¤
°
À×¥
Þ
Ü
ØÙÚv×Û
0À”¥
1
1
t
0
-1
1
1
t
1
t
0
-1
1
0
-1
1
1
t
0
-1
33
Õu,° × ÕÜ× °
ÕÜ× ° « °,
©
ª°,
©
¨ Ö,
°
Ý
À×¥
Ü
Þ
Ý
°¤
À×¥
Þ
u
ØÙÚv×Û
1
1
0
-1
Õu,u (×) Õ(Ü× u)
Õ(Ü× u) « °,
©
ª°,
©
¨ Ö,
°
ß
À×¥
u
Þ
ß
ݤ
À×¥
Þ
Ü
ØÙÚv×Û
1
Õ(Ü× Ý) ª°,
©
¨ Ö,
1
t
1
t
0
-1
Õu,Ý (×) Õ(Ü× Ý)
« °,
©
t
Ý
à
À×¥
Ü
Þ
¤
à
À×¥1
Þ
ØÙÚv×Û
1
0
-1
Oczywiście, wszystko to można zawrzeć w jednej macierzy, w postaci 8 wektorów połączonych w jedną bazę
(należy w tym miejscu nadmienić, iż pierwsza funkcja Haara jest równa 1 w całym przedziale t od 0 do 1):
1
j1
i1
i
1
‰i
i1
i1
i1
h1
1
1
1
1
1 1
1 1
1 0
1 0
1 0
1 0
0
1
0
0
0
0 1 0
0
0o
0
0
1
0
0n
n
0
0 1 0
0n
1
0
0
1
0n
1
0
0 1 0 n
1 0
0
0
1n
1 0
0
0 1m
Powyższa macierz zwana jest macierzą przejścia. Przykładowo – mamy pewien sygnał w bazie Haara:
><Ê P6 2 1
1Rs
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
7
2
ã
äã äã ä
1 1 0
1
5
1
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ł:
Œáâ¯
Œ<Ê P3 6 2
1
j1
i1
i
1
i
i1
i1
i1
h1
1
1
0
1
1
0
1 1 0
1 1 0
1 0
1
1 0
1
1 0 1
1 0 1
5 7 3
1
0
1 0
0
1
0 1
0
0
0
0
0
0
0
0
1 8 Rs
3
18
0
0
o
j
o
j
6
4 o
0
0
0
0 n i2n i 10 n
n i n i
n
0
0 n i5n i 4 n
1
0 n i7n i 3 n
1 0 n i3n i 1 n
0
1 n i1n i 0 n
0 1m h8m h16m
Wiemy w tym miejscu, iż z macierzy P18 4 10 4 3 1 0 16Rs w bazie Haara powinniśmy dostać
Œ<Ê P3 6 2 5 7 3 1 8Rs w bazie kanonicznej. Metoda z zastosowaniem schematu polega na
uśrednianiu parami kolejnych wartości występujących w sygnale:
18
°ÞpÜ
u
11
4
10
°°pà
u
[–p^
9
7
4
3
\p[
åp?Ý
u
2
1
0
p?—
3
–16
–p?[
–3
–8
Teraz należy znaleźć różnice między poszczególnymi krokami, np. między 11 4 7, 8 16 8, co
zapisujemy:
18
4
11
10
7
4
7
9
3
3
1
2
2
0
1
–8
–3
3
–16
8
5
6
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 Œ<Ê P3 6 2 5 7 3 1 8Rs .
æp?\
BAZA WALSHA
Opis funkcji Walsha wzorem matematycznym nie jest najprostszy. Na początek potrzebujemy funkcji
podstawowej w postaci:
35
ç[ (”) ¡
ç– ” 1,
ç– (2”),
ç– (2” 1),
Co możemy graficznie zinterpretować:
1
0
0,5
}¢ 0 À ” À 1
0 ¥ ” ¥ 0,5¤
1,
¡
1,
0,5 ¥ ” ¥ 1
1
Ԗ
1
0 ¥ ” ¥ 0,5¤
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:
(H),
(M),
çèp[,Ò?[ (”) é
çèp[,Ò (”) é
Gdzie
Kolejne funkcje numeruje się według wzoru:
(1)Ò
çè,Ò (2”),
çè,Ò (2” 1),
çè,Ò (2”),
(1)Òp[ çè,Ò (2” 1),
0 ¥ ” ¥ 0,5¤
0,5 ¥ ” ¥ 1
0 ¥ ” ¥ 0,5¤
0,5 ¥ ” ¥ 1
± 1, 2, 3, …
1, 2, 3, … 2è?[
çÊ (”) çè,Ò (”)
‹ 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:
Stosujemy teraz wzór (A):
2è?[ 2[?[ 2– 1
çèp[,Ò?[ (”) é
ç,[ (”) é
çè,Ò (2”)
¤
çè,Ò (2” 1)
(1)Ò
ç[,[ (2”)
¤ é ç[,[ (2”) ¤
[
(1) ç[,[ (2” 1)
ç[,[ (2” 1)
Funkcja ç[,[(2”) to inaczej w numeracji ‹:
Natomiast funkcja ç,[ (2”) to:
‹ 2è?[ 1 2[?[ 1 1 1
36
‹ 2?[ 1 2 1 1 2
Czyli otrzymujemy:
ç[ 2”,
ç ” ¡
ç[ 2” 1,
0 ¥ ” ¥ 0,5¤
0,5 ¥ ” ¥ 1
Przed interpretacją graficzną musimy wyliczyć jakie wartości będzie przyjmowała funkcja ç ” dla
konkretnych ”. Przykładowo, dla ç 0 ç[ 2 0 ç[ 0. Teraz musimy sprawdzić jaką wartość
przyjmuje funkcja ç[ ” dla ” 0. W wyniku otrzymujemy 1. Teraz podstawmy przykładowo wartość
ç ” 0,8. Dla ” z przedziału 0,5 ¥ ” ¥ 1 funkcja przyjmuje postać:
ç[ 2” 1 ç[ 2 0,8 1 ç[ 0,6 1 1
Reasumując otrzymujemy następujący przepis na funkcję ç ”:
1,
1,
ç ” ë
1,
1,
A w interpretacji graficznej:
0 ¥ ” ¥ 0,25
0,25 ¥ ” ¥ 0,5¤
0,5 ¥ ” ¥ 0,75
0,75 ¥ ” ¥ 1
1
0
0,5
1
Ô
-1
By uzyskać ç\ ” stosujemy wzór (B) dla ± 1 i 1
çèp[,Ò ” é
çè,Ò 2”,
1Òp[ çè,Ò 2” 1,
ç[,[ 2”
ç[ (2”),
¤¡
ç, ” é
(1) ç[,[ (2” 1)
ç[ (2” 1),
0 ¥ ” ¥ 0,5¤
0,5 ¥ ” ¥ 1
0 ¥ ” ¥ 0,5¤
0,5 ¥ ” ¥ 1
è?[
1 k ç (”)
ç, (”) k ‹ 2[
\
‹ 2 213
Co po odpowiednich podstawieniach daje nam:
1,
1,
ç\ (”) ë
1,
1,
0 ¥ ” ¥ 0,25
0,25 ¥ ” ¥ 0,5¤
0,5 ¥ ” ¥ 0,75
0,75 ¥ ” ¥ 1
1
0
-1
0,5
1
Ô\
37
Wszystko oczywiście możemy zapisać macierzowo w postaci bazy, gdzie kolejne kolumny są kolejnymi
funkcjami Walsha (np. druga funkcja Walsha to ç P»R P1 1 1 1 1 1 1 1Rs ):
1
j
1
i
i1
Ô¢ i1
i1
i1
i1
h1
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
1on
1n
1n
1n
1n
1n
1m
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!
Œáâ¯
1
j1
i1
i
1
i
i1
i1
i1
h1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
21
2
1
o
j
j
o
1o
3
1
n
i
i
n
5n
1
1
n i n i n
1n i5n i 3 n
1 n i4 n i 3 n
1n i3n i 3 n
1 n i2n i7n
1m h1m h3m
Chcąc powrócić do poprzedniej bazy wykonujemy mnożenie sygnału wyjściowego ìá⯠i macierzy przejścia:
Œ<Ê
1
j1
i1
1 i1
i
Ì i1
i1
i1
h1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
21
16
2
1
o
j
o
j
o
j
1
24
3o
1
n
i5n
i 8 n i1n
1
n i n 1 i n i n
40
5
1n i 3 n
i ni n
1 n i 3 n 8 i32n i4n
1n i 3 n
i24n i3n
i16n i2n
1 n i7n
h 8 m h1m
1m h3m
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.
Ô Ô ?[ Ô s
FORMUŁY dla MatLab’a
W przypadku używania GNU Octave bez interfejsu graficznego, by wkleić formułę do okienka należy kliknąć
prawym przyciskiem myszki w pasek z nazwą okna i z listy wybrać opcję Edytuj, a następnie Wklej.
walsh=[1 1 1 1 1 1 1 1;1 1 1 1 -1 -1 -1 -1;1 1 -1 -1 -1 -1 1 1;1 1 -1 -1 1 1 -1 -1;1 -1 -1 1 1 -1 -1 1;1 -1 -1 1 -1 1 1 -1;1
-1 1 -1 -1 1 -1 1;1 -1 1 -1 1 -1 1 -1]
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
WSTĘP
Z braku czasu, w tym miejscu odsyłam do książki Pana Tomasza P. Zielińskiego.
WŁASNOŚ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ę:
ŒP‹R P1
2 1 0
1 2
1 0Rs
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:
Ž
ç NÊ ?J É NÊ
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
Ž
ç NÊ cos
ç NÊ ?J É NÊ cos
2’
2’
» ‹ ‘ sin
»‹
Ì
Ì
2’
2’
’
’
» ‹ ‘ sin
» ‹ cos  » ‹ ‘ sin  » ‹
8
8
4
4
ç –,–
j –,[
ç
i –,
Ô iç
i í
iç –,
hç –,î
ç [,–
ç [,[
ç [,
í
ç [,
ç [,î
ç ,–
ç ,[
ç ,
í
ç ,
ç ,î
í
í
í
í
í
í
ç ,–
ç ,[
ç ,
í
ç ,
ç ,î
ç î,–
o
ç î,[
n
ç î, n
í n
ç î, n
ç î,î m
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
ç NÊ cos
1
’
’
» ‹ ‘ 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
0
’
’
cos 0 1 ‘ sin 0 1 1
4
4
obrót wektora
Im(z)
Re(z)
0
1
Im(z)
1
2
’
’ √2
√2
cos ‘ sin ‘
4
4
2
2
cos
’
’
‘ sin ‘
2
2
Re(z)
0
1
Im(z)
Re(z)
0
1
40
Im(z)
cos
3
3’
3’
√2
√2
‘ sin
‘
2
2
2
2
Re(z)
0
1
Jak widać, w przypadku wiersza n=1, wektor przemieszcza się za każdym razem o 45 stopni w kierunku
wskazówek zegara (bodaj w prawo). Dzięki temu możemy wywnioskować, iż dla k=4, wektor przyjmie
wartość czysto realną -1. By nie pisać ułamków i pierwiastków zastosujemy bardzo prostą symbolikę
nawiązującą do wirującego wektora:
√u
√u
ò
u
u
ó
√u
√u
ò
u
u
ô
√u
√u
ò
u
u
√u
√u
ò
u
u
õ
ö
Dzięki czemu otrzymujemy bardzo przejrzystą tabelkę wyników dla każdego k:
k
ïðñ
0
1
·
1
ó
ó
2
3
‘
4
ô
÷
1
ô
5
6
õ
ù
õ
ø
‘
7
ö
ö
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.
·
j·
i·
i
·
Ôi
i·
i·
i·
h·
·
ó
÷
ô
ø
õ
ù
ö
·
÷
· ·
ô ø
·
õ
·
ù
·
öo
n
n
n
n
n
n
m
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
·
j·
i·
i
·
Ôi
i·
i·
i·
h·
·
ó
÷
ô
ø
õ
ù
ö
·
÷
· ·
ô ø
·
ø
ø ·
ø
·
ø
·
·
õ
·
·
ù
ø
·
öo
n
n
n
·n
n
n
m
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:
·
j·
i·
i
·
Ôi
i·
i·
i·
h·
·
ó
÷
ô
ø
õ
ù
ö
·
÷
ø
ù
·
÷
ø
ù
· ·
ô ø
ù ·
ø
ø ·
ø
·
ø
·
õ
÷
·
·
ù
ø
ø
·
öo
ùn
n
n
·n
n
n
m
W konsekwencji nasza macierz przejścia wygląda w sposób następujący:
·
j·
i·
i
·
Ôi
i·
i·
i·
h·
·
ó
÷
ô
ø
õ
ù
ö
·
÷
ø
ù
·
÷
ø
ù
PRÓBKOWANIE i OBLICZENIA w DFT
Spróbujmy nasz przykładowy sygnał ŒP‹R P1
wykresie:
·
ô
ù
ó
ø
ö
÷
õ
·
ø
·
ø
·
ø
·
ø
·
õ
÷
ö
·
ó
ù
ô
2 1 0
·
ù
ø
÷
ø
ù
ø
÷
·
öo
ùn
n
õn
·n
ôn
÷n
óm
1 2 1
0Rs , przedstawić graficznie na
amplituda
2
1
numer próbki [n]
0
1
2
3
4
5
6
7
Widać wyraźnie zarys sygnału okresowego, przykładowo sinusoidy lub piły. Spróbujmy określić okres tegoż
przebiegu. Sygnał zaczyna się na próbce numer 0, natomiast próbka 4 jest powieleniem próbki numer 0. Stąd
możemy stwierdzić, iż okres tegoż sygnału to 4 próbki, a na wykresie otrzymujemy 2 pełne obiegi – 0, 1, 2 i 3
oraz 4, 5, 6 i 7. Jednocześnie bardzo ważnym jest spostrzeżenie, iż cały sygnał posiada składową stałą (taki
offset), bowiem oscylacje nie zachodzą wokół zera, lecz jedynki (stąd stwierdzamy, iż offset jest równy
jeden). Mimo tego, iż wiemy ile próbek zajmuje okres ¼ przebiegu, nie jesteśmy w stanie stwierdzić jaka jest
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:
z• 4˜
Otrzymujemy wiadomość, iż kolejne próbki zbierane były z szybkością ”• [
‚›
0,25 Œ»ú‹}g. 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:
z•èûüý<üâ 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:
· ·
j· ó
i· ÷
i
· ô
Œ̂ P»R Ô ŒP‹R i
i· ø
i· õ
i· ù
h· ö
·
÷
ø
ù
·
÷
ø
ù
·
ô
ù
ó
ø
ö
÷
õ
·
ø
·
ø
·
ø
·
ø
·
õ
÷
ö
·
ó
ù
ô
·
ù
ø
÷
ø
ù
ø
÷
·
8
1
j
j
o
o
ö
0 o
2
i
i
n
n
ù
4‘n
1
n
n i n i
õ n i0n i 0 n
·n i1n i 0 n
ô n i2n i 0 n
÷ n i1n i 4‘ n
ó m h0m h 0 m
Wykonując powyższą operację, mnożymy każdy wiersz macierzy przejścia, przez kolumnę naszego sygnału
wejściowego, np. dla pierwszego wiersza:
Œ̂ P0R (· 1) (· 2) (· 1) (· 0) (· 1) (· 2) (· 1) (· 0)
Podstawiając wartości liczbowe za strzałki (· 1) otrzymujemy:
Œ̂ P1R 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 (Œ̂ P3R, bowiem numerujemy od zera) wiersza
macierzy przejścia:
Œ̂ P3R (· 1) (ô 2) (ù 1) (ó 0) (ø 1) (ö 2) (÷ 1) (õ 0)
Na razie nie podstawiamy konkretnych wartości, lecz grupujemy przeciwne sobie strzałki:
Œ̂ P3R (· 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:
Œ̂ P2R · 1 ÷ 2 ø 1 ù 0 · 1 ÷ 2 ø 1 ù 0
Po pogrupowaniu strzałek otrzymujemy:
Œ̂ P2R · ° ø ° · ° ø ° ÷ 2 ù 0 ÷ 2 ù 0
Œ̂ P2R ÷ 2 ù 0 ÷ 2 ù 0 ÷ 2 ÷ 2
Strzałka w dół oznacza element ujemny, czysto urojony, czyli ÷ ‘:
Œ̂ P2R ‘ 2 ‘ 2 2‘ 2‘ 4‘
Po wyliczeniu wszystkich równań, otrzymaliśmy następującą macierz:
Œ̂ P»R P8 0
4‘
|Œ̂ P»R| P8
0 4
0
0 0 4‘
0Rs
Jest to nasze dyskretne widmo, lecz jeszcze nie w finalnej formie, bowiem musimy jeszcze wyliczyć jego
moduł, pozbywając się elementów urojonych:
0 0 0
4 0Rs
Na koniec można jeszcze dokonać przeskalowania amplitudy. Na samym początku stwierdziliśmy, iż
amplituda sygnału to 1, natomiast w dyskretnym widmie otrzymujemy 4, co koryguje się wzorem:
Dzięki czemu otrzymujemy:
|Œ̂ „P»R| ‡
8
0
8
Œ̂ P»R
,
Ì
Œ̂ „P»R ë
Œ̂ P»R
2
,
Ì
4
2 0 0
8
»0
¤
» 1, … , Ì 1
s
4
0 2 0ˆ P1 0 1
8
0 0
0 1 0 Rs
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:
Œá P‹R P2 1
0 1 2
1 0 1 Rs
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 wyraźnie widać, iż widmo ma formę Œ̂á P»R P8 0 4 0 0 0 4 0Rs . Jednakże jak
odczytywać to widmo? Spróbujmy przedstawić je na rysunku, aczkolwiek już po przeskalowaniu amplitudy,
tak jak zostało to opisane na końcu poprzedniego podrozdziału:
|Œ̂ „P»R| P1
0 1
0 0 0
1 0Rs
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:
zN ∆z » z•
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:
>P»R P8,2 0,23
0,41 1,77 5 1,77
0,41 0,23Rs
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 – z•É 2 z– , mówiący o minimalnej
częstotliwości próbkowania). Teraz definiujemy macierz czasu, która tak czy inaczej, jest skwantowana
(dyskretna) poleceniem t=[0:1./fp:1-1./fp], gdzie fp jest wcześniej zdefiniowaną częstotliwością
próbkowania, dzięki czemu odstępy między kolejno generowanymi próbkami czasu będą równe delcie
[
czasowej (szybkość zbierania próbek ”• ∆”). Część 1-1./fp ma na celu stworzenie wektora
‚›
składającego się z 8 elementów (pisząc komendę w postaci t=[0:1./fp:1] otrzymujemy 9 elementów w
macierzy).
Teraz musimy obliczyć poszczególne wartości sinusa w konkretnych chwilach czasu. W tym celu użyjemy
wzoru, który pojawił się już wcześniej (lekcja pierwsza – PRZYKŁAD WYKORZYSTANIA MatLab):
> sin2’ z– ”
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):
Ô= Iç= K ‡
Ê N
?J
Gdzie ‹= to numer wiersza, »= to numer kolumny macierzy:
Ž
Ê N
É ˆ
‹= 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, Ô= Ô=s Ô=?[ ). 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 Ô ç ÊN ?J ÊN , bowiem otrzymujemy zależność:
Ô Ô s Ô ?[
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ł ŒP‹R P0 3 0
Wykonujemy jego DFT:
·
j·
i·
i
·
Œ̂ Ô Œ i
i·
i·
i·
h·
·
ó
÷
ô
ø
õ
ù
ö
·
÷
ø
ù
·
÷
ø
ù
·
ô
ù
ó
ø
ö
÷
õ
·
ø
·
ø
·
ø
·
ø
·
õ
÷
ö
·
ó
ù
ô
·
ù
ø
÷
ø
ù
ø
÷
·
j·
i·
1
1 i·
Œ Ô Œ̂ i
Ì
8 i·
i·
i·
h·
·
ó
÷
ô
ø
õ
ù
ö
·
÷
ø
ù
·
÷
ø
ù
·
ô
ù
ó
ø
ö
÷
õ
· ·
ø õ
· ÷
ø ö
· ·
ø ó
· ù
ø ô
·
0
12
j
o
j
o
ö
3
0 o
i
n
i
n
ù
0
0 n
n
n i n i
õ n i3 n i 0 n
·n i0n i12n
ô n i3 n i 0 n
÷ n i0 n i 0 n
ó m h3 m h 0 m
Teraz chcąc znów otrzymać sygnał wykonujemy takie samo mnożenie:
·
ù
ø
÷
ø
ù
ø
÷
3 0 3
0 3 Rs .
·
12
0
ö o j 0 o j3 o
ù n i 0 n i0 n
n i n
n i
õ n i 0 n i3 n
·n i12n i0n
ô n i 0 n i3 n
÷ n i 0 n i0 n
ó m h 0 m h3 m
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 DZIEWIĄTA
WSTĘP
Podczas projektowania filtrów nasz spróbkowany sygnał transformujemy do dziedziny liczb zespolonych
transformacją Z. Ogólny wzór na tą transformację to:
Œ È Œ‹ ?Ê
ÊË?
By zobaczyć jak ten wzorek „działa” załóżmy, że nasz sygnał ma następującą formę:
Œ‹ P1 , 0 , 2 , 3R
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).
PRZYKŁADY – delta Diraca
Wiedząc już jak mniej-więcej działa transformata Z, spróbujmy policzyć transformatę dla delty Kroneckera
(bądź jak kto woli, delty Diraca). Na podstawie definicji delty (z dyskretnym czasem, stąd n zamiast t):
0,
(‹) ¡
1,
‘ś¢ ‹ £ 0¤
‘ś¢ ‹ 0
otrzymujemy wniosek, iż wszystkie n różne od zera możemy pominąć, stąd granica naszej sigmy (sumy)
będzie:
–
() È (‹) ?Ê (‹ 0) ?– 1 1 1
Ê˖
Jednocześnie możemy stwierdzić, iż szereg ten jest zbieżny dla wszystkich z.
49
PRZYKŁADY – skok jednostkowy
Osobiście zamiast zapisu 1(n) preferuję raczej u(n), stąd:
ú‹ ¡
0,
1,
‘ś¢ ‹ ¥ 0¤
‘ś¢ ‹ ¦ 0
Od razu w tym miejscu należy podkreślić, iż granica od minus do plus nieskończoności nie ma sensu, bowiem
od minus nieskończoności do zera sygnał jest równy zero, stąd:
ú() È ú(‹) ÊË?
?Ê
È ú(‹) ?Ê
Ê˖
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 a0 to nasze 1, a q to z-1, stąd możemy zapisać, iż:
ú() È ú(‹) ?Ê Ê˖
–
1
?[
1 1
1
FILTRY i TRANSMITANCJA
LEKCJA DZIESIĄTA
Przykładowo mamy pewną ścieżkę dźwiękową. Chcemy z niej usunąć pasmo wysokich częstotliwości. W
momencie, gdy mamy całe nagranie, nie ma żadnego problemu by policzyć transformatę Fouriera dla danego
przebiegu, dokonać potrzebnych operacji, a następnie ponownie wrócić do dziedziny czasu. Problem pojawia
się w momencie, gdy chcemy dźwięk (bądź inny sygnał) przetwarzać w czasie rzeczywistym. Dlatego teraz
zajmiemy się tematyką filtrów. Na początek zajmiemy się filtrami FIR (Finite Impulse Response), które dają
skończoną odpowiedź impulsową (co to znaczy, będzie wyjaśnione 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 hn. Przykładowo, konstruując prosty wzmacniacz, który wzmacnia sygnał 2 razy, otrzymamy:
–
Œ È ‰Ê Œü ‹ ‰– Œü 2 Œü Ê˖
Reasumując, nasz filtr graficznie można przedstawić jako swego rodzaju pudełeczko (czarną skrzynkę
zawierającą współczynniki hn), do której coś wchodzi (swe) i z której co wychodzi (swy). Na poniższej ilustracji
wyraźnie widać, iż w środku mamy zbiór współczynników, których jest w ilości od n=0 do N.
Õñ ñËÖ
swe(m)
swy(m)
Okazuje się jednak, że do obliczania współczynników hn najlepiej nadaje się transformata Z. Jak więc będzie
wyglądał ogólny wzór dla filtrów FIR w Z? Przypomnijmy sobie ogólny wzór na transformatę Z (jednocześnie
zmieńmy granicę sumy tak, by miała swój początek w zerze, zakładając, iż nic wcześniej się nie działo, albo
nie mamy o tym żadnej informacji):
Œ È Œ ?Ò
Ò˖
Nasze s(m) to:
É
Œ Œ È ‰Ê Œü ‹
Ê˖
Dzięki czemu otrzymujemy:
Œ È Œ ÒË?
?Ò
É
È È ‰Ê Œü ‹ Ò˖ Ê˖
?Ò
É
È ‰Ê È Œü ‹ ?Ò
Ò˖
Ê˖
Teraz musimy sobie przypomnieć twierdzenie o przesunięciu w transformacie Z:
È Œü ‹ ?Ò
Ò˖
‹ >
l
l È Œü > ?=?Ê È Œü > ?= ?Ê Œü ?Ê
>‹
É
=˖
=˖
É
Œ È ‰Ê È Œü ‹ ?Ò Œü È ‰Ê ?Ê
Ê˖
Ò˖
Ê˖
Suma współczynników hn jest nazywana transmitancją H(z):
É
˜ È ‰Ê ?Ê Ê˖
ΠΟ 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:
É
g‹ È Ê >‹ È N >‹ » – >‹ [ >‹ 1 >‹ 2 í
Ò˖
NË[
W tym momencie jesteśmy w stanie stwierdzić (porównując oba wzory – na swy(n) i y(n) ), iż współczynnik b0
będzie równy b0, współczynnik b1 będzie równy współczynnikowi b1 i tak dalej. Taki sam wynik uzyskujemy dla
współczynników a:
Korzystając z wzoru na transmitancję:
Ê Ê
Ê Ê
?Ê
∑
∑\Ê˖ Ê ?Ê
– ?– [ ?[ ? \ ?\
Ê˖ Ê ˜ ?Ê
1 [ ?[ ? \ ?\
1 ∑É
1 ∑\ÊË[ Ê ?Ê
ÊË[ Ê Wiedząc, iż za z możemy podstawić eksponentę w postaci:
JŽ‚
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:
˜z · ˜0
JŽ‚ JŽ– 1
Jeśli f=0, to z=1, stąd wzmocnienie dla sygnału stałego to:
˜z 0 – [ \
˜ 1
1 [ \
ZADANIE 2
Policz transmitancję filtru:
x(n)
y(n)
z-1
y(n-1)
a=(-2)
52
Rozwiązanie:
Aby poznać transmitancję filtru najlepiej jest podać na wejście układu x(n) deltę Kroneckera, dzięki czemu na
wyjściu y(n) otrzymamy odpowiedź impulsową filtru. W tym celu przygotujmy specjalną tabelkę:
numer
próbki
n
sygnał
x(n)
wejściowy
sygnał
y(n)
wyjściowy
-1
0
1
2
3
4
5
0
1
0
0
0
0
0
0
1
-2
4
-8
16
-32
Rozważmy jednak dokładniej, co dzieje się z naszym sygnałem. W chwili n=-1 zarówno na wejściu jak i wyjściu
otrzymujemy 0. W gdy pojawia się próbka n=0, na wejście przekazywany jest impuls równy 1:
x(0)=1
Σ=1+0=1
y(0)=1
z-1
y(-1)=0
a=(-2) ∙ 0=0
Sytuacja drastycznie się zmienia wraz z próbką n=1, bowiem dla y(n-1) otrzymujemy wartość 1, która następnie
jest wzmacniana -2 razy. Jednocześnie na wejściu nie ma już żadnego sygnału, w związku z czym wyjście filtru
zaczyna działać w sprzężeniu zwrotnym, co pokazuje, iż filtr jest niestabilny:
x(1)=0
Σ=0-2=-2
y(1)=-2
z-1
y(0)=1
a=(-2) ∙ 1=-2
Mimo tego, iż na wejście podany został sygnał o skończonej energii, na wyjściu otrzymujemy szereg, który nie
jest zbieżny. Spróbujmy zapisać równanie różnicowe naszego filtru:
g‹ >‹ g‹ 1
53
We wzorze współczynnik b0 jest równy 1, a współczynnik a1=a, stąd otrzymujemy transmitancję:
˜ 1
1
1 ?[ 1 2 ?[
Porównując nasz wynik ze znanymi już transformatami Z:
˜ 1
1 ?[
Œ‹ ¡
Otrzymujemy odpowiedź, iż:
g(‹) ¡
0,
(2)Ê ,
0,
Ê ,
‘ś¢ ‹ ¥ 0 ¤
‘ś¢ ‹ ¦ 0
‘ś¢ ‹ ¥ 0 ¤
‘ś¢ ‹ ¦ 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:
2
0,
¡
1,
sin ”
2’ ”
z– 1
Odpowiedź – częstotliwość winna wynosić 2 Hz.
Na wejście filtru ˜ ?^û ” 2’z– ”
|| ¬ ¤
|| À z• 2 z– 2
ZADANIE 2 – filtry/transformata Z
[?û 0,
Œ ü ‹ Ê
2 ,
‹ ¥ 0¤
‹¦0
podano sygnał:
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 ?[
0,
Œ ‹ 2 ú‹ 2,
‹ ¥ 0¤
‹¦0
ZADANIE 3 – filtry/FIR
Jaki jest model matematyczny FIR drugiego rzędu, z liniową charakterystyką fazową, jeśli jego
charakterystyka częstotliwościowa przyjmuje wartości ˜0 0 oraz ˜0,5 1?
Rozwiązanie:
˜z È ‰Ê ?JŽ‚Ê ‰– ‰[ ?JŽ‚ ‰ ?J^Ž‚
Ê˖
˜0 ‰– ‰[ ?JŽ– ‰ ?J^Ž– ‰– ‰[ ‰ 0
˜0,5 ‰– ‰[ ?JŽ–,Æ ‰ ?J^Ž–,Æ ‰– ‰[ ?JŽ ‰ ?JŽ ‰– ‰[ ‰ 1
Musimy teraz skorzystać z symetrii współczynników, mówiącej, iż:
‰– ‰
Z czego w konsekwencji wynika:
‰– ‰ ‰
2
‰ ‰– 1
4
˜ 2‰– 1 ‰[ 1 2‰– ‰[ 2‰– 1 1 ?[ 1 ?
4
4 2
1
2
ZADANIE 4 – stabilność
Zbadać stabilność filtru przyczynowego, którego odpowiedź na impuls:
wynosi Œ ‹ 2Ê .
Rozwiązanie:
‹ 1,
0,
‹ 0¤
‹£0
Œ ‹ ‰‹ Œ ü ‹ 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 N był mniejszy od jedynki:
˜ |N | ¥ 1
1
?[
2
1 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,
©
” 1,
Œ ” ª” 3,
©
0,
¨
1 À ” ¥ 0
0À”¥1
1À”¥2 ¤
2¥”À3
±Œ”
Rozwiązanie:
Na początek rysunek:
Út ×
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
∆z ¼ q
¼
sin 2’z 2 
2’z ¼
2
r ¼
sin 2’z 2 
’z
W przypadku naszego trójkąta, okres jest równy jeden ¼ 1, stąd możemy zapisać:
Œ∆ z sin ’z
’z 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:
Œ∆ z Œ∆ z ?JŽ‚¯
sin ’z
sin ’z
?JŽ‚
?J^Ž‚
’ z
’ z
Œ z Œ∆ z Œ∆ z ZADANIE 6 – aproksymacja/baza Walsh’a
Dokonaj aproksymacji sygnału:
0,5,
Œ” ­ ”,
0,
za pomocą pierwszych czterech funkcji Walsha.
sin ’z
G1 ?J^Ž‚ L
’z 0 À ” À 0,5
0,5 À ” ¥ 1¤
±Œ”
Ú×
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 (ç– P1 1 1 1R).
57
Œ̃ – ç– [ ç[ ç \ ç\
–,Æ
[
[
– ¥ Œ; ç– ¬ € Œ ç– }” € 0,5 1 }” € ” 1 }” P0,5”R
–
–,Æ
–
0,5 P0,5” R 1
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:
–,Æ
[
[
[ ¥ Œ; ç[ ¬ € Œ ç[ }” € 0,5 1 }” € ” 1 }” P0,5”R
–
–
–,Æ
[ 0,25 0,5 0,75 0,125
0,5 P0,5” R 1
0,5
0
W przypadku trzeciego współczynnika, w wektorze pojawiają się aż 4 przedziały, które musimy uwzględnić w
zakresach całek:
–,Æ
–,Æ
–,îÆ
[
¥ Œ; ç ¬ € 0,5 1 }” € 0,5 1 }” € ” 1 }” € ” 1 }”
–
–,Æ
0,25 0,5 0,5 0,5 0,25 P0,5” R
Teraz jeszcze tylko współczynnik \ :
–,Æ
–,îÆ
–,Æ
1
0,75
P0,5” R
0,5 1 0,75 0,75 0,5 0,75
0,5
0,0625
–,Æ
–,îÆ
[
\ ¥ Œ; ç\ ¬ € 0,5 1 }” € 0,5 1 }” € ” 1 }” € ” 1 }”
–
–,Æ
\ 0,25 0,5 0,5 0,5 0,25 P0,5” R
–,Æ
–,îÆ
1
0,75
P0,5” R
0,5 0,75 0,5 1 0,75 0,75
0,5
\ 0,0625
Reasumując, nasz przybliżony sygnał wygląda w sposób następujący:
Œ̃ 0,625ç– 0,125ç[ 0,0625ç 0,0625ç\
Zapisując współczynniki macierzowo:
Otrzymujemy mnożenie:
P0,625 0,125
0,0625
0,0625Rs
0,625
0,5
1 1
1
1
0,125
0,5
1 1 1 1
Œ̃ Ô¢Œ‰ ã
äã
äã
ä
0,625
0,0625
1 1 1 1
0,875
0,0625
1 1 1 1
58
Przedstawiając rozwiązanie graficznie:
Ú×
0,5
t
0,5
0
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
Znaleźć odpowiedź częstotliwościową dla z 0 i z 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 ?
ŽJ‚
Rozwiązanie:
Dla z 0:
Dla z 0,25:
˜z ˜0 1 ?ŽJ‚
1 0,5 ?^ŽJ‚
1 –
2
4
–
1 0,5 1,5 3
H || 4
3
Ž
1 ?ŽJ–,Æ
1 ? J
1‘
˜0,25 2 2‘
?^ŽJ–,Æ
?ŽJ
1 0,5 1 0,5 1 0,5
H 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 |N | ¥ 1, stąd zajmiemy się tylko dolną częścią ułamka (mianownikiem? :P ). W tym
miejscu musimy użyć schematu Hornera:
1
1
1
2
1
-3
-1
-2
-2
-4
-4
4
-4
0
Jak widać powyżej, liczba 2 nie może być pierwiastkiem wielomianu, aczkolwiek liczba 1 już tak (1 1 3 2 i dalej 1 2 2 4 oraz na koniec 1 4 4 0):
\ 3 2 4 2 4 1
Teraz jeszcze musimy rozbić równanie kwadratowe:
2 4 0
∆ 4Q 4 16 20
[ 2 2√5
1 √5
2
√∆ 2√5
1 √5
\ 3 2 4 1G 1 √5LG 1 √5L
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
Niech sygnał Œ” posiada widmo Fouriera Œ̂ z ZADANIE 9 – własności transformaty Fouriera
. Jakie jest widmo sygnału Œ2” 1?
œž Ž‚
Ž ‚
Rozwiązanie:
60
Œ̂ z 1
Œ²” a  
²
²
Œ” ½ a ?J
sin  2 
4
Œ”
1
1 sin  2 2 sin  4 
Œ2” 1
2
4 2
8
sin  
8 ?J sin  
4
4
Œ2” 1 ?J[ 8
ZADANIE 10 – FFT
Wyznaczyć schemat algorytmu wyliczania FFT i szczegółowo przeanalizować jego realizację, jeżeli sygnał
poddawany analizie ma postać Œ P0 1 0 2Rs
Rozwiązanie:
Na początek tworzymy macierz przejścia:
Ž
2’
2’
?J É NÊ cos » ‹ ‘ sin » ‹
Ì
Ì
Ì4
» ! ‹ 0, … , Ì 1 P0
»1 ! ‹1
»2 ! ‹1
»3 ! ‹1
Pomijając już pozostałe obliczenia, otrzymujemy:
1
1
Hã
1
1
cos
1 2
’
’
‘ sin 0 ‘
2
2
3R
cos ’ ‘ sin ’ 1
cos
3’
3’
‘ sin
0‘
2
2
1
1
1
‘ 1 ‘
ä
1 1 1
‘ 1 ‘
Natomiast po wymnożeniu macierzy przejścia i sygnału:
3
1 1
1
1
0
1 ‘ 1 ‘
‘
1
äã äã ä
Œ̂ » H Œ” ã
1 1 1 1
3
0
‘
1 ‘ 1 ‘
2
Co w schemacie (algorytmie) motylkowym wygląda następująco:
61
Œ0
0
0
0
Œ2
0
0
0
Œ1
1
Œ3
3
2
‘
1
3
Œ̂ 0
‘
Œ̂ 1
3
3 Œ̂ 2
‘
‘
Œ̂ 3
A rozpisując na równania:
É
?[
É
?[
Œ̂ » È Œ2‹ çÉNÊ çÉN È Œ2‹ 1 çÉNÊ
Ê˖
Ê˖
Gdzie çÉ ?J , a ç
?J , co w rezultacie daje nam (przykładowo dla k=0 i k=1):
"
^
?[
^Ž
^
?[
Ž
^Ž
Œ̂ 0 È Œ2‹ ?J ^ NÊ ?J ^ N È Œ2‹ 1 ?J ^ NÊ
[
Œ̂ 0 È Œ2‹ Ê˖
Ê˖
?JŽ–
[
[
Ž
?J –
È Œ2‹ 1 ?JŽ– Œ0 Œ2 Œ1 Œ3 3
Œ̂ 1 È Œ2‹ Ê˖
Ê˖
Ê˖
?JŽ[Ê
Ž
?J [
Ž
[
È Œ2‹ 1 ?JŽ[Ê
Ê˖
Œ̂ 1 Œ0 ?JŽ– Œ2 ?JŽ[ ?J IŒ1 ?JŽ– Œ3 ?JŽ[ K
Ž
Œ̂ 1 0 ?JŽ– 0 ?JŽ[ ?J I1 ?JŽ– 2 ?JŽ[ K ‘ P1 1 2 1R ‘
Jak widać, wszystkie 3 metody dają te same rozwiązania. Należy w tym miejscu podkreślić, iż to, co dzieje się na
schemacie motylkowym jest ściśle związane z powyższymi wzorami (jeśli schemat motylkowy zdaje się mieć
błąd, bądź niejasność, to należy wyprowadzić rozwiązanie według wzorów).
ZADANIE 11 – transformata Z
Jaka jest z-transformata sygnału:
Rozwiązanie:
Œ È Œ‹ ?Ê
ÊË?
Π1,
Œ‹ ¡ Ê?
0,5 ,
[
‹ À 1¤
‹¦2
1 Ê? ?Ê
1 Ò
‹2
?Ê
Ê
È È l
l È È ?Ò?
‹ 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:
˜G JŽ‚ L 2 JŽ‚?[ 2 ?JŽ‚ 2 cos 2’z ‘ sin 2’z
˜G JŽ‚ L 2 cos 2’z sin 2’z
˜G JŽ‚ L 4 4 cos 2’z cos 2’z sin 2’z 4 4 cos 2’z 1 5 4 cos 2’z
Obliczenia dla fazy:
sin 2’z
I˜G JŽ‚ LK ±Q tg ±Q tg 2 cos 2’z
Obliczenia dla składowej stałej:
˜G JŽ‚ L }¢ z 0 · ˜G JŽ– L 2 cos 0 ‘ sin 0 2 1 1
ZADANIE 13 – filtry
Zapisz równanie filtru:
#ñ
Rozwiązanie:
v?°
%Ö PÕ°R
%Ö PÕÖR
$ñ
g‹ – >‹ [ >‹ 1
63
MARATON
LEKCJA DWUNASTA
MARATON ZADAŃ – 18 czerwca 2010 r.
ZADANIE 1 – szereg Fouriera
Jakie jest dyskretne widmo sygnału s(t)?
Œ” 1,
1,
0 ¥ ” À 1¤
1¥”À2
Rozwiązanie:
Widmo sygnału dyskretnego to rozwinięcie w szereg Fouriera:
A
1
T
t
&
u
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
&
u
0
T
Na początek musimy policzyć współczynniki ck według wzoru:
¯ ps
¯ ps
¯
¯
1
1
QN € Œ” ?JŽ‚N¯ }” € Œ” ?J N¯ }”
¼
¼
64
Całkujemy jedynie pół okresu (od 0 do T/2):
s
s
s
1
1 H
1 H
?J N¯
?J N¯ QN € H
}” |– ?J N – ¼
¼ ‘– »
¼ ‘– »
–
QN Ž s
1 H
H
?J s N 1 G ?JŽN 1L
¼ ‘ 2’ »
‘2’»
¼
Musimy w tym miejscu stwierdzić jakie wartości przyjmują współczynniki ck dla k parzystych i dla k
nieparzystych (z wyłączeniem k=0, bowiem dzielić przez zero nie wolno, bo jak każdy dobry i niedobry student
wie – bo wybuchnie). Można tego dokonać na dwa sposoby – przechodząc do sinusa i cosinusa, albo bawiąc się
płaszczyzną liczb zespolonych:
metoda SIN/COS
QN I teraz podstawiamy:
H
H
cos ’» ‘ sin ’» 1
G ?JŽN 1L ‘2’»
‘2’»
k
'() *ð
ò )+, *ð
1
-1
0
2
1
0
-ð
H
‘’»
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:
?JŽN ?JŽ[ ?JŽ ?J[—–°
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:
?JŽN ?JŽ ?JŽ ?J\–°
Czyli nasz wektor obraca się do tyłu o 360 stopni, co graficznie wygląda tak:
65
Im(z)
Re(z)
-1
0
1
A w praktyce oznacza, iż wektor przyjmuje wartość 1.
Teraz wyznaczamy współczynnik c0 (albo z granicy i tw. D’Hospitala, albo z wartości średniej za pomocą całki):
–
HG1 ?JŽN L
H H ?JŽN ‡–ˆ
H ?JŽN ‘’ H
lim
¸¹ lim
Q– lim
N·–
N·–
N·–
‘2’»
‘2’»
‘2’
2
Q– s
s
1
1
H ¼
H ¼ H
€ Œ”}” € H}” 0 ¼
¼
¼ 2
¼ 2 2
–
–
2H
,
«
© ‘’»
QN 0,
ª
H
©
,
¨
2
» 2¢ 1
» 2¢
»0
¤
Œ” È QN J N¯
NË?
Œ” H
H
H
H
H
J ¯[ J ¯?[ J ¯\ J ¯?\ í
2 ‘’ 1
‘’ 1
‘’ 3
‘’ 3
Œ” H H J ¯
H
G ?J ¯ L G \J ¯ ?\J ¯ L í
2 ‘’
3‘’
Œ” Œ” H H
H
P2‘ sin3– ”R í
P2‘ sin– ”R 2 ‘’
3‘’
H 2H
1
1
‡sin– ” sin3– ” sin3– ” í ˆ
2
’
3
5
66
-3ω0
-2ω0
-ω0
u0
1
0
u
0
ZADANIE 2 – transformata Fourier’a/splot
Jakie jest widmo sygnału s(t)?
u0
Ý1
ω0
2ω0
3ω0
t
Œ” € Œ[ ½Œ ” ½}½ Œ[ / Œ
?
Œ[ ” ¡
1,
0,
” 1,
Œ ” ­” 1,
0,
1 ¥ ” ¥ 1¤
|”| ¦ 1
1 ¥ ” ¥ 0
0¥”¥1 ¤
|”| ¬ 1
Rozwiązanie:
Splot w dziedzinie czasu to iloczyn w dziedzinie widm:
Œ[ ” / Œ ” · Œz Œ[ z Œ z
s1(t)
1
t
-1
Widmo bramki to:
0
1
Œ[ z sin 2’z
’z
s2(t)
W przypadku sygnału
komplikuje:
s2(t) sytuacja się nieco
1
t
-1
0
1
67
By policzyć widmo sygnału trójkątnego, najpierw musimy policzyć jego pochodną:
ÚÝ 1
2Úu ×
2×
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:
s1(t)
1
t
-0,5
>z sin 2’z ¼
’z
0
1
sin 2’z 2
’z
0,5
× Ö, ß
t
-1
0
× Ö, ß
1
68
§” 0,5 §[ z sin 2’z 0,5 ?JŽ?–,Æ sin ’z JŽ
’z
’z
§” 0,5 § z 1 Œ\ z §[ z § z Korzystając z wzorów Eulera:
sin 2’z 0,5 ?JŽ–,Æ
sin ’z ?JŽ
’z
’z
sin ’z
sin ’z
sin ’z JŽ‚
JŽ‚ ?JŽ‚ G
?JŽ‚ L
’z
’z
’z
<= ?<= cos > sin > cos > sin > 2 sin >
sin ’z
sin ’z
2‘ sin ’z 2‘
’z
’z
Na koniec nie wolno zapomnieć o policzeniu całki z widma, bowiem policzyliśmy tutaj dopiero widmo
pochodnej! Wedle definicji:
Œ\ z ¯
€ >3}3 4
?
a‘
’a0 ‘
Jednak przed dokonaniem podstawienia do wzoru musimy policzyć s3(0). Korzystając z reguły d’Hospitala
otrzymujemy:
–
sin’z ‡–ˆ
’ cos’z
lim
¸¹ lim
1
=·–
=·–
’z
’
Œ z Œ\ 0 sin ’z
P2‘ sin’ 0R 1 0 0
’z
Œ\ z
1
sin ’z
sin ’z
’a0 z 2‘
0 ‘2’z
‘2’z
’z
’ z
No i teraz łączymy finalnie nasze dwa widma – impulsu prostokątnego i trójkątnego dając odpowiedź na
pytanie o widmo sygnału s(t), będącego splotem:
Œz Œ[ z Œ z sin 2’z sin ’z
sin ’z
sin 2’z \ \
’z
’ z
’ z
ZADANIE 3 – transformata Fourier’a
Jakie jest widmo sygnału s(t), pomnożone przez okno Bartlett’a (Bartlett window):
Œ[ ” sin 100’”
ç” ¡
1 |”|,
0,
|”| À 1¤
|”| ¬ 1
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– ” · Pa – a – R
2
Œ” ç” sin100’”
Korzystając z poprzedniego zadania, widmo trójkąta to (i tutaj jest zonk, bowiem nie całkowaliśmy widma,
które uzyskaliśmy z przesuniętych bramek, stąd odpowiedź będzie tu dla BŁĘDNEGO widma):
çz 2‘
sin ’z
’z
‘
sin ’z z– sin ’z z– Œz ™2‘
2‘
š
2
’z z– ’z z– Przy czym częstotliwość f0=50, bowiem:
sin100’” sin– ” sin2’z– ”
ZADANIE 4 – splot
x(n)
h(n)
y(n)
É
g‹ È >‰‹ Ò˖
>‹ P0, 1, 2, 3, 4, 3, 2, 1R
‰‹ P0, 1, 1R
70
Rozwiązanie:
Ogólny wzór na splot sygnałów dyskretnych to:
g‹ È >»‰‹ » È ‰»>‹ »
NË?
NË?
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:
g‹ È ‰»>‹ »
NË?
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:
‰‹ P0, 1, 1R
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:
g‹ È ‰»>‹ »
N˖
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:
>‹ P0, 1, 2, 3, 4, 3, 2, 1R
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):
g0 È ‰»>0 » ‰0>0 0 ‰1>0 1 ‰2>0 2
N˖
g0 ‰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:
g0 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):
g7 È ‰»>7 » ‰0>7 0 ‰1>7 1 ‰2>7 2
N˖
g7 ‰0>7 ‰1>6 ‰2>5
g7 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):
g‹ >‹ 2 1 >‹ 1 1 >‹ 0
y(n) dla n równego
0
0*(-1)+0*1+0*0=0
3
1*(-1)+2*1+3*0=1
7
3*(-1)+2*1+1*0=-1
Teraz wykonajmy obliczenia dla pierwszej części wzoru, czyli:
g‹ È >»‰‹ »
NË?
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):
î
g7 È >»‰7 »
N˖
g7 >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):
g7 >5‰2 >6‰1 >7‰0
Podstawiając odpowiednie wartości z obu wektorów (>‹ P0, 1, 2, 3, 4, 3, 2, 1R oraz ‰‹ P0, 1, 1R)
otrzymujemy:
g7 4 1 3 1 1 0 4 3 1
72
W konsekwencji otrzymaliśmy identyczną odpowiedź. Drugą metodą obliczenia splotu jest przejście do
dziedziny Z, ale z tego co widzę, nie jest to opłacalne, bo moje notatki zaraz się ucinają:
> ?[ 2 ? 3 ?\ 4 ?^ í
ZADANIE 5 – falki
Hd
2÷
2ù
Hs
swe
+
2÷
Gd
2ù
swy
Gs
5~ ‹ ˜~ » ‹ 1 1Ê?[
˜ ‹ ˜~ » ‹ 1
5 ‹ 5~ » ‹ 1
˜~ ‡
É?[
1
√2
;
1
ˆ
√2
È ‰– ‹‰– ‹ 2» »
Ê˖
Rozwiązanie:
Coś nie coś na temat tego zagadnienia można znaleźć tu:
http://wavelet.elektro.agh.edu.pl/wyklad/pdf/FalkiCyfrowo.pdf
By układ pracował poprawnie(?), filtry muszą spełniać warunki ortogonalności:
É?[
È ‰~ ‹ √2
Ê˖
Musimy teraz policzyć pozostałe transmitancje (Gd, Hs, Gs). By się nam lepiej liczyło dokonamy małej zmiany
(modyfikacja powoduje bodaj brak ortogonalności):
˜~ ‹ P1 ; 1R · » 2
Wiemy, iż transmitancja Hd składa się z dwóch elementów, czyli k=2, Hd(0)=1 oraz Hd(1)=1. Podstawiając
wartości do wzoru obliczamy:
5~ ‹ ˜~ » ‹ 1 1Ê?[
5~ 0 ˜~ 2 0 1 1–?[ ˜~ 1 1 1 1 1
5~ 1 ˜~ 2 1 1 1[?[ ˜~ 0 1 1 1 1
Stąd otrzymujemy, że transmitancja Gd jest równa:
73
5~ ‹ P1 ; 1R
Analogicznie powinniśmy otrzymać transmitancję Hs (˜ ‹ P1 ; 1R) oraz Hs (5 ‹ P1 ; 1R). Nie będzie
spełniony warunek ortogonalności, stąd trzeba będzie przemnożyć s1 przez normę (w naszym przypadku bodaj
2).
n
-1
0
1
2
3
4
5
6
7
swe
0
1
2
3
0
-1
-2
-3
0
Hd
1
1
0
0
0
0
0
0
0
s1
-
1
3
5
3
-1
-3
-5
-3
Gd
1
-1
s2
-
-1
-1
-1
3
1
1
1
-3
Teraz musimy zająć się przejściem sygnałów s1 i s2 przez układ 2÷ (wybierający do 2gą próbkę) i 2ù
(nadpróbkowywujący – wypełnia zerami).
Œ[ P1, 3, 5, 3, 1, 3, 5, 3R
Œ[ " P1, 0, 5, 0, 1, 0, 5, 0R
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) pk muszą mieścić się w kole:
|N | ¥ 1
Jednocześnie w dziedzinie s (Laplace’a) jest warunek, iż wszystkie współczynniki c są większe od zera:
Im(z)
Re(z)
0
Przy czym przejście z Z do s dokonuje się za pomocą podstawienia:
Przykładowo – niestabilny filtr:
1Œ
1Œ
[ 1
2 2
˜Œ Q\ 1
Q 3 Q[
4 Q–
8
\ 2 2
1
Π1PΠ2 2RPΠ2 2R
˜Œ 1
Π\ 3Π4Π8
Im(z)
2
Q– ¥ 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:
QÊ?[
jQ
i Ê?\
∆É iQÊ?Æ
i …
h 0
˜Œ QÊ
QÊ?
QÊ?^
…
0
Q
Q
∆\ S –
0
Œ\
0
QÊ?[
QÊ?\
…
0
Q\
Q[
0
1
4Π8
3Π0
QÊ
QÊ?
…
0
0
0
QÊ?[
…
0
0
5 1
Q W S8 12
Q–
0 0
∆[ 5 ¬ 0
0
0
QÊ
…
0
0
5W
8
… 0
… 0
… 0
… …
… 0
0
0o
n
0n
…n
Q– m
∆ 5 12 8 1 52 ¬ 0
Układ jest stabilny.
ZADANIE 7 – energia
∆\ 8 ∆ 416 ¬ 0
Ï € |>”| }”
?
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:
¥ >; g ¬ 0
Ewentualnie warunek ortogonalności dwóch baz („Cyfrowe przetwarzanie sygnałów – od teorii do zastosowań”
- T. Zieliński, WKŁ, Warszawa 2009, str. 51)
É
0,
¥ %N ; %7 ¬ È N ‹
7 ‹ ¡
Q,
ÊË[
» £ ¢¤
Ȣ
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:
‰ P1 , 1 , 1 , 1 , 0 , 0 , 0 , 0R
ç P1 , 1 , 1 , 1 , 1 , 1 , 1 , 1R
HAAR
WALSH
1
1
1
0,5
0
-1
1
0
0,5
-1
Co otrzymamy po wymnożeniu tych dwóch funkcji? Jaki będzie ich iloczyn skalarny?
¥ ‰ ; ç ¬ 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1
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:
‰ P0 , 0 , 0 , 0 , 1 , 1 , 1 , 1R
ç P1 , 1 , 1 , 1 , 1 , 1 , 1 , 1R
¥ ‰ ; ç ¬ 0 0 0 0 1 1 1 1 1 1 1 1
¥ ‰ ;ç ¬ 1 1 1 1 0
No i jeśli wyciągnęło się za szybko wnioski, to błędna odpowiedź gotowa. Jednakże pojawia się tutaj pewna
kontrowersja (abstrahując od tego, iż już stwierdziliśmy, że funkcje nie są do siebie ortogonalne, a jeśli są, to nie
wszystkie). Ortogonalność dwóch pierwszych baz. Obie są takie same:
‰ ç P1 , 1 , 1 , 1 , 1 , 1 , 1 , 1R
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:
Œ” ¡
|”|,
0,
|”| ¥ 1¤
|”| ¦ 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ć odpowiedź:
sin 2’z sin ’z
Œz ’z
’ z
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.
Ú2 2Ú×
2×
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ądź Kroneckera – jak kto woli) oraz dwie bramki prostokątne. Wzór na przesunięcie w czasie wygląda
następująco:
>” ”– ?J¯ a‘
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).
8×
×°
t
-1
0
79
Ponieważ widmo delty Diraca to 1, stąd otrzymujemy:
” 1 [ z ?J?[ 1 J
Sumaryczne widmo delt to:
” 1 z ?J[ 1 ?J
Îz [ z z J G ?J L J ?J
Musimy teraz odwołać się do wzorów Eulera:
Czyli:
?<= cos > sin >
<= cos > sin >
<= ?<= cos > sin > cos > sin > 2 sin >
Îz 2‘ sin 2‘ sin 2’z
Teraz musimy obliczyć widma bramek. Korzystając z wyprowadzonych widm dla sygnałów standardowych,
widmo impulsu prostokątnego to:
2
sin ¼ sin 2’z¼
’z
Π(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.
× Ö, ß
-1
t
0
1
× Ö, ß
80
Po raz drugi odwołujemy się do wzoru dotyczącego przesunięcia sygnału w czasie:
§” 0,5 §[ z 1 sin ’z JŽ
sin 2’z 0,5 ?JŽ?–,Æ
’z
’z
Minus przy powyższym widmie wziął się z tego, iż ten impuls prostokątny jest jeszcze dodatkowo obrócony.
Teraz jeszcze musimy zapisać wzór dla drugiej bramki:
§” 0,5 § z Korzystając z liniowości transformaty Fourier’a:
Mz § z §[ z sin 2’z 0,5 ?JŽ–,Æ sin ’z ?JŽ
’z
’z
sin ’z ?JŽ sin ’z JŽ sin ’z ?JŽ
G
JŽ L
’z
’z
’z
Odwołując się po raz kolejny do wzorów Eulera:
Otrzymujemy:
?<= <= cos > sin > cos > sin > 2 sin >
Mz sin ’z ?JŽ
sin ’z
sin ’z
2‘ sin ’z 2‘
G
JŽ L ’z
’z
’z
Dodając teraz do siebie widmo delt Kroneckera oraz bramek otrzymujemy:
sin ’z
sin ’z
Œ~ z Îz Mz 2‘ sin 2’z 2‘
2‘ Esin 2’z F
’z
’z
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):
¯
€ >3}3 4
?
a‘
’a0 ‘
Nim podstawimy wszystko do powyższego wzoru, musimy najpierw sprawdzić, czy X(0)=0:
Œ~ 0 2‘ sin2’ 0 2‘ sin’ 0 sin’z
’z
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’z ‡–ˆ
’ cos’z
¸¹ lim
1
lim
=·–
=·–
’z
’
Dzięki czemu otrzymujemy, iż:
81
Œ~ 0 2‘ sin0 2‘ sin0 1 0
Œ~ z
1
sin ’z
0 z
Œz ’Œ~
2‘ Esin 2’z F ’ 0 z
‘2’z
‘2’z
’z
Œz sin 2’z sin ’z
’z
’ z
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:
§z sin 2’z ¼ sin 2’z 1 sin 2’z
’z
’z
’z
Natomiast dla impulsu trójkątnego o T=1 otrzymujemy („Teoria sygnałów” Izydorczyk, Płonka, Tyma, Helion,
Gliwice 2006, str. 43):
9z 9‘ 4H
¼
sin ¼
2
41
2’z 1
sin’z
sin
1 2 ’ z 2
’z
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:
Œz §z 9z
Œz sin 2’z sin ’z
’z
’ z
ZADANIE 3 – DFT 2D
Policz DFT następującego obrazu:
82
1
j1
i1
i
1
Œi
i1
i1
i1
h1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1o
1n
n
1n
1n
1n
1n
1m
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 SPEŁNIA SWEGO ZADANIA, w tym celu
stosujemy polecenie fft2(nazwa)! Wykonując dwukrotnie mnożenie:
Ԍ
Œ̂ Ô ÔŒ
Œ̂ Ô
NIE OTRZYMUJEMY WIDMA! Przy takim sposobie mnożenia (przez ortonormalność macierzy przejścia)
ponownie wracamy do obrazu (w tym miejscu odsyłam do działu dotyczącego bazy Walsha – lekcja piąta)!
Mnożenie musi być wykonane w formie:
Czyli reasumując wykonujemy działanie:
· · · · · · · · 1
j· ó ÷ ô ø õ ù ö o j1
i· ÷ ø ù · ÷ ø ù n i1
i
ni
· ô ù ó ø ö ÷ õ n i1
Œ̂ Ô Œ Ô i
i· ø · ø · · ø ·n i1
i· õ ÷ ö ø ó ù ô n i1
i· ù ø ÷ · ù ø ÷ n i1
h· ö ù õ ø ô ÷ ó m h1
Po pierwszym mnożeniu otrzymujemy:
8
j0
i0
i
0
Œ̂ Ô i
i0
i0
i0
h0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8 ·
0o j·
0n i·
ni
0n i·
0n i·
0n i·
0n i·
0m h·
0
0
0
0
0
0
0
0
·
ó
÷
ô
ø
õ
ù
ö
0
0
0
0
0
0
0
0
·
÷
ø
ù
·
÷
ø
ù
0
0
0
0
0
0
0
0
1 · · · · · · · ·
1o j· ó ÷ ô ø õ ù ö o
1n i· ÷ ø ù · ÷ ø ù n
ni
n
1n i· ô ù ó ø ö ÷ õ n
1n i· ø · ø · · ø ·n
1n i· õ ÷ ö ø ó ù ô n
1n i· ù ø ÷ · ù ø ÷ n
1m h· ö ù õ ø ô ÷ ó m
·
ô
ù
ó
ø
ö
÷
õ
·
ø
·
ø
·
ø
·
ø
·
õ
÷
ö
·
ó
ù
ô
· ·
ù öo
ø ùn
n
÷ õn
ø ·n
ù ôn
ø ÷n
÷ óm
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
11111111111111118
W pozostałych mnożeniach strzałki się zerują. Wykonanie drugiego mnożenia daje nam rezultat:
j16
i0
i0
Œ̂ Ô i 0
i0
i0
i0
h0
8 4√21 ‘
0
0
0
0
0
0
0
8 1 ‘
0
0
0
0
0
0
0
8 4√21 ‘
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8 1 ‘
0
0
0
0
0
0
0
8 4√21 ‘
0
0
0
0
0
0
0
8 4√21 ‘o
0
n
0
n
0
n
0
n
n
0
n
0
m
0
Dlaczego tak? Ano, ponieważ:
8 · 8 ·
j
0
i
0
i
0
i
0
i
0
i
i
0
h
0
8 · 8 ö 8 · 8 ù 8 · 8 õ 8 · 8 ø
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8 · 8 ô 8 · 8 ÷ 8 · 8 ó
o
0
0
0
n
0
0
0
n
0
0
0
n
0
0
0
n
0
0
0
n
n
0
0
0
m
0
0
0
Kolejnym krokiem w rozwiązaniu jest podstawienie odpowiednich wartości liczbowych pod odpowiednie
strzałki (lekcja ósma):
16 8 · ö 8 · ù 8 · õ
j0
0
0
0
i
0
0
0
i0
0
0
0
i0
0
0
0
i0
0
0
0
i0
i0
0
0
0
h0
0
0
0
√u
√u
ò
u
u
ó
j16 8 E1 √u ò √uF 8 1 ‘
u
u
i
i0
0
0
i0
0
0
i
0
0
i0
0
0
i0
0
0
i0
i0
0
0
h0
0
0
0 8 · ô 8 · ÷ 8 · ó
o
0
0
0
0
n
0
0
0
0
n
0
0
0
0
n
0
0
0
0
n
0
0
0
0
n
n
0
0
0
0
m
0
0
0
0
√u
√u
ò
u
u
ô
8 E1 √u
√u
ò F
u
u
0
0
0
0
0
0
0
j16 G8 4√2 ‘4√2L 8 1 ‘ G8 4√2 ‘4√2L
0
0
0
i0
0
0
0
i0
0
0
0
i0
0
0
0
i0
i0
0
0
0
i0
0
0
0
h0
0
0
0
j16 8 4√21 ‘ 8 1 ‘ 8 4√21 ‘
0
0
0
i0
0
0
0
i0
0
0
0
i0
0
0
0
i0
i0
0
0
0
i0
0
0
0
h0
0
0
0
√u
√u
ò
u
u
√u
√u
ò
u
u
õ
0 8 E1 0
0
0
0
0
0
0
ö
√u
√u
ò F 8 1 ‘
u
u
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8 E1 √u
√u
ò Fo
u
u n
n
0
n
0
n
0
n
0
n
0
n
n
0
m
0
0 G8 4√2 ‘4√2L 8 1 ‘ G8 4√2 ‘4√2Lo
0
0
0
0
n
0
0
0
0
n
0
0
0
0
n
0
0
0
0
n
n
0
0
0
0
n
0
0
0
0
m
0
0
0
0
0 8 4√21 ‘
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8 1 ‘
0
0
0
0
0
0
0
8 4√21 ‘o
0
n
0
n
0
n
0
n
n
0
n
0
m
0
84
ZADANIE 4 – filtry
Jaka jest odpowiedź impulsowa filtru ˜ [pû ? Czy jest to filtr stabilny?
Rozwiązanie:
Na początek przypomnijmy sobie wzór na sumę wyrazów nieskończonego ciągu geometrycznego:
ì
–
, || ¥ 1
1
Porównując ze sobą wzór na transmitancję H(z) oraz sumę ciągu, otrzymujemy niemalże gotową odpowiedź na
pierwszą część zadania:
–
2
1 1 2 ?[
– 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 \
a – – – í 2P1 í R
p
p
Ê
2
a 2 È 2 È2Ê ?Ê
Ê˖
Ê˖
Przyrównując powyższe wyprowadzenie z wzorem na transformatę Z otrzymujemy bardzo łatwo odpowiedź:
p
a È >‹ ?Ê
ÊË?
Tak więc otrzymujemy informację, iż odpowiedź 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:
|N | ¥ 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
?[
2
1 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:
Œ[ ” sin2’”
WSPÓŁCZYNNIKI
Zabieramy się więc za zadanie. Przez oznaczenie Œ[ rozumiemy sygnał, a przez oznaczenie ç– , pierwszą funkcję
Walsha (ç– P1 1 1 1R). Nasz sygnał po aproksymacji to Œ̃[ .
[
[
Œ̃[ – ç– [ ç[ ç \ ç\
– ¥ Œ[ ; ç– ¬ € Œ[ ç– }” € sin2’” 1 }” Współczynnik [ :
[ –
–
[
–,Æ
1
1
1
Pcos2’”R Pcos2’ cos0R 0
0
2’
2’
[
[ ¥ Œ[ ; ç[ ¬ € Œ[ ç[ }” € sin2’” 1 }” € sin2’” 1 }”
–
–
–,Æ
1
1
1
1
0,5
0,5 Pcos2’”R 1
Pcos2’”R
Pcos2’”R
™Pcos2’”R
š
0,5
0,5
0
0
2’
2’
2’
86
[ Współczynnik :
1
1
2
Pcos’ cos0 cos2’ cos’R P1 1 1 1R 2’
2’
’
–,Æ
–,Æ
–,îÆ
[
¥ Œ[ ; ç ¬ € sin2’” 1 }” € sin2’” 1 }” € sin2’” 1 }” € sin2’” 1 }”
–
–,Æ
1
0,25 Pcos2’”R 0,5 Pcos2’”R0,75 Pcos2’”R 1
™Pcos2’”R
š
0,75
0,25
0,5
0
2’
1
’
’
3’
3’
‡cos   1 1 cos   cos 1 1 cos ˆ
2’
2
2
2
2
Ponieważ cos   cos   0, więc:
Ž
Współczynnik \ :
–,îÆ
–,Æ
\Ž
–,Æ
1
’
3’
‡2 cos   2 cos ˆ 0
2’
2
2
–,Æ
–,îÆ
[
\ ¥ Œ[ ; ç\ ¬ € sin2’” 1 }” € sin2’” 1 }” € sin2’” 1 }” € sin2’” 1 }”
–
\ \ –,Æ
–,Æ
–,îÆ
1
0,25 Pcos2’”R 0,5 Pcos2’”R0,75 Pcos2’”R 1
™Pcos2’”R
š
0,75
0,25
0,5
0
2’
1
’
’
3’
3’
‡cos   1 1 cos   cos 1 1 cos ˆ 0
2’
2
2
2
2
Czyli nasz aproksymowany sygnał ma postać:
2/’
0
1 1
1
1
2/’
2/’
Œ̃[ ã1 1 1 1ä ã
äã
ä
2/’
1 1 1 1
0
2/’
1 1 1 1
0
Teraz współczynniki musimy wyliczyć dla cosinusa. By nie rozpisywać wszystkiego od początku, zamieniamy
[
[
cosinusy na sinusy jako wyniki całek oraz Ž zamiast  Ž, ponieważ:
[
[
€ cos2’” }” 1
sin2’”
2’
– ¥ Œ ; ç– ¬ € Œ ç– }” € cos2’” 1 }” Współczynnik [ :
–
–
1
1
1
Psin2’”R Psin2’ sin0R 0
0 2’
2’
87
[ 1
1
1
1
0,5
0,5 Psin2’”R 1
Psin2’”R
Psin2’”R
™Psin2’”R
š
0,5
0,5
0
0
2’
2’
2’
1
[ P0 0 0 0R 0
2’
Współczynnik :
1
0,25 Psin2’”R 0,5 Psin2’”R0,75 Psin2’”R 1
™Psin2’”R
š
0,75
0,25
0,5
0
2’
Współczynnik \ :
1
2
P1 0 0 1 1 0 0 1R 2’
’
1
0,25 Psin2’”R 0,5 Psin2’”R0,75 Psin2’”R 1
\ ™Psin2’”R
š0
0,75
0,25
0,5
0
2’
Reasumując, nasz aproksymowany sygnał ma postać:
2/’
0
1 1
1
1
0 ä ã2/’ä
Œ̃ ã1 1 1 1ä ã
2/’
2/’
1 1 1 1
2/’
1 1 1 1
0
Teraz musimy skorzystać z minimalizacji energii odchyłki, czyli wzorku:
ÂÒ<Ê €ì – ç– [ ç[ ç \ ç\ }”
–
ÂÒ<Ê <Ê
ÂÒ<Ê á
[
2
€ ‡sin2’” ç[ ˆ }”
’
–
[
2
€ ‡cos2’” ç ˆ }”
’
–
ODCHYŁKA SINUS
No i teraz policzenie tych całek wymaga trochę ekwilibrystyki… Pomijając na moment granicę i podstawiając, iż
ç :
Ž [
€Psin2’” R }” €Psin 2’” 2 sin2’” R }”
Rozbijamy całkę na 3 mniejsze (stałe w wynikach całek pomijamy, ponieważ i tak później pojawia się
oznaczenie w całce, które samo w sobie eliminuje stałą):
88
€Psin2’” R }” € sin 2’” }” € 2 sin2’” }” € }”
Problematycznym elementem jest całka z sin 2’”, ale nam, jako wytrawnym matematykom, na pewno nie
sprawi trudności…
> sin2’”
g | sin2’”
1
€ sin2’” }” ƒ |
ƒ
> 2’ cos2’” g cos2’”
2’
€ sin2’” }” ‡
1
1
cos2’”ˆ sin2’” €P2’ cos2’”R ‡ cos2’”ˆ }”
2’
2’
Ponieważ całka z sin2’” jest całką pętlącą się (zwrotną), stąd licząc całkę znajdującą się po prawej stronie
równania (całka z cos 2’”), powinniśmy powrócić do całki znajdującej się po lewej stronie równania (całka z
sin 2’”):
€ sin 2’” }” ‡
1
cos2’” sin2’”ˆ € cos 2’” }”
2’
Korzystając z własności trygonometrycznej (cos 2’” 1 sin2’”) otrzymujemy:
€ sin 2’” }” ‡
€ sin 2’” }” ‡
1
cos2’” sin2’”ˆ €P1 sin 2’”R }”
2’
1
1
cos2’” sin2’”ˆ € }” € sin 2’” }” ‡
cos2’” sin2’”ˆ € }” € sin 2’” }”
2’
2’
Dodajemy teraz stronami całkę z sinus kwadrat:
2 € sin 2’” }” ‡
1
cos2’” sin2’”ˆ ”
2’
Otrzymując wynik (korzystając z tożsamości trygonometrycznej 2 cosH sinH sin 2H):
€ sin2’” }” ‡
Wprowadzając oznaczenie otrzymujemy:
1
” 4’” sin4’”
cos2’” sin2’”ˆ 4’
2
8’
4’” sin4’” 1 4’ 1 sin4’ 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:
€Psin2’” R }” € sin 2’” }” € 2 sin2’” }” € }”
Musimy pamiętać, iż funkcja Ž ç[ też jest zmienna w czasie, stąd dwie ostatnie całki po prawej muszą być
liczone przedziałami:
[
[
€ 2 sin2’” }” € 2 –
–
2
ç sin2’” }”
’ [
89
–,Æ
[
–,Æ
–,îÆ
[
4
€ 2 sin2’” }” q € 1 sin2’” }” € 1 sin2’” }” € 1 sin2’” }” € 1 sin2’” }”r
’
–
–
[
–,Æ
–,Æ
–,Æ
–,Æ
–,îÆ
–,îÆ
[
4
€ 2 sin2’” }” q€ sin2’” }” € sin2’” }” € sin2’” }” € sin2’” }”r
’
–
[
€ 2 sin2’” }” –
[
–
–,Æ
4
1
1
0,5
0,75
0,25
‡Pcos2’”R
Pcos2’”R
Pcos2’”R
Pcos2’”R
ˆ
0,75
0,25
0,5
0
’
2’
€ 2 sin2’” }” –
2
2
4
P1 0 1 0 0 1 1 0R 2 ’
’
’
Teraz druga całka:
[
–,îÆ
–,Æ
[
–,Æ
[
–,Æ
–,îÆ
[
2
4
4
€ }” € ç[ }” €ç[ }” q€ 1 }” € 1 }” € 1 }” € 1 }”r
’
’
’
–
–
–,Æ
[
–
–,Æ
–,îÆ
–
[
–,Æ
[
–,Æ
–,îÆ
4
4
4
4
€ }” q€ }” € }” € }” € }”r € }” P1 0R ’
’
’
’
–
–
–,Æ
–,Æ
–,îÆ
–
Dzięki czemu otrzymujemy wreszcie wynik:
[
ÂÒ<Ê <Ê € ‡sin2’” –
2
1 4
4
1
ç[ ˆ }” ’
2 ’
’
2
ODCHYŁKA COSINUS
Dla cosinusa wynik całki wyglądają podobnie:
ÂÒ<Ê á
[
2
€ ‡cos2’” ç ˆ }”
’
–
€Pcos2’” R }” € cos 2’” }” € 2 cos2’” }” € }”
Korzystając już z tablic matematycznych oraz od razu wprowadzając oznaczenie otrzymujemy:
[
€ cos 2’” }” ™
–
4’” sin4’” 1 4’ 1 sin4’ 1
1
š 0
8’
8’
2
0
2
2
ç P1 1 1 1Rs
’
’
90
[
[
€ 2 cos2’” }” € 2 –
–,Æ
[
–,Æ
–
2
ç cos2’” }”
’ [
–,îÆ
[
4
€ 2 cos2’” }” q€ cos2’” }” € cos2’” }” € cos2’” }” € cos2’” }”r
’
–
[
€ 2 cos2’” }” –
[
[
–
–,Æ
–,îÆ
2
1
0,5
0,75
0,25
‡Psin2’”R
Psin2’”R
Psin2’”R
Psin2’”R
ˆ
0,75
0,25
0,5
0
’
€ 2 cos2’” }” –
–,Æ
[
2
2
4
P1
1
1
1R
2
’
’
’
[
[
2
4
4
4
4
€ }” € ç[ }” €ç[ }” € }” P1 0R ’
’
’
’
’
–
–
[
–
ÂÒ<Ê á € ‡cos2’” –
–
2
1
ç ˆ }” ’
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 H całkę liczymy w tempie ekspresowym:
1
1
1
1
1
1
€ sin 2’” }” €P1 cos4’”R }” € }” € cos4’” }” ” sin4’” 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
€ |>”| }” € |a‘| }
‘
?
?
Na początek zacznijmy od transformaty Fourier’a bramki prostokątnej (impuls prostokątny):
€ s ” ?
?J¯
s
}” € ?J¯ }” ?s
¼
1
?Js Js
sin ¼
sin 2’z¼ sin 2’z¼
?J¯ b ¤ 2
2
‘
‘
2’z
’z
¼
Ponieważ widmo naszego sygnału to
przekształcając sinc do dziedziny czasu:
, więc możemy wywnioskować, iż ¼ 1. Reasumując,
œžŽ‚
Ž‚
sin2’z
sin
0,
2
s ” ¡
1,
’z
|”| ¬ ¼¤
|”| À ¼
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:
s
s
s
€ |>”| }” 2 €|s ”| }” 2 €|1| }” 2 € }” 2 P¼ 0R 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)
Œ̂ X
6 0 2 0
Z
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):
ç N Ê ?J
Ž
N Ê
É cos
2’
2’
»= ‹= ‘ sin
»= ‹=
Ì=
Ì=
92
Gdzie Ì= 2:
ç N Ê 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
Ô= Œ̂ ‡
Ô= X
1 1
Z
1 1
1 1
6 0 2 0
0
ˆX
ZX
1 ‘
6 0 2 0
12
0 0 0
Z
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’
’
’
ç N= Ê= cos E » ‹ F ‘ sin E » ‹ F 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:
Œ Ô= Œ̂ Ô Ô X
0
12
1 1
1
1
1 ‘ 1 ‘
0 0 0
0
Zã
äX
1
1
1
1
0 4 0
8
1 ‘ 1 1
By wykalibrować obraz dzielimy macierz przez odpowiednie współczynniki:
Œ„ 1
1
0 0
X
Ì= Ì 8 16
1 1 0
0 0
Z X
8 16
2 4 8
0
16
0 0
0 0
ZX
8 16
1 2
0 0
16 8
0
Z
16
0 0
Z
1 2
ZADANIE 4 – filtry
Jaka jest odpowiedź 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ą odpowiedź 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 \
a – – – í 2P1 í R
2
2
2
p
p
1 Ê
1 Ê
a 2 È 2 È ?Ê
2
2
Ê˖
Ê˖
Przyrównując powyższe wyprowadzenie z wzorem na transformatę Z otrzymujemy bardzo łatwo odpowiedź:
p
a È >‹ ?Ê
ÊË?
Tak więc otrzymujemy informację, iż odpowiedź impulsowa filtru to:
1 Ê
Œ
2 2
0,
‹¥0
Ê
‹
¤
1
Œ
>
2 ,
‹¦0
2
‹
94