Professional Documents
Culture Documents
Tomasz P. Zieliński „Od Teorii Do Cyfrowego Przetwarzania Sygnałów”
Tomasz P. Zieliński „Od Teorii Do Cyfrowego Przetwarzania Sygnałów”
od teorii do zastosowań
Ukochanej Żonie
za anielską cierpliwość
Cyfrowe przetwarzanie sygnałów
od teorii do zastosowań
Tomasz P. Zieliński
621.39
ISBN 83-206-1596-8
Utwór ani w całości, ani we fragmentach nie może być skanowany, kserowany, powielany bądź
rozpowszechniany za pomocą urządzeń elektronicznych, mechanicznych, kopiujących, nagrywających
i innych bez pisemnej zgody posiadacza praw autorskich.
Przedmowa ...................................................................................................................................................... xi
23.Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej ................................... 740
23.1 Podstawy modulacji .................................................................................................................. 741
23.2. Cyfrowe modulacje wielotonowe ............................................................................................... 745
23.3. Standard ADSL .......................................................................................................................... 748
23.4. Modulator-demodulator DMT ................................................................................................... 751
23.5 Źródła zniekształceń i zakłóceń ................................................................................................. 754
23.6 Wybrane zagadnienia implementacyjne ..................................................................................... 759
23.6.1. Identyfikacja odpowiedzi impulsowej kanału ........................................................................... 759
23.6.2. Korekcja czasowa kanału − skracanie czasu trwania odpowiedzi impulsowej ......................... 764
23.6.3. Synchronizacja blokowa ............................................................................................................ 767
23.6.4. Korekcja częstotliwościowa kanału ........................................................................................... 769
23.6.5. Estymacja przepływności bitowej .............................................................................................. 770
23.6.6. Właściwy dobór korektora czasowego ....................................................................................... 773
23.7. Przykład ćwiczenia komputerowego .......................................................................................... 773
x Spis treści
Celem niniejszej książki jest w miarę całościowe przedstawienie podstaw cyfrowego przetwarza-
nia sygnałów. Ich znajomość jest niezwykle istotna w czasach, w których obserwuje się zdecydo-
wane preferowanie rozwiązań opartych na technice cyfrowej a nie analogowej. Tendencja ta jest
wyraźnie obserwowana od wielu lat i jest wynikiem coraz większej dostępności, także cenowej,
bardzo wydajnych układów cyfrowych (mikroprocesorów i mikrokontrolerów, pamięci oraz ukła-
dów peryferyjnych, takich jak przetworniki analogowo-cyfrowe i cyfrowo-analogowe) oraz zalet
przetwarzania cyfrowego nad analogowym (niezmienności czasowej sposobu przetwarzania da-
nych, spowodowanej brakiem zależności od starzejących się i zmieniających swoje właściwości
elementów elektronicznych). W związku z tym coraz częściej obserwuje się projektowanie ukła-
dów elektronicznych, w których jak najwcześniej następuje przetworzenie sygnałów analogowych
na postać cyfrową i realizowanie algorytmu przetwarzania całkowicie w postaci operacji arytme-
tycznych na liczbach, reprezentujących wartości chwilowe spróbkowanych sygnałów analogo-
wych. Ten scenariusz jest powszechny wszędzie. Przykładem mogą być różnorakie systemy stero-
wania i nadzoru: przemysłowe, wojskowe, medyczne. Dodatkowo w epoce multimedialnej szeroko
przetwarzane i analizowane są cyfrowe sygnały mowy, muzyki (audio), obrazy i ich sekwencje
(wideo, telewizja).
Wszędzie tam, gdzie znajduje się procesor przetwarzający cyfrowe dane pomiarowe mamy do
czynienia z cyfrowym przetwarzaniem sygnałów. Okazuje się jednak, że niezależnie od źródła
tych sygnałów podstawowe metody ich przetwarzania i analizy są identyczne lub bardzo podobne.
Dlaczego tak się dzieje? Ponieważ w każdym przypadku patrzymy na sygnał jako na funkcję
zmienną w czasie, lub przestrzeni, i wykorzystujemy znane, ogólnie dostępne narzędzia analizy
matematycznej tych funkcji, czyli na przykład stosujemy osiemnastowieczne przekształcenie
Fouriera lub mającą dopiero kilkanaście lat transformację falkową do częstotliwościowej analizy
sygnałów.
Zdaniem autora nie można mówić o przetwarzaniu sygnałów cyfrowych bez nawiązania do teorii
(analizy i przetwarzania) sygnałów analogowych, czyli teorii funkcji ciągłych. Analiza i przetwa-
rzanie danych cyfrowych są nierozerwalnie związane z analizą i przetwarzaniem sygnałów analo-
gowych. Najczęściej dane cyfrowe są spróbkowaną wersją („kopią”) danych analogowych i ich
analiza ma nam dać informacje nie o „kopii”, ale o „oryginale”. Narzędzia stosowane w obu przy-
padkach i ich właściwości wzajemnie się przy tym przenikają. Filtry cyfrowe wywodzą się z fil-
trów analogowych, implementowana na komputerach dyskretna transformacja Fouriera (stosowana
przykładowo w bardzo popularnym obecnie standardzie kompresji muzyki mp3) powstała
z „całkowego” szeregu Fouriera, zaś transformacja Z pełni podobną rolę w świecie liniowych,
niezmiennych w czasie układów dyskretnych jak transformacja Laplace’a w świecie układów
analogowych.
Z tego powodu niniejsza książka będzie podróżą po wielu kontynentach. Znajdą się w niej: ele-
menty teorii sygnałów analogowych i obwodów elektrycznych (rozdziały 1 − 6), podstawowe (roz-
działy 7 − 13) i bardziej zaawansowane (rozdziały 14 − 18) metody cyfrowej analizy i przetwa-
rzania sygnałów oraz ich wybrane, ciekawe zastosowania (rozdziały 19 − 23). Autorowi zawsze
będzie przyświecał podstawowy cel, aby pokazać związki i przenikanie się świata „analogowego”
xii Przedmowa
Kończąc to krótkie wprowadzenie, autor chciałby bardzo serdecznie podziękować wszystkim, któ-
rzy są cichymi współautorami tej książki. Na wstępie Panu profesorowi Michałowi Szyperowi,
wieloletniemu opiekunowi naukowemu, za inspirację do twórczej, wytężonej, bezkompromisowej
pracy i bezkompromisowego postępowania (w tym pisania). Serdeczne podziękowania autor kieru-
je także do swoich doktorantów, byłych i obecnych, czyli Panów: Jarosława Bułata, Krzysztofa
Dudy, Rafała Frączka, Mirosława Sochy i Jacka Stępnia, a zwłaszcza do Pawła Turczy, niekwe-
stionowanego lidera grupy, którzy swoimi pytaniami oraz wspólnym z autorem poszukiwaniem na
nie odpowiedzi w sposób znaczący przyczynili się do obecnego kształtu merytorycznego książki.
Autor składa także szczególne podziękowania swoim kolegom: dr Andrzejowi Bieniowi za wpro-
wadzenie go w świat cyfrowego przetwarzania sygnałów, dr Henrykowi Łopaczowi i dr Romanowi
Rumianowi za długą, owocną, niezwykle kształcącą współpracę oraz dr Tomaszowi Twardowskie-
mu za ożywczy powiew świeżości, wniesiony w jego życie naukowe w ostatnich latach.
Idąc dalej i przechodząc do konkretów, autor chciałby bardzo gorąco podziękować: dr Romanowi
Rumianowi za współautorstwo rozdziału 25, dr Krzysztofowi Dudzie za współautorstwo rozdzia-
łów 22.4, 22.5.2 i 22.5.3, dr Robertowi Wielgatowi za współautorstwo rozdziału 19.7 oraz dr
Przemysławowi Korohodzie za bardzo cenne uwagi i sugestie dotyczące zawartości merytorycznej
całego rozdziału 22.
Miłym obowiązkiem autora jest także serdeczne podziękowanie wszystkim osobom, które poświę-
ciły swój czas, bardzo wnikliwie przeczytały cały manuskrypt niniejszej książki lub jego wybrane
części oraz pomogły usunąć występujące w nim błędy i nieścisłości, a w szczególności Panom pro-
fesorom: Markowi Domańskiemu, Andrzejowi Dziechowi, Januszowi Gajdzie, Zdzisławowi Papi-
rowi, Ryszardowi Panuszce i Michałowi Szyperowi, Panom doktorom: Krzysztofowi Dudzie, Je-
rzemu Jurkiewiczowi, Przemysławowi Korohodzie, Pawłowi Turczy i Tomaszowi Twardowskie-
mu oraz wszystkim swoim doktorantom, przede wszystkim Jarosławowi Bułatowi.
Autor ma nadzieję, że choć w niewielkiej części udało mu się zrealizować swoje ambitne zamie-
rzenia. Dlatego z zawstydzeniem i pokorą przedstawia Czytelnikowi skromny wynik swojej pracy.
x − zmienna losowa
x, x − wektor
X − macierz
x(n) – sygnał czasu dyskretnego (dyskretny)
x(t) − sygnał czasu ciągłego (analogowy)
X(ejΩ) − transformata Fouriera sygnału x(n)
X(f ) − transformata Fouriera sygnału
X(jω) − transformata Fouriera sygnału x(t)
X(s) − transformata Laplace’a sygnału x(t)
X(z) − transformata Z sygnału x(n)
z − zmienna transformacji Z
Sygnały
deterministyczne losowe
prawie okresowe
nieergodyczne ergodyczne
zmodulowane
rozkład równomierny
impulsowe o ograniczonej energii
rozkład normalny
o nieskończonym czasie trwania i ograniczonej energii
inne rozkłady
Sygnały ciągłe czasu ciągłego x(t) są opisane ciągłymi funkcjami czasu, przyjmującymi warto-
ści ze zbioru liczb rzeczywistych.
Sygnały dyskretne czasu ciągłego xk(t) są sygnałami ciągłymi w czasie, przyjmującymi warto-
ści dyskretne. Przykładem takiego sygnału jest sygnał wyjściowy z przetwornika cyfrowo-ana-
logowego C/A, którego wartości są skwantowane. W szczególności sygnał muzyki z płyty CD
po przetworniku C/A a przed dolnoprzepustowym filtrem rekonstruującym.
Sygnały ciągłe czasu dyskretnego x(n) powstają w wyniku dyskretyzacji (spróbkowania)
w czasie sygnałów ciągłych, tzn. z sygnału ciągłego pobierane są wartości (próbki) tylko
w wybranych chwilach czasowych. Próbkowanie może być równomierne (równe odstępy
czasowe pomiędzy chwilami pobierania próbek) lub nierównomierne. W przypadku próbkowa-
nia równomiernego odstęp pomiędzy próbkami ∆t nazywa się okresem próbkowania, a jego
odwrotność 1/∆t − częstotliwością próbkowania fp. Zapis x(n) oznacza wartość sygnału n-tej
chwili czasowej, tzn. x(n) = x(n∆t). W zależności od kontekstu przez x(n) można także rozu-
mieć zbiór wszystkich próbek sygnału dyskretnego, czyli {x(n)}. Jak będzie później pokazane,
z sygnału spróbkowanego w czasie można odtworzyć sygnał ciągły, jeśli częstotliwość próbko-
wania jest odpowiednio dobrana w stosunku do widma częstotliwościowego dyskretyzowanego
sygnału (zgodnie z twierdzeniem Nyquista, znanym także jako twierdzenie Kotielnikowa- -
Shannona). Przykładem dwuwymiarowego sygnału ciągłego argumentu dyskretnego (poło-
żenia) jest obraz zapisany w analogowej pamięci kamery CCD.
Sygnały cyfrowe xk(n), czyli sygnały dyskretne czasu dyskretnego, to sygnały ciągłe czasu
dyskretnego x(n), w których dodatkowo dokonano kwantowania wartości sygnału, przykłado-
wo zaokrąglono wartości rzeczywiste do najbliższych liczb całkowitych. Sygnały cyfrowe
otrzymywane są z tzw. przetworników analogowo-cyfrowych (A/C), w których przeprowadza
się równocześnie dyskretyzację czasu i kwantowanie wartości sygnałów analogowych (ciąg-
łych). Po przetworniku AC sygnał przyjmuje tylko skończoną liczbę dokładnie określonych
wartości (każdy przedział wartości rzeczywistych otrzymuje swojego jednego reprezentanta).
Z kwantowaniem jest nierozerwalnie związane pojęcie kodowania, gdyż numer reprezentanta
dowolnego przedziału wartości można zapisać w różny sposób, na przykład w kodzie
dwójkowym pozycyjnym bez znaku lub ze znakiem, w kodzie uzupełnień do dwóch lub kodzie
dziesiętnym zapisywanym binarnie. Oczywiście, możliwe jest także zapamiętywanie nie nume-
ru, ale wartości reprezentanta, przykładowo jako liczby zmiennoprzecinkowej. Przykładem sy-
gnału cyfrowego jest sygnał muzyki (audio) zapisany na płycie CD.
W przypadku sygnałów deterministycznych dany jest „przepis” matematyczny na wartość, jaką
przyjmie sygnał w każdej chwili czasu (konkretna zależność matematyczna). W rzeczywistości
bardzo rzadko spotyka się sygnały w pełni deterministyczne. Zazwyczaj prawie zawsze
wybrane parametry funkcji sygnału, przykładowo amplituda lub faza sygnałów sinusoidalnych,
przyjmują wartości, które nie są jednoznacznie określone (zdeterminowane).
Dla sygnałów losowych (stochastycznych) nie jest znany „przepis” na wartość sygnału w każ-
dej chwili czasowej, tylko „przepis” na prawdopodobieństwo przyjęcia poszczególnych warto-
ści przez ten sygnał. Sygnały losowe dzielą się na sygnały stacjonarne i niestacjonarne,
4 Sygnały i ich parametry
1.3.1. Parametry
0,5 0,5
0 0
-0,5 -0,5
-1 -1
0 0,1 0,2 0,3 0,4 t 0 4 8 12 14 n
Czas [s] Numer próbki
c) dyskretny czasu ciągłego (skwantowany) xk(t) d) dyskretny czasu dyskretnego (cyfrowy) xk(n)
1 1
0,5 0,5
0 0
-0,5 -0,5
-1 -1
0 0,1 0,2 0,3 0,4 t 0 4 8 12 16 n
Czas [s] Numer próbki
0,2
0,5
0,1
0 0
-0,5 -0,1
-0,2
0 0,1 0,2 0,3 0,4 t 0 100 200 300 400 t
Czas [s] Czas [ms]
Rys. 1.2. Przykłady sygnałów: a) ciągły czasu ciągłego, b) ciągły czasu dyskretnego (zdyskretyzowany
„w czasie”), c) dyskretny czasu ciągłego (zdyskretyzowany „w wartościach”, skwantowany), d) dyskretny
czasu dyskretnego, czyli cyfrowy (zdyskretyzowany „w czasie” i „w wartościach”), e) losowy, f) rzeczywisty
(sygnał mowy: „sze”)
Jednak parametry t x1 , σ 2x nie są dobrymi miarami cech sygnałów, dla których całka ∫ x(t )dt
przyjmuje wartość równą lub bliską zeru, czyli np. dla sygnałów oscylacyjnych. Dla takich
sygnałów definiuje się inne parametry: odciętą środka ciężkości kwadratu sygnału, wariancję
kwadratu sygnału wokół tej odciętej i szerokość średniokwadratową jako pierwiastek z warian-
cji.
6 Sygnały i ich parametry
Tab. 1-1. Podstawowe parametry sygnałów ciągłych x(t) i dyskretnych x(n). Oznaczenia: t0 − dowolna
chwila czasowa, n0 − dowolny indeks czasu, [t1, t2], [n1, n2] − granice przedziałów
Parametr Sygnał ciągły x(t) Sygnał dyskretny x(n)
t2 n
1 1 2
Wartość średnia
sygnału w przedziale
x=
t 2 − t1 ∫ x(t )dt x= ∑
n2 − n1 + 1 n = n
x(n )
t1 1
+τ N
Wartość średnia całego 1 1
x = lim ∫ x (t )dt x = lim ∑
N →∞ 2 N + 1 n =− N
x(n )
sygnału τ→∞ 2τ τ
t0 +T n 0 + ( N −1)
Wartość średnia 1 1
sygnału okresowego xT =
T ∫ x(t )dt , T − okres xN =
N
∑ x(n) , N − okres
t0 n = n0
t0 + T 1 n+ N
1
Średnia bieżąca xt = ∫ x (τ )dτ , T − stała xn = ∑ x(k ) , N − stała
2 N + 1 k =n − N
2T t −T
+∞ ∞
Energia sygnału Ex = ∫ x (t )dt
2 Ex = ∑ x 2 (n)
−∞ n = −∞
t2 n
Moc średnia sygnału 1 1 2
Px (t1 , t2 ) = x 2 = Px (n1 , n2 ) = x 2 = ∑ x 2 (n)
∫ x (t )dt
2
w przedziale t2 − t1 n2 − n1 + 1 n = n
t1 1
τ N
Moc średnia całego 1 1
sygnału (wartość Px = x 2 = lim 2
∫ x (t )dt Px = x 2 = lim ∑ x 2 (n )
N →∞ 2 N + 1 n =− N
τ→∞ 2τ −τ
średniokwadratowa)
t0 +T n 0 + ( N −1)
Moc średnia sygnału 1 1
okresowego PxT =x =2
T ∫ x (t )dt , T − okres
2 PxN = x 2 =
N
∑ x 2 (n ) , N − okres
t0 n = n0
Wartość skuteczna Px Px
sygnału
Wariancja całego 1 τ 1 N
sygnału (wokół x ) σ2x = lim ∫ [ x (t ) − x ] dt
2
σ 2x = lim ∑ [ x (n) − x ] 2
τ→∞ 2τ −τ N →∞ 2 N + 1 n =− N
t n2
Wariancja sygnału w 1 2 1
σ2x = [ x(t ) − x ] 2 dt σ2x = ∑ [ x (n) − x ] 2
przedziale (wokół x ) t2 − t1 t∫ n2 − n1 + 1 n = n1
1
+∞ ∞
Momenty zwykłe
τm =
rzędu m, m = 1, 2, 3, ... x ∫ t x(t )dt
m k xm = ∑ n m x(n)
−∞ n = −∞
+∞ ∞
( ) ( n − k x1 )
m m
Momenty centralne
rzędu m, m = 1, 2, 3, ...
δmx = ∫ t − τx1 x (t ) dt δmx = ∑ x(n)
−∞ n =−∞
+∞ +∞ ∞ ∞
Unormowane momenty m
zwykłe rzędu m tx = ∫ t x(t )dt
m
∫ x(t )dt n xm = ∑ n m x(n ) ∑ x( n)
−∞ −∞ n = −∞ n = −∞
+∞ +∞ ∞ ∞
(t − tx1 ) ( n − n x1 )
m m
Unormowane momenty
centralne rzędu m
σmx = ∫ x (t )dt ∫
m
x (t )dt σ x = ∑ x(n) ∑ x(n )
−∞ −∞ n =−∞ n =−∞
Sygnały i ich parametry 7
Odcięta środka +∞ +∞ ∞ ∞
ciężkości kwadratu t x12 = ∫ tx (t )dt
2
∫ x (t )dt
2 n x12 = ∑ nx 2 (n) ∑ x 2 (n)
sygnału −∞ −∞ n = −∞ n = −∞
+∞ +∞ ∞ ∞
( t − tx1 ) ( n − nx1 )
2 2
Wariancja kwadratu σ 2x 2 = x 2 (t )dt x 2 (t )dt σ2x 2 = ∑ x 2 (n ) ∑ x 2 (n)
∫ 2 ∫ 2
Szerokość σ 2x 2 σ 2x 2
średniokwadratowa
1.3.2. Przykłady
W tabeli 1-2 zestawiono równania i przebiegi czasowe przykładowych ciągłych sygnałów de-
terministycznych x(t). Ich podstawowe parametry można znaleźć w literaturze (np. [Szab90]).
Równania sygnałów dyskretnych x(n) otrzymuje się podstawiając t = n⋅∆t, T = N⋅∆t, n = ...,
−2, −1, 0, 1, 2,..., gdzie ∆t oznacza okres próbkowania sygnałów ciągłych (czyli odwrotność
częstotliwości próbkowania), a T czas obserwacji. Kształcącym jest samodzielne wygenerowa-
nie przebiegów czasowych kilku sygnałów dyskretnych x(n).
Sygnały deterministyczne, w zależności od swoich właściwości i wartości parametrów, są dzie-
lone na następujące podklasy:
1) sygnały impulsowe o ograniczonej energii,
2) sygnały o nieskończonym czasie trwania i ograniczonej energii,
3) sygnały nieokresowe o ograniczonej mocy średniej,
4) sygnały okresowe,
5) sygnały prawie okresowe,
5) sygnały zmodulowane.
Sygnały okresowe to sygnały, dla których w dowolnej chwili czasu t prawdziwa jest zależność:
x(t) = x(t+kT), gdzie T jest okresem sygnału, a k − dowolną liczbą całkowitą. Wartości
przyjmowane przez sygnały okresowe powtarzają się co czas T. Najbardziej znanym sygnałem
okresowym jest przebieg sinusoidalny postaci x(t) = Asin(ωt+φ0) = Asin(2πft+φ0), gdzie A oz-
nacza amplitudę, ω − pulsację, f − częstotliwość sygnału wyrażoną w hercach, a φ0 − fazę
sygnału wyrażoną w radianach. Sygnał ten ma okres T = 1/f, gdyż dla takiej wartości T mamy:
sin(2πf(t+kT)) = sin(2πft+2πfkT) = sin(2πft+2πfk(1/f)) = sin(2πft+k2π) = sin(2πft). Moc średnia
sygnału sinusoidalnego jest równa A2/2, a wartość skuteczna − A/ 2 . Suma sygnałów
sinusoidalnych o różnych częstotliwościach jest także sygnałem okresowym, jeśli dla dowol-
nych dwóch częstotliwości f1 i f2 tej sumy można znaleźć takie dwie liczby naturalne m i n, że
nf1 = mf2. Sygnały okresowe można aproksymować („przybliżać”) za pomocą tzw. szeregu
Fouriera, czyli sumy sygnałów (ko)sinusoidalnych (harmonicznych) o odpowiednio dobranych
częstotliwościach. Zagadnieniu temu będzie poświęcony rozdział 2 i 3.
Sygnał dyskretny ma natomiast okres N (N>0), jeśli dla dowolnego n mamy x(n) = x(n+N) i N
jest najmniejszą liczbą, dla której zachodzi ta równość. Wbrew naszym intuicyjnym ocze-
kiwaniom nie każdy sinusoidalny sygnał ciągły jest po spróbkowaniu okresowy. Zależy to od
jego częstotliwości f0 i częstotliwości próbkowania fp = 1/∆t. Warunek powtarzania się sygnału
co N próbek ma bowiem następująca postać
sin[2πf0(n⋅∆t)] = sin[2πf0{(n+N)⋅∆t}] = sin[2πf0(n⋅∆t) + 2πf0(N⋅∆t)]
8 Sygnały i ich parametry
-1 0 1
-T/4 0 T/4
0 T
i jest on spełniony, kiedy 2πf0(N⋅∆t) = k⋅2π, czyli dla f0 równego f0 = k/(N⋅∆t) (inaczej
f0 = fp⋅k/N), gdzie k jest dowolną liczbą naturalną. Jeśli k jest równe 1, okres sygnału jest rów-
ny N próbek.
Co ciekawe po spróbkowaniu ciągłe, okresowe sygnały sinusoidalne o częstotliwościach f0
i f0±kfp są nierozróżnialne, gdyż sin[2π(f0±kfp)(n⋅∆t)] = sin[2πf0(n⋅∆t)±2πkn] = sin[2πf0(n⋅∆t)],
czyli są one takimi samymi sekwencjami próbek. To samo dotyczy sygnałów kosinusoidalnych.
W analogiczny sposób można udowodnić następujące związki pomiędzy dyskretnymi
sygnałami (ko)sinusoidalnymi o częstotliwościach kfp+fx i kfp−fx: sin[2π(kfp+fx)(n⋅∆t)] =
= −sin[2π(kfp−fx)(n⋅∆t)] oraz cos[2π(kfp+ fx)(n⋅∆t)] = cos[2π(kfp− fx)(n⋅∆t)].
Sygnały prawie okresowe to sygnały będące sumą co najmniej dwóch sygnałów sinusoidal-
nych o częstotliwościach, których stosunek jest niewymierny, tzn. różny od stosunku dwóch
liczb naturalnych: f1/f2 = T2/T1 ≠ m/n. Z tego powodu sygnały te nie są okresowe (!), pomimo
tego, iż składają się z sygnałów okresowych. Nie istnieją bowiem takie liczby naturalne m i n,
dla których zachodzi nf1 = mf2 (mT1 = nT2). W związku z tym sinusoidy składowe nigdy nie
„spotkają się” w tej samej „fazie okresu”.
Sygnały i ich parametry 9
Ae − αt sin(ω0t ) dla t ≥ 0
x (t ) = , α>0
0 dla t < 0 t
0
2 π/ω 0
Sinc(t) x(t)
1
sin(ω0t ) /(ω0t ) dla t ≠ 0
Sinc( ω0t ) =
1 dla t = 0
Gaussowski x(t)
1
−πt 2
x (t ) = e
1 dla t ≥ 0 1
x(t ) = 1(t ) = t
0 dla t < 0
0
Dla modulacji fazy i częstotliwości odpowiednio otrzymujemy z niego (patrz tabela 1-2):
dm(t )
ωφ (t ) = ω0 + k φ , ω f (t ) = ω0 + k f m(t ) (1.2) (1.3)
dt
Jeśli zadajemy ωf(t), to wówczas znajdujemy kąt fazowy sygnału Acos(ϕ(t)) ze wzoru:
T=2π/ω0
1 t
m(t ) = αt ; ∫ m(t )dt = 2αt
2
1.2 2
0.8
1
0.4
a) 0 b) 0
-0.4
-1
-0.8
-1.2 -2
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
Czas [s] Czas [s]
1.5 2
1
1
0.5
c) 0 d) 0
-0.5
-1
-1
-1.5 -2
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
Czas [s] Czas [s]
1.2 1.2
0.8 0.8
0.4 0.4
e) 0 f) 0
-0.4 -0.4
-0.8 -0.8
-1.2 -1.2
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
Czas [s] Czas [s]
1.2 1.2
0.8 0.8
0.4 0.4
g) 0 h) 0
-0.4 -0.4
-0.8 -0.8
-1.2 -1.2
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
Czas [s] Czas [s]
1.2
0.8
i) 0.4
-0.4
-5 -4 -3 -2 -1 0 1 2 3 4 5
Czas [s]
1 1
0.5 0.5
0 0
-2 -1 0 1 2 -2 -1 0 1 2
Czas [s] Czas [s]
0.5 1
0.4 0.8
0.3 0.6
0.2 0.4
0.1
0.2
0
0
-0.1
-4 -3 -2 -1 0 1 2 3 4 -10 -8 -6 -4 -2 0 2 4 6 8 10
Czas [s] Czas [s]
1
1
0.5
0 0.5
-0.5
0
-1
0 2 4 6 8 10 0 2 4 6 8 10
Czas [s] Czas [s]
Rys. 1.4. Przykłady kilku deterministycznych sygnałów niesinusoidalnych: impulsy (prostokątny, trójkątny,
gaussowski exp( −0,5t 2 ) / 2π i eksponencjalny jednostronny exp( −t ) , t ≥ 0 oraz fale (bipolarna prostokątna
oraz unipolarna trójkątna)
gdzie j = − 1 . Dla sygnałów takich parametry definiowane są inaczej niż w tabeli 1-1. Na
przykład energia i moc średnia dane są następującymi wzorami:
∞ t t0 +T
2 1 2 2 1 2
Ex = ∫ x ( t ) dt , Px = ∫
t2 − t1 t
x (t ) dt , Px =
T
∫ x(t ) dt (1.5)
−∞ 1 t0
14 Sygnały i ich parametry
Rys. 1.5. Rozkład sygnału x(t) = exp(−t) (a) na składową parzystą xp(t) (b) i nieparzystą xn(t) (c)
+∞
Rxx ( τ) = Rx ( τ) = ∫ x ( t ) x* (t − τ) dt (1.11)
−∞
Jak się później przekonamy Rxy(τ) to iloczyn skalarny dwóch sygnałów w funkcji przesunięcia
jednego z nich. W funkcji korelacji drugi sygnał opóźnia się w stosunku do pierwszego o czas
τ, następnie oba sygnały wymnaża się przez siebie i całkuje ich iloczyn. W ten sposób dla
każdego τ otrzymuje się liczbę, mówiącą na ile opóźniony drugi sygnał jest podobny do syg-
nału pierwszego (skorelowany z nim). Funkcja korelacji Rxx(τ) jest wykorzystywana do badania
„powtarzalności” (okresowości) sygnału, ponieważ przyjmuje ona wartości maksymalne dla
wartości przesunięcia τ równego wielokrotności okresu sygnału (wówczas bowiem mnożone są
przez siebie wartości dodatnie sygnałów x(t) i x*(t−τ) oraz wartości ujemne tych sygnałów,
dlatego iloczyn x(t)x*(t−τ) ma zawsze wartość dodatnią, a całka z niego − wartość maksy-
malną; w innym przypadku dla jakiegoś t iloczyn x(t)x*(t−τ) może być ujemny i wartość całki
z tego iloczynu po czasie jest mniejsza). Przykładowo funkcja Rxx(τ) jest stosowana do wyzna-
czania okresu głosek dźwięcznych sygnału mowy (patrz rozdział 21). Z kolei funkcja korelacji
wzajemnej Rxy(τ) może być stosowana do detekcji odbić w sygnale odebranym w echogra-
fii impulsowej. Wówczas impulsowy sygnał wysłany jest korelowany (przesuwany w czasie
i wymnażany) z sygnałem odebranym, w którym występują „kopie” sygnału oryginalnego
(nadanego), odbite od różnych obiektów. Maksima funkcji korelacji informują nas o obecności
i położeniu impulsów odbitych, czas opóźnienia zaś tych impulsów w stosunku do impulsu
wysłanego − o drodze przebytej przez sygnał, czyli o odległości obiektu od nadajnika.
Funkcja R(τ) ma następujące właściwości:
W1. Rxy ( τ) = R*yx ( − τ) , Rxx ( τ) = R*xx ( − τ) (symetria) (1.12a)
+∞
2
W2. Rxx ( τ) ≤ Rxx (0) , Rxx (0) = ∫ x (t ) dt (wartość maksymalna) (1.12b)
−∞
+∞ +∞ +∞
W3. ∫ Rxy ( τ)d τ = ∫ x (t ) dt ∫ y* (t ) dt (1.12c)
−∞ −∞ −∞
Funkcja korelacji sygnałów z odjętymi wartościami średnimi (patrz tabela 1-1) nosi nazwę
funkcji kowariancji (własnej lub wzajemnej).
Dla innych klas sygnałów przyjmuje się inne definicje funkcji korelacji. Przykładowo dla
s y g n a ł ó w o k r e s o w y c h funkcję tę definiuje się w sposób następujący:
T T
1 1
Rxy ( τ) = ∫
T 0
x (t ) y * (t − τ)dt , Rxx ( τ) = ∫ x (t ) x * (t − τ)dt
T 0
(1.13)
Dla sygnałów dyskretnych o ograniczonej energii definicja funkcji korelacji własnej i wza-
jemnej jest następująca:
16 Sygnały i ich parametry
∞ ∞
Rxy ( k ) = ∑ x(n ) y* (n − k ), Rxx ( k ) = Rx ( k ) = ∑ x( n) x* (n − k ) (1.15)
n = −∞ n = −∞
Własności (1.12a) − (1.12c) są także prawdziwe dla funkcji korelacji sygnałów dyskretnych.
Ponieważ w praktyce nie dysponuje się nieskończoną ilością próbek sygnału, wartości funkcji
(1.15) estymuje się (przybliża) na podstawie dostępnych N danych za pomocą jednej z nastę-
pujących zależności (−N+1 ≤ k ≤ N−1):
N −1− |k |
Rxy (k ) = ∑ x (n) y * (n − k ) (1.17)
n =0
N −1− |k |
1
Rxy (k ) =
N−|k |
∑ x( n) y * ( n − k ) (1.18)
n =0
N −1− |k |
1
Rxy (k ) =
N
∑ x (n) y * (n − k ) (1.19)
n =0
0.5
0 0
-0.5
-0.5 -1
-0.8 -0.4 0 0.4 0.8 -0.8 -0.4 0 0.4 0.8
Przesunięcie τ [s] Przesunięcie τ [s]
sygnału xi(n), dla dużych wartości przesunięcia k (dużych wartości parametru τ = k⋅∆t) liczba
sumowanych iloczynów xi(n)xi*(n−k) jest we wzorze (1.19) coraz mniejsza i dokładność
estymaty funkcji autokorelacji maleje.
Splotem dwóch funkcji x(t) i h(t) nazywamy funkcję y(t) zdefiniowaną następująco:
+∞ +∞
y (t ) = ∫ x(τ)h(t − τ)dτ = ∫ h(τ) x(t − τ)dτ (1.21a)
−∞ −∞
18 Sygnały i ich parametry
y ( t ) = x (t ) ⊗ h ( t ) = h ( t ) ⊗ x ( t ) (1.21b)
Splot opisuje operację filtracji jednego sygnału przez drugi (np. x(t) to sygnał filtrowany, a h(t)
− sygnał filtrujący). Kolejność operacji podczas splotu jest następująca: 1) odwróć w czasie
drugi z sygnałów ze względu na τ: h(τ) → h(−τ), 2) przesuń go w czasie o czas t: h(−τ)
→ h(t−τ), 3) wymnóż pierwszy sygnał ze zmodyfikowanym drugim: x(t)h(t−τ), 4) scałkuj
wynik mnożenia. Odpowiednio dla sygnałów dyskretnych otrzymujemy:
∞ ∞
y(n) = ∑ x( k )h(n − k ) = ∑ h( k ) x (n − k ) (1.22a)
k = −∞ k = −∞
y ( n ) = x( n ) ⊗ h (n ) = h(n ) ⊗ x(n ) (1.22b)
Obliczanie splotu dyskretnego (filtracji cyfrowej) przebiega w ten sam sposób jak splotu cią-
głego (tzn. odwróć drugi z sygnałów ze względu na k, przesuń go o n próbek, wymnóż z pier-
wszym sygnałem oraz zsumuj wszystkie iloczyny próbek).
Na rysunkach 1.7 i 1.8 przedstawiono graficzną ilustrację opisanej powyżej operacji splotu
ciągłego i dyskretnego w przypadku dwóch identycznych sygnałów prostokątnych x(t) = h(t)
oraz x(n) = h(n).
Równania splotu (1.21), (1.22) mają fundamentalne znaczenie w teorii przetwarzania układów
analogowych i cyfrowych, ponieważ opisują „mechanizm” filtracji sygnałów. Jeden z sygna-
łów jest bowiem sygnałem „filtrowanym” (x(t) lub x(k)), drugi zaś − sygnałem „filtrującym”
(h(t) lub h(k)). Sygnał „filtrujący” jest zazwyczaj odpowiedzią impulsową układu (filtra)
analogowego lub cyfrowego przez który przechodzi sygnał, przykładowo kanału transmisyjne-
go. W wyniku filtracji z sygnału x(t) lub x(k) są „usuwane” („redukowane”) jego wybrane
składowe częstotliwościowe. Na rysunku 1.9 jest przedstawiona operacja filtracji sygnału
x(t) = sin(2πf1t)+0,5sin(2πf2t) za pomocą sygnału h(t) = sin(2πf1t)⋅exp(−4t)/0,1249 dla f1=2 Hz
i f2=8 Hz. Jak widać w jej wyniku z sygnału x(t) „wyeliminowano” składową 0,5sin(2πf2t),
gdyż w sygnale y(t) po zaniku stanu przejściowego dominuje składowa sin(2πf1t). Zdolność
splotu do realizacji filtracji częstotliwościowej jest związana z fundamentalną właściwością
transformacji Fouriera, mówiącą, że jeśli sygnały x(t), y(t) i h(t) (x(n), y(n) i h(n)) związane są
zależnością (1.21) (lub (1.22)), to ich częstotliwościowe, zespolone widma Fouriera X(f), Y(f)
i H(f) wiąże następujący wzór:
Y ( f ) = X ( f ) H ( f ) = X ( f ) H ( f ) e j)H ( f ) (1.23)
Co z niego wynika? Bardzo wiele. Zerowa wartość widma H(f0) dla częstotliwości f0 powo-
duje, że widmo Y(f0) także przyjmuje wartość zerową dla f0, czyli w sygnale wyjściowym y(t)
(y(n)) nie ma składowej o tej częstotliwości, niezależnie od tego czy była ona obecna w sy-
gnale x(t) (x(n)) i jego widmie X(f). W równaniu (1.23) „ H ( f ) ” i „ )H ( f ) ” oznaczają moduł
i kąt liczby zespolonej H(f). Dla x (t ) = e j 2 π f t wynikiem splotu jest y (t ) =| H ( f ) | e j (2 π f t + )H ( f )) ,
czyli sygnał oryginalny x(t) zmodyfikowany w amplitudzie przez H ( f ) oraz w fazie przez
)H ( f ) .
Magia filtracji zaprezentowanej na rysunku 1.9 jest „odczarowana” na rysunku 1.10, przedsta-
wiającym moduły widm sygnałów X(f), H(f) i Y(f) w rozpatrywanym przypadku. Aby „posta-
wić kropkę nad i” konieczne jest zdefiniowanie transformacji Fouriera i związanych z nią
widm częstotliwościowych sygnałów.
1.5 1.5 1.5 1.5 1.5
x(τ) x(τ) x(τ) x(τ) x(τ)
1 1 1 1 1
0.5 0.5 0.5 0.5 0.5
0 0 0 0 0
τ [s] τ [s] τ [s] τ [s] τ [s]
-0.5 -0.5 -0.5 -0.5 -0.5
-2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3
Rys. 1.7. Ilustracja graficzna splotu dwóch identycznych ciągłych impulsów prostokątnych x(τ) i h(τ). W pierwszym rzędzie − sygnał x(τ), w drugim rzędzie −
kolejne przesunięcia odwróconego w czasie sygnału h(t0−τ) (t0 = 0; 0,5; 1; 2; 3 sekundy), w trzecim rzędzie − wynik splotu yt0(t) dla t zmieniającego się od 0 do t0
(t0 = 0; 0,5; 1; 2; 3 sekundy)
1.5 1.5 1.5 1.5 1.5
x(k) x(k) x(k) x(k) x(k)
1 1 1 1 1
0.5 0.5 0.5 0.5 0.5
0 0 0 0 0
k k k k k
-0.5 -0.5 -0.5 -0.5 -0.5
-8 -4 0 4 8 12 -8 -4 0 4 8 12 -8 -4 0 4 8 12 -8 -4 0 4 8 12 -8 -4 0 4 8 12
6 6 6 6 6
y0(n) y2(n) y4(n) y8(n) y12(n)
4 4 4 4 4
2 2 2 2 2
0 0 0 0 0
n n n n n
-2 -2 -2 -2 -2
-8 -4 0 4 8 12 -8 -4 0 4 8 12 -8 -4 0 4 8 12 -8 -4 0 4 8 12 -8 -4 0 4 8 12
Rys. 1.8. Ilustracja graficzna splotu dwóch identycznych dyskretnych impulsów prostokątnych x(k) i h(k). W pierwszym rzędzie − sygnał x(k), w drugim rzędzie −
kolejne przesunięcia odwróconego w czasie sygnału h(n0−k) (n0 = 0, 2, 4, 8, 12 próbek), w trzecim rzędzie − wynik splotu yn0 (n) dla n zmieniającego się od 0 do n0
(n0 = 0, 2, 4, 8, 12 próbek; aktualnie wyznaczana próbka jest zaznaczona czarnym kolorem)
1.5 x(τ) 1.5 x(τ) 1.5 x(τ) 1.5 x(τ) 1.5 x(τ)
1 1 1 1 1
0.5 0.5 0.5 0.5 0.5
0 0 0 0 0
-0.5 -0.5 -0.5 -0.5 -0.5
-1 -1 -1 -1 -1
-1.5 -1.5 -1.5 -1.5 -1.5
-2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3
1.5 y0(t) 1.5 y (t) 1.5 y (t) 1.5 y (t) 1.5 y (t)
1 1 0.5 1 1 1 2 1 3
0.5 0.5 0.5 0.5 0.5
0 0 0 0 0
-0.5 -0.5 -0.5 -0.5 -0.5
-1 -1 t [s] -1 t [s] -1 t [s] -1 t [s]
-1.5 t [s] -1.5 -1.5 -1.5 -1.5
-2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3 -2 -1 0 1 2 3
Rys. 1.9. Ilustracja graficzna splotu sygnału x(τ) z odpowiedzią impulsową filtra h(τ). W pierwszym rzędzie − sygnał filtrowany (wejściowy) x(τ), w drugim rzędzie
− kolejne przesunięcia odwróconej w czasie odpowiedzi impulsowej filtra, czyli h(t0−τ) (t0 = 0; 0,5; 1; 2; 3 sekundy), w trzecim rzędzie − sygnał po filtracji
(wyjściowy) yt0 (t) dla t zmieniającego się od 0 do t0 (t0 = 0; 0,5; 1; 2; 3 sekundy)
22 Sygnały i ich parametry
1 1
|H(f)| |Y(f)|
0.8 |X(f)| 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0 0
0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16
Częstotliwość f [Hz] Częstotliwość f [Hz]
Rys. 1.10. Spróbkowane w częstotliwości moduły widm Fouriera sygnałów z rysunku 1.9: |X(f)| sygnału
wejściowego x(t) i |H(f)| odpowiedzi impulsowej h(t) (po lewej) oraz |Y(f)| sygnału wyjściowego y(t) (po
prawej)
X(f ) jest zespolonym widmem Fouriera sygnału x(t) i zawiera informację o jego „zawartości”
częstotliwościowej (f − częstotliwość w hercach). Wartość X(f) informuje nas o tym „ile” jest
w sygnale zespolonej składowej harmonicznej ej2πft = cos(2πft)+jsin(2πft) o konkretnej często-
tliwości f (j = −1 ). Widmo Fouriera powstaje w wyniku wymnażania analizowanego sygnału
z sygnałami harmonicznymi postaci e−j2πft = cos(2πft)−jsin(2πft), czyli sprzężonymi do ej2πft,
i scałkowania tego iloczynu. Można interpretować tę operację jako wyznaczanie miary kore-
lacji (podobieństwa) sygnału do poszczególnych funkcji harmonicznych. Ponieważ funkcje te
są zespolone, widmo Fouriera X(f) jest także zespolone. Ma więc ono część rzeczywistą
Re(X(f)) i urojoną Im(X(f)) oraz moduł | X(f)| i fazę (kąt) ) X(f):
X ( f ) = Re ( X ( f ) ) + j Im ( X ( f ) ) = X ( f ) e j )X ( f ) (1.25a)
Im( X ( f )
X( f ) = ( Re( X ( f ) )2 + ( Im( X ( f ) )2 , )X ( f ) = arctg (1.25b)
Re( X ( f )
1T − j 2 π ( kf 0 ) t
∞
X ( kf 0 ) = ∫ x (t )e dt , x (t ) = ∑ X ( kf 0 )e j 2 π( kf0 )t (1.26)
T0 k =−∞
Sygnał x(n) (lub x(n∆t)) powstaje w wyniku pobierania „próbek” z sygnału x(t) odległych
o czas ∆t = 1/fpr, gdzie fpr oznacza częstotliwość próbkowania, wyrażoną w hercach. Zgodnie
z twierdzeniem o próbkowaniu częstotliwość próbkowania musi być co najmniej dwa razy
większa niż maksymalna częstotliwość sygnału. Z powodu okresowości funkcji e−j2π(f / fpr)n ze
względu na częstotliwość f:
f + kf pr f f
exp − j 2π n = exp − j 2π n exp ( − j 2 πkn ) = exp − j 2π n
f pr f pr f pr
widmo X(f ) sygnału dyskretnego jest także okresowe i powtarza się co częstotliwość próbko-
wania fpr, czyli wystarczy je wyznaczyć dla wartości f z przedziału [0, fpr) lub (−fpr/2, fpr/2].
Ponieważ dodatkowo funkcje dla częstotliwości ujemnych są równe sprzężeniu zespolonemu
funkcji dla częstotliwości dodatnich
( )
*
e − j 2 π (− f )t = e− j 2 πft
można wyznaczyć X(f) tylko dla częstotliwości z przedziału [0, fpr/2] i skorzystać z zależności
X(−f) = X*(f) (symetria części rzeczywistej i asymetria części urojonej widma względem czę-
stotliwości f = 0).
Natomiast wzory na szereg Fouriera (1.26) dla sygnałów dyskretnych x(n) mają następującą
postać (0 ≤ k ≤ N−1):
1 N −1 N −1
X (kf 0 ) =
N
∑ x ( n ∆t ) e − j 2 π ( k / N ) n , x ( n ∆t ) = ∑ X ( kf 0 ) e j 2 π( k / N ) n (1.27b)
n =0 k =0
gdzie k jest indeksem częstotliwości, n − indeksem czasu, a f0 = 1/T = 1/(N ∆t) = fpr/N (∆t
oznacza odległość czasową pomiędzy próbkami sygnału dyskretnego, która jest równa odwrot-
ności częstotliwości próbkowania tego sygnału). W tym przypadku wystarczy wyznaczyć
współczynniki szeregu dla 0 ≤ k ≤ N/2 a pozostałe znaleźć z zależności X(N/2+k) = X*( N/2−k).
Określa ona, jakie jest prawdopodobieństwo przyjęcia przez zmienną losową x wartości x0. Po-
nieważ zmienna losowa musi przyjąć jakąś wartość, prawdopodobieństwo przyjęcia dowolnej
wartości jest równe jedności:
∞
∫ p( x0 )dx0 = 1 (1.30)
−∞
Dla zmiennych losowych przyjmujących wartości dyskretne definiuje się masę prawdopodo-
bieństwa:
p ( xk ) = Pr[ x = xk ] , ∑ p ( xk ) = 1 (1.32)
k
i jest to wartość, która jest przyjmowana przez zmienną losową z największym prawdopodo-
Sygnały i ich parametry 25
x = E [ x ] = ∑ xk p ( xk ) (1.34)
k
σ 2x = E [( x − x ) 2 ] = E[ x 2 ] − x 2 (1.36)
gdzie p(xy) jest gęstością prawdopodobieństwa przyjęcia przez iloczyn tych zmiennych
wartości xy, a d(xy) = dxdy jest różniczką tego iloczynu. Dwie niezależne zmienne losowe nie
są ze sobą skorelowane: E[xy] = 0.
Podsumowując można powiedzieć, że przyjęcie wartości przez zmienną losową jest jak wynik
rzutu kostką do gry: prawdopodobieństwo otrzymania poszczególnych pól jest znane i równe
1/6, ale nie wiadomo jaki będzie wynik obecnego rzutu.
Najpopularniejsze są zmienne losowe o następujących rozkładach funkcji gęstości prawdo-
podobieństwa:
1) normalnym: p(x0) jest funkcją Gaussa o określonej wartości średniej x i wariancji σ2:
1 ( x − x )2
p ( x0 ) = exp − 0 2 (1.38)
2πσ 2 2σ
2) równomiernym: p(x0) jest funkcją „prostokątną” równą (w szczególności [a = 0, b = 1] lub
[a = −1, b = 1]):
1
dla a ≤ x0 ≤ b
p ( x0 ) = b − a (1.39)
0 dla pozostałych x0
nazywany proces, dla którego wartość średnia i wariancja przyjmowanych wartości po zbiorze
jego realizacji oraz wartości funkcji korelacji pomiędzy różnymi chwilami czasowymi nie
zależą od t, tzn. dla wszystkich wartości t są takie same:
xt = E [ xt ] = const , σ 2x t = E [( xt − xt ) 2 ] = const
Analogicznie procesem stacjonarnym w węższym sensie jest nazywany proces, dla którego
w s z y s t k i e jednowymiarowe momenty statystyczne wyższych rzędów zmiennych losowych
xt oraz momenty łączne tych zmiennych są takie same, tzn. nie zależą od chwili t. Procesem
ergodycznym jest taki proces stacjonarny, dla którego wartości parametrów statystycznych
(wartość średnia, wariancja, funkcja korelacji) po zbiorze realizacji są równe wartościom tych
parametrów wyznaczonych z jego dowolnej realizacji czasowej xk(t) (czyli po czasie). Dla
procesów ergodycznych stacjonarność w szerszym sensie wymaga niezależności od czasu t0
bieżącej wartości średniej i bieżącej funkcji autokorelacji sygnału xk(t) (dla dostatecznie
dużego T):
t0 + T t0 + T
1 1
x ( t0 ) =
T ∫ x(t )dt , Rx(t0 ) ( τ) =
T ∫ x(t ) x(t − τ)dt (1.41)
t0 t0
x3(t)
t
x2(t)
t
x1(t)
t
t1 t2 t3 tk tk+τ
Rys. 1.12. Graficzna ilustracja podstaw analizy procesów losowych: x1(t), x2(t), x3(t) − konkretne realizacje
czasowe procesu losowego X; xt1, xt2 i xt3 − obserwowane zmienne losowe w chwilach czasowych t1, t2 i t3.
Proces jest stacjonarny, jeśli parametry statystyczne (różne wartości oczekiwane E[.]) zmiennych losowych
xt są takie same i nie zależą od chwili czasowej t, w szczególności E[xt] = const i E[xt xt+τ] = R(τ), czyli
wartość oczekiwana wszystkich zmiennych losowych xt jest taka sama, wartość zaś oczekiwana ich iloczynu
zależy tylko od ich „przesunięcia” czasowego τ
28 Sygnały i ich parametry
Przykładem takiego sygnału może być suma sinusoidy o losowej fazie oraz szumu.
Funkcje korelacji R(.) i kowariancji C(.) definiuje się dla s t a c j o n a r n y c h sygnałów loso-
wych x(t) i y(t) w następujący sposób:
gdzie E[.] oznacza wartość oczekiwaną po zbiorze wszystkich realizacji (sygnałów) procesu
dla ustalonego t. Definicja funkcji kowariancji jest analogiczna do funkcji korelacji, z tą róż-
nicą, że odejmuje się w niej od zmiennych losowych, związanych z konkretną chwilą czasową,
ich wartości oczekiwane („średnie”, najbardziej prawdopodobne) xt i y t − τ . Dla sygnałów
stacjonarnych powyższe wartości oczekiwane nie zależą od czasu t (indeksu n). Przypomnijmy:
• w powyższych wzorach x(t) i y(t−τ) (odpowiednio: x(n) i y(n−m)) należy traktować jako
dwie niezależne zmienne losowe xt i yt−τ: pierwsza występuje w chwili czasowej t, druga
zaś − w chwili czasowej t−τ;
• przyjmują one różne wartości w zbiorze wszystkich realizacji;
• funkcja korelacji jest wartością oczekiwaną (najbardziej prawdopodobną) iloczynu tych
zmiennych, dla sygnałów niestacjonarnych zależną od wyboru wartości parametrów t i τ:
+∞ +∞
Rxy (t , τ) = E[ x ( t ) y ( t − τ)] = ∫ ∫ xt yt −τ p( xt yt −τ ) dxt dyt −τ (1.44a)
−∞ −∞
dla sygnałów zaś stacjonarnych nie będącą funkcją czasu t, tylko „przesunięcia” τ:
Sygnały i ich parametry 29
+∞ +∞
Rxy ( τ) = E[ x (t ) y (t − τ)] = ∫ ∫ xt yt −τ p( xt yt −τ ) dxt dyt −τ (1.44b)
−∞ −∞
Para równań (1.45a), (1.45b) nosi nazwę równań Wienera-Chinczyna dla sygnałów ciągłych
i dyskretnych. Ponieważ funkcja autokorelacji jest symetryczna względem τ = 0 (Rxx(τ) =
= Rxx(−τ)), Pxx(f) jest rzeczywiste, gdyż tylko symetryczne względem zera funkcje cos(2πft) są
potrzebne do rozwinięcia harmonicznego Rxx(τ). Można wykazać [Hayk98], że dla ciągłych
sygnałów stacjonarnych, ergodycznych funkcja gęstości widmowej mocy jest równa:
T 2
1 1 2 1
Pxx ( f ) = lim E ∫ x ( t )e
− j 2 πft
dt = lim E X ( f ) = lim E X T ( f ) X T* ( f )
T → ∞ 2T T → ∞ 2T T T → ∞ 2T
−T
(1.46a)
gdzie E[.] oznacza wartość oczekiwaną, XT(f) jest transformatą Fouriera fragmentu sygnału
z przedziału czasowego [−T, T] (czyli widmem amplitudy tego fragmentu), funkcja
1/(2T)⋅|XT(f)|2 nazywana jest zaś periodogramem i ma taki sam wymiar jak funkcja widmowej
gęstości mocy. Natomiast dla dyskretnych sygnałów stacjonarnych mamy:
−j
2 π nf 2
N
1 1 2
∑
f pr
Pxx ( f ) = lim E x ( n )e = Nlim E XN ( f ) =
N →∞ 2 N + 1 n =− N →∞ 2N + 1
1 (1.46b)
= lim E X N ( f ) X N* ( f )
N →∞ 2N + 1
W tym przypadku periodogram jest zdefiniowany jako 1/(2N+1)⋅|XN(f)|2. Wzór (1.46b) stanowi
podstawę praktycznych metod szacowania wartości funkcji Pxx(f), na przykład metody Welcha,
opisanej w dalszej części tego rozdziału.
30 Sygnały i ich parametry
Szum nazywa się białym, jeśli jego Pxx(f ) jest stałe i nie zależy od częstotliwości. Jeśli nato-
miast tak nie jest, to szum jest kolorowy. Szczególnym rodzajem szumu kolorowego jest
idealny szum dolnopasmowy, dla którego funkcja Pxx(f ) ma kształt prostokątny, tzn. ma war-
tość stałą, różną od zera dla częstotliwości z przedziału (−fmax, fmax) oraz równą zero poza tym
przedziałem. Innymi przykładami szumu kolorowego jest szum różowy i niebieski. Dla
pierwszego z nich funkcja Pxx(f ) m a l e j e 6 decybeli na oktawę (20 decybeli na dekadę), dla
drugiego zaś − r o ś n i e 6 decybeli na oktawę (20 decybeli na dekadę).
Szum o rozkładzie normalnym (1.38) i wariancji σ2 ma następujące parametry:
σ2 , τ = 0 σ 2 , m = 0
R ( τ) = , R (m) = , Pxx ( f ) = σ 2
0, τ ≠ 0 0, m ≠ 0
Przystępując do analizy sygnałów losowych należy zbadać z jakiego rodzaju procesem są one
związane − niestacjonarnym czy stacjonarnym. W przypadku stwierdzenia stacjonarności nale-
ży zbadać, czy czasem „obserwowany” proces nie jest ergodyczny. Oczywiście najprostsza jest
analiza losowych procesów (sygnałów) ergodycznych, ponieważ przeprowadza się ją na
podstawie tylko jednej realizacji zmiennej losowej. Jednak wówczas nie jesteśmy w stanie
dokładnie wyznaczyć parametrów procesu losowego, gdyż nie dysponujemy nieskończenie
długim zapisem sygnału, czyli nie dysponujemy pełną informacją statystyczną o nim, i z tego
powodu musimy te wartości estymować. Funkcja, według której jest przeprowadzane to
„szacowanie”, nazywa się estymatorem. Estymator nazywa się nieobciążonym, jeśli jego war-
tość oczekiwana jest równa rzeczywistej wartości estymowanego parametru (tzn. jest najbar-
dziej prawdopodobne, że właśnie ją otrzymamy). W przeciwnym przypadku estymator jest
obciążony, tzn. występuje przesunięcie pomiędzy rzeczywistą wartością parametru a wartością
oczekiwaną estymatora. Z kolei wariancja estymatora określa jego „wahania” („rozrzut”)
wokół wartości oczekiwanej. Estymator nazywa się zgodnym, jeśli jego wariancja dąży do zera
przy wzroście liczby danych, służących do jego wyznaczenia. Dobry estymator to estymator
zgodny, nieobciążony.
Sygnały ciągłe. Załóżmy, że dysponujemy jedną realizacją ciągłego sygnału losowego x(t)
o skończonej długości Ts (t0 ≤ t ≤ t0+Ts). Prawdopodobieństwo przyjęcia przez ten „fragment”
sygnału wartości z przedziału (x, x+∆x) jest równe Tx/Ts, gdzie Tx jest sumą odcinków czasu
∆ti, w których wartości chwilowe realizacji znajdują się w tym przedziale: Tx = Σ(∆ti). W gra-
nicy dla Ts dążącego do nieskończoności otrzymujemy prawdopodobieństwo przyjęcia przez
całą realizację wartości z przedziału (x, x+∆x):
Tx
Pr [x ≤ x (t ) ≤ x + ∆x ] = lim
Ts → 0 Ts
Jeśli dodatkowo szerokość przedziału ∆x dąży do zera, to w granicy uzyskuje się funkcję
gęstości prawdopodobieństwa p(x) danego sygnału (procesu) losowego x(n):
Pr[x ≤ x ( n ) ≤ x + ∆x ]
p ( x ) = lim
∆x → 0 ∆x
Estymatę „kształtu” funkcji gęstości prawdopodobieństwa p(x) ergodycznego, dyskretnego
procesu otrzymuje się obliczając tzw. histogram, czyli 1) biorąc odpowiednio dużą liczbę Ns
próbek sygnału, 2) dzieląc obserwowany zakres zmienności zmiennej x na przedziały o sze-
rokości ∆x, 3) zliczając liczbę próbek, występujących w poszczególnych przedziałach. Po
unormowaniu histogramu, tzn. po jego podzieleniu przez liczbę wszystkich próbek Ns oraz
szerokość przedziału ∆x, otrzymuje się „pełną” estymatę funkcji p(x). Estymata ta jest tym
lepsza, im większe jest Ns oraz mniejsze ∆x. Weryfikacja hipotez „kształtu” (rodzaju) rozkładu
zmiennej losowej jest dokonywana za pomocą testów zgodności, np. testu chi kwadrat.
Zgodnie z twierdzeniem granicznym większość sygnałów występujących w przyrodzie ma
rozkład normalny (gaussowski), wynikający z równoczesnego występowania wielu czynników,
oddziaływających w różnych kierunkach.
W praktyce stosuje się następujące estymatory wartości oczekiwanej i funkcji autokorelacji
ergodycznego procesu losowego (wyznaczane na podstawie spróbkowanej w czasie jednej
realizacji zmiennej losowej x):
N
1
xˆ =
N
∑ xn (1.47)
n =1
N −1− |m |
1
Rˆ xx
(1)
( m) =
N
∑ x(n ) x ∗ (n − m) (1.48a)
n =0
N −1− |m |
1
Rˆ xx
(2)
( m) =
N−|m|
∑ x(n ) x ∗ (n − m) (1.48b)
n =0
Estymator Rˆ xx
(1)
( m) jest estymatorem obciążonym, Rˆ xx
( 2)
(m) jest zaś estymatorem nieobciążo-
nym. Jednak Rˆ xx( 2)
(m) charakteryzuje się większą wariancją niż Rˆ xx
(1)
( m) , czyli jego „rozrzut”
wokół wartości oczekiwanej jest większy. Jak widać powyższe definicje są identyczne jak
wartości średniej i funkcji korelacji sygnału deterministycznego.
Natomiast estymator funkcji widmowej gęstości mocy definiuje się jako wynik transformacji
Fouriera estymatora funkcji autokorelacji:
N −1
− j 2 π ( f / f pr ) m
PˆN ( f ) = ∑ Rˆ xx (m) e (1.49a)
m = − ( N −1)
Nie jest to estymator zgodny, ponieważ jego wariancja nie dąży do zera przy wzroście długości
segmentu danych N. Jedną z metod zmniejszania wariancji estymatora (1.49a) stanowi metoda
Blackmana-Tukeya. Poddaje się w niej transformacji Fouriera nie estymator funkcji autokore-
32 Sygnały i ich parametry
lacji, tylko jego iloczyn z wybraną funkcją wagową w(n) (np. oknem Hanninga lub Hammin-
ga), czyli transformuje się Rˆ xx (m ) w( m) :
N −1
− j 2 π ( f / f pr ) m
PˆN ( f ) = ∑ w(m) Rˆ xx (m) e (1.49b)
m = − ( N −1)
Inną metodą jest procedura Welcha, w której wykorzystuje się związek pomiędzy funkcją
gęstości widmowej mocy a periodogramem (patrz (1.46)). Metoda Welcha sprowadza się do
uśrednienia kilku zmodyfikowanych periodogramów. W metodzie tej ciąg analizowanych N
próbek sygnału jest dzielony na L fragmentów o długości M, które zachodzą na siebie lub nie
w zależności od przesunięcia D:
x ( i ) ( n ) = x ( n + iD ), 0 ≤ i ≤ L − 1, 0 ≤ n ≤ M − 1 (1.50)
Następnie wektory danych są wymnażane z wybraną funkcję wagową w(n) (tzw. „oknem”, np.
Hamminga) i dla każdego z nich (i = 0, 1,..., L−1) wyznacza się zmodyfikowany periodogram
jako kwadrat modułu transformaty Fouriera nie oryginalnych lecz „zważonych” próbek
sygnału:
2
M −1 M −1
1 − j 2 π ( f / f pr ) n
PˆM(i ) ( f ) =
Ew
∑x (i )
(n ) w(n )e , Ew = ∑ w2 ( n ) (1.51)
n =0 n =0
Kiedy D = M, kolejne fragmenty danych nie zachodzą na siebie (metoda Barletta), natomiast
dla D = M/2 kolejne fragmenty sygnału pokrywają się w pięćdziesięciu procentach.
0.12
0.08
0.08
0.04
0.04
0 0
0 100 200 300 400 500 0 100 200 300 400 500
Częstotliwość f [Hz] Częstotliwość f [Hz]
częstotliwości, to jednak w wyniku uśrednienia tych widm doprowadza się do ich wygładzenia,
tym większego im więcej widm cząstkowych się uśredni (rysunki 1.13g i 1.13h). Jak widać
w obu przypadkach analizowany szum jest „biały”, tzn. w przybliżeniu nie zależny od często-
tliwości.
∞
Ryx (τ) = E y (t + τ) x* (t ) = E ∫ h(ξ) x (t + τ − ξ)d ξ x* (t ) =
−∞
∞ ∞
= ∫ h (ξ) E[ x ( t + τ − ξ) x* (t )] d ξ = ∫ h(ξ) Rxx ( τ − ξ)d ξ = Rxx ( τ ) ⊗ h( τ ) (1.54a)
−∞ −∞
∞
Ryx (k ) = E y (n + k ) x* (n) = E ∑ h(l ) x( n + k − l ) x* (n) =
l =−∞
∞ ∞
= ∑ h(l ) E[ x (n + k − l ) x* ( n )] = ∑ h( l ) Rxx ( k − l ) = Rxx ( k ) ⊗ h( k ) (1.54b)
l =−∞ l =−∞
Wynika stąd, że jest ona równa splotowi (1.21a), (1.22a) odpowiedzi impulsowej h(.) układu
liniowego z funkcją korelacji własnej Rxx(.) sygnału wejściowego x(.).
Z kolei wyznaczmy funkcję korelacji własnej sygnału y(.), tym razem jednak tylko dla przy-
padku dyskretnego (w sposób analogiczny przeprowadza się przekształcenia w przypadku
sygnałów i układów „ciągłych”):
∞
R yy ( k ) = E y ( n + k ) y* ( n ) = E y ( n + k ) ∑ x* ( l )h* ( n − l ) =
l =−∞
∑ h* (n − l ) E [y(n + k ) x* (l )] = ∑ h* (n − l ) R yx (n + k − l )
∞ ∞
= (1.55)
l = −∞ l = −∞
Sygnały i ich parametry 35
R yy (k ) = Rxx (k ) ⊗ h( k ) ⊗ h* ( −k ) (1.57)
Równanie (1.58) łączy gęstość widmową mocy sygnału wyjściowego z gęstością widmową
mocy sygnału wejściowego i odpowiedzią częstotliwościową układu H(f).
0.5
5
0
0
-0.5
-1 -5
-0.8 -0.4 0 0.4 0.8 -0.8 -0.4 0 0.4 0.8
Przesunięcie τ [s] Przesunięcie τ [s]
R1=xcorr(x); % nieunormowana
R2=xcorr(x,’biased’); % unormowana przez długość /N
R3=xcorr(x,’unbiased’); % unormowana przez /(N-abs(k))
tR=[-fliplr(t) t(2:N)]; plot(tR,R1); grid; title(‘Autokorelacja’); pause
% 2. Wygeneruj N=1000 próbek szumu o rozkładzie równomiernym i normalnym (gaussowskim). Wyznacz dla nich
% funkcję autokorelacji, autokowariancji, histogram, szereg Fouriera i periodogram.
s1 = rand(1,N); s2=randn(1,N);
s = s2; % wybierz szum: s=s1 lub s=s2
R = xcorr(s,‘unbiased’);
plot(tR,R); grid; title(‘Autokorelacja szumu’); pause
C = xcov(s);
plot(tR,C); grid; title(‘Autokowariancja szumu’); pause
Hs = hist(s,100); % podziel oś [xmin, xmax] na 100 podprzedziałów
plot(Hs); title(‘Histogram szumu’); pause
S=fft(s);
plot(f,abs(S)); grid; title('Widmo Fouriera szumu'); xlabel('f [Hz]'); pause
[Pss, fss]=psd(s,N/10,fp); % uśrednij widma odcinków sygnału o długości N/10
plot(fss,Pss); grid; title('Widmo uśrednione'); xlabel('f [Hz]'); pause
% 3. Dodaj sygnały z punktu 1 i 2. Wyznacz i narysuj funkcję autokorelacji, autokowariancji i histogram sygnału
% sumarycznego.
% 4. Powtórz operacje z punktu 3 po dodaniu do sygnału 1+2 jeszcze jednej sinusoidy o częstotliwości 250 Hz.
% 5. Zmoduluj w amplitudzie sygnał sinusoidalny z punktu pierwszego.
ampl = hamming(N)’; % przykładowa funkcja modulująca amplitudę
y1 =ampl.*x; % modulacja amplitudy
plot(t,y1); grid; title(‘Sygnał z modulacją amplitudy’); pause
% 6. Wygeneruj sygnał sinusoidalny z liniową modulacja częstotliwości (ω=ωx+αt) oraz z sinusoidalną modulacją
% częstotliwości ((ω=ωx+sin(ωmt)).
fx = 0; alfa = 10 % wybierz, zaczynając od małych wartości; potem obserwuj
y3 = sin(2*pi*(fx*t + 0.5*alfa*t.^2));
plot(t,y3); grid; title(‘Sygnał z liniową modulacją częstotliwości’); pause
% 8. „Spleć” ze sobą dwa sygnały, czyli dokonaj filtracji jednego z nich przez drugi
T = 5; N = 1000; % czas trwania sygnałów, liczba próbek
dt = T/N; t = dt*(0:N); % okres próbkowania, kolejne chwile czasowe
Jak już było powiedziane w rozdziale 1, w rozumieniu niniejszej książki sygnał jest dowolną
funkcją jedno- lub wieloargumentową. W związku z tym w analizie sygnałów mogą, a nawet
powinny, zostać zastosowane „narzędzia” matematyczne, służące do analizy i aproksymacji
funkcji, czyli metody analizy funkcjonalnej i teorii aproksymacji. Dlatego przedstawimy je te-
raz w sposób skrótowy.
W niniejszym rozdziale nie będziemy rygorystycznie przestrzegać formalizmu matematycz-
nego i często będziemy czynili od niego odstępstwa na rzecz większej zrozumiałości zapisu dla
osób „niewtajemniczonych”. Z tego powodu zapis „x(t)” będzie w zależności od kontekstu
oznaczał zarówno sygnał ciągły jak i jego wartość w chwili czasowej t. Identyczna konwencja
będzie także stosowana dla sygnałów dyskretnych „x(n)”. Dodatkowo „x” będzie w zależ-
ności od kontekstu oznaczał sygnał ciągły lub/albo dyskretny, a „x” − zawsze tylko sygnał
dyskretny.
W przestrzeni liniowej musi istnieć sygnał zerowy 0, taki że 0⋅x = 0, oraz skalar identycz-
nościowy 1, taki że 1⋅x = x.
Przestrzeń liniowa unormowana to przestrzeń liniowa, w której zdefiniowane jest odwzo-
rowanie, przyporządkowujące każdemu sygnałowi x liczbę rzeczywistą nieujemną ||x|| (normę
tego sygnału) i spełniające następujące warunki: ||x|| = 0 (wartość zerowa) ⇔ x = 0 (element
zerowy), ||α⋅x|| = |α|⋅||x||, ||x+y|| ≤ ||x||+||y||.
Przestrzenią Banacha nazywamy przestrzeń l i n i o w ą u n o r m o w a n ą , która równocześnie
jest przestrzenią m e t r y c z n ą z u p e ł n ą . W przestrzeni tej metryka ρ(x,y) jest indukowana
przez normę ||.|| i równa ρ(x,y) = ||x−y||.
Iloczynem skalarnym jest nazywane odwzorowanie, przyporządkowujące uporządkowanej
parze dwóch sygnałów {x, y} l i c z b ę 〈x, y〉, które spełnia następujące aksjomaty:
1) 〈x, y〉 = 〈y, x〉* (2.1)
2) 〈α ⋅ x + β ⋅ y, z〉 = α ⋅ 〈x, z〉 + β ⋅ 〈y, z〉 (2.2)
3) x ≠ 0 ⇒ 〈x, x〉 > 0 (2.3)
4) x = 0 ⇒ 〈x, x〉 = 0 (2.4)
gdzie „*” oznacza sprzężenie zespolone.
Przestrzenią unitarną jest przestrzeń l i n i o w a , w której jest określony i l o c z y n s k a l a r n y
〈x, y〉 dwóch sygnałów x i y, i która jest u n o r m o w a n a przez normę, związaną z tym
iloczynem x = x, x . Dwa sygnały x i y przestrzeni unitarnej są ortogonalne („prosto-
padłe”, czyli „⊥”), jeśli 〈x, y〉 = 0. Jeśli dodatkowo 〈x, x〉 = 1 i 〈y, y〉 = 1, to są one ortonormal-
ne („ortogonalne” i „unormowane”).
Przestrzeń Hilberta to przestrzeń u n i t a r n a (liniowa, unormowana przez iloczyn skalarny),
która jest także przestrzenią m e t r y c z n ą z u p e ł n ą .
1T 1T
x (t ) y* ( t )dt , | x(t ) |2 dt
T 0∫ T 0∫
x, y L2T
= x L2T
= x, x L2T
= (2.10)
1 N −1 1 N −1
x, y l N2
=
N
∑ x (n) y* ( n), x l N2
= x, x l N2
=
N
∑ | x(n ) |2 (2.12)
n =0 n =0
W dalszej części rozdziału będziemy się koncentrować przede wszystkim na analizie matema-
tycznej sygnałów ciągłych x(t). Po zastąpieniu czasu przez jego indeks oraz całek przez sumy:
x (t ) → x ( n ), ∫ x (t )dt → ∑ x( n)
n
N
x (t ) = ∑ αi xi (t ) (2.14)
i =1
jest nazywany liniową kombinacją sygnałów xi (t). Elementy zbioru {xi (t): i = 1, 2,..., N} są
liniowo niezależne, jeżeli równość
N
∑ αi xi (t ) = 0(t ) (2.15)
i =1
jest spełniona tylko wtedy, kiedy wszystkie współczynniki αi (i = 1, 2,..., N) są równe zero.
We wzorze (2.15) 0(t) oznacza element zerowy przestrzeni. Jeśli każdy zbiór liniowo nieza-
leżnych sygnałów przestrzeni X zawiera co najwyżej N sygnałów, to przestrzeń ta jest nazy-
wana przestrzenią N-wymiarową. Dowolny zbiór N liniowo niezależnych sygnałów przestrzeni
N-wymiarowej jest nazywany bazą tej przestrzeni, samą zaś przestrzeń nazywa się przestrzenią
rozpiętą na tej bazie. Istnieje wiele różnych baz przestrzeni N-wymiarowej. Wszystkie one
zawierają dokładnie N elementów. Jeśli zbiór {xi(t): i = 1, 2,..., N} jest bazą przestrzeni, to
współczynniki αi, i = 1, 2,..., N, we wzorze (2.14) są nazywane współrzędnymi sygnału x(t)
względem sygnałów bazowych, a ich zbiór {αi, i = 1, 2,..., N } − reprezentacją sygnału x(t)
względem danej bazy.
Baza ortogonalna i ortonormalna. Załóżmy, że XN jest N-wymiarową przestrzenią unitarną
rozpiętą na bazie {xi(t): i = 1, 2,..., N}. Wynika stąd, że każdy sygnał, należący do tej prze-
strzeni, można przedstawić w sposób jednoznaczny za pomocą (2.14). Współrzędne αi, i = 1,
2, ..., N, rozwinięcia sygnału x(t) względem N funkcji bazowych xi(t) wyznacza się w sposób
następujący. Utwórzmy iloczyny skalarne obu stron równania (2.14) z sygnałami bazowymi
xj (t), j = 1, 2,..., N:
N
x (t ), x j (t ) = ∑ α i xi (t ), x j (t ) , j = 1, 2, 3,..., N (2.16)
i =1
Otrzymuje się w ten sposób układ N równań liniowych z N niewiadomymi αi. Można go zapi-
sać w postaci macierzowej:
Xα = x (2.17a)
gdzie
x1, x1 xN , x1 α1 x, x1
, x=
X= , α = (2.17b)
x1, xN xN , xN α N x, x N
skąd otrzymujemy
α = X −1x (2.18)
Baza {xi(t): i = 1, 2,..., N} N-wymiarowej przestrzeni unitarnej X jest bazą ortogonalną, jeżeli
jej każde dwa sygnały bazowe są ortogonalne, tzn. kiedy:
xi , x j = 0 dla i ≠ j, 1 ≤ i , j ≤ N (2.19)
Ponadto jeżeli norma każdego sygnału bazowego jest jednostkowa, tzn. dla każdego i jest
spełniona równość xi = xi , xi = xi , xi = 1 , to taką bazę nazywamy bazą ortonormalną.
W przypadku bazy ortonormalnej macierz X jest macierzą jednostkową (tzn. macierzą diago-
Podstawy matematyczne analizy sygnałów deterministycznych 43
nalną z jedynkami na głównej przekątnej i zerami poza nią), zatem macierz odwrotna do niej
jest także jednostkowa. Wówczas:
1 0 x, x1
α = X -1x = x=
(2.20a)
0 1 x, x N
czyli
αi = x, xi , i = 1, 2, 3,..., N (2.20b)
Jeśli
N N
x (t ) = ∑ αi xi (t ), y (t ) = ∑ β j x j (t ) (2.21)
i =1 j =1
Dwa powyższe równania są znane jako tzw. równość Parsevala, zgodnie z którą iloczyn ska-
larny dwóch sygnałów jest równy iloczynowi skalarnemu współczynników ich rozwinięć
względem sygnałów bazowych, tzn. jest zachowany także po transformacji obu sygnałów.
Iloczyn skalarny jest zachowywany w przestrzeni L2 przez transformacje ortogonalne.
Aproksymacja sygnałów z nieskończenie wymiarowej przestrzeni unitarnej. Niech XN ozna-
cza N-wymiarową podprzestrzeń przestrzeni X, unitarnej i nieskończenie wymiarowej. Pod-
przestrzeń XN jest rozpięta na bazie {xi (t): i = 1, 2,..., N}. Dowolnemu sygnałowi x(t), należące-
mu do przestrzeni X, należy przyporządkować taki sygnał ~ x (t ) , należący do podprzestrzeni XN:
N
x (t ) = ∑ αi xi (t )
~ (2.24a)
i =1
który najlepiej reprezentuje (przybliża) x(t) w sensie minimalizacji normy różnicy sygnałów
x (t ) − ~
x (t ) :
x−~
x = min (2.24b)
taki, że:
1) dla każdego xˆ(t) ∈XN , różnego od ~ x (t ) , jest spełniona nierówność x − ~
x < x − xˆ ,
~
2) sygnał x (t ) − x (t ) jest ortogonalny do każdego elementu należącego do podprzestrzeni XN.
44 Podstawy matematyczne analizy sygnałów deterministycznych
Zachodzenie równości (2.31), (2.32) jest łatwo wykazać, uwzględniając definicje (2.11) oraz
(2.29).
z
y v
vz
vy
vxy
ey
ez
ex vx x
W ogólnym przypadku rzutujemy ortogonalnie sygnał x(t) na każdą z osi układu współrzęd-
nych, czyli na każdą funkcję bazową xi(t). Otrzymujemy w ten sposób „wektory” vi(t) = αi⋅xi(t)
(współczynnik*funkcja bazowa), które „zawierają” część sygnału, przypadającą na osie xi(t),
Podstawy matematyczne analizy sygnałów deterministycznych 45
i = 1, 2, 3,..., N. Z wartości współczynników αi = 〈x, xi〉 widać „ile” należy wziąć każdej z fun-
kcji bazowych xi(t). Najlepszą aproksymatę sygnału w danej podprzestrzeni XN otrzymuje się
sumując rzuty sygnału x(t) na wszystkie funkcje bazowe xi(t).
Ortonormalizacja Grama-Schmidta zbioru sygnałów liniowo niezależnych. Niech {xi(t): i =
= 1, 2,..., N} będzie zbiorem sygnałów liniowo niezależnych w N-wymiarowej przestrzeni XN.
Mając taką bazę, można rekurencyjnie utworzyć dwa ciągi sygnałów {yi(t): i = 1, 2,..., N}
i {zi(t): i = 1, 2,..., N}, z których pierwszy stanowi bazę ortogonalną, a drugi − bazę ortonor-
malną przestrzeni XN:
1) y1 (t ) = x1 (t )
2) y 2 (t ) = x2 (t ) − x2 , y1( n ) y1( n ) (t )
Za pierwszą funkcję bazową y1(t) przyjmuje się x1(t). Następnie y1(t) normalizuje się i otrzy-
muje w ten sposób y1(n)(t). W kolejnym kroku wyznacza się y2(t), odejmując od x2(t) jego rzut
ortogonalny na sygnał y1(n)(t), czyli tę część x2(t), która jest już zawarta w y1(n)(t). Po norma-
lizacji y2(t) i otrzymaniu y2(n)(t), opisaną procedurę powtarza się rekurencyjnie dalej, odejmując
od xi(t) jego rzuty ortogonalne na wyznaczone do tej pory, unormowane sygnały yk(n)(t),
k = 1, 2,..., i−1.
Normalizacja bazy ortogonalnej. Jeżeli {yn(t)} jest zbiorem sygnałów ortogonalnych i jest
spełniony w związku z tym następujący warunek:
0 dla i≠ j
yi , y j = (2.33)
wi dla i= j
jest zbieżny do sygnału x(t) dla n dążącego do nieskończoności wtedy i tylko wtedy, gdy zbiór
{x1(t), x2(t), x3(t),...} jest zbiorem zupełnym.
Szereg Fouriera. Dla przestrzeni X i zbioru sygnałów {x1(t), x2(t), x3(t),...} jak wyżej, szereg
funkcyjny postaci:
∞
∑ αi xi (t ) , gdzie αi = x, xi (2.36)
i =1
jest szeregiem Fouriera sygnału x(t)∈X względem zbioru (ciągu) funkcji {x1(t), x2(t), x3(t),...},
a liczby αi nazywamy współczynnikami Fouriera tego szeregu. Każdy sygnał x(t)∈X jest
równy (w sensie normy przestrzeni X) sumie swojego szeregu Fouriera wtedy i tylko wtedy,
gdy zbiór {x1(t), x2(t), x3(t),...} jest zupełny. Dla takiego zbioru dla każdego x(t)∈X spełniona
jest także tzw. równość Parsevala:
∞
= ∑ αi
2 2
x (2.37)
i =1
∞ 2π 1 jn 2 π t
*
T 2π
1 jn T t 1 − jn t
x (t ) = ∑ αn
T
e , αn = x (t ),
T
e T
=
T ∫ x ( t )e T dt (2.39a, b)
n = −∞ 0
Po włączeniu współczynnika normującego 1/ T do współczynników szeregu, otrzymuje
się:
∞ 1T 2π
x (t ) = ∑ X n e jnω0t , Xn = − jnω t
∫ x (t )e 0 dt , ω0 = , n = 0, ± 1, ± 2, ...
n =−∞ T0 T
(2.40a, b)
• funkcje harmoniczne zespolone − zespolony szereg Fouriera sygnału okresowego (prze-
strzeń LT2(0, T)): jak wyżej tylko całkowanie od t0 do t 0 + T .
gdzie ϕ(t , s ) i ψ( s, t ) są jądrami przekształceń, a s jest zmienną tych jąder. Aby transformacje
były odwracalne, jądra muszą spełniać warunek (δ(t) − impuls Diraca):
48 Podstawy matematyczne analizy sygnałów deterministycznych
ponieważ:
x (t ) = ∫ ∫ x ( τ)ϕ( τ, s )d τ ψ( s, t )ds = ∫ ∫ ψ( s, t )ϕ( τ, s )ds x ( τ)d τ (2.43)
ΓΩ ΓΩ
(całki po konturze zamkniętym Γ, obejmującym środek układu współrzędnych). Jądra są samo-
sprzężone, jeśli ψ( s, t ) = ϕ* (t , s ).
gdzie X(f) to widmo częstotliwościowe Fouriera sygnału x(t). Sygnały z przestrzeni L2 ( −∞, ∞)
są transformowalne w sensie przekształcenia Fouriera. Dla dwóch sygnałów należących do tej
przestrzeni ich iloczyn skalarny jest równy iloczynowi skalarnemu ich widm:
∞ ∞
x, y = X ,Y ↔ ∫ x ( t ) y * (t )dt = ∫ X ( f )Y * ( f )df (2.47)
−∞ −∞
Dla y(t) = x(t), mamy:
∞ ∞
2 2 2 2
x = X ↔ ∫ x (t ) dt = ∫ X ( f ) df (2.48)
−∞ −∞
czyli równość kwadratów norm: sygnału i jego widma Fouriera (tzw. równość Parsevala).
Wniosek: przekształcenie Fouriera zachowuje energię sygnału.
Zmienna s ma znaczenie zmiennej czasowej, a transformata Hilberta X(s) sygnału jest funkcją
czasu. Z tego powodu powyższe równania definicyjne często zapisuje się jako:
Podstawy matematyczne analizy sygnałów deterministycznych 49
1 ∞ x ( τ) 1 1 ∞ xˆ ( τ) 1
xˆ (t ) = ∫
π −∞ t − τ
d τ = ⊗ x (t ),
πt
x(t ) = − ∫
π −∞ t − τ
d τ = − ⊗ xˆ ( t )
πt
(2.50)
W szczególności otrzymujemy tzw. przekształcenie Hankela (Jr(α) − funkcja Bessela rzędu r):
∞ ∞
X ( s ) = ∫ x(t ) st J r ( st )dt , x(t ) = ∫ X ( s ) st J r ( st )ds (2.54)
0 0
2 2∞ 2∞
J −1/ 2 ( α) =
πα
cos α, X (ω) = ∫ x (t ) cos( ωt )dt ,
π0
x (t ) = ∫ X (ω) cos(ωt )dt (2.55)
π0
2 2∞ 2∞
J1/ 2 ( α) =
πα
sin α, X (ω) = ∫ x(t )sin(ωt )dt,
π0
x(t ) = ∫ X (ω)sin(ωt )dt
π0
(2.56)
ponieważ ek(n) = 0 dla n ≠ k oraz ek(k) = 1. Przykładowo zbiór trzech próbek x = [ 1,5; 4; 0,1]
można rozłożyć względem takiej bazy w następujący sposób:
x = [1,5; 4; 0,1] = 1,5 ⋅ [1; 0; 0] + 4 ⋅ [0; 1; 0] + 0,1 ⋅ [0; 0; 1] = 1,5e1 + 4e 2 + 0,1e 3 (2.65)
W ogólności dla N próbek sygnału otrzymujemy równanie syntezy wektora x z funkcji bazo-
wych ek:
N
x= ∑ xk e k (2.66)
k =1
Podstawy matematyczne analizy sygnałów deterministycznych 51
Oczywiście (2.63) nie jest jedyną bazą ortogonalną (ortonormalną) rozpinająca N-wymiarową
przestrzeń wektorową. Może ją stanowić dowolny zbiór wektorów {b1, b2, b3,..., bN}:
b k = [bk (1), bk (2), bk (3),..., bk ( N )] , k = 1, 2, 3,..., N (2.67)
spełniających warunek ortogonalności (1 ≤ k, l ≤ N):
N
0, k ≠ l
bk , bl = ∑ bk (n )bl* (n ) = c, k =l
(2.68)
n =1
lub ortonormalności:
N
0, k ≠ l
bk , bl = ∑ bk (n )bl* (n ) = 1, k =l
(2.69)
n =1
Wówczas:
N
x= ∑ αk b k (2.70)
k =1
oraz
N
α k = x,b k = ∑ x(n)bk* (n ) (2.71)
n =1
Najbardziej znany zbiór wektorów ortonormalnych, poza (2.63), stanowi unormowana, dys-
kretna baza Fouriera zespolonych sygnałów harmonicznych postaci (k = 1, 2,..., N, n = 1, 2,
..., N, j = − 1 ):
2π
1 j N ( k −1)⋅( n −1) 1 2π 2π
bk (n ) = e = cos ( k − 1) ⋅ ( n − 1) + j sin (k − 1) ⋅ (n − 1) (2.72)
N N N N
która po zmianie sposobu indeksowania na (k = 0, 1, 2,..., N−1, n = 0, 1, 2,..., N−1) jest zapisy-
wana zwyczajowo jako:
2π
1 j N kn 1 2π 2 π
bk (n ) = e = cos kn + j sin kn (2.73)
N N N N
W zapisie (2.73) baza zerowa b0 jest składową stałą, bazy zaś b1, b2, b3, ..., itd., odpowiadają
częstotliwościom f0, 2f0, 3f0, ..., itd., gdzie f0 = fpróbkowania/N. Bazy (2.72), (2.73) spełniają także
warunek ortogonalności (2.69). Przykładowo dla (2.72) mamy:
*
N
1 j ( 2 π / N )( k −1)( n −1) 1 j ( 2 π / N )( l −1)( n −1) 1 N
0, k ≠ l
∑ N
e
N
e =
N
∑ e j( 2π / N )( k −l )( n −1) = 1,
k =l
n =1 n =1
(2.74)
ponieważ
N −1
N
0, k ≠ l
∑ e j( 2π / N )(k −l )( n −1) = ∑ e j( 2π / N )(k −l )n = N ,
k =l
(2.75)
n =1 n =0
52 Podstawy matematyczne analizy sygnałów deterministycznych
Przykład
Dla N = 4 funkcje bazowe zespolonej, dyskretnej bazy Fouriera (2.72) mają następującą pos-
tać:
b1 = [ +0,5 + j 0,0; + 0,5 + j 0,0; + 0,5 + j 0,0; + 0,5 + j 0,0]
b 2 = [ +0,5 + j 0,0; + 0, 0 + j 0,5; − 0,5 + j 0,0; + 0,0 − j 0,5]
b3 = [ +0,5 + j 0,0; − 0,5 + j 0,0; + 0,5 + j 0,0; − 0,5 + j 0,0]
b 4 = [ +0,5 + j 0,0; + 0, 0 − j 0,5, − 0,5 + j 0,0; + 0,0 + j 0,5]
a współczynniki rozwinięcia sygnału x = [1,5; 4; 0,1; 100] względem tych wektorów bazo-
wych, zgodnie z (2.71), są równe (zwróćmy uwagę na sprzężenie zespolone współrzędnych baz
Fouriera):
α1 = 1, 5 ⋅ ( +0,5 − j 0,0 ) + 4 ⋅ ( +0,5 − j 0,0 ) + 0.1 ⋅ ( +0,5 − j 0,0 ) + 100 ⋅ ( +0,5 − j 0,0 ) = 52,8
α 2 = 1, 5 ⋅ ( +0,5 − j 0,0 ) + 4 ⋅ ( +0,0 − j 0,5 ) + 0, 1 ⋅ ( −0,5 − j 0,0 ) + 100 ⋅ ( +0,0 + j 0,5 ) = 0,7 + j 48
α3 = 1, 5 ⋅ ( +0,5 − j 0,0 ) + 4 ⋅ ( −0,5 − j 0,0 ) + 0, 1 ⋅ ( +0,5 − j 0, 0 ) + 100 ⋅ ( −0,5 − j 0,0 ) = −51, 2
α 4 = 1, 5 ⋅ ( +0,5 − j 0,0 ) + 4 ⋅ ( +0,0 + j 0,5 ) + 0, 1 ⋅ ( −0,5 − j 0,0 ) + 100 ⋅ ( +0,0 − j 0,5 ) = 0,7 − j 48
πk (2n + 1) 1 2
bk (n ) = c (k ) ⋅ cos , c (0) = , dla k > 0 c (k ) = (2.76)
2N N N
2) sinusowa DST:
2 π(k + 1)( n + 1)
bk (n ) = sin (2.77)
N + 1 N +1
3) Hartleya:
1 2π 2π
bk (n ) = cos kn + sin kn (2.78)
N N N
4) Hadamarda:
M −1
1
bk (n ) = ( −1) f ( k , n ) , gdzie f ( k , n ) = ∑ ki ni , M = log 2 N (2.79)
N i =0
-0.4 -0.4
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
0.4 0.4
k=2 0 0
-0.4 -0.4
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
0.4 0.4
k=3 0 0
-0.4 -0.4
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
0.4 0.4
k=4 0 0
-0.4 -0.4
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
0.4 0.4
k=5 0 0
-0.4 -0.4
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
0.4 0.4
k=6 0 0
-0.4 -0.4
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
0.4 0.4
k=7 0 0
-0.4 -0.4
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
0.4 0.4
k=8 0 0
-0.4 -0.4
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
Rys. 2.2. Wektory bk, k = 1, 2,..., N, zespolonej bazy fourierowskiej (2.72) dla N = 8. W pionie kolejno: b1,
b2, b3,..., b8 (część rzeczywista po lewej stronie, urojona zaś − po stronie prawej). Zwrócić należy uwagę na
następujące zależności: Re(bN/2+1+k) = Re(bN/2+1−k), Im(bN/2+1+k) = −Im(bN/2+1−k), k = 1, 2,..., N/2−1, czyli na
powtarzanie się kształtów części rzeczywistej i urojonej funkcji bazowych (z ewentualną negacją znaku,
obserwowaną w części urojonej). W przypadku analizy (dekompozycji) sygnałów rzeczywistych powoduje
to symetryczne „powtarzanie” się wartości współczynników dekompozycji, zgodnie z zależnością: αN/2+1+k =
= (αN/2+1−k)*, k = 1, 2,..., N/2−1. Widać to na rysunkach 2.3 i 2.4
54 Podstawy matematyczne analizy sygnałów deterministycznych
5) Haara:
p/2 q − 1 n q − 1/ 2
2 , ≤ <
2p N 2p
1 p/2 q − 1 / 2 n q
b0 ( n ) = 1 / N , bk ( n ) = −2 , p
≤ < p , k = 1, 2,..., N − 1 (2.80)
N 2 N 2
0, pozostałe n
N = 2m , k = 2 p + q − 1, 0 ≤ p ≤ m − 1 , p = 0 ⇒ q = 0, 1, p ≠ 0 ⇒ 1 ≤ q ≤ 2p
1 1 1 1 H(n ) H(n )
H(2) = , H (2n )
=
2 1 − 1 2 H(n ) − H(n )
w której H(n) oznacza macierz n-punktowej transformacji Hadamarda. Kolejne wiersze tej ma-
cierzy stanowią n-punktowe, ortonormalne wektory bazowe tej transformacji.
Zwróćmy w tym miejscu uwagę na następujące fakty związane z bazami (2.76) − (2.80):
1) są to bazy o wartościach rzeczywistych;
2) indeksowanie zmiennych k i n w powyższych wzorach odpowiada indeksowaniu zastosowa-
nemu we wzorze (2.73), a nie (2.72);
3) baz kosinusowych i sinusowych nie uzyskano w wyniku „prostego” wzięcia części rzeczy-
wistej i urojonej zespolonej bazy fourierowskiej (2.73); nie przeszkadza to jednak, że naj-
prostsze „szybkie” algorytmy wyznaczania transformacji DCT i DST wykorzystują algorytm
„szybkiej” transformacji Fouriera FFT, implementujący (2.73) efektywnie pod względem
numerycznym;
4) baza Hadamarda przyjmuje tylko dwie wartości {−1/ N , 1/ N }, czyli ma kształt prosto-
kątny.
Oczywistym jest, że ze względów obliczeniowych preferuje się stosowanie do analizy sygna-
łów rzeczywistych funkcji bazowych o wartościach rzeczywistych. Na rysunku 2.3 przedsta-
wiono wszystkie funkcje bazowe bazy kosinusowej i sinusowej oraz bazy Hadamarda i Haara
dla N = 8.
Wybór rodzaju funkcji bazowych ma bardzo istotny wpływ na liczbę niezerowych współczyn-
ników αk, k = 1, 2,..., N, rozwinięcia sygnału w szereg (2.70), (2.71). Im funkcje te są lepiej
dopasowane do sygnału, tym mniej funkcji bazowych z tego szeregu jest potrzebnych do „od-
tworzenia” sygnału. Wynika stąd, że sygnały sinusoidalne powinny być rozpinane za pomocą
baz o kształcie „sinusoidalnym”, sygnały zero-jedynkowe zaś − za pomocą baz „zero-jedynko-
wych”.
Na rysunku 2.4 przedstawiono dwa 16-punktowe sygnały „sinusoidalne” oraz współczynniki
αk, k = 1, 2,..., 16, rozłożenia dwóch sygnałów dyskretnych względem zespolonych baz fourie-
rowskich. W pierwszym przypadku jedna z funkcji bazowych ma dokładnie taką samą często-
tliwość jak analizowany sygnał sinusoidalny, w związku z czym wystarczy ją tylko przesunąć
w fazie i przeskalować w amplitudzie, aby w pełni odtworzyć sygnał analizowany. Zapewnia to
odpowiedni dobór wartości zespolonego współczynnika αk, równego:
α k = αk ⋅ e j∠α k = Re(αk ) + j Im(αk ) (2.81)
Podstawy matematyczne analizy sygnałów deterministycznych 55
Rys. 2.3. Wektory bk, k = 0, 1, 2,..., N−1, rzeczywistej bazy kosinusowej, sinusowej, Hadamarda i Haara
(pionowo od lewej strony do prawej). UWAGA: w przypadku bazy Hadamarda w celu uzyskania rosnących
częstotliwości wyjątkowo ustawiono wektory bazowe w zmienionej kolejności:b0, b4, b6, b2, b3, b7, b5, b1
56 Podstawy matematyczne analizy sygnałów deterministycznych
1 0.2
0.5 0.1
0 k 0 k
1 5 10 15 1 5 10 15
0 0
-1 -1
k k
1 5 10 15 1 5 10 15
moduł αk moduł αk
2
1
1
0.5
0 k 0 k
1 5 10 15 1 5 10 15
Rys. 2.4. Dekompozycja dwóch dyskretnych sygnałów sinusoidalnych względem bazy fourierowskiej
(2.72) dla N = 16. Pionowo: sygnał, a potem kolejno część rzeczywista, urojona oraz moduł współ-
czynników rozwinięcia αk, k = 1, 2,..., N. Analizowane sygnały dyskretne: x1(n) = cos((2π/N)2n), x2(n) =
= cos((2π/N)1.35n), n = 1, 2,..., N
W drugim przypadku analizowany sygnał jest „sinusoidą” o częstotliwości, która nie jest obec-
na w zbiorze funkcji bazowych Fouriera. W związku z tym nie może być przedstawiona za
pomocą tylko jednego wektora bazowego. Współczynniki rozwinięcia uzyskujemy rzutując
prostopadle wektor sygnału na kierunki poszczególnych wektorów bazowych. Jak widać
widmo sygnału względem tych funkcji jest rozmyte, tzn. zawiera wiele współczynników nieze-
rowych. Analogiczne zjawisko występuje także w przypadku stosowania baz ortogonalnych
o wartościach rzeczywistych, na przykład bazy sinusoidalnej lub kosinusoidalnej. Jednak wów-
czas podobne rozmycie otrzymuje się także w przypadku kiedy w sygnale analizowanym
występuje składowa, odpowiadająca jednej z funkcji bazowych, lecz nie jest z nią „zsynchro-
nizowana”, tzn. jest w stosunku do niej przesunięta w czasie. Wówczas konieczna jest obec-
ność pozostałych funkcji bazowych w sumie rozwinięcia. Sytuacja taka jest pokazana na ry-
sunku 2.5.
Podstawy matematyczne analizy sygnałów deterministycznych 57
x(n) x(n)
0.2 0.2
a) 0 b) 0
-0.2 -0.2
n n
0 5 10 15 0 5 10 15
αk αk
1
0.5
c) 0.5 d)
0
0 k k
0 5 10 15 0 5 10 15
Rys. 2.5. Przykładowa dekompozycja dyskretnego sygnału względem bazy kosinusowej dla N = 16: a), b)
− rozkładane sygnały równe wektorowi b2 bazy kosinusowej oraz wektorowi b2 przesuniętemu
cyklicznie w prawo o jedną próbkę, c), d) − współczynniki rozwinięcia obu sygnałów
a) 0.5 b) 1
0 n 0 k
1 5 10 15 1 5 10 15
c) 0 d) 1
-1
k 0 k
1 5 10 15 1 5 10 15
Rys. 2.6. Dekompozycja dyskretnego sygnału prostokątnego względem bazy fourierowskiej (2.72) dla
N = 16. Kolejno poziomo: a) analizowany sygnał oraz b) część rzeczywista, c) urojona i d) moduł
współczynników rozwinięcia αk, k = 1, 2,..., N
π(k + 1/ 2)n
DCT-III: bk (n ) = 2 / N ⋅ c ( n ) ⋅ cos , k , n = 0,1, 2,..., N − 1
N
π(k + 1/ 2)(n + 1/ 2)
DCT-IV; bk (n ) = 2 / N ⋅ cos , k , n = 0,1, 2,..., N − 1
N
gdzie:
1 / 2 , i = 0 lub i = N
c (i ) =
1, 0 < i < N
Transformacja przedstawiona wzorem (2.76) jest więc transformacją kosinusową typu DCT-II.
To właśnie ona jest stosowana w algorytmach kompresji obrazów nieruchomych (standard
JPEG) i ruchomych (standard MPEG), natomiast transformacja DCT-III jest wykorzystywana
w modulowanych zespołach filtrów popularnego standardu MPEG audio (standardy MPEG-1
[ISO92] i MPEG-2 [ISO94], poziomy mp1, mp2 i mp3).
Dla dociekliwych − optymalne wektory bazowe dla sygnałów losowych. Załóżmy obecnie, że
dekomponowany (analizowany) wektor x (2.62), ortonormalne (ortogonalne i unormowane)
wektory bazowe bk, k = 1, 2,..., N, (2.67) oraz wektor współczynników α (2.71) są „pionowe”,
czyli że:
x (1) bk (1) α1
x ( 2) b ( 2) α
x= , bk = k , α = 2 (2.82)
x ( N ) bk ( N ) α N
Niech x oznacza teraz d y s k r e t n y s y g n a ł l o s o w y o zerowej wartości średniej, który
przyjmuje w ogólności wartości zespolone. Zgodnie z (2.70), (2.71) także taki wektor x może
być przedstawiony jako liniowa kombinacja wektorów bazowych bk:
x = Bα, α = B H x, B = [b1, b 2 ,..., b N ] (2.83)
gdzie „H” oznacza transpozycję macierzy oraz zespolone sprzężenie jej elementów. Kolumny
macierzy przekształcenia B są równe wektorom bazowym bk. W przypadku analizy sygnałów
losowych wektory te powinny być takie, aby dwa dowolne współczynniki „rozwinięcia” αk i αl
nie były ze sobą skorelowane (E[.] oznacza wartość oczekiwaną (1.33)):
[ ] 0, k ≠ l
E αk αlH = (2.84)
λ k , k = l
Po uwzględnieniu (2.83), równanie (2.84) jest równoważne następującemu warunkowi:
Podstawy matematyczne analizy sygnałów deterministycznych 59
( )H = bkH ⋅ E [xx H ]⋅ bl = bkH ⋅ R xx ⋅ bl = λ0,,
E b kH x ⋅ b lH x
k ≠l
k =l
(2.85)
k
(2.88)
Otrzymywana w ten sposób baza jest nazywana bazą Karhunena-Loevego (KL). Jest ona opty-
malnie „dopasowana” do analizowanego sygnału losowego, to znaczy zapewnia koncentrację
energii sygnału w najmniejszej liczbie wektorów bazowych dekompozycji (gdyż każda
następna funkcja bazowa „przechwytuje” maksymalną ilość energii sygnału, leżącej poza
przestrzenią wektorową „rozpiętą” na poprzednich funkcjach bazowych). Ponieważ Rxx(m) =
= R*xx(−m), macierz Rxx jest zawsze macierzą hermitowską (symetryczną w sposób sprzężony),
dodatnio określoną lub półokreślnoną. Dla szumu białego o wariancji σ2 mamy Rxx = σ2 I.
Bazę Karhunena-Loevego wyznacza się konstruując macierz autokorelacji Rxx = E[xxH] (2.88),
związaną z analizowanym sygnałem (funkcja autokorelacji Rxx(m) jest znana lub estymowana,
na przykład na podstawie (1.48)), a następnie dekomponując tę macierz względem jej wartości
własnych λk (na przykład wykorzystując funkcję eig()w programie Matlab):
N
R xx = ∑ λ k v k v kH , λ1 ≥ λ 2 ≥ λ 3 ≥ ... ≥ λ N (2.89)
k =1
m=log2(N); c=sqrt(1/N);
for k=0:N-1
kk=k;
for i=0:m-1
ki(i+1)=rem(kk,2); kk=floor(kk/2);
end
for n=0:N-1
nn=n;
for i=0:m-1
ni(i+1)=rem(nn,2); nn=floor(nn/2);
end
bHD(k+1,n+1) = c * (-1)^sum(ki .* ni);
end
% stem(bHD(k+1,1:N)); title('k-ta funkcja bazowa'); pause
end
y=zeros(1,N); %
for k = 0 : N-1 % ANALIZA: oblicz współczynniki
a(k+1) = sum( x .* conj(T(k+1,1:N)) ); %
end %
for k = 0 : N-1 % SYNTEZA: odtwórz sygnał
y = y + a(k+1) * T(k+1,1:N); %
end %
stem(l,y-x,'filled','-k'); axis tight; title('błąd syntezy 2: y(l)-x(l)');
xlabel('numer próbki'); pause
3
Szereg Fouriera
t0 +T t0 + T
1 1
x, y L2T
= ∫ x (t ) y (t )dt , x L2T
= x, x = ∫ | x( t ) |2 dt (3.1)
T t0 T t0
W szczególności wartość parametru t0 może być równa zero. Do aproksymacji chcemy użyć
zbioru r z e c z y w i s t y c h , ortogonalnych („prostopadłych”) funkcji bazowych fk(t), tzn. fun-
kcji spełniających warunek:
t0 +T
1
fi , f j =
T ∫ f i (t ) f j (t )dt = 0 dla i ≠ j (3.2)
t0
64 Szereg Fouriera
∫ x 2 (t ) − 2 x (t ) ∑ ck f k (t ) + ∑ ck f k ( t ) dt = 0 (3.5)
∂cn T t k =−∞ k =−∞
0
∂ 1
t0 +T ∞ ∞
2
x (t ) − 2 x (t ) ∑ ck f k ( t ) + ∑ ck f k (t ) dt = 0
2 2
∂cn T ∫ (3.7)
t0 k =−∞ k =−∞
∫ x(t ) f n (t )dt
t0
cn = t0 +T
(3.9)
∫ f n2 (t )dt
t0
Uogólniając powyższe rozważania na z e s p o l o n e sygnały okresowe x(t) oraz z e s p o l o n e
funkcje bazowe fk(t), spełniające warunek ortogonalności (3.2), otrzymuje się następującą za-
leżność na współczynniki rozwinięcia sygnału w uogólniony szereg Fouriera:
t0 + T t0 +T
cn = ∫ x(t ) f n* (t ) dt ∫ f n (t ) f n* (t )dt (3.10)
t0 t0
Szereg Fouriera 65
Identyczny wynik otrzymuje się podstawiając (3.11) do (3.17) i uwzględniając następującą za-
leżność:
t0 + T t0 + T t0 + T
jnω t − jnω t
∫ f n (t ) f n* (n )dt = ∫ e 0 e 0 dt = ∫ dt = T (3.18)
t0 t0 t0
ck = ck e jϕk (3.19)
Wówczas rozwinięcie sygnału (3.13) w szereg funkcji bazowych można zapisać jako:
∞
x (t ) = ∑ ck e j ( k ω0t +ϕk ) (3.20)
k =−∞
Sygnał x(t) jest wtedy przedstawiany jako suma wszystkich składowych harmonicznych
exp(jkω0t), k = 0, ±1, ±2, ..., wziętych z określoną amplitudą |ck| i fazą ϕk.
skąd wnioskujemy, że ck = c− k* oraz ck* = c− k. Jeśli tak, to możemy rozbić sumę (3.13) na dwa
składniki i zapisać ją w postaci:
∞ ∞ ∞
x (t ) = c0 + ∑ ck e jk ω0t + c−k e − jk ω0t = c0 + ∑ ck e jk ω0t + ck* e− jkω0t = c0 + ∑ 2 Re ck e jk ω0t
k =1 k =1 k =1
(3.24)
ponieważ suma liczby zespolonej i jej sprzężenia jest równa podwojonej części rzeczywistej
tej liczby: z + z* = (p+jq)+(p−jq) = 2p. Jeśli przyjmiemy (3.19), to (3.24) przyjmuje postać
[ ]
∞ ∞
x (t ) = c0 + ∑ 2 Re ck e j ( kω0 t + ϕ k ) = c0 + 2 ∑ ck cos(kω0 t + ϕ k ) (3.25)
k =1 k =1
Szereg Fouriera 67
Z kolei dla:
−b
ck = ak − jbk , ck = ak2 + bk2 , ϕk = arctg k (3.26)
ak
otrzymujemy z (3.24):
Re ck e jk ω0t = Re ( ak − jbk ) ( cos ( k ω0 t ) + j sin ( k ω0t ) ) = [ ak cos( k ω0 t ) + bk sin( k ω0 t ) ]
∞
x (t ) = a0 + 2 ∑ [ak cos( kω0t ) + bk sin( kω0t )] (3.27)
k =1
Ponieważ
t0 +T t0 +T t0 +T
1 1 1
ck = ∫ x (t )e − jk ω0t dt = ∫ x( t ) cos( k ω0t ) dt − j ∫ x (t )sin( k ω0t ) dt (3.28)
T t0
T t0
T t0
A
T /2 T T /2 T
1 − jkω t 1
ck = ∫ Ae 0 dt + ∫ ( − A)e − jkω0 t dt = − jkω t
∫ e 0 dt − ∫e
− jkω0 t
dt
T T T2 T
0 0 T /2
A −1 − jk ω0t
(
A jT − jk π
) ( )
T /2 T
ck = e − e − jk ω0t = e − 1 − 1 − e − jk π
T jk ω0 0 T /2
T k 2π
0 dla k parzystych
A − jk π
ck = j e −1 = 2A
kπ
− j k π dla k nieparzystych
0 dla k = 2l 0 dla k = 2l
ck = , ϕk =
2 A kπ dla k = 2l + 1 − π / 2 dla k = 2l + 1
0 dla k = 2l
ak = 0, bk =
2 A kπ dla k = 2l + 1
Ostatecznie z wzoru (3.27) otrzymujemy:
4A 1 1
x (t ) = sin ω0t + sin 3ω0t + sin 5ω0t + ...
π 3 5
68 Szereg Fouriera
Trójkątny, unipolarny 2
A A ∞ sin k ω0t
rys. 3.1g x (t ) = − ∑
2 π k =1 k
Sinusoidalny wyprostowany
2A 4A ∞ 1
dwupołówkowo x (t ) =
π
− ∑
π k =1 4k 2 − 1
cos2k ω0t
rys. 3.1h
Sinusoidalny wyprostowany
A A 2A ∞ 1
jednopołówkowo x (t ) = + sin ω0t −
π 2
∑
π k =1 4k 2 − 1
cos2k ω0 t
rys. 3.1i
Jak widać w tym przypadku sygnał jest aproksymowany tylko za pomocą funkcji typu sinus.
Jest to związane z faktem, że analizowany sygnał jest sygnałem asymetrycznym (x(t) = −x(−t)),
podobnie jak funkcja sinus. Analogicznie szereg Fouriera sygnałów symetrycznych ((x(t) =
= x(−t)) składa się wyłącznie z funkcji typu kosinus, także symetrycznych. Sygnały nie mające
jednej z powyższych właściwości (symetria, asymetria) są aproksymowane szeregiem, w któ-
rym równocześnie występują funkcje sinus i kosinus bez przesunięcia fazowego (szereg (3.27))
lub szeregiem tylko funkcji kosinus przesuniętych w fazie (szereg (3.25)).
W tabeli 3-1 podano współczynniki szeregu Fouriera dla kilku wybranych sygnałów deter-
ministycznych, których przebiegi czasowe są przedstawione na rysunku 3.1.
x1(t) x2(t)
A
t A
a) b)
0 T/2 T t
-A
-T/2 0 T/2 T
x4(t)
x3(t) A
A T/2 t
c) d)
t 0 T
x5(t) x6(t)
A A
e) T/2 t f)
0 T t
-A 0 T 2T
x7(t)
x8(t)
A
A
g) h)
t t
0 T 2T 0 T/2 T
x9(t)
A
i)
t
0 T/2 T
Rys. 3.1. Kształt sygnałów, dla których podano współczynniki szeregu Fouriera w tabeli 3-1. a) − bipolarna
fala prostokątna, b), c) − unipolarne fale prostokątne, d), e), f), g) − różne bipolarne i unipolarne fale
trójkątne, h), i) − sygnał sinusoidalny wyprostowany dwupołówkowo i jednopołówkowo
Tab. 3-2. Przykład programu do wyznaczania z definicji szeregu Fouriera sygnałów dyskretnych
% Parametry programu
-0.3
0
0 5 10 15 20 0 5 10 15 20
f [Hz] f [Hz]
c) 0 d) 0.5
-1 0
0 0.5 1 0 0.5 1
czas [s] czas [s]
e) 0 f) 0.5
-1 0
0 0.5 1 0 0.5 1
czas [s] czas [s]
g) 0 h) 0.5
-1 0
0 0.5 1 0 0.5 1
czas [s] czas [s]
Rys. 3.2. Przykład rozwinięcia w szereg Fouriera sygnału z rysunku 3.1a (po lewej) i 3.1g (po prawej), czyli
fali prostokątnej bipolarnej oraz fali trójkątnej unipolarnej: a), b) − współczynniki rozwinięcia względem
funkcji sinus, c), d) − suma pierwszych 5 harmonicznych, e), f) − suma pierwszych 10 harmonicznych, g), h)
− suma pierwszych 30 harmonicznych. Dla drugiego sygnału uwzględniono w sumie także składową stałą.
W rozwinięciu w szereg Fouriera obu sygnałów brak jest składowych kosinusoidalnych
kami dyskretnego sygnału okresowego x(n) o okresie N, czyli wartościami x(0), x(1), x(2),...,
x(N−1). Próbki te są odległe od siebie o odstęp czasu ∆t (okres próbkowania), czyli często-
tliwość próbkowania wynosi fp = 1/∆t. Ponieważ sygnał jest okresowy, więc x(n) = x(n+N).
Zainteresujmy się na początek wzorem (3.17). W rozpatrywanym przypadku okres sygnału
T jest równy T = N⋅∆t, w związku z czym częstotliwość podstawowa szeregu Fouriera f0 wy-
nosi f0 = 1/T = 1/(N⋅∆t), jej k-ta harmoniczna fk jest zaś równa kf0 = k/(N⋅∆t). Odpowiadająca
jej pulsacja ωk ma wartość kω0 = k ⋅2πf0 = 2π(kf0) = 2πk/(N⋅∆t). Uwzględniając powyższe
zależności oraz zastępując całkę sumą i podstawiając t = n⋅∆t, dt = ∆t (uproszczone całkowanie
metodą „prostokątów”), równanie (3.17) można zapisać jako
2 πk
1 N −1 1 N −1 −j ( n∆t )
ck = ∑
N ∆t n = 0
x(n∆t )e− jk ω0 ( n ∆t ) ∆t =
N
∑ x ( n )e N ∆t , k = 0, ± 1, ± 2, ... (3.30)
n=0
gdzie c0 jest wartością średnią sygnału x(n), c1 to współczynnik rozwinięcia tego sygnału
względem sygnału harmonicznego o częstotliwości podstawowej f0 = 1/T = 1/(N⋅∆t), c2 jest
współczynnikiem rozwinięcia względem sygnału o częstotliwości 2f0, c3 − współczynnikiem
„dla” 3f0, itd.
Jeśli rozkładany sygnał x(n) przyjmuje tylko wartości rzeczywiste, to
N −1 N −1
1 2π 1 2π
Re(ck ) = ∑ x(n) cos N kn , Im(ck ) = − ∑ x(n) sin N kn
N n =0 N n =0
Jednak dla dowolnego n dyskretne funkcje bazowe kosinus są identyczne dla k i N−k (lub
N/2+k i N/2−k):
2π 2π 2π 2π
cos ( N − k )n = cos kn , cos ( N / 2 + k )n = cos ( N / 2 − k )n (3.34)
N N N N
gdyż
2π 2π 2π 2π
cos ( N − k )n = cos 2 πn − kn = cos(2πn ) cos kn + sin(2πn )sin kn
N N N N
Szereg Fouriera 73
a cos(2πn) = 1 i sin(2πn) = 0. Podobnie funkcje sinus są takie same dla indeksów k i N−k, tylko
zanegowane:
2π 2π 2π 2π
sin ( N − k )n = − sin kn , sin ( N / 2 + k )n = − sin ( N / 2 − k )n (3.35)
N N N N
Wynika stąd, że:
Re(c N / 2 + k ) = Re(c N / 2 − k ), Im(c N / 2 + k ) = − Im(c N / 2 − k ) (3.36a)
czyli
c N / 2 + k = (c N / 2 − k )* (3.36b)
Jak widać pierwszych N/2+1 współczynników ck ( 0 ≤ k ≤ N / 2 ) jednoznacznie określa szereg
Fouriera sygnału dyskretnego, a współczynniki o indeksach N / 2 + 1 ≤ k ≤ N − 1 są (a)syme-
tryczne. Granicznemu indeksowi k = N/2 odpowiada częstotliwość funkcji harmonicznej równa
f = (N/2)f0 = (N/2)(1/(N∆t)) = 1/(2∆t) = fp/2, czyli połowie częstotliwości próbkowania. Z za-
leżności (3.32) wynika, że ck+mN = ck, czyli wartości współczynników szeregu powtarzają się
okresowo co N.
„Identyczność” odpowiednich dyskretnych funkcji bazowych można zaobserwować na rysunku
2.2 dla N = 8. Jak widać spróbkowane bazowe sygnały (ko)sinusoidalne o wysokich często-
tliwościach „wyglądają” tak samo jak odpowiednie bazowe sygnały (ko)sinusoidalne o niskich
częstotliwościach. Jest więc tracona „informacja” częstotliwościowa, zawarta w dyskretnych
funkcjach bazowych dla k > N/2. Dodatkowo funkcje bazowe o częstotliwościach o indek-
sach k oraz k + mN są dokładnie takie same.
4.1. Definicja
Całkowe przekształcenie Fouriera jest określone parą następujących transformacji:
∞ ∞
1
∫ x(t )e ∫ X ( jω)e d ω
− jωt j ωt
X ( jω) = dt , x(t ) = (4.1a, b)
−∞
2π −∞
wiążących sygnał x(t) z jego widmem Fouriera X(jω). Pierwsze równanie jest równaniem „ana-
lizy” (wyznaczenie współczynników Fouriera), a drugie − równaniem „syntezy” (zsyntezo-
wanie sygnału z jego współczynników Fouriera). Aby sygnał miał transformatę Fouriera X(jω)
(tzn. aby całka (4.1a) była określona w sensie Cauchy’ego), musi on spełniać tzw. warunki
Dirichleta:
∞
1) ∫ x(t ) dt < ∞
−∞
2) mieć skończone wartości maksimów i minimów w każdym skończonym przedziale,
3) mieć skończoną liczbę punktów nieciągłości w każdym skończonym przedziale.
Wzory (4.1a), (4.1b) mogą być także interpretowane jako całki z iloczynów dystrybucji (fun-
kcji uogólnionych), których wynikiem może być także dystrybucja.
Całkowe przekształcenie Fouriera jest wyprowadzane jako graniczny przypadek szeregu Fou-
riera:
Całkowe przekształcenie Fouriera 75
∞ ∞ 1 T /2 ∞ 2π 1 T / 2
1) x (t ) = ∑ ck e jk ω0t = ∑ ∫ x ( τ)e − jk ω0 τ d τ e jk ω0t = ∑ ∫ x ( τ)e− jk ω0 τ d τ e jk ω0t
k =−∞ k =−∞ T −T / 2 k =−∞ T 2 π −T / 2
(4.2)
2) załóżmy, że okres T sygnału x(t) rośnie do nieskończoności (T→∞); wówczas pulsacja
podstawowa szeregu ω0 = 2π/T maleje i dąży do nieskończenie małej wartości dω (ω 0→dω),
co z kolei powoduje, że „skokowa” zmiana pulsacji kω 0 przechodzi w zmianę ciągłą (kω 0→ω)
i suma względem zmiennej k może być zastąpiona całką względem ciągłej zmiennej ω:
∞ ∞
1 ∞ T /2 − jk ω0 τ 2π 1 1 ∞
lim ∑ ∫ x ( τ)e d τ e jk ω0t = ∫ ∫ x( τ)e − jωτd τ e jωt d ω = jωt
∫ X ( jω)e d ω
T →∞ 2 π k =−∞ T 2 π −∞ −∞ 2 π −∞
−T / 2
(4.3)
Podobnie jak w przypadku szeregu Fouriera, dla r z e c z y w i s t e g o sygnału x(t) mamy:
∞ ∞
X ( jω) = ∫ x (t ) cos(ωt )dt − j ∫ x (t ) sin(ωt )dt = X R (ω) + jX I (ω) (4.4)
−∞ −∞
skąd wynika, że X(−jω) = X*(jω), ponieważ XR(−ω) = XR(ω) i XI(−ω) = −XI(ω), gdyż cos(−ωt)
= cos(ωt) i sin(−ωt) = −sin(ωt).
Transformata Fouriera X(jω) sygnału x(t) jest nazywana widmem („częstotliwościowym”) tego
sygnału, gdyż informuje nas o jego „zawartości” widmowej („częstotliwościowej”). Ponieważ
X(jω) jest w ogólności liczbą zespoloną, można ją zapisać w układzie biegunowym za pomocą
modułu i fazy (długości promienia i kąta):
X ( jω)
X ( jω) = X ( jω) e j (4.5)
Wynika z niego, że podczas operacji syntezy wynikowy sygnał x(t) powstaje w wyniku sumo-
wania nieskończonej liczby sygnałów harmonicznych ejωt, z których każdy ma swoją amplitudę
|X(jω)| i przesunięcie fazowe X(jω).
1 ω
3) Przeskalowanie: x( at ) ↔ X , a > 0 (4.9)
a a
Dowód. Po podstawieniu τ = at, otrzymujemy t = τ/a, dt = dτ/a oraz
∞ ∞ τ ∞ ω
− jω dτ 1 −j τ 1 ω
F ( x ( at ) ) = − jωt
∫ x(at )e dt = ∫ x ( τ) e a = ∫ x ( τ ) e a dτ = X
−∞ −∞
a a −∞ a a
Wniosek. Jak widać przeskalowanie sygnału w osi czasu prowadzi do odwrotnego przeska-
lowania jego widma, tzn. „ściśnięcie” (krótszy czas trwania) sygnału (a > 1) prowadzi do
„rozszerzenia” jego widma, „rozciągnięcie” (dłuższy czas trwania) zaś sygnału (a < 1) − do
„zwężenia” widma. Przykładowo, jeśli a = 2, to sygnał po przeskalowaniu przyjmuje
w chwili czasowej t = 1/2 wartość, którą przed operacją skalowania miał dla t = 1, natomiast
widmo sygnału przeskalowanego przyjmuje dla ω = 2 połowę wartości, którą miało przed-
tem dla ω = 1. Właściwość ta ma podstawowe znaczenie w tzw. analizie czasowo-częstotli-
wościowej sygnałów, która będzie rozpatrywana w jednym z kolejnych rozdziałów. Na
rysunku 4.1 przedstawiono przykładowy sygnał x(t), jego wersję przeskalowaną x(2t) oraz
widma obu sygnałów. Po dwukrotnym „przyspieszeniu” sygnału jego widmo przesuwa się
od częstotliwości 10 herców do częstotliwości 20 herców, ulega dwukrotnemu rozszerzeniu
oraz zmniejszeniu w amplitudzie o połowę.
4) Przesunięcie w czasie: x (t − t0 ) ↔ e − jωt0 X ( jω) (4.10)
Dowód. Po zastosowaniu podstawienia t−t0 = τ, mamy t = τ+ t0, dt = dτ oraz
∞ ∞ ∞
∫ x (t − t0 )e − jωt dt = ∫ x ( τ)e − jω( τ+ t0 )d τ = e − jωt0 ∫ x ( τ)e − jωτd τ = e − jωt0 X ( jω) = X ( jω) e j ( X ( jω) −ωt0 )
−∞ −∞ −∞
Wniosek. Transformata Fouriera sygnału przesuniętego w czasie jest równa przesuniętej
w fazie (mnożnik exp(−jωt0)) transformacie Fouriera sygnału oryginalnego. Wartości bez-
względne (moduły liczb zespolonych) obu transformat są więc takie same.
5) Przesunięcie w częstotliwości (modulacja zespolona): e ± jω0t x ( t ) ↔ X ( j ( ω ∓ ω 0 )) (4.11)
∞ ∞
Dowód. ∫ ( )
e ± jω0t x (t ) e − jωt dt = ∫ x (t ) e− j ( ω∓ ω0 )t dt = X ( j (ω ∓ ω0 ))
−∞ −∞
Wniosek. Widmo Fouriera sygnału x(t) po zmodulowaniu (wymnożeniu) przez sygnał
exp(±jω0t) jest równe X(j(ω∓ω0), czyli widmu sygnału niezmodulowanego X(jω), przesu-
niętemu do pulsacji ±ω0 (częstotliwości ±f0). Przykładowo, po wymnożeniu sygnału x(t)
Całkowe przekształcenie Fouriera 77
1 1
x(t) x(2t)
0.5 0.5
0 0
-0.5 -0.5
t [s] t [s]
-1 -1
0 0.5 1 1.5 0 0.5 1 1.5
0.16 0.16
X(f) X(f/2)/2
0.12 0.12
0.08 0.08
0.04 0.04
f [Hz]
f [Hz]
0 0
0 10 20 30 0 10 20 30
Rys. 4.1. Przykładowy sygnał x(t) oraz jego wersja przeskalowana x(2t) oraz widma obu sygnałów (odpo-
1 f
wiednio): X(f) oraz X
2 2
z sygnałem exp(jω0t) stara wartość X(j0) jest przesunięta do pulsacji ω0, gdyż dla tej pulsacji
X(j(ω−ω0)) = X(j(ω0−ω0)) = X(j0). Rysunek 4.2 stanowi ilustrację konsekwencji „częstotli-
wościowych” operacji modulacji zespolonej.
1
6) Modulacja rzeczywista: x (t ) cos(ω0t ) ↔ [ X (ω − ω0 ) + X (ω + ω0 )] (4.12a)
2
−j
x (t )sin( ω0t ) ↔ [ X (ω − ω0 ) − X (ω + ω0 )] (4.12b)
2
Dowód. Jest to konsekwencja właściwości 5 (modulacja zespolona), liniowości przekształ-
cenia Fouriera oraz wzoru Eulera:
cos(ω0 t ) =
2
[
1 jω0t
e
1
]
+ e − jω0t = [(cos(ω0 t ) + j sin(ω0 t ) ) + (cos(ω0 t ) − j sin(ω0 t ) )]
2
sin( ω0 t ) =
1 jω0t
2j
e [− e − jω0t =
1
2j
]
[(cos(ω0t ) + j sin(ω0t ) ) − (cos(ω0t ) − j sin(ω0t ) )]
∞
7) Splot sygnałów: z (t ) = x(t ) ⊗ y (t ) = ∫ x(τ) y (t − τ)dτ ↔ Z ( jω) = X ( jω)Y ( jω) (4.13)
−∞
(4.14)
Dowód. Po wprowadzeniu nowej zmiennej Ω = ω−ν , otrzymujemy ω = Ω+ν oraz
1 ∞ 1 ∞ 1 ∞ 1 ∞
z(t ) = ∫ ∫ X ( jν)Y ( j (ω − ν))d ν e jωt d ω = ∫ X ( jν)e jνt d ν ∫ Y ( jΩ )e jΩt d Ω = x(t ) y (t )
2π −∞ 2π −∞
2π −∞ 2π −∞
Wniosek. Widmo iloczynu dwóch sygnałów czasowych jest równe splotowi widm tych syg-
nałów. Uwzględniając dodatkowo właściwość 7, widać, że obowiązuje zasada wzajemności
operacji w dziedzinie czasu i częstotliwości: iloczyn w jednej dziedzinie owocuje splotem
w drugiej dziedzinie.
∞
∫ x(τ) y
*
9) Korelacja: z (t ) = ( τ − t ) dτ ↔ Z ( jω) = X ( jω)Y * ( jω) (4.15)
−∞
−∞ −∞ −∞ −∞ −∞ − ∞
Wniosek. W przypadku sygnałów i funkcji dyskretnych, powyższa zależność może być wy-
korzystana do szybkiego wyznaczenia funkcji autokorelacji sygnału w dziedzinie często-
tliwości za pomocą sekwencji trzech transformacji Fouriera: 1) dwóch transformacji pros-
tych − X(jω) = F(x(t)), Y(jω) = F(y(t)), 2) iloczynu X(jω)Y*(jω), 3) jednej transformacji od-
wrotnej − z(t) = F−1(X(jω)Y*(jω)). W przypadku korelacji własnej wystarczy wykonać tylko
dwie transformacje: jedną prostą i jedną odwrotną; wówczas X(jω)X *(jω) = |X(jω)|2.
d n x(t ) dx (t )
10) Pochodna: n
↔ ( jω) n X ( jω), ↔ jωX ( jω) (4.16)
dt dt
Całkowe przekształcenie Fouriera 79
skąd wynika, że (jω)nX(jω) jest transformatą Fouriera n-tej pochodnej sygnału x(t).
Uwaga. Jak się później okaże, właściwość ta ma podstawowe znaczenie podczas analizy
częstotliwościowej układów liniowych, których opis matematyczny jest dany równaniami
różniczkowymi (patrz (5.12)).
t
1
11) Całka: ∫ x ( τ ) dτ ↔
jω
X ( jω) + πX (0)δ(ω) (4.17)
−∞
a) gT(t) b) pT(t)/2
1/T3
T3 c) δ(t)
T1>T2>T3
1
T2
T1 t t
t
-T1 -T2 -T3 0 T3 T2 T1 0
Rys. 4.3. Aproksymacja sygnału delty Diraca δ(t) za pomocą: a) funkcji gaussowskich, b) impulsów pros-
tokątnych, c) graficzne oznaczenie sygnału delty Diraca
Impuls Diraca bywa także definiowany jako funkcjonał, przyporządkowujący sygnałowi x(t),
ciągłemu w chwili t = 0, wartość x(0):
∞
lub ogólniej
∞
czyli może on być traktowany jako szczególnego rodzaju funkcjonał próbkowania sygnałów
analogowych. Zależności (4.23) są konsekwencją warunku jednostkowego pola (4.20) impulsu
δ(t). W przypadku okresowego próbkowania sygnałów analogowych funkcja próbkująca
teoretycznie jest przedstawiana jako suma równomiernie poprzesuwanych impulsów Diraca.
Ponieważ suma taka jest sygnałem okresowym, można ją rozwinąć w szereg Fouriera
∞ ∞
1 ∞ jkω0t 2π
∑ δ(t − kT ) = ∑ c k e jkω0t = ∑ e , ω0 = T
T k = −∞
(4.24)
k = −∞ k = −∞
Dowód.
∞ T
T
1 − jωt e − jωT − e jωT sin ωT sin ωT
∫ pT (t )e − jωt dt = ∫ e − jωt dt = e = =2 = 2T = 2T sinc( ωT )
−∞ −T − jω −T − jω ω ωT
Dla x → 0 mamy sin(x)/x → 1, a dla ω → 0 wartość funkcji sin(ωT)/ω zmierza do T.
Całkowe przekształcenie Fouriera 81
− ∞ k = −∞ −∞ k = −∞ k = −∞ −∞ k = −∞
Wniosek. Jak się później okaże, z właściwości tej będziemy korzystać podczas wyprowadze-
nia twierdzenia o próbkowaniu sygnałów analogowych, gdyż operacja próbkowania o okre-
sie T będzie przedstawiana jako iloczyn sygnału próbkowanego x(t) z szeregiem impulsów
Diraca postaci ∑δ(t−kT).
6) Sygnał harmoniczny: e jω0t ⋅ 1 ↔ 2πδ( ω − ω0 ) (4.31)
Wynika z (4.29) oraz właściwości przesunięcia w częstotliwości przekształcenia Fouriera.
7) Sygnały (ko)sinusoidalne:
cos ω0t =
2
e (
1 jω0t
+ e− jω0t ) ↔
1
2
( 2πδ(ω − ω0 ) + 2πδ(ω + ω0 ) ) (4.32a)
sin ω0t =
1
2j
(
e jω0t − e − jω0t ) ↔ −
j
2
( 2πδ(ω − ω0 ) − 2πδ(ω + ω0 ) ) (4.32b)
− 1 dla t < 0
2
8) Sygnał znaku: x (t ) = sgn(t ) = 0 dla t = 0 ↔ X ( jω) = (4.33)
1 dla t > 0 jω
82 Całkowe przekształcenie Fouriera
∞
F {sgn(t )} = F lim e
−ε t −ε t
Dowód. sgn(t ) = lim ∫ e sgn(t )e − jωt dt =
ε → 0 ε → 0
−∞
0 ∞ 1 1 2
= lim ∫ −e( ε− jω)t dt + ∫ e− ( ε+ jω)t dt = lim − + =
ε→0
−∞ 0 ε→0 ε − jω ε + jω jω
Uwaga. Transformata Fouriera sygnału znaku sgn(t) jest równa granicznej transformacie
Fouriera sygnału e − ε t sgn(t ) dla ε dążącego do zera.
0 dla t < 0 1
9) Sygnał skoku jednostkowego: x (t ) = u(t ) = ↔ X ( jω) = πδ(ω) +
1 dla t ≥ 0 jω
(4.34)
1 1 1 1 2
Dowód. F {u(t )} = F + sgn(t ) = (2πδ( ω) ) +
2 2 2 2 jω
2 π −ω2 /( 4 a )
10) Sygnał gaussowski: x (t ) = e −at ↔ e (4.35)
a
Dowód: Stosując podstawienie β = t a + jω /(2 a ) (skąd dβ = a dt ) oraz uwzględnia-
∞
− β2
jąc, że (c+d)2 = c2+d2+ 2cd oraz ∫e dβ = π , otrzymujemy:
−∞
∞ ∞ 2
/( 4 a ) ∞ 2
2
− at − jωt −ω 2
−( t a + jω /( 2 a )) 2 e −ω 2
−β e −ω /( 4 a )
∫ e e dt = e ∫e ∫ e dβ =
/( 4 a )
dt = π
−∞ −∞
a −∞
a
0 dla t < 0 1
11) Sygnał eksponencjalny: x(t ) = − at ↔ H ( jω) = , (a>0) (4.36)
e dla t ≥ 0 a + jω
∞ ∞ ∞
− at − jωt − ( a + jω) t 1 1
Dowód. ∫ e e dt = ∫ e dt = e − ( a + jω)t =
0 0
− ( a + jω) 0
a + jω
A ∞ −[ a + j ( ω−ω0 ) ]t
∞
dt − ∫ e [
− a + j ( ω+ω0 ) ]t
= ∫e dt =
2 j 0 0
A 1 − a + j ( ω−ω0 ) )t ∞ 1 − a + j ( ω+ω0 ) )t ∞
= e ( − e ( =
2 j − ( a + j (ω − ω0 ) ) 0 − ( a + j (ω + ω0 ) ) 0
A 1 1 A 2 jω0 Aω0
= − = =
2 j a + j ( ω − ω0 ) a + j (ω + ω0 ) 2 j (a + j (ω − ω0 ) )(a + j ( ω + ω0 ) ) (a + jω)2 + ω02
Całkowe przekształcenie Fouriera 83
X(ω)
2T
x(t)
1
a)
ω
t
x(t)
2Ω
X(ω)
2π
b)
t
x(t)
X(ω)
1
1
c)
t ω
0 0
x(t) X(ω)
1 2π
d)
t ω
0 0
x(t) X(ω)
e) 1 2π/T
t ω
Rys. 4.4. Wybrane sygnały x(t) z podrozdziału 4.3 i ich widma Fouriera X(ω): a) impuls prostokątny,
b) impuls sinc, c) impuls Diraca, d) sygnał stały, e) szereg impulsów Diraca
Całkowe przekształcenie Fouriera 85
2π/ω0 x(t)
1
X(ω)
t
π π
f)
t
-ω0 0 ω0
1 π
t ω0 t
g)
-ω0 0
−π
x(t) Imag{X(ω)}
1
t ω
h)
0 0
-1
Real{X(ω)}
x(t) ω
i) 1
t
0 Imag{X(ω)}
x(t) X(ω)
1 π/a
j)
t ω
Rys. 4.4. (cd.) f) sygnał kosinusoidalny, g) sygnał sinusoidalny, h) sygnał znaku, i) sygnał skoku jedno-
stkowego, j) sygnał gaussowski
86 Całkowe przekształcenie Fouriera
1/a
x(t) π/2
1
Re{X(ω)} |X(ω)|
k) ω
ω
a
-a
t
X(ω)
0 -1/(2a) Im{X(ω) -π/2
x(t) -π
|X(ω)|
l) Im{X(ω)} Re{X(ω)}
ω ω
t
ω20 − a 2
≈ ω0 X(ω)
≈ −ω0±a π
x(t)
m) Re{X(ω)} |X(ω)|
X(ω)
t π/2
ω ω
≈ ω0 ω02 + a 2
≈ −ω0±a Im{X(ω)}
-π/2
x(t) X(ω)
1 2πT
n)
2π/T
t
-T T ω
cos(ω0t )
-ω0 ω0
X(ω)
π
x(t)
o)
4T
1
-π/T π/T
t
ω
-5T -3T -T T 3T 5T -2π/T 0 2π/T
Rys. 4.4. (cd.) k) sygnał eksponencjalny, l), m) sygnał sinusoidalny i kosinusoidalny z obwiednią ekspo-
nencjalną (≈ ważne dla ω0 >> α), n) fragment sygnału kosinusoidalnego, wycięty przez okno prostokątne,
o) fala prostokątna unipolarna
Całkowe przekształcenie Fouriera 87
Dowód. Obliczmy transformaty Fouriera obu stron powyższego równania i pokażmy, że są one
takie same (⊗ oznacza operację splotu):
∞ ∞ ∞ ∞
F ∑ x (t + kT ) = F x (t ) ⊗ ∑ δ(t − kT ) = X ( jω) ω0 ∑ δ(ω − k ω0 ) = ω0 ∑ X ( jk ω0 )δ( ω − k ω0 )
k =−∞ k =−∞ k =−∞ k =−∞
1 ∞ X ( jk ω0 ) ∞ X ( jk ω ) ∞ ∞
F ∑ e jk ω0t X ( jk ω0 ) =
T
k =−∞ T k =−∞
{ }
∑ F e jk ω0t = T 0 ∑ 2πδ(ω − k ω0 ) =ω0 ∑ X ( jk ω0 )δ(ω − k ω0 )
k =−∞ k =−∞
Zgodnie z właściwością iloczynu, otrzymane w ten sposób widmo Xw(ω) jest różne od X(ω)
i równe s p l o t o w i widma X(ω) całego sygnału z widmem funkcji okna W(ω):
1 ∞
X w ( ω) = ∫ X ( ν )W ( ω − ν) d ν
2π −∞
(4.44)
Oczywiście od kształtu W(ω) zależy wielkość „deformacji” widma X(ω). Na rysunku 4.5 prze-
dstawiono graficzną ilustrację rozważanej sytuacji: sygnał kosinusoidalny jest mnożony przez
okno prostokątne. Ponieważ w tym przypadku X(ω) = π[δ(ω−ω0)+δ(ω+ω0)], więc:
1 ∞ 1
X w ( ω) = ∫ π [δ( ν − ω0 ) + δ( ν + ω0 )] W (ω − ν)d ν = 2 [W (ω − ω0 ) + W (ω − ω0 )] (4.45)
2 π −∞
W miejscach, gdzie w X(ω) występowały impulsy Diraca δ(ω), w widmie Xw(ω) występuje
przesunięte widmo okna W(ω). Jako okien „wycinających” można stosować wiele różnych
funkcji, na przykład Bartletta, Blackmana, Dolpha-Czebyszewa, Hamminga, Hanna, Kaisera.
Funkcje okien powinny mieć widmo jak najbardziej zbliżone do delty Diraca: skoncentrowane
wokół pulsacji ω = 0 oraz szybko malejące do zera wraz oddalaniem się od tej pulsacji. W żar-
gonie inżynierskim widmo okna powinno mieć wąski listek główny wokół ω = 0 oraz niski
poziom listków bocznych (oscylacji po obu stronach listka głównego). Jednak jednoczesne
bardzo dobre spełnienie obu tych wymagań nie jest możliwe.
88 Całkowe przekształcenie Fouriera
x(t)=cos(ω0t)
X(ω)
π π
t
-ω0 0 ω0
w(t) W(ω)
2T
2π/T
t ω
-T 0 T
xw(t)=x(t)w(t) Xw(ω)=X(ω)⊗W(ω)
1 2πT
t
2π/T
-T T
ω
-ω0 0 ω0
Rys. 4.5. Ilustracja graficzna „konsekwencji” częstotliwościowych mnożenia przez siebie dwóch sygnałów
czasowych: kosinusoidy i „okna” prostokątnego (patrz (4.14)). Przykład modulacji amplitudy i wpływu
kształtu widma okna czasowego na widmo „wyciętego” fragmentu sygnału
a) b)
X(ω) X(ω)
ω ω
X(ω) X(ω)
ω ω
X(ω) X(ω)
ω
ω
Rys. 4.6. Ilustracja graficzna problemu rozdzielczości częstotliwościowej (a) i amplitudowej (b) analizy
częstotliwościowej, prowadzonej z wykorzystaniem okna prostokątnego. W przypadku (a) jest analizowana
suma dwóch sygnałów kosinusoidalnych o częstotliwościach leżących coraz bliżej siebie, natomiast w przy-
padku (b) − suma dwóch sygnałów kosinusoidalnych o różnych częstotliwościach i coraz większej różnicy
amplitud. W pierwszym przypadku jest istotna szerokość listka głównego widma okna, a w przypadku
drugim − poziom oscylacji listków bocznych widma okna
w(t) W(ω)
2T
1
t
ω
-T T
w(t) W(ω)
1
T
t
ω
-T/2 T/2
w(t) W(ω)
1
t T/2 ω
-T/4 T/4
Rys. 4.7. Okna prostokątne o różnej długości i ich widma Fouriera. Wraz ze wzrostem długości okna zwię-
ksza się wysokość i zmniejsza szerokość listka głównego jego widma Fouriera, natomiast względny poziom
oscylacji listków bocznych nie ulega zmianie (w odniesieniu do wysokości listka głównego)
90 Całkowe przekształcenie Fouriera
Tab. 4-1. Definicje okien ciągłych w(t) i analityczne wzory ich widm W(ω)
1 dla t ≤ T sin ωT
Prostokątne pT (t ) = 2
0 dla t > T ω
π 2 sin(ωT )
0,5 + 0,5cos ( πt / T ) pT (t )
( )
Hanninga (Hanna)
ω π 2 − T 2 ω2
3T sin(ωT / 4 )
4
3
Parzena qT / 2 (t ) ⊗ qT / 2 (t ) , ⊗ oznacza splot
T 4 ωT / 4
(tabela 4-1). Widma okien różnych od okna prostokątnego mają o wiele niższe listki boczne,
lecz ich listek główny jest znacznie szerszy. Wszystkie one spełniają następujące warunki:
1) w(t) = 0 dla |t| > T (4.46a)
∞
1
2π −∫∞
2) w(0) = W (ω)dω = 1 (4.46b)
Na rysunku 4.8 są przedstawione kształty okna Hanna i Blackmana oraz ich widm Fouriera.
Rysunek ten ilustruje także zasadę konstrukcji obu okien, charakterystyczną dla wszystkich
okien trygonometrycznych. Aby zminimalizować poziom oscylacji bocznych sumuje się kilka,
odpowiednio poprzesuwanych i przeskalowanych widm okna prostokątnego WR(ω). Na przy-
kład dla okna Hanna mamy:
WH (ω) = 0,5WR (ω) + 0,25WR (ω − π / T ) + 0,25WR (ω + π / T ) (4.47a)
a) b)
wH(t) wB(t)
t t
-T T -T T
WH(ω) WB(ω)
ω ω
π 2π π 2π
0 T T 0 T T
Rys. 4.8. Graficzna ilustracja w dziedzinie częstotliwości zasady konstrukcji okien kosinusoidalnych: a) ok-
no Hanna w(t) = [0,5 + 0,5cos(πt/T)]⋅pT(t), b) okno Blackmana w(t) = [0,42 + 0,5cos(πt/T) + 0,08cos(2πt/T)]⋅
⋅pT(t), góra – kształt okna, dół – jego widmo częstotliwościowe jako wynik zsumowania kilku przeskalo-
wanych w amplitudzie i przesuniętych w częstotliwości widm PT(ω) okna prostokątnego pT(t)
Własność splotu sygnałów jest szczególnie ważna, ponieważ analogowe układy najczęściej
przetwarzają sygnał wejściowy x(t) splatając go (operacja ⊗) z ich odpowiedzią impulsową
h(t): y(t) = x(t)⊗ h(t). Własność ta dotyczy układów liniowych niezmiennych w czasie (ang.
LTI − Linear Time-Invariant). W dziedzinie częstotliwości operacja splotu sygnałów odpowia-
92 Całkowe przekształcenie Fouriera
M(ω)
2π
m(t)
π/2 π/2
t
-ωm ωm
Xm(ω)=X(ω)⊗M(ω)
xm(t) π
t π/4 π/4
ω
-ω0 ω0
ω0-ωm ω0+ωm
Xm(ω)=X(ω)⊗M1(ω) Xm(ω)=X(ω)⊗M2(ω)
π/2
π/2
ω ω
-ω0 ω0 -ω0 ω0
ω0-ωm ω0+ωm
Rys. 4.9. Modulacja amplitudowa AM i AM-SC (lub DSB i DSB-SC) jako przykład iloczynu dwóch
sygnałów. Oznaczenia: x(t) = cos(ω0t) − nośna, m(t) = 1 + 0,5cos(ωmt) − modulująca, xm(t) − ich iloczyn,
X(ω), M(ω) i Xm(ω) − widma Fouriera nośnej, modulującej i ich iloczynu. Zgodnie z właściwością iloczynu
(4.14), Xm(ω) jest wynikiem splotu widm X(ω) i M(ω):Xm(ω) = X(ω)⊗M(ω). Na samym dole po lewej stronie
pokazano kształt widma Fouriera sygnału, w przypadku kiedy sygnał modulujący jest postaci m1(t) =
= cos(ωmt) (w widmie jest brak prążków sygnału nośnego), po prawej stronie zaś − orientacyjny kształt
widma dla sygnału modulującego m2(t) = ∑(m)cos(ωmt), czyli sumy wielu składowych kosinusoidalnych
o różnych pulsacjach
h(t) H(ω)
1
t
ω
-1 0 1
x(t)=x1(t)+x2(t) X(ω)
π π
t
ω
-2 -0.5 0.5 2
y(t)=x(t)⊗h(t)=x1(t) Y(ω)=X(ω)H(ω)
π =X1(ω)
t
ω
-0.5 0.5
Rys. 4.10. Przykład filtracji analogowej sygnałów: splot sygnałów h(t) i x(t) = x1(t)+x2(t) = cos(0,5t)+
+cos(2t) w dziedzinie czasu oraz jego konsekwencje częstotliwościowe. Ponieważ y(t) = x(t)⊗h(t) (4.13),
stąd Y(jω) = X(jω)H(jω) = [X1(jω)+X2(jω)]H(jω) = X1(jω), czyli w wyniku splotu z sygnału została usunięta
składowa x2(t)
∞ ∞
1 1
X δ ( jω) = X ( jω) ⊗ ω p ∑ δ(ω − k ω p ) =
2π
(
ω p ∑ X ( jω) ⊗ δ(ω − k ω p ) = )
k =−∞ 2π k =−∞
∞
1
=
2π k = −∞
(
ω p ∑ X j ( ω − kω p ) ) (4.49)
gdzie ωp = 2π/T. W powyższym równaniu skorzystano ze znajomości widma Fouriera szeregu
poprzesuwanych impulsów Diraca (4.30), z liniowości operacji splotu (umożliwiającej przesu-
nięcie operacji sumowania) oraz z faktu, że splot sygnału (widma) z deltą Diraca jest równy
temu sygnałowi (widmu) (konsekwencja właściwości (4.23)):
+∞
f ( v ) ⊗ δ( v ) = ∫ f ( w)δ(v − w)dw = f (v )
−∞
+∞
f ( v ) ⊗ δ( v − v 0 ) = ∫ f ( w)δ(v − v0 − w)dw = f (v − v0 )
−∞
Jak widać widmo sygnału po spróbkowaniu jest równe sumie (rys. 4.11b) poprzesuwanych
widm sygnału oryginalnego (rys. 4.11a). Aby widma te nie „zlały się” i aby było możliwe
odtworzenie widma X(jω) z widma Xδ(jω), sygnał x(t) powinien mieć widmo ograniczone, tzn.
niezerowe tylko dla wybranego przedziału (przedziałów) częstotliwości. Załóżmy na początek,
że X(jω) = 0 dla |ω| ≥ ωm. Jeśli ωm ≤ ωp/2, to powyższy warunek jest spełniony i filtrując sygnał
xδ(t) idealnym filtrem dolnoprzepustowym o pulsacji granicznej (pasma przenoszenia) ωg
(rysunek 4.11c), takiej, że ωm ≤ ωg ≤ ωp−ωm, jesteśmy w stanie odfiltrować z sygnału xδ(t)
widma przesunięte X(j(ω−kω0)), k≠0 (rysunek 4.11d). Jeśli znamy ωm sygnału, to n a j n i ż s z ą
pulsacją próbkowania, nie powodującą utraty informacji „analogowej”, jest ωp = 2ωm.
Wówczas i d e a l n y filtr ma pulsację graniczną ωg = ωm. Oznaczmy przez Π(jω) transformatę
Fouriera tego filtra. Wtedy synteza sygnału za pomocą odwrotnego przekształcenia Fouriera
z odfiltrowanego Xδ (jω) określona jest wzorem:
xˆ (t ) =
2 π −1
ωp
{
F X δ ( jω) ⋅ Π ωg ( jω) } (4.50)
Iloczyn widm jest równoważny splotowi sygnałów czasowych, stąd (przy założeniach:
ωp = 2ωm, ωg = ωm):
π ∞ sin(ωm t ) ∞
sin (ωm (t − kT ) )
∑ x (kT )δ(t − kT ) ⊗
xˆ (t ) =
ωm πt = ∑ x ( kT ) ω (t − kT ) (4.51)
k = −∞ k = −∞ m
X(ω)
a)
ω
-ωmax 0 ωmax
Xp1(ω)
b)
ω
Hp1(ω)
1
c)
ω
Xp1(ω)Hp1(ω
d) )
ω
Xp2(ω)
e)
ω
Xp2(ω)Hp2(ω
)
f)
ω
Rys. 4.11. Ilustracja graficzna konsekwencji częstotliwościowych próbkowania ciągłych sygnałów dolno-
pasmowych i możliwości ich rekonstrukcji z sygnałów dyskretnych w czasie: a) widmo X(ω) sygnału
ciągłego, b) widmo Xp1(ω), sygnału ciągłego po spróbkowaniu z częstotliwością fp1 (pulsacją ωp1), taką że
fp1/2 > fmax, c) idealna charakterystyka częstotliwościowa Hp1(ω) filtra rekonstruującego o częstotliwości
granicznej fg1 = fp1/2 (pulsacji ωg1 = ωp1/2), d) poprawnie „zrekonstruowane” widmo sygnału ciągłego, czyli
iloczyn Xp1(ω)Hp1(ω), e) widmo Xp2(ω), sygnału ciągłego po spróbkowaniu z częstotliwością fp2 (pulsacją
ωp2), taką że fp2/2 < fmax, f) niepoprawnie „zrekonstruowane” widmo sygnału ciągłego, czyli iloczyn
Xp2(ω)Hp2(ω), dla częstotliwości granicznej filtra Hp2(ω) równej fg2 = fp2/2 (ωg2 = ωp2/2)
ściwy dobór pulsacji ωg i ωp dla danego ωm gwarantuje równość xˆ (t ) = x(t ) ). Ze wzoru (4.51)
widać, w jaki sposób przeprowadza się ww. odtwarzanie: przesuwa się sygnały sinc(ωmt) =
= sin(ωmt)/ωmt o czas kT, −∞ ≤ k ≤ ∞, wymnaża się je przez odpowiednie czynniki skalujące
w amplitudzie, czyli przez próbki x(kT), oraz sumuje (patrz rysunek 4.13). Jeśli ωp = 2π/T =
= 2ωm, to
96 Całkowe przekształcenie Fouriera
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Czas [s]
Rys. 4.12. Przykład funkcji rekonstruującej typu sinc, kiedy próbkowanie sygnału ciągłego (analogowego)
jest przeprowadzane z częstotliwością fpr = 10 herców
0.5
-0.5
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Czas [s]
Rys. 4.13. Przykład rekonstrukcji ciągłej sinusoidy (linia pogrubiona) o częstotliwości 1 herca na podstawie
jej próbek (punkty „•”), pobranych z częstotliwością 10 herców. Wykorzystano funkcję rekonstruującą typu
sinc z rysunku 4.12. Sygnał „zrekonstruowany” jest sumą poprzesuwanych funkcji typu sinc, wziętych
z wagami równymi wartościom próbek „•”
ωp
sin (t − kT ) sin π (t − kT )
sin (ωm (t − kT ) ) 2 = T
sinc( ωm (t − kT )) = = (4.53)
ωm (t − kT ) ωp π
(t − kT ) (t − kT )
2 T
i dla t = mT, m ≠ k, mamy
sin (π(m − k ) )
sinc(ωm (mT − kT ) ) = =0 (4.54)
π( m − k )
Dla k = m funkcja przyjmuje wartość 1. Wynika stąd, że funkcja rekonstruująca sinc() przesu-
nięta do punktu czasowego kT i wymnożona przez x(kT) w punkcie tym ma wartość x(kT),
a w pozostałych chwilach czasowych próbkowania − zeruje się. Ponieważ jest tak dla wszy-
stkich wartości przesunięć, więc sygnał xˆ (t ) w chwilach czasowyh kT ma dokładnie takie same
wartości jak sygnał x(t), czyli x(kT), natomiast „rekonstrukcja” dotyczy przedziałów pomiędzy
chwilami próbkowania.
W przypadku kiedy częstotliwość próbkowania jest za mała (ωp < 2ωm) wówczas poprzesuwa-
ne „kopie” widma oryginalnego X(jω) „zlewają się” (aliasing) i nie jest możliwe odzyskanie
X(jω) z sumy (4.49) stosując filtrację. Właśnie taka sytuacja jest przedstawiona na rysunkach
4.11e oraz 4.11f.
Całkowe przekształcenie Fouriera 97
X(ω)
a)
ω
-2ω p -ω p 0 ωp 2ω p
Xp(ω)
b)
ω
-2ω p -ω p 0 ωp 2ω p
Hp(ω)
1
c)
ω
Hp(ω)Xp(ω)
d)
ω
-2ω p -ω p 0 ωp 2ω p
Rys. 4.14. Ilustracja graficzna konsekwencji częstotliwościowych próbkowania ciągłych sygnałów pasmo-
wych i możliwości ich rekonstrukcji z sygnałów dyskretnych w czasie: przypadek bez inwersji częstotli-
wości
X(ω)
a)
ω
-2ω p -ω p 0 ωp 2ω p
Xp(ω)
b)
ω
-2ω p -ω p 0 ωp 2ω p
Hp(ω)Xp(ω)
c)
ω
-2ω p -ω p 0 ωp 2ω p
Rys. 4.15. Ilustracja graficzna konsekwencji częstotliwościowych próbkowania ciągłych sygnałów pasmo-
wych i możliwości ich rekonstrukcji z sygnałów dyskretnych w czasie: przypadek z inwersją częstotliwości
Całkowe przekształcenie Fouriera 99
x(t) X(ω)
ω
- ω0 ω0
w(t) W(ω)
-T T ω
xw(t)=x(t)w(t) Xw(ω)=X(ω)⊗W(ω)
-ω0 ω0
Xw(n)(ω)
xw(n)
n
ω
Rys. 4.16. Przykładowe widmo fragmentu sygnału kosinusoidalnego, „wyciętego” przez okno prostokątne
i potem spróbkowanego
W przypadku obliczeń komputerowych wartości widma można wyznaczyć jedynie dla mniej-
szego lub większego, lecz zawsze skończonego zbioru pulsacji. Ciągłe widmo „teoretyczne”
musi więc zostać spróbkowane (zdyskretyzowane), w wyniku czego otrzymuje się skończony
zbiór „prążków” widma. Prążki te są zaznaczone na rysunku 4.18 za pomocą symbolu „•”.
Zbyt rzadkie „próbkowanie” widma ciągłego może doprowadzić do dodatkowych trudności
interpretacyjnych i postawienia błędnej „diagnozy” częstotliwościowej, spowodowanej nietra-
fieniem podczas próbkowania w maksima widma.
Podsumujmy, obserwowane przez nas, zdyskretyzowane widmo sygnału jest odbiciem „ideal-
nego” (teoretycznego) widma nieskończonego sygnału ciągłego, w „krzywym zwierciadle”
niedoskonałości stosowanych metod. Wybór kształtu funkcji okna „obserwacji” i jej długości
oraz sposobu próbkowania widma mają decydujące znaczenie na to co „widzimy”.
100 Całkowe przekształcenie Fouriera
x(t)
X(ω)
t
ω
-ω0 ω0
w(t) W(ω)
-T T ω
xw(t)=x(t)w(t) Xw(ω)=X(ω)⊗W(ω)
-ω0 ω0
xw(n) Xw(n)(ω)
Rys. 4.17. Przykładowe widmo fragmentu sygnału kosinusoidalnego, „wyciętego” przez okno Hanninga
i potem spróbkowanego
Xw(n)(ω) Xw(n)(ω)
a) b)
ω ω
-ω0 ω0 -ω0 ω0
Rys. 4.18. Jeden okres widma sygnału z rysunków 4.16 i 4.17 po spróbkowaniu: a) okno prostokątne, b) ok-
no Hanninga
Całkowe przekształcenie Fouriera 101
% 1. Jeśli maksymalna częstotliwość sygnału jest dwa razy większa niż czętotliwość próbkowania,
% to z sygnału cyfrowego można dokładnie odtworzyć sygnał analogowy
% 2. Przejście z częstotliwości fps (większa) na fpn (mniejsza) i powrót, czyli odtworzenie synału
% fps/fpn = K = liczba całkowita ==> fpn=fps/K > 2
ts = 0 : dts : (N-1)*dts;
xs = sin(2*pi*fx*ts);
plot(ts,xs,'r',ts,xs,'o'); grid; title('Sygnał spróbkowany - fp STARE'); pause
% stem(xs,'b'); title('Sygnał spróbkowany - fp STARE'); pause
xn = xs( 1 : K : length(xs) );
M = length(xn);
dtn = K*dts;
tn = 0 : dtn : (M-1)*dtn;
plot(ts,xs,'r',tn,xn,'o'); grid; title('Sygnał spróbkowany - fp NOWE'); pause
plot(tn,xn,'b',tn,xn,'o'); grid; title('Sygnał spróbkowany - fp NOWE'); pause
stem(xn,'b'); title('Sygnał spróbkowany - fp NOWE'); pause
% Funkcja aproksymująca
% Aproksymacja
y = zeros(1,N);
ty = 0 : dts : (N-1)*dts;
102 Całkowe przekształcenie Fouriera
for k = 1 : M
fa1 = fa( (N)-(k-1)*K : (2*N-1)-(k-1)*K );
y1 = xn(k) * fa1;
y = y + y1;
subplot(311); plot(ty,fa1); grid; title('Kolejna funkcja aproksymująca');
subplot(312); plot(ty,y1); grid; title('Kolejny składnik sumy');
subplot(313); plot(ty,y); grid; title('Suma');
pause
end
subplot(111);
czyli odpowiedź układu na sumę wymuszeń jest równa sumie odpowiedzi na poszczególne
wymuszenia, działające osobno. Natomiast jest on niezmienny w czasie (niewrażliwy na prze-
sunięcie w czasie) kiedy dla każdego t0 mamy:
jeśli x (t ) → y (t ) , to x (t − t0 ) → y (t − t0 )
104 Układy analogowe
∞ ∞
Y(jω)=H(jω)X(jω) Y(jω)=H(jω)∆(jω)=H(jω)
Rys. 5.1. Schemat blokowy i równania liniowego układu analogowego niezmiennego w czasie: x(t) − sygnał
wejściowy, y(t) − sygnał wyjściowy, h(t) − odpowiedź impulsowa układu, δ(t) − impuls Diraca, X(jω), Y(jω),
H(jω) i ∆(jω) − transformaty Fouriera sygnałów czasowych, ∆(jω) = 1
czyli odpowiedź układu na opóźnione pobudzenie jest taka sama jak na oryginalne pobudzenie,
tylko opóźniona.
Układy LTI przetwarzają sygnały wejściowe x(t) na sygnały wyjściowe y(t) z wykorzystaniem
swojej odpowiedzi impulsowej h(t) (rysunek 5.1a):
∞
x (t ) → y (t ) = ∫ h(τ) x(t − τ)dτ (5.1)
−∞
Odpowiedzią impulsową h(t) układu nazywamy, jak sama nazwa wskazuje, jego odpowiedź na
impuls Diraca, czyli sygnał δ(t) (rysunek 5.1b):
∞
δ( t ) → y (t ) = ∫ h(τ)δ(t − τ)dτ = h(t ) (5.2)
−∞
Obecnie spróbujemy wyprowadzić zależność (5.1), charakterystyczną dla układów LTI. W po-
przednim rozdziale bardzo dużo uwagi poświęciliśmy sygnałowi typu impuls (delta) Diraca.
Przypomnijmy, że dla dowolnego sygnału x(t) i dowolnego τ prawdziwe było równanie (4.23):
∞
x (t ) = ∫ x( τ)δ(t − τ)dτ (5.3)
−∞
Załóżmy obecnie, że obie strony powyższego równania podajemy na wejście układu LTI.
Oczywiście, odpowiedzią układu na x(t) jest sygnał y(t), natomiast co z jego prawą stroną? Mo-
żna ją traktować jako „sumę” impulsów Diraca δ(t): opóźnionych o czas τ (czyli δ(t−τ)) i prze-
skalowanych w amplitudzie (wymnożonych przez liczbę x(τ): x(τ)δ(t−τ)). Ponieważ rozpa-
trywany układ jest n i e z m i e n n y w c z a s i e , więc jego odpowiedzią na δ(t−τ) będzie h(t−τ),
a z jego l i n i o wo ś c i wynika, że odpowiedzią na sumę sygnałów typu x(τ)δ(t−τ) będzie suma
(całka) poszczególnych odpowiedzi typu x(τ)h(t−τ). Podsumowując mamy:
δ( t ) → h ( t ) (definicja odpowiedzi impulsowej)
δ( t − τ ) → h ( t − τ ) (opóźnienie o czas τ, niezmienność w czasie)
x ( τ ) δ( t − τ ) → x ( τ ) h ( t − τ ) (skalowanie przez współczynnik x(τ))
+∞ +∞
i ostatecznie:
∞
y (t ) = ∫ x(τ)h(t − τ)dτ ⇔ y ( t ) = x (t ) ⊗ h (t ) (5.4)
−∞
czyli wyjście układu LTI jest równe splotowi jego wejścia z jego funkcją przejścia. Ciekawe!
Jeśli przez Η[.] oznaczymy funkcję przetwarzania układu LTI, to wówczas skrótowo możemy
zapisać:
∞ ∞ ∞
y (t ) = Η [ x (t )] = Η ∫ x( τ)δ(t − τ)d τ = ∫ x ( τ) Η [ δ( t − τ)] d τ = ∫ x ( τ )h(t − τ )d τ
−∞ −∞ −∞
Możliwa jest także zmiana zmiennych: ξ = t−τ (skąd: τ = t−ξ, dτ = dt−dξ = dξ, gdyż t jest usta-
lone wewnątrz całki) i w konsekwencji zmiana kolejności sygnałów w całce splotowej:
∞ ∞ ∞
y (t ) = ∫ x(τ)h(t − τ)dτ = ∫ x(t − ξ)h(ξ)dξ = ∫ h(τ) x(t − τ)dτ ⇔ y ( t ) = h ( t ) ⊗ x (t ) (5.5)
−∞ −∞ −∞
Splot dwóch sygnałów jest równoważny sekwencji następujących operacji: 1) odwróć w czasie
jeden z sygnałów (x(τ) → x(−τ)), 2) przesuń go w czasie o czas t (x(−τ) → x(t−τ)), 3) wymnóż
oba sygnały (h(τ)x(t−τ)), 4) wykonaj operację całkowania iloczynu względem zmiennej τ.
W wyniku otrzymasz wartość sygnału y(.) w chwili t. Graficzną ilustrację operacji splotu
przedstawiono w podrozdziale 1.3.6 na rysunkach 1.7 i 1.9.
Oczywiście, następnym pytaniem jest co z tego wynika dla nas, „projektantów” układów ana-
logowych i w jaki sposób należy dobierać odpowiedź impulsową h(t) układu LTI? Nic
prostszego. Z właściwości splotu przekształcenia Fouriera (4.13) wynika, że splotowi sygnałów
w dziedzinie czasu odpowiada iloczyn ich widm Fouriera w dziedzinie częstotliwości:
∞ ∞
y (t ) = ∫ x(τ)h(t − τ)dτ = ∫ h(τ) x(t − τ)dτ ⇔ Y ( jω) = X ( jω) H ( jω) (5.6)
−∞ −∞
Układ należy więc zaprojektować tak, aby miał odpowiedź impulsową h(t), charakteryzującą
się wymaganym widmem H(jω), tzn. równym jeden dla pulsacji przepuszczanych (przenoszo-
nych) przez układ oraz równym zero dla pulsacji usuwanych (tłumionych). Oczywiście naj-
prościej jest zadać pożądane H(jω), a h(t) obliczyć z H(jω) za pomocą odwrotnego przekształ-
cenia Fouriera, tak jak to robiliśmy w rozdziale poprzednim wyznaczając odpowiedź impulso-
wą h(t) filtra rekonstruującego sygnał analogowy z jego próbek. Na rysunku 1.10 przed-
stawiono interpretację częstotliwościową splotu sygnałów z rysunku 1.9. Jak widać w wyniku
tej operacji w sygnale y(t) zmniejszono „zawartość” składowej sinusoidalnej o częstotliwości
8 herców.
Ze wzoru (5.6) wynika, że filtracja polega na modyfikacji widma sygnału X(jω) za pomocą
H(jω). Obecnie w celach poglądowych załóżmy, że na wejście układu podajemy sygnał harmo-
niczny x(t) = exp(jωt) i interesujemy się jego wyjściem. Zmieniając pulsację ω jesteśmy w sta-
nie przebadać zachowanie się układu dla różnych interesujących nas zakresów częstotliwości.
Oto co otrzymujemy:
∞ ∞ ∞
jω( t −τ ) − jωτ
y (t ) = ∫ h ( τ) x ( t − τ ) d τ = ∫ h ( τ ) e d τ = ∫ h ( τ)e d τ e jωt = H ( jω)e jωt (5.7)
−∞ −∞ −∞
106 Układy analogowe
Sygnał wyjściowy jest równy sygnałowi wejściowemu, pomnożonemu przez konkretną (jedną)
liczbę zespoloną H(jω). Liczbę tę można przedstawić we współrzędnych biegunowych jako
promień i kąt, czyli moduł M(ω) = |H(jω)| i fazę Φ(ω) = )H(jω) = arctg(Im(H(jω))/Re(H(jω)),
gdzie Im(.) oznacza część urojoną, a Re(.) − część rzeczywistą liczby zespolonej:
H ( jω) = M ( ω)e jΦ ( ω) , M ( ω) = H ( jω) , Φ (ω) = )H ( jω) = arctg [ Im( H ( jω) / Re( H ( jω)]
(5.8)
Wówczas z (5.7) otrzymujemy:
{ }
y (t ) = M (ω)e jΦ ( ω) e jωt = M (ω)e j ( ωt +Φ ( ω)) (5.9)
Jak widać M(ω) wpływa na amplitudę sygnału wyjściowego, Φ(ω) przesuwa go zaś w fazie.
Z tego powodu zbiór wszystkich wartości M(ω) dla różnych pulsacji ω nazywa się charaktery-
styką amplitudowo-częstotliwościową układu analogowego, a Φ(ω) − jego charakterystyką fa-
zowo-częstotliwościową. Samo H(jω) często nazywa się odpowiedzią częstotliwościową ukła-
du. Na rysunku 5.2a zostały przedstawione różne typy charakterystyk amplitudowo-często-
tliwościowych M(ω): dolnoprzepustowa LP (ang. LowPass), górnoprzepustowa HP (ang.
HighPass), pasmowoprzepustowa BP (ang. BandPass) i pasmowozaporowa BS (ang. Band-
Stop). Na rysunku 5.2b pokazano natomiast dwie przykładowe charakterystyki fazowo-często-
tliwościowe Φ(ω): liniową (L) i nieliniową (NL).
Φ(ω) ω
M(ω)
BP
LP HP
BS L
NL
ω
y ( t ) = M ( ω1 ) e jω1 ( t − α) + M ( ω2 )e jω 2 ( t − α) (5.10b)
Parametrami układu jest liczba pochodnych wyjścia (rząd równania różniczkowego N), liczba
pochodnych wejścia (rząd równania różniczkowego M) oraz wartości współczynników an i bm,
n = 0, 1, ..., N i m = 0, 1, ..., M. Załóżmy, że rozpatrujemy układy, w których wartości współ-
czynników an i bm są rzeczywiste. Projektowanie układu sprowadza się do przyjęcia konkret-
nych wartości dla wszystkich parametrów. Kryterium doboru tych wartości stanowi wymagana
(pożądana) charakterystyka częstotliwościowa układu. Jeśli tak, to trzeba umieć interpretować
równanie (5.12) w dziedzinie częstotliwości. Z pomocą przychodzi nam tutaj właściwość po-
chodnej przekształcenia Fouriera (rozdz. 4.2). Transformując obie strony równania (5.12) i ko-
rzystając z tej właściwości otrzymujemy:
( a N ( jω) N + aN −1 ( jω)N −1 + ... + a1( jω)1 + a0 )Y ( jω) = ( bM ( jω)M + bM −1( jω)M −1 + ... + b1 ( jω)1 + b0 ) X ( jω)
N M
∑ a ( jω) Y ( jω) = ∑ b
n =0
n
n
m=0
m ( jω) m X ( jω) (5.13)
skąd:
M
M
Y ( jω) bM ( jω) + bM −1 ( jω) M −1
+ ... + b1 ( jω) + b0 1 ∑ bm ( jω) m
m=0
H ( jω) = = −
= (5.14)
X ( jω) a N ( jω) + a N −1 ( jω)
N N 1
+ ... + a1 ( jω)1 + a 0 N
∑ an ( jω) n
n =0
Oczywiście wynikowa odpowiedź impulsowa h(t) układu opisanego równaniem (5.12) jest
równa odwrotnemu przekształceniu Fouriera z H(jω) (5.14):
gdzie z1, z2, ..., zM oznaczają miejsca zerowe (w ogólności liczby zespolone, parami sprzężone)
wielomianu licznika zmiennej jω, a p1, p2, ..., pN − miejsca zerowe (liczby zespolone, także
parami sprzężone) wielomianu mianownika tej zmiennej. Równanie (5.16) można z kolei
przedstawić w postaci bardziej „zwartej” jako:
M
bM ∏ ( jω − zm )
Y ( jω) m =1
H ( jω) = = (5.17)
X ( jω) N
a N ∏ ( jω − pn )
n =1
gdzie dla konkretnego układu liczby zespolone z1, z2, ..., zM, p1, p2, ..., pN są stałe, pulsacja
ω jest zaś zmienna. Aby wyzerować odpowiedź częstotliwościową H(jω) dla wybranej pulsacji
ω, należy spowodować, aby jedno z wyrażeń (jω−zm) było r ó wn e z e r o dla tej pulsacji, czyli
aby jedno z zer wielomianu licznika było równe zm = jω. Odwrotnie, aby układ wzmacniał
Układy analogowe 109
sygnał wejściowy dla wybranej pulsacji ω, należy spowodować, aby jedno z wyrażeń (jω−pn)
było b l i s k i e z e r u dla tej pulsacji, czyli aby jedno z zer wielomianu mianownika pn było
prawie równe jω.
Wyznaczenie charakterystyki częstotliwościowej dowolnego, analogowego układu LTI spro-
wadza się do obliczenia wartości odpowiedzi częstotliwościowej H(jω) (liczby zespolonej
o module M(ω) i fazie Φ(ω)) dla wybranych wartości pulsacji ω. Ponieważ dla zadanego ω,
(jω−zm) i (jω−pn) są konkretnymi liczbami zespolonymi, oznaczmy je w następujący sposób:
jω − z m = Bm e jθ m , jω − p n = An e jϕ n (5.18)
gdzie
Bm = jω − zm , An = jω − pn , θm = ) ( jω − zm ) , ϕn = ) ( jω − zn ) (5.19)
W (5.19) |.| oznacza moduł liczby zespolonej, a )(.) jej kąt. Wówczas
M M
bM ∏ Bm e jθ m
B ( jω)
bM ∏ Bm M N
H ( jω) = M ( ω)e jΦ ( ω) = m =1
N
=
A( jω)
, M ( ω) = m =1
N
, Φ ( ω) = ∑ θm − ∑ ϕ n
a N ∏ An e jϕ n a N ∏ An m =1 n =1
n =1 n =1
(5.20)
Aby sprawdzić charakterystykę częstotliwościową zaprojektowanego układu należy przesuwać
się z częstotliwością wzdłuż osi urojonej i dla każdego jω (ω jest zmienne) obliczyć wartości
Bm, An, θm, ϕn, n = 0, 1, ..., N i m = 0, 1, ..., M, czyli liczby zespolone (jω−zm) i (jω−pn) oraz
ich moduły (odległości zer licznika i mianownika transmitancji H(jω) od punktu jω) i kąty,
a następnie skorzystać z wzorów (5.20).
Ilustracja graficzna opisanej powyżej metodologii projektowania układów analogowych jest
przedstawiona na rysunku 5.4. Zera {z1, z2, ..., zM} i bieguny {p1, p2, ..., pN} transmitancji H(jω)
są liczbami należącymi do przestrzeni liczb zespolonych s. Przy założeniu, że współczynniki
wielomianów transmitancji {an, n = 0, 1, ..., N} i {bm, m = 0, 1, ..., M} są rzeczywiste, wystę-
pują one zawsze w parach sprzężonych. Zera zk, oznaczone na rysunku przez „•”, mogą leżeć
w dowolnym punkcie przestrzeni s, natomiast bieguny pk, reprezentowane symbolem „³”, ze
względu na stabilność układu powinny leżeć tylko w lewej półpłaszczyźnie tej przestrzeni.
Zero zk = jω0 leżące na osi urojonej, zeruje charakterystykę amplitudowo-częstotliwościową
układu dla pulsacji ω = ω0, natomiast biegun pk = σk+jωk powoduje tym większy wzrost wzmo-
cnienia układu dla pulsacji ωk, im leży bliżej osi urojonej s = jω, czyli im jest mniejsze σk.
Pewnego komentarza wymaga jeszcze interpretacja obserwowanej charakterystyki fazowej
układu, czyli kształt Φ(ω). Jak już było wspomniane w poprzednim podrozdziale z powodów
obliczeniowych (zastosowanie funkcji arctg(.)) w charakterystyce tej są widoczne skoki o +2π
radianów i z tego powodu wymaga ona zastosowania procedury „uciąglenia” (unwrap w języ-
ku Matlab). Jednak w charakterystyce fazowej są obserwowane także skoki o +π, które zazwy-
czaj wywołują dużą konsternację wśród mniej doświadczonych projektantów. Jakie jest źródło
ich pochodzenia? Załóżmy, że mamy zero leżące na osi zespolonej, np. w punkcie jω0,
wówczas dla pulsacji ω = ω0−∆ω nieznacznie mniejszej od ω0 mamy jω−jω0 = −j∆ω, dla
pulsacji ω = ω0+∆ω otrzymujemy zaś jω−jω0 = j∆ω. Jak widać są to liczby zespolone mające
tylko część urojoną i mające przeciwny znak, czyli różniące się właśnie o +π.
110 Układy analogowe
a) Im(s) s b)
Im(s) s
z1 z1
z2 z2
z3 p1
p1 Re(s)
p2 Re(s) p2
p2 *
p 1* *
z3 p1 *
z 2* z 2*
z 1* z 1*
s = jω s = jω
c) jω s d) jω s
z1
jω0 jω0
p1
σ r=A1 σ
ϕ1
p1 * p1 *
z1*
Rys. 5.4. Ilustracja graficzna metodologii projektowania układów analogowych: a) „dozwolone” położenie
zer „z” i biegunów „³” transmitancji układu (bieguny tylko w lewej półpłaszczyźnie), b) przykładowe
położenie zer i biegunów dla układu dolnoprzepustowego (zera − „zerują”, bieguny − „podbijają” od-
powiednie przedziały odpowiedzi częstotliwościowej układu), c), d) przykładowa konstrukcja wektorów
jω0−zk i jω0−pk (wzór (5.18)), wpływających na kształt H(jω) zgodnie z równaniem (5.20). Oznaczenie:
s = Re(s)+jIm(s) = = σ+jω
Dla dociekliwych. Obecnie postaramy się uzasadnić przytoczone warunki stabilności układów
analogowych. Załóżmy, że transmitancję (5.16) można przedstawić jako sumę transmitancji
prostych z jednym biegunem:
bM c1 c2 ck cN
H ( jω) = + + ... + + ... + (5.21)
aN jω − p1 jω − p2 jω − pk jω − p N
0 dla t < 0
hk (t ) = pk t (5.22)
ck e dla t ≥ 0
0 dla t < 0
hk (t ) = ( σk + jωk ) t
(5.25)
ck e dla t ≥ 0
Ponieważ bieguny zespolone występują w parach sprzężonych, stąd mamy dla nich (dla t≥0):
v
hk (t ) + hk(*) (t ) = ck e( σk + jωk ) t + ck* e( σk − jωk ) t = 2 uk2 + vk2 ⋅ eσk t ⋅ cos ( ωk t + βk ) , β k = arctg
u
(5.28)
112 Układy analogowe
czyli odpowiedź impulsowa jest ograniczona, chociaż oscylacyjna dla ωk≠0, a układ jest okre-
ślany jako stabilny.
P r z y p a d e k 3 − σk > 0. We wzorach (5.27), (5.28) czynnik exp(σkt) rośnie w sposób nie-
skończony, więc odpowiedź impulsowa jest nieograniczona a układ niestabilny.
Podsumowując można powiedzieć, że dla biegunów jednokrotnych układ jest stabilny, jeśli
bieguny te leżą w lewej półpłaszczyźnie zmiennej zespolonej lub na osi urojonej. Jeśli do-
puścimy zaś możliwość występowania biegunów wi e l o k r o t n y c h , bieguny te mogą leżeć
wy ł ą c z n i e w l e we j p ó ł p ł a s z c z y ź n i e . Wynika to z faktu, że w przypadku występowa-
nia biegunów wielokrotnych transmitancja H(jω) nie może być przedstawiona za pomocą wzo-
ru (5.21), tylko w następującej postaci:
bM ( jω − z1 )( jω − z2 )...( jω − zM ) bM K kK ckn
H ( jω) = k k k
= ∑ ∑ (5.30)
a N ( jω − p1 ) ( jω − p2 ) ...( jω − pK )
1 2 K a N k =1 n =1 ( jω − pk )n
przykładowo:
jω − z1 c11 c12
H ( jω) = = + (5.31)
( jω − p1 ) 2 jω − p1 ( jω − p1 ) 2
( )
hk (t ) = ( ck 1 + ck 2 t ) e( σk + jωk ) t + ck*1 + ck*2 t e( σk − jωk ) t (5.34)
która jest ograniczona tylko dla σk < 0, gdyż tylko wówczas ck(*)2 te σk t asymptotycznie maleje
do zera kiedy czas dąży do nieskończoności.
∞
− st
X ( s) = ∫ x ( t )e dt (5.35)
−∞
Dla sygnałów przyczynowych, czyli takich, że x(t) = 0 dla t < 0, transformacja ta upraszcza się
do jednostronnej transformacji Laplace’a, zdefiniowanej jako:
∞
X ( s ) = ∫ x (t )e − st dt (5.36)
0
gdzie s = σ+jω jest zmienną zespoloną, mającą część rzeczywistą i urojoną. Synteza sygnału na
podstawie znajomości jego X(s) jest dana wzorem:
c + jω
1
2πj c −∫j∞
x (t ) = X ( s )e st ds (5.37)
gdzie (5.37) oznacza całkę w płaszczyźnie zespolonej i c jest liczbą rzeczywistą, leżącą w ob-
szarze bezwzględnej zbieżności X(s) (5.36). Dla s = jω przekształcenie Laplace’a przechodzi
w jednostronne przekształcenie Fouriera:
∞
X ( jω) = ∫ x (t )e − jωt dt (5.38)
0
1 c +∞
z ( t ) = x (t ) y ( t ) ↔ Z ( s ) = ∫ X (r )Y ( s − r ) dr
2πj c −∞
(5.40)
dx(t )
↔ sX ( s ) − x (0+ ) (5.41)
dt
d n x(t )
= s n X ( s ) − s n −1 x (0+ ) − s n − 2 x (1) (0+ ) − ... − x ( n −1) (0+ ) (5.42)
dt n
gdzie x(i)(0+), i = 1, 2, 3, ..., n−1, oznacza i-tą pochodną sygnału x(.) w chwili czasowej 0+.
Zakładając przyczynowość sygnałów x(t) i y(t), występujących w równaniu (5.12), oraz zerowe
warunki początkowe (pochodne) w chwili czasowej 0+, otrzymujemy wzór na transmitancję
Laplace’a układu H(s):
1
4 e − at s+a
1
5 te − at ( s + a )2
t n −1e − at 1
6
( n − 1)! ( s + a )n
7
1
b−a
(
e − at − e −bt , a ≠ b ) 1
( s + a )( s + b)
8 −
1
b−a
(
ae − at − be− bt , a ≠ b ) s
( s + a )( s + b)
ω
9 sin ωt
s + ω2
2
s
10 cos ωt
s + ω2
2
ω
11 e − at sin ωt
( s + a ) 2 + ω2
s+a
12 e − at cos ωt ( s + a ) 2 + ω2
s+a
13 a 2 + ω2 ω
sin(ωt + ϕ), ϕ = arctg s 2 + ω2
ω a
14
ω0
1 − ξ2
(
e −ξω0t sin ω0 1 − ξ2 t , ) ξ <1
ω02
s 2 + 2ξω0 s + ω02
M
bM ∏ ( s − zm )
Y ( s) m =1
H ( s) = = N
(5.43b)
X ( s)
a N ∏ ( s − pn )
n =1
analogiczny do wzoru (5.16). Jednak nie należy zapominać, że zmienna s = σ+jω jest teraz
zmienną zespoloną, mającą także część rzeczywistą. Jednak aby uzyskać interpretację często-
tliwościową H(s) należy zastosować podstawienie s = jω, sprowadzające przekształcenie
(transformację H(s)) Laplace’a w przekształcenie Fouriera (transmitancję H(jω)).
Układy analogowe 115
Dla dociekliwych. W przypadku układów LTI bardzo często stosuje się transformację Lapla-
ce’a i związany z nią rachunek operatorowy do obliczenia odpowiedzi układu na zadane po-
budzenie. Należy wówczas wyznaczyć transformatę Laplace’a X(s) sygnału wejściowego x(t)
i transmitancję układu H(s). Wtedy transformata Laplace’a sygnału wyjściowego z układu jest
równa Y(s) = H(s)X(s), a sam sygnał wyjściowy y(t) jest wynikiem odwrotnej transformacji La-
place’a z Y(s), czyli y(t) = Laplace−1(Y(s)). W ogólnym przypadku Y(s) jest ilorazem dwóch
wielomianów zmiennej zespolonej s. Iloraz ten można przedstawić jako sumę składników
prostszych Yi(s), a następnie znaleźć w tabelach sygnały czasowe yi(t), odpowiadające poszcze-
gólnym składnikom. Oczywiście w takim przypadku poszukiwany sygnał y(t) jest równy sumie
wszystkich sygnałów yi(t). W ten sposób można uniknąć konieczności analitycznego obliczenia
odwrotnego przekształcenia Laplace’a. W celu wyznaczenia transmitancji H(s) układów elek-
trycznych z elementami pasywnymi R, L, C (odpowiednio: rezystancja − opór, indukcyjność
i pojemność) stosuje się następujące podstawienia:
1
R → R, L → sL, C → (5.44)
sC
Obecnie tylko w celu ilustracji powyższych słów, przedstawimy dwa proste przykłady wyko-
rzystania rachunku operatorowego do analizy analogowych układów elektrycznych.
a) R R
1
x(t) C y(t) X(s) Y(s)
sC
b) R L R sL
1
x(t) C y(t) X(s) Y(s)
sC
1 1
sC 1 LC ω02
H ( s) = = = = 2
1 sRC + s LC + 1 s 2 + s R + 1
2
s + 2ξω0 s + ω20
R + sL +
sC L LC
ω0 1 R/L
h (t ) = e − ξω0 t sin ω0 1 − ξ 2 t , ω0 = , ξ= , t≥0
1− ξ 2 LC 2 ω0
Przykład. W przypadku kiedy interesuje nas odpowiedź czwórnika z rysunku 5.5a na skok
jednostkowy, mamy:
1 / RC 1 A B
Y ( s) = H ( s) X ( s) = ⋅ = +
s + 1 / RC s s + 1 / RC s
gdzie
A = Y ( s )( s + 1 / RC ) = −1
s = −1 / RC
B = Y ( s)s =1
s=0
y ( t ) = Ae −t / RC + Bu( t ) = u( t )(1 − e − t / RC )
Wówczas, jeśli pulsacja zwiększy się 10 razy (czyli o dekadę), to każde zero transmitancji spo-
woduje przyrost M(ω) o 20 dB, a każdy biegun transmitancji − jej spadek o 20 dB. Ogólnie
możemy stwierdzić, że każde zero zm = σm+jωm powoduje wzrost nachylenia charakterystyki
o 20 dB na dekadę dla ω >> ωm, a każdy biegun pn = σn+jωn − zmniejszenie jej nachylenia
o 20 dB na dekadę dla ω >> ωm. Własność ta jest graficznie przedstawiona na rysunku 5.6b. Po
Układy analogowe 117
każdym zerze nachylenie M(ω) zwiększa się o 20 dB/dekadę, po każdym biegunie zaś maleje
o 20 dB/dekadę.
Jednak aby po wymnożeniu współczynniki wielomianu licznika i mianownika transmitancji
(5.43) były rzeczywiste, zera zm i bieguny pn transmitancji muszą występować w parach sprzę-
żonych, tzn. jeśli zerem wielomianu licznika transmitancji jest liczba zespolona zm, to zerem
tego wielomianu musi być także jej sprzężenie (zm)*. Wówczas mamy bowiem:
*
( s − z m )( s − z m ) = (s − (σ m + jωm ))(s − (σ m − jωm )) = s 2 − 2σ m s + (σ m
2 2
+ ωm ) (5.47)
a) 20log10M(ω) [dB]
0
-20
-40
-60
0.001 0.01 0.1 1 10 100 1000
ω [rd/s]
b) 20log10M(ω) [dB]
0 dB/dek
80 +20 dB/dek -20 dB/dek
60
+40 dB/dek -40 dB/dek
40
20 +20 dB/dek
0 -60 dB/dek
-20
log10 ω
-40
z1 z2 p1 p2 p3 p4 p5
Rys. 5.6. Ilustracja wpływu pulsacji zer zm i biegunów pn na nachylenie charakterystyki amplitudowej M(ω)
układów analogowych: a) charakterystyka M(ω) układu o transmitancji H(s) = 1/(s+1), mającego tylko poje-
dynczy biegun rzeczywisty p = −1, b) orientacyjna, p r z y b l i ż o n a l i n i a m i p r o s t y m i charakterystyka
M(ω) układu o transmitancji H(s) z wieloma jednokrotnymi zerami i biegunami zespolonymi, nie wystę-
pującymi w parach sprzężonych (transmitancja o współczynnikach zespolonych). „z” i „³” oznaczają
wartości części urojonych zer i biegunów transmitancji
118 Układy analogowe
Ponieważ zależności (5.47), (5.49) są prawdziwe także dla sprzężonych biegunów pn i (pn)*, na
ich podstawie możemy stwierdzić, że w przypadku transmitancji o współczynnikach rzeczy-
wistych każde sprzężone zero zwiększa nachylenie charakterystyki M(ω) o 40 decybeli na
dekadę, a każdy sprzężony biegun zmniejsza je o 40 decybeli na dekadę.
Na rysunku 5.7 pokazano przykładowe wykresy Bodego dla czterech transmitancji, charakte-
ryzujących się następującymi wartościami zer zm = σm+jωm i biegunów pn = σn+jωn:
1) H1(jω): z1 = −1+j10, p1 = −1+j100, p2 = −1+j1000
2) H2(jω): z1 = −1+j0.1, z2 = −1+j1, p1 = −1+j10, p2 = −1+j100, p3 = −1+j1000, p4 =−1+j10000
3) H1s(jω): zera i bieguny H1(jω) oraz ich sprzężenia zespolone;
4) H2s(jω): zera i bieguny H2(jω) oraz ich sprzężenia zespolone.
Pierwsze dwie z nich mają niesprzężone zera i bieguny, dlatego nachylenie charakterystyki
M(ω) zmienia się o ±20 dB/dekadę w pulsacjach kolejnych zer ωm i biegunów ωn:
H1(jω): ωm = {10}, ωn = {100; 1000}
H2(jω): ωm = {0,1; 1}, ωn = {10; 100; 1000; 10000}
natomiast w transmitancjach H1s(jω) i H2s(jω) wszystkie zera i bieguny tworzą pary sprzężone.
Powoduje to, że w tym przypadku są obserwowane zmiany nachylenia charakterystyki M(ω)
o ±40 dB/dekadę. Charakterystyki unormowano w taki sposób, że maksymalna wartość M(ω)
jest równa 1, czyli 0 dB. W przypadku transmitancji H2(jω) i H2s(jω) po pierwszym zerze
z1 = −1±j0,1 nie obserwuje się wzrostu nachylenia charakterystyki z powodu małej wartości
części urojonej liczby zespolonej (jω−z1) w stosunku do części rzeczywistej tej liczby dla pul-
sacji ω z przedziału [0,1; 1].
-20 -20
-40
M( ω ) [dB] -40
M( ω ) [dB]
-60
-60
-80
-80
-100
-100 -120
-120 -1 0 1 2 3 4 5 -140 -1 0 1 2 3 4 5
10 10 10 10 10 10 10 10 10 10 10 10 10 10
ω [rd/s] ω [rd/s]
M( ω ) [dB]
M( ω ) [dB]
-60 -80
-80 -100
-120
-100
-140
-120 -160
-140 -1 0 1 2 3 4 5 -180 -1 0 1 2 3 4 5
10 10 10 10 10 10 10 10 10 10 10 10 10 10
ω [rd/s] ω [rd/s]
Rys. 5.7. Wykresy Bodego czterech wybranych transmitancji, charakteryzujących się następującymi war-
tościami zer „● ” (−1+jωm) i biegunów „³” (−1+jωn): H1(jω): ωm = {10}, ωn = {100; 1000}; H2(jω):
ωm = {0,1; 1}, ωn = {10; 100; 1000; 10000}; H1s(jω): ωm = {±10}, ωn = {±100; ±1000}; H2s(jω): ωm =
= {±0,1; ±1}, ωn = {±10; ±100; ±1000; ±10000}
H(s)=H1(s)+H2(s)
x(t) h1(t) y(t) x(t) y(t)
a) h(t)=h1(t)+h2(t)
h2(t)
H(s)=H1(s)H2(s)
x(t) y(t) x(t) y(t)
b) h1(t) h2(t) h(t)=∫ h1(τ)h2(t-τ)dτ
h2(t) H2(s)
Rys. 5.10. Schematy analizowanych, szeregowych układów elektrycznych: a) układRC, b) układ RLC
1
I ( jω)
U C ( jω) jωC 1
H ( jω) = = =
U ( jω) 1 1 + jωRC
R + I ( jω)
jωC
a jego odpowiedź impulsową h(t) można wyznaczyć z H(jω) metodą odwrotnego przekształ-
cenia Fouriera:
∞ ∞ ∞
1 1 1 1 1 / RC
H ( jω)e jωt dω = e jωt dω = e jωt dω
2π −∫∞ 2 π −∫∞ 1 + jωRC 2π −∫∞ 1 / RC + jω
h (t ) =
1
R + jωL + jωC I ( jω) = U ( jω)
Ponieważ tylko dla napięcia na kondensatorze mamy:
1 1
C∫
i (t )dt = uC (t ) , I ( jω) = U C ( jω)
jωC
122 Układy analogowe
20log10|H(jω)| [dB]
-10 -20
Φ(jω) [deg]
-20 -40
-30 -60
-40 -80
-50 -100
0.01 0.1 1 10 100 0.01 0.1 1 10 100
ω [rd/s] ω [rd/s]
u(t)
0.4 0.4
0.2 0.2
0 0
0 2 4 6 8 10 0 2 4 6 8 10
t [s] t [s]
Rys. 5.11. Charakterystyki częstotliwościowe i czasowe układu RC z rysunku 5.10a. Kolejno od lewej do
prawej: charakterystyka amplitudowa, fazowa, odpowiedź impulsowa oraz odpowiedź skokowa
ω0 = 1 LC , ξ = ( R / L) /(2ω0 )
otrzymujemy:
ω02 1
H ( jω) = =
( jω) + j 2ξω0 ω + ω20
2
− (ω / ω0 ) 2 + j 2ξ(ω ω0 ) + 1
i jest ona transformatą Fouriera sygnału postaci (patrz równanie (4.37) w podrozdziale 4.3):
Układy analogowe 123
20log10|H(jω)| [dB]
0 -40
Φ(jω) [deg]
-20 -80
-40 -120
-60 -160
-80 -200
0.01 0.1 1 10 100 0.01 0.1 1 10 100
ω [rd/s] ω [rd/s]
u(t)
0.2 0.75
0 0.5
-0.2 0.25
-0.4 0
0 10 20 30 40 0 10 20 30 40
t [s] t [s]
Rys. 5.12. Charakterystyki częstotliwościowe i czasowe układu RLC z rysunku 5.10b dla pulsacji drgań
własnych nietłumionych ω0 = 1 oraz stałej tłumienia ξ = 0,3. Kolejno od lewej do prawej: charakterystyka
amplitudowa, fazowa, odpowiedź impulsowa oraz odpowiedź skokowa
Pulsacja ω1 jest pulsacją drgań tłumionych, różną od ω0 dla ξ≠0. Na rysunku 5.12 są przedsta-
wione przykładowe charakterystyki częstotliwościowe oraz odpowiedzi impulsowe i skokowe
układu RLC dla pulsacji drgań własnych nietłumionych ω0 = 1 oraz stałej tłumienia równej
ξ = 0,3, a na rysunku 5.13 te same charakterystyki i odpowiedzi dla trzech wartości stałej tłu-
mienia równej ξ = 0,1; 0,3; 0,5. Należy zwrócić uwagę na fakt, że maksimum charakterystyki
amplitudowej przypada w każdym przypadku dla ω = ω1. Zgodnie z rozważaniami przeprowa-
dzonymi w rozdziale 5.4, na rysunku 5.12 obserwujemy spadek charakterystyki amplitudowej
o 40 decybeli na dekadę dla ω >> ω1.
Rachunek „transmitancyjny”, oparty na przekształceniu Fouriera, można wykorzystać do
szybkiego wyznaczenia odpowiedzi układu analogowego na zadane pobudzenie. Znając X(jω)
sygnału wejściowego x(t) oraz H(jω) odpowiedzi impulsowej układu h(t), można otrzymać
sygnał y(t) w wyniku odwrotnego przekształcenia Fouriera iloczynu Y(jω) = X(jω)H(jω), a nie
w wyniku bezpośredniego splotu sygnałów x(t) i h(t). Jeśli jednak postać Y(jω) jest typowa,
zależność funkcjonalną na y(t) można znaleźć w tabelach transformat Fouriera wybranych
sygnałów.
124 Układy analogowe
Φ(jω) [rd]
ξ = 0,3
|H(jω)| 3
ξ = 0,5 -2
ξ = 0,5
2
1 -3
0
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
ω [rd/s] ω [rd/s]
u(t)
0 0.8
-0.2 0.6
-0.4 0.4
-0.6 0.2
-0.8 0
0 10 20 30 40 0 10 20 30 40
t [s] t [s]
Rys. 5.13. Charakterystyki częstotliwościowe i odpowiedzi impulsowe układu oscylacyjnego RLC dla
trzech różnych wartości tłumienia: ξ = 0,1; 0,3; 0,5 (ω0 = 1)
Aby stłumić pulsacje mniejsze i większe od 10 rd/s, umieszczamy po jednym zerze po każdej
stronie biegunów, czyli poniżej i powyżej pulsacji 10 rd/s:
z1,2 = ± j5, z3,4 = ± j15
Większa liczba biegunów niż zer zapewnia nam zerowe wzmocnienie układu dla ω → ±∞.
W wyniku powyższych operacji otrzymujemy następującą transmitancję:
( s − j5)( s + j5)( s − j15)( s + j15)
H ( s) =
( s + 0,5 − j 9,5)( s + 0,5 + j 9,5)( s + 1 − j10)( s + 1 + j10)( s + 0,5 − j10,5)( s + 0,5 + j10,5)
Układy analogowe 125
( s + j1,2247)( s − j1,2247)
= 1,667
( s + 0,6260)( s + 0,3130 + j 0,5490)( s + 0,3130 − j 0,5490)
20 4
10 2
Φ(jω) [rd]
Imag(s)
0 0
-10 -2
-20 -4
-1 -0.5 0 0 5 10 15 20
Real(s) ω [rd/s]
2.5 20
20log10|H(jω)| [dB]
2 0
-20
1.5
|H(jω)|
-40
1
-60
0.5 -80
0 -100
0 5 10 15 20 0 5 10 15 20
ω [rd/s] ω [rd/s]
1.5 0.15
1 0.1
0.5 0.05
h(t)
u(t)
0 0
-0.5 -0.05
-1 -0.1
-1.5 -0.15
0 4 8 12 16 20 0 4 8 12 16 20
t [s] t [s]
Rys. 5.14. Charakterystyki układu z przykładu 1. Kolejno od lewej do prawej: położenie zer „z” i biegunów
„³” transmitancji, charakterystyka fazowa, charakterystyka amplitudowa w skali liniowej i logarytmicznej
(decybelowej), odpowiedź impulsowa i skokowa
czamy dodatkowo kilka zer na osi urojonej w pobliżu ω = 0: zk+1 = ±jk, k = 1, 2, 3, oraz „kom-
pensujemy” te zera biegunami: pk+1 = −1±jk, k = 1, 2, 3. Ostatecznie otrzymuje się transmitan-
cję o następującej postaci:
s ⋅ ( s + j )( s − j ) ⋅ ( s + j 2)( s − j 2) ⋅ ( s + j 3)( s − j 3)
H ( s) =
( s + 1) ⋅ ( s + 1 + j )( s + 1 − j ) ⋅ ( s + 1 + j 2)( s + 1 − j 2) ⋅ ( s + 1 + j 3)( s + 1 − j 3)
Projektowanie filtrów metodą „zer i biegunów” jest intuicyjnie bardzo proste, ale dosyć czaso-
chłonne, gdyż realizuje się je wielokrotnie powtarzając próby. Uzyskanie tym sposobem fil-
trów, spełniających bardzo ostre wymagania projektowe (duża liniowość pasma przepusto-
Układy analogowe 127
1.5
1
0.5
Imag(s)
0
-0.5
-1
-1.5
-0.8 -0.6 -0.4 -0.2 0 0.2
Real(s)
1 0
20log10|H(jω)| [dB]
0.8
0.6 -20
|H(jω)|
0.4
-40
0.2
0 -60
0 1 2 3 4 5 0 1 2 3 4 5
ω [rd/s] ω [rd/s]
4 0
2 -1
Φ(jω) [rd]
Φ(jω) [rd]
0 -2
-2 -3
-4 -4
0 1 2 3 4 5 0 1 2 3 4 5
ω [rd/s] ω [rd/s]
0.25 1.2
0.2 1
0.15 0.8
h(t)
u(t)
0.1 0.6
0.05 0.4
0 0.2
-0.05 0
0 5 10 15 20 25 0 5 10 15 20 25
t [s] t [s]
Rys. 5.15. Charakterystyki układu z przykładu 2. Kolejno od lewej do prawej: położenie zer „z” i biegunów
„³” transmitancji, charakterystyka amplitudowa w skali liniowej i decybelowej, charakterystyka fazowa
(bez oraz z funkcją unwrap()), odpowiedź impulsowa i skokowa
128 Układy analogowe
3
2
1
Imag(s)
0
-1
-2
-3
-1 -0.8 -0.6 -0.4 -0.2 0
Real(s)
1 0
20log10|H(jω)| [dB]
0.8 -10
0.6
|H(jω)|
-20
0.4 -30
0.2 -40
0 -50
0 4 8 12 16 20 0 4 8 12 16 20
ω [rd/s] ω [rd/s]
4 4
2 2
Φ(jω) [rd]
Φ(jω) [rd]
0
0
-2
-2 -4
-4 -6
0 4 8 12 16 20 0 4 8 12 16 20
ω [rd/s] ω [rd/s]
2 1
0 0.8
0.6
-2
h(t)
u(t)
0.4
-4
0.2
-6 0
-8 -0.2
0 1 2 3 4 5 0 1 2 3 4 5
t [s] t [s]
Rys. 5.16. Charakterystyki układu z przykładu 3. Kolejno od lewej do prawej: położenie zer „z” i biegunów
„³” transmitancji, charakterystyka amplitudowa w skali liniowej i decybelowej, charakterystyka fazowa
(bez oraz z funkcją unwrap()), odpowiedź impulsowa i skokowa
Układy analogowe 129
wego, duże tłumienie w paśmie zaporowym, duża stromość zboczy charakterystyki amplitu
dowo-częstotliwościowej filtra), jest trudne i wymaga od projektanta doświadczenia. W na-
stępnym rozdziale poznamy znane, inżynierskie metody projektowania filtrów analogowych.
„Odczarujemy” w nim w pewnym stopniu magię alokacji zer i biegunów transmitancji układów
analogowych.
% ================================================================
% Przykład 1: projekt filtra pasmowoprzepustowego o wpass1 = 9.5 rd, wpass2 = 10.5 rd
% ================================================================
if (przyklad==1)
z1 = 5; z2 = 15; % ZERA na osi urojonej
z = j*[ -z2, -z1, z1, z2 ]; %
odl = 0.5; p1 = 9.5; p2 = 10.5; % BIEGUNY w pobliżu osi urojonej
p = [ -odl-j*p2, -odl-j*p1, -odl+j*p1, -odl+j*p2 ];%
WMAX=20; TMAX=20; % max pulsacja, max czas obserwacji
end
% ================================================
% Przykład 2: znajdowanie zer i biegunów zadanej transmitancji
% ================================================
if (przyklad==2)
b=[ 0.66667 0 1 ]; % współczynniki licznika transmitancji
a=[ 4.0001 5.0081 3.1650 1 ]; % współczynniki mianownika transmitancji
[z,p,wzm] = tf2zp(b,a); % współczynniki wielomianów -> zera wielomianów
z = z'; p = p'; % wektor pionowy -> wektor poziomy
WMAX=5; TMAX=25; % max pulsacja, max czas obserwacji
end
% ====================================
% Przykład 3: projekt filtra górnoprzepustowego
% ====================================
if (przyklad==3)
z1 = 0; % ZERA na osi urojonej
z2 = 0+j*1; z3 = 0-j*1; %
z4 = 0+j*2; z5 = 0-j*2; %
z6 = 0+j*3; z7 = 0-j*3; %
z = [ z1 z2 z3 z4 z5 z6 z7 ]; %
p1 = -1; % BIEGUNY w pobliżu osi urojonej
p2 = -1+j*1; p3 = -1-j*1; %
p4 = -1+j*2; p5 = -1-j*2; %
p6 = -1+j*3; p7 = -1-j*3; %
p = [ p1 p2 p3 p4 p5 p6 p7 ]; %
WMAX=20; TMAX=5; % max pulsacja, max czas obserwacji
end
130 Układy analogowe
% ===============================
% CZEŚĆ WSPÓLNA - prezentacja wyników
% ===============================
% Odpowiedź impulsowa
tracyjne takiego układu zależą od geometrii elektrod obu przetworników, nadawczego i od-
biorczego.
Zagadnienie projektowania transmitancji H(s) (5.43) (czyli dobór jej zer zm i biegunów zn), ta-
kiej aby iloczyn H(jω)H(−jω) był równy zadanemu |H(jω)|2, nosi nazwę faktoryzacji widmo-
wej.
MLP(ω) LP
1+δp
1
1-δp
δs
0 ωp ωs ω [rd⋅Hz]
0 fp fs f [Hz]
MLP(ω) LP MHP(ω) HP
1+δp 1+δp
1 1
1-δp 1-δp
δs δs
0 ωp ωs ω 0 ωs ωp ω
MBP(ω) BP MBS(ω) BS
1+δp 1+δp
1 1
1-δp 1-δp
δs δs
M(ω) [dB]
0
-10
-20
-30
-40
-50 f [MHz]
24 26 28 30 32 34 36 38 40 42 44
i wówczas mówimy, że filtr tłumi sygnał, w naszym przykładzie odpowiednio: 3 dB, 20 dB,
40 dB, 60 dB, 80 dB.
W ogólności do przeliczenia na decybele stosunku kwadratów (mocy) dwóch wielkości A i B
(np. napięć, temperatur, prędkości) stosuje się następujący wzór:
A2
X dB = 10log10
B2
( )
= 10log10 X 2 (6.7a)
a)
1 1 0
20log10|H(jω)| [dB]
0.8 -20
0.5
0.6 -40
Imag(s)
|H(jω)|
0
0.4 -60
-0.5 0.2 -80
-1 0 -100
-1 -0.8 -0.6 -0.4 -0.2 0 0 1 2 3 4 5 0 1 2 3 4 5
Real(s) ω [rd/s] ω [rd/s]
b)
1 1 0
20log10|H(jω)| [dB]
0.8 -20
0.5
0.6 -40
Imag(s)
|H(jω)|
0
0.4 -60
-0.5 0.2 -80
-1 0 -100
-1 -0.8 -0.6 -0.4 -0.2 0 0 1 2 3 4 5 0 1 2 3 4 5
Real(s) ω [rd/s] ω [rd/s]
c)
4 1 0
20log10|H(jω)| [dB]
0.8 -20
2
0.6 -40
Imag(s)
|H(jω)|
0
0.4 -60
-2 0.2 -80
-4 0 -100
-1.6 -1.2 -0.8 -0.4 0 0 1 2 3 4 5 6 0 1 2 3 4 5 6
Real(s) ω [rd/s] ω [rd/s]
d)
3 1 0
20log10|H(jω)| [dB]
2 0.8 -20
1 0.6 -40
Imag(s)
|H(jω)|
0
0.4 -60
-1
-2 0.2 -80
-3 0 -100
-0.4 -0.3 -0.2 -0.1 0 0 1 2 3 4 5 6 0 1 2 3 4 5 6
Real(s) ω [rd/s] ω [rd/s]
Rys. 6.2. Orientacyjny rozkład zer „z” i biegunów „³” oraz kształt odpowiedzi częstotliwościowej (w
skali liniowej i logarytmicznej) dolnoprzepustowego filtra prototypowego: a) Butterwortha, b) Czebyszewa
typu I, c) Czebyszewa typu II, d) eliptycznego (uwaga: oryginalny filtr prototypowy LP Czebyszewa typu II
ma pulsację ωs = 1; u nas przeskalowano ją na ωs = 2, tak aby wszystkie filtry spełniały identyczne wymaga-
nia: ωpass = 1 rd/s, ωstop = 2 rd/s, Apass = 3 dB, Astop = 40 dB)
Analogowe filtry Butterwortha i Czebyszewa 137
0 0
20log10|H(jω)| [dB]
20log10|H(jω)| [dB]
-20 -20
-40 -40
-60 -60
-80 -80
-100 -100
10 100 1000 10000 100000 10 100 1000 10000 100000
f [Hz] f [Hz]
0 6
5
-2 4
Φ(jω) [rd]
Φ(jω) [rd]
3
-4 2
1
-6 0
10 100 1000 10000 100000 10 100 1000 10000 100000
f [Hz] f [Hz]
2000 2000
1000 1000
Imag(s/(2π))
Imag(s/(2π))
0 0
-1000 -1000
-2000 -2000
-6000 -4000 -2000 0 -8000 -6000 -4000 -2000 0
Real(s) Real(s)
Rys. 6.3. Przykładowe charakterystyki częstotliwościowe filtrów Czebyszewa typu II oraz odpowiadający
im rozkład zer „z” i biegunów „³” transmitancji (pionowo): a) filtr dolnoprzepustowy (LP), b) filtr
górnoprzepustowy (HP), c) filtr pasmowoprzepustowy (BP), d) filtr pasmowozaporowy (BS)
0 0
20log10|H(jω)| [dB]
20log10|H(jω)| [dB]
-20 -20
-40 -40
-60 -60
-80 -80
-100 -100
10 100 1000 10000 100000 10 100 1000 10000 100000
f [Hz] f [Hz]
0 6
-2 4
-4 2
Φ(jω) [rd]
Φ(jω) [rd]
-6 0
-8 -2
-10 -4
-12 -6
10 100 1000 10000 100000 10 100 1000 10000 100000
f [Hz] f [Hz]
20000 15000
10000
10000
Imag(s/(2 π))
Imag(s/(2π))
5000
0 0
-5000
-10000
-10000
-20000 -15000
-32000 -24000 -16000 -8000 0 -60000 -40000 -20000 0
Real(s) Real(s)
Rys. 6.3. (cd.) c) filtr pasmowoprzepustowy (BP), d) filtr pasmowozaporowy (BS)
s' 2 + ω02
3) LP(p) → BP − f. pasmowoprzepustowy: s = , ω0 = ω p1ω p 2 , ∆ω = ω p 2 − ω p1 (6.10)
∆ω⋅ s'
∆ω⋅ s'
4) LP(p) → BS − filtr pasmowozaporowy: s = , ω0 = ω p1ω p 2 , ∆ω = ω p 2 − ω p1 (6.11)
s' 2 + ω02
( )
H xx ( s' ) = H xx f −1 ( s ) = H LP
( p)
( s) (6.12)
Teraz trzeba tylko w odpowiedni sposób uzależnić zmienne s i s ′, tak aby filtr Hxx(s ′) stał się
filtrem dolnopasmowym (LP), górnopasmowym (HP), pasmowoprzepustowym (BP) lub pas-
mowozaporowym (BS). Przyjmijmy podstawienia:
s = jω, s' = jv (6.13)
oraz rozpatrzmy kolejno wszystkie transformacje. Załóżmy, że wymagania projektowe stawia-
ne filtrowi Hxx(s ′) są określone przez zestaw wartości {vpass, vstop, δpass, δstop} dla filtrów LP
i HP oraz {vp1, vp2, vs1, vs2, δp1, δp2, δs1, δs2} dla filtrów BP i BS. Niech transmitancja unor-
mowanego prototypu dolnoprzepustowego jest dana następującym wzorem:
140 Analogowe filtry Butterwortha i Czebyszewa
M
bM ∏ ( s − zm )
( p) m =1
H LP ( s) = N
(6.14)
a N ∏ ( s − pn )
n =1
HLP(p)(s)
Jeśli filtr jest stabilny, to także filtr HLP(s ′) ma tę właściwość, gdyż jego bieguny są
przeskalowanymi biegunami prototypu i mają taki sam znak jak one.
a) transformacja LP → LP
ω
LP ⇒ LP
ωs
ωp
|HLP(p)(ω)|
1 v
vp vs
|HLP(v)|
b) transformacja LP → HP
ω
LP ⇒ HP
ωs
|HLP(p)(ω)| ωp
1 v
vs vp
|HHP(v)|
Rys. 6.4. Ilustracja zasady transformacji częstotliwości stosowanej podczas projektowania filtrów analo-
gowych. Transformacja: a) LP → LP, b) LP → HP. W unormowanych prototypach dolnoprzepustowych
HLP(p)( ω) pulsacja ωp jest równa 1
142 Analogowe filtry Butterwortha i Czebyszewa
c) transformacja LP → BP
LP ⇒ BP ω
ωs
ωp
|HLP(p)(ω)|
1 v
vp1 vp2
|HBP(v)|
d) transformacja LP → BS
ω
LP ⇒ BS
ωs
|HLP(p)(ω)| ωp
1 v
vp1 vp2
|HBS(v)|
Rys. 6.4. (cd.) Transformacja częstotliwości: c) LP → BP, d) LP → BS
Analogowe filtry Butterwortha i Czebyszewa 143
Jeśli więc bieguny pn = σn+jωn leżą w lewej półpłaszczyźnie, to także bieguny ω0 pn−1 tam się
znajdują, czyli ze stabilności filtra HLP(p)(s) wynika stabilność filtra HHP(s ′) (części rzeczywiste
wszystkich biegunów są ujemne).
( s' )2 + ω02
s= , ω0 = v p1v p 2 , ∆ω = v p 2 − v p1 (6.22)
∆ω⋅ s'
które prowadzi do następującej zależności pulsacji układów przed i po transformacji:
( jv ) 2 + ω02 v 2 − ω02
jω = ⇒ ω= (6.23)
∆ω ⋅ jv ∆ω ⋅ v
przedstawionej graficznie na rysunku 6.4c. Jak wynika z tego rysunku − dwie pulsacje vp1 i vp2,
stanowiące „granice” pasma przepustowego filtra HBP(s ′) są związane z tą samą pulsacją
ωpass = 1 filtra HLP(p)(s), gdyż zgodnie zależnością (6.23) mamy:
Jako ωstop filtra prototypowego, projektowanego w trzecim kroku algorytmu, przyjmuje się:
s = σ + jω =
(ρ + jv )2 + ω02 =
ρ ω2
1+ 2 0 2 + j
v ω2
1− 2 0 2 (6.29)
∆ω ⋅ (ρ + jv ) ∆ω ρ + v ∆ω ρ + v
czyli σ i ρ mają zawsze taki sam znak. Wynika stąd, że części rzeczywiste biegunów trans-
mitancji (6.14) i (6.27) również mają identyczny znak, więc stabilność filtra HLP(p)(s) pociąga
za sobą stabilność filtra HBP(s ′).
Jako ωstop filtra prototypowego, projektowanego w trzecim kroku algorytmu, przyjmuje się:
ωs = min{ ωs1 , ωs 2 } (6.34)
czyli bardziej strome zbocze.
W tym przypadku transformacji LP→BS transmitancja otrzymanego filtra pasmowozaporo-
wego jest dana wzorem:
M N −M M
b
∏ ( − zm ) ( s' )2 + ω20
∏ ( s' )2 − ( zm−1∆ω) s' + ω20
H BS ( s' ) = M ⋅ mN=1 ⋅ N
m =1 (6.35)
aN
∏ n ( − p ) ∏ ( s' )2 − ( pn−1∆ω) s' + ω02
n =1 n =1
Analogowe filtry Butterwortha i Czebyszewa 145
Tab. 6-1. Programy napisane w języku Matlab, przekształcające znany filtr HLP(p)(s) w filtry HLP(s ′),
HHP(s’), HBP(s’) i HBS(s’)
---------------------------------------------
function [zz,pp,wzm] = lp2hpTZ(z,p,wzm,w0)
% LowPass to HighPass TZ
zz = []; pp = [];
for k=1:length(z)
zz = [ zz w0/z(k) ];
wzm = wzm*(-z(k));
end
for k=1:length(p)
pp = [ pp w0/p(k) ];
wzm = wzm/(-p(k));
end
for k=1:(length(p)-length(z))
zz = [ zz 0 ];
end
---------------------------------------------
function [zz,pp,wzm] = lp2bpTZ(z,p,wzm,w0,dw)
% LowPass to BandPass TZ
pp = []; zz = [];
for k=1:length(z)
zz = [ zz roots([ 1 -z(k)*dw w0^2])' ];
wzm = wzm/dw;
end
for k=1:length(p)
pp = [ pp roots([ 1 -p(k)*dw w0^2])' ];
wzm = wzm*dw;
end
for k=1:(length(p)-length(z))
zz = [ zz 0 ];
end
---------------------------------------------
function [zz,pp,wzm] = lp2bsTZ(z,p,wzm,w0,dw)
% LowPass to BandStop TZ
zz = []; pp = [];
for k=1:length(z)
zz = [ zz roots([ 1 -dw/z(k) w0^2 ])' ];
wzm = wzm*(-z(k));
end
for k=1:length(p)
pp = [ pp roots([ 1 -dw/p(k) w0^2 ])' ];
wzm = wzm/(-p(k));
end
for k=1:(length(p)-length(z))
zz = [ zz roots([ 1 0 w0^2 ])' ];
end
146 Analogowe filtry Butterwortha i Czebyszewa
gdzie
2
ξ = ω02 + ρ2 − v 2 + 4ρ2 v 2 (6.38)
czyli σ i ρ mają zawsze taki sam znak. Wynika stąd, że części rzeczywiste biegunów trans-
mitancji (6.14) i (6.35) również mają identyczny znak, więc stabilność filtra HLP(p)(s) pociąga
za sobą stabilność filtra HBS(s ′).
Wzory (6.16), (6.19), (6.27) i (6.35) stanowią podstawę do napisania programów komputero-
wych, przekształcających znany filtr HLP(p)(s) w filtry HLP(s ′), HHP(s ′), HBP(s ′) i HBS(s ′).
Przykładowe programy w języku Matlab, które to realizują, są przedstawione w tabeli 6-1.
Obecnie zajmiemy się problemem projektowania różnych filtrów HLP(p)(s), w szczególności fil-
trów Butterwortha oraz Czebyszewa typu I i II.
czyli wielomian L(−s2) ma 2N zer, leżących na okręgu jednostkowym |s| = 1. Wynika stąd, że
znormalizowana transmitancja dolnoprzepustowego filtra Butterwortha jest określona równa-
niem (6.39), w którym bieguny pk są równe zerom sk wielomianu L(−s2), leżącym w lewej pół-
płaszczyźnie.
Wzory projektowe
Załóżmy, że chcemy zaprojektować d o l n o p r z e p u s t o wy f i l t r B u t t e r wo r t h a , korzysta-
jąc ze znajomości wzoru na jego dolnoprzepustowy prototyp unormowany. Danymi wejścio-
wymi są wartości parametrów: ωpass, ωstop, δpass, δstop (patrz podrozdz. 6.1). Oznaczmy przez
ω3dB graniczną, trzydecybelową pulsację filtra, spełniającego nasze wymagania. Wówczas
1
H B, N ( j (ω / ω3dB ) ) = (6.48)
1 + ( ω / ω3dB )2 N
jest prototypem o unormowanej pulsacji granicznej równej ω/ω3dB = 1. Aby zaprojektować taki
filtr musimy wyznaczyć jego parametry N i ω3dB z układu równań
1
= 1 − δ pass
2N
1 + ( ω pass / ω3dB )
(6.49)
1
= δ stop
1 + (ω stop / ω3dB ) 2 N
148 Analogowe filtry Butterwortha i Czebyszewa
określających nasze wymagania projektowe, czyli wzmocnienie (1−δpass) dla pulsacji ωpass oraz
wzmocnienie δstop dla pulsacji ωstop. Znając N, czyli liczbę wymaganych biegunów pk, oraz
wiedząc, że leżą one na okręgu o promieniu ω3dB w lewej półpłaszczyźnie liczb zespolonych,
dokładnie znamy ich położenie. Na tej podstawie można łatwo wyznaczyć współczynniki wie-
lomianu mianownika transmitancji filtra, korzystając ze wzoru (6.39).
A więc po kolei. Obliczając 20log 10(.) z obu stron równania (6.49) otrzymujemy:
( )
−10log10 1 + ( ω pass / ω3dB )2 N = 20log10 (1 − δ pass ) = − Apass
(6.50)
(
−10log10 1 + ( ωstop / ω3dB )
2N
)
= 20log 10 (δ stop ) = − Astop
Następnie dzielimy obie strony równań przez −10 oraz wykorzystujemy je jako potęgę liczby
10 (10 log10(x) = x):
1 + (ω 2N A / 10
pass / ω0 ) = 10 pass
Astop / 10
(6.51)
2N
1 + (ω stop / ω0 ) = 10
Potem przenosimy jedynki na prawą stronę, dzielimy oba równania stronami i logarytmujemy
wynik dzielenia:
ωstop Astop / 10 − 1
2 N log10 = log10 10 (6.52)
ω pass 10 Apass / 10 − 1
skąd ostatecznie otrzymujemy:
10 Astop / 10 − 1 ω
N = M , M = log10 A / 10 2 log (Ω ), Ω = stop
10 (6.53)
10 pass −1 ω pass
gdzie „x” oznacza najbliższą liczbę naturalną większą od x (lub równą x). Znając N, w prosty
sposób obliczamy wartość parametru ω0, na przykład z równania (6.50):
ωstop
ω3dB = (6.54)
(10 )
Astop /10 1/ 2 N
−1
π π π
pk = e jφk = exp j + + (k − 1) , k = 1, 2, 3,..., N (6.55)
2 2N N
gdzie: ∆φ = 2π/2N = π/N to kąt między dwoma kolejnymi biegunami, π/2 − pierwsza ćwiartka
okręgu, leżąca w prawej półpłaszczyźnie, ∆φ/2 = π/2N − połowa kąta, ponieważ biegun nie
może leżeć na osi urojonej, k∆φ = kπ/N − kąt k-tego bieguna. Oczywiście bieguny te leżą na
okręgu jednostkowym, ponieważ |pk| = 1. Natomiast bieguny filtra mającego pulsację ω3dB,
daną wzorem (6.54), leżą na okręgu o promieniu ω3dB:
π π π
pk = ω3dBe jφk = ω3dB exp j + + (k − 1) , k = 1, 2, 3,...., N (6.56)
2 2 N N
N N
H B, N ( s ) = ∏ ( − pk ) ∏ ( s − pk ) (6.57)
k =1 k =1
gdzie stała w liczniku ma zapewnić zerowe wzmocnienie dla pulsacji ω = 0 i jest ona równa
±1, kiedy bieguny pk są dane wzorem (6.55).
Na rysunku 6.5 przedstawiono położenie biegunów unormowanego (ω3dB = 1 rd/s) dolno-
przepustowego filtra Butterwortha trzeciego i czwartego rzędu (N = 3 lub 4). Zmiana wartości
ω3dB wpływa jedynie na zmianę promienia okręgu, na którym są rozłożone bieguny, czyli na
miejsce gdzie bieguny przybliżają się do osi urojonej, natomiast rząd filtra jest związany z licz-
bą biegunów leżących w lewej półpłaszczyźnie zmiennej zespolonej s. Dolnoprzepustowy filtr
Butterwortha, w którym bieguny leżą na okręgu jednostkowym, nazywamy unormowanym.
Imag(s) Imag(s)
1 p1 1
p1
∆φ/2 ∆φ/2
∆φ/2 ∆φ/2
p2
∆φ ∆φ
p2 Real(s) Real(s)
∆φ ∆φ ∆φ/2 ∆φ/2
∆φ ∆φ 1 ∆φ/2 ∆φ/2 1
∆φ ∆φ
p 2*
∆φ/2 ∆φ/2
∆φ/2 ∆φ/2
*
p1
p1 *
Rys. 6.5. Położenie biegunów „³” unormowanego (ω0 = 1 rd/s), dolnoprzepustowego filtra Butterwortha
trzeciego i czwartego rzędu (N = 3 lub 4)
Krok 1. Określ swoje wymagania odnośnie filtra: podaj typ oraz pary wartości (vx, δx).
Krok 2. Transformuj wymagania (vx, δx) filtrów HP, BP lub BS na wymagania dla unormowa-
nego (ωpass = 1 rd/s) prototypu LP (ωx, δx), na przykład (vp1, δp1) → (ωp1, δp1) i (vs1,
δs1) → (ωs1, δs1), czyli przelicz zadane pulsacje vx na pulsacje ωx, stosując wzory
(6.18), (6.23), (6.31) odpowiednich transformacji częstotliwości z podstawieniami:
150 Analogowe filtry Butterwortha i Czebyszewa
W wyniku tego pulsacje graniczne pasma przepustowego vpass (lub pasm przepusto-
wych vp1 i vp2) są przekształcane na ωpass = 1.
Krok 3. Przyjmij bardziej krytyczne wymagania projektowe:
( )
δ pass = min δ p1 , δ p 2 , δ stop = min ( δ s1 , δ s 2 ) , ωstop = min ( | ωs1 |, | ωs 2 |)
(BP): (1)
v3dB = 0,5 ω3dB ∆ω + (ω3dB )2 ( ∆ω)2 + 4ω02
(2)
v3dB = 0,5 ω3dB ∆ω − (ω3dB )2 ( ∆ω)2 + 4ω02
Analogowe filtry Butterwortha i Czebyszewa 151
(BS): (1)
v3dB = ∆ω + ( ∆ω)2 + 4( ω3dB )2 ω02 ( −2ω3dB )
(2)
v3dB = ∆ω − ( ∆ω)2 + 4( ω3dB )2 ω02 ( −2ω3dB )
Krok 6. Teraz następuje najważniejszy moment algorytmu. Znamy już N i ω3dB filtra prototypo-
wego HLP(p)(s), mającego ωpass = 1 rd/s, oraz pulsacje v3dB projektowanego filtra Hxx(s), odpo-
wiadające ω3dB. Jeśli jako filtr HLP(p)(s) wybierzemy filtr Butterwortha, to będzie on miał
bieguny pk (6.56) rozłożone na okręgu o promieniu ω3dB. Oczywiście filtr ten spełnia wyma-
gania projektowe w odniesieniu do s t r o m o ś c i z b o c z y p a s m p r z e j ś c i o wy c h . Jednak
spełnia je także unormowany (ω3dB = 1 rd/s) filtr Butterwortha HLP(n)(s), w którym bieguny leżą
na okręgu jednostkowym zgodnie ze wzorem (6.55), gdyż jest on liniowo przeskalowaną
w częstotliwości wersją filtra HLP(p)(s). W z wi ą z k u t y m p r o j e k t u j e m y f i l t r H L P ( n ) ( s )
(ω3dB = 1 rd/s), a nie HLP(p)(s) (ω3dB dane wzorem (6.54)), czyli wyznaczamy wartości biegunów
ze wzoru (6.55), a nie ze wzoru (6.56). W dalszej części algorytmu musimy przekształcić filtr
HLP(n)(s) na filtr Hxx(s) w taki sposób, aby jego ω3dB = 1 zostało transformowane na v3dB filtra
Hxx(s) (pulsacje wyznaczone w kroku 5).
Krok 7. W związku z powyższym dokonujemy transformacji częstotliwościowej filtra HLP(n)(s)
na Hxx(s), stosując wzory (6.15), (6.19), (6.27), (6.35) ze zmodyfikowanymi parametrami ω0
i ∆ω:
(LP)(HP): ω0 = v3dB
Przykłady
filtr docelowy:
zera: z1,2,3,4,5=0
bieguny: p1,2 = −0,4893±j1,5058; p3,4 = −1,2809±j0,9306; p5 = −1,5833
s5
H HP ( s ) = 5
s + 5,1237 s + 13,126 s + 20,7824s 2 + 20,3363s + 9,9499
4 3
Rozłożenie zer i biegunów zaprojektowanej transmitancji HHP(s) oraz jej charakterystyka am-
plitudowo-częstotliwościowa są pokazane na rysunku 6.6a. Punkty zadanych wymagań proje-
ktowych są zaznaczone na charakterystyce za pomocą „o”. Jak widać filtr spełnia przyjęte za-
łożenia.
( p) 1,6322
H LP (s) =
s + 2,9536s + 4,3619s 2 + 3,7735s + 1,6322
4 3
filtr docelowy:
zera: z1,2,3,4 = 0
bieguny: p1,2 = −0,1710±j1,9734; p3,4 = −0,2615±j3,0177
p5,6 = −0,4751±j2,1871; p7,8 = −0,5691±j2,6197
H BP ( s ) = 1,6322 s 4 ( s8 + 2,9536s 7 + 28,3619 s 6 + 56,9385s 5 +
+ 269,9751s 4 + 341,6308s3 + 1021,0288s 2 + 637,9801s + 1296)
Rozłożenie zer i biegunów zaprojektowanej transmitancji HBP(s) oraz jej charakterystyka am-
plitudowo-częstotliwościowa są pokazane na rysunku 6.6b. Punkty zadanych wymagań projek-
towych są zaznaczone na charakterystyce za pomocą „o”. Jak widać filtr spełnia przyjęte zało-
żenia.
filtr docelowy:
zera: z1,2 = −0,0003±j2,2913; z3,4 = 0,0003±j2,2913
z5,6 = −0,0000±j2,2910; z7,8 = 0,0000±j2,2915
bieguny: p1,2 = −0,2226±j1,6003; p3,4 = −0,4476±j3,2183
p5,6 = −0,6843±j1,8382; p7,8 = −0,9338±j2,5084
H BP ( s ) = ( s8 + 21s 6 + 165,4s 4 + 578,8s 2 + 759,7) ( s8 + 4,5765s 7 + 31,4721s 6 +
+ 86,1167s 5 + 284,74s 4 + 452,1128s3 + 867,4502s2 + 662,232s + 759,6914)
Rozłożenie zer i biegunów zaprojektowanej transmitancji HBS(s) oraz jej charakterystyka am-
plitudowo-częstotliwościowa są pokazane na rysunku 6.6c. Punkty zadanych wymagań proje-
ktowych są zaznaczone na charakterystyce za pomocą „o”. Jak widać filtr spełnia przyjęte za-
łożenia.
W celach poglądowych na rysunku 6.7 pokazano rozłożenie zer i biegunów oraz charaktery-
styki amplitudowe filtrów, zaprojektowanych przy następujących założeniach:
LP: fpass = 2000 Hz, fstop = 3000 Hz, Apass = 0,5 dB, Astop = 60 dB
HP: fstop = 2000 Hz, fpass = 3000 Hz, Apass = 0,5 dB, Astop = 60 dB
BP: fs1 = 1500 Hz, fp1 = 2000 Hz, fp2 = 3000 Hz, fs2 = 3500 Hz, Astop = 60 dB, Apass = 0,5 dB
BS: fp1 = 1500 Hz, fs1 = 2000 Hz, fs2 = 3000 Hz, fp2 = 3500 Hz, Astop = 60 dB, Apass = 0,5 dB
Rzędy N tych filtrów wynoszą odpowiednio: 20, 20, 14 i 17. Wszystkie filtry spełniają zało-
żenia projektowe oznaczone symbolem „o”.
154 Analogowe filtry Butterwortha i Czebyszewa
a) 1.5 0
20log10|H(jω)| [dB]
1
-5
0.5
Imag(s)
0 -10
-0.5
-15
-1
-1.5 -20
-1.6 -1.2 -0.8 -0.4 0 0 1 2 3 4 5
Real(s) ω [rd/s]
b) 3 0
20log10|H(jω)| [dB]
2
-5
1
Imag(s)
0 -10
-1
-15
-2
-3 -20
-0.6 -0.4 -0.2 0 0 1 2 3 4 5
Real(s) ω [rd/s]
c) 4 0
3
20log10|H(jω)| [dB]
2 -5
1
Imag(s)
0 -10
-1
-2 -15
-3
-4 -20
-1 -0.8 -0.6 -0.4 -0.2 0 0 1 2 3 4 5
Real(s) ω [rd/s]
Rys. 6.6. Rozłożenie zer „z” i biegunów „³” oraz charakterystyki amplitudowo-częstotliwościowe trans-
mitancji Hxx(s), zaprojektowanych w przykładach 3, 4 i 5: a) przykład 3 − filtr HP, b) przykład 4 − filtr BP,
c) przykład 5 − filtr BS
Tab. 6-2. Program w języku Matlab, służący do zaprojektowania transmitancji analogowych filtrów LP,
HP, BP i BS Butterwortha
a) 3000 0
20log10|H(jω)| [dB]
2000 -20
Imag(s/(2π))
1000
-40
0
-60
-1000
-2000 -80
-3000 -100
-15000 -10000 -5000 0 1000 2000 3000 4000 5000
Real(s) f [Hz]
b) 3000 0
20log10|H(jω)| [dB]
2000 -20
Imag(s/(2π))
1000
-40
0
-60
-1000
-2000 -80
-3000 -100
-20000 -15000 -10000 -5000 0 1000 2000 3000 4000 5000
Real(s) f [Hz]
c) 4000 0
3000
20log10|H(jω)| [dB]
2000 -20
Imag(s/(2π))
1000 -40
0
-1000 -60
-2000 -80
-3000
-4000 -100
-4000 -3000 -2000 -1000 0 1000 2000 3000 4000 5000
Real(s) f [Hz]
d) 4000 0
3000
20log10|H(jω)| [dB]
2000 -20
Imag(s/(2π))
1000 -40
0
-1000 -60
-2000 -80
-3000
-4000 -100
-8000 -6000 -4000 -2000 0 1000 2000 3000 4000 5000
Real(s) f [Hz]
Rys. 6.7. Rozłożenie zer „z” i biegunów „³” oraz charakterystyki amplitudowo-częstotliwościowe przy-
kładowych, zaprojektowanych transmitancji Hxx(s): a) filtr LP, b) filtr HP, c) filtr BP, d) filtr BS
( )
H CI , N j ( ω / ω 0 ) =
1
(6.58)
1 + ε C N2 (ω / ω 0 )
2
cos[ N cos−1 (ω / ω0 ) ], ω / ω0 ≤ 1
C N ( ω / ω0 ) = (6.59)
−1
cosh[ N cosh (ω / ω0 ) ], ω / ω0 > 1
oraz szybki wzrost wartości dla x, leżącego poza przedziałem [−1, 1], co jest spowodowane
występowaniem funkcji exp(x) i exp(−x) w definicji funkcji kosinus hiperboliczny cosh(x). Na
rysunku 6.8a przedstawiono kształt funkcji Czebyszewa CN(x) dla kilku wartości parametru x.
158 Analogowe filtry Butterwortha i Czebyszewa
CN(x) N=3
1.5 N=2
1 N=1
0.5
0
-0.5
x
-1
0 0.2 0.4 0.6 0.8 1 1.2
Rys. 6.8a. Kształt funkcji Czebyszewa CN(x) (6.59) dla parametru N = 1, 2, 3, 4, 6 i 8
We wzorach (6.58), (6.59) ω0 jest graniczną pulsacją pasma przepustowego, parametr ε kontro-
luje zaś oscylacje w paśmie przepustowym, tzn. w przedziale [0, ω0] k wa d r a t c h a r a k t e r y -
s t y k i a m p l i t u d o we j oscyluje pomiędzy wartościami 1/(1+ε2) a 1. Dla ω = ω0 zawsze ma-
my CN2(ω/ω0) = 1 i H(ω/ω0) = 1/(1+ε2), dlatego zazwyczaj zadaje się pożądaną wartość para-
metru ε (nieliniowość pasma przepustowego) i przyjmuje się ω0 = ωpass (czyli szerokość tego
pasma). Jeśli jednak zamiast ε, specyfikuje się wartość parametru δpass, zdefiniowanego w spo-
sób następujący:
1 1
= = 1 − δ pass (6.60)
1 + ε C N ( ω pass / ω pass )
2 2
1 + ε2
to wówczas ε wyraża się za pomocą Apass = 20log10(1−δpass) (obliczamy 20log10(.) z obu stron
powyższego równania i przekształcamy go dalej):
log10 (1 + ε 2 ) = Apass / 10
Apass / 10
1 + ε2 = 10
Apass / 10
ε = 10 −1 6.61)
Wymagany rząd filtra oblicza się natomiast, zakładając określoną wartość tłumienia δstop
w wybranym punkcie pasma zaporowego ωstop:
1 1
= = δ stop (6.62)
{ }
2
C N2 (ωstop 2
1+ ε / ω pass )
(
1 + ε2 cosh N cosh −1 ωstop / ω pass
)
Analogowe filtry Butterwortha i Czebyszewa 159
Imag(s) Imag(s)
p1 p1
∆φ/2 ∆φ/2
∆φ/2 ∆φ/2 p2
∆φ ∆φ
p2 ∆φ ∆φ
∆φ Real(s) ∆φ Real(s)
∆φ ∆φ R2 R1 R2 R1
∆φ ∆φ
∆φ/2 ∆φ/2 p2 *
∆φ/2 ∆φ/2
*
p1 p 1*
Rys. 6.8b. Graficzna ilustracja wyznaczania położenia biegunów „³” dolnoprzepustowego filtra Czeby-
szewa typu I trzeciego i czwartego rzędu (N = 3 lub 4)
cosh −1
(10 Astop /10
−1 ) (10 Apass /10
)
−1
N = M , M = (6.63)
(
cosh −1 ωstop ω pass )
gdzie „x” oznacza najbliższą liczbę naturalną większą od x (lub równą x).
Znając ε (6.61), N (6.63) i podstawiając ω0 = ωpass, można zsyntezować transmitancję, mającą
charakterystykę amplitudowo-częstotliwościową, określoną przez parą równań (6.58), (6.59).
Jest to szczególnie proste, jeśli się skorzysta ze znajomości projektowania filtrów Butterwor-
tha. Można bowiem wykazać (my niestety tego nie zrobimy), że bieguny filtra Czebyszewa
typu I leżą na elipsie, powstałej z dwóch okręgów (analogia do filtrów Butterwortha). Promie-
nie tych okręgów wynoszą:
R1 = sinh( D ) (okrąg wewnętrzny) (6.64a)
R2 = cosh( D ) (okrąg zewnętrzny) (6.64b)
gdzie
sinh −1 ( ε −1 )
D= (6.65)
N
Cóż należy zatem zrobić? Nic prostszego. Podobnie jak w przypadku filtrów Butterwortha na-
leży wyznaczyć kąty N biegunów, leżących w lewej półpłaszczyźnie płaszczyzny zespolonej:
π π π
φk = + + k , k = 0,1, 2,..., N − 1 (6.66)
2 2N N
następnie rozłożyć te bieguny na dwóch okręgach, po N na każdym:
pk( R1) = R1e jφk , pk( R 2) = R2 e jφk , k = 0, 1, 2,..., N − 1 (6.67)
(R1) (R2)
a potem na podstawie biegunów pk i pk utworzyć nowe, tym razem „wynikowe” bieguny
pk:
pk = Re{ pk( R1) }+ j Im{ pk( R 2 ) } (6.68)
160 Analogowe filtry Butterwortha i Czebyszewa
czyli z pierwszych „pobrać” tylko część rzeczywistą, a z drugich − część urojoną. Na rysunku
6.8b pokazano sposób konstrukcji biegunów filtra Czebyszewa typu I. Znając położenie biegu-
nów, znamy także postać wielomianu mianownika transmitancji. Kończąc projektowanie filtra,
nie należy zapomnieć o uwzględnieniu w liczniku transmitancji odpowiedniej stałej skalującej,
np. równej iloczynowi N zanegowanych biegunów, czyli ∏(−pk) dla N nieparzystego, oraz
równej 10−0,05Apass⋅∏(−pk) dla N parzystego:
−0,05 Apass N
10 ∏ ( − pk ), N parzyste
I H0 k =1
H C ,N ( s) = N , H0 = (6.69)
N
∏ ( s − pk )
∏ ( − pk ), N nieparzyste
k =1 k =1
Tab. 6-3. Program w języku Matlab, służący do zaprojektowania transmitancji filtrów LP, HP, BP i BS
Czebyszewa typu I
wp = 1;
Nreal = acosh(sqrt((10^(astop/10)-1) / (10^(apass/10)-1))) / acosh(ws/wp)
N = ceil( Nreal )
pause
epsi=sqrt(10^(apass/10)-1);
D=asinh(1/epsi)/N;
R1=sinh(D)
R2=cosh(D)
pause
p, b, a, pause
% Zera/bieguny prototypu
plot( real(p), imag(p), 'xb' ); grid; title('Położenie biegunów');
xlabel('real'); ylabel('imag'); pause
Przykład
Obecnie zaprojektujemy filtr Czebyszewa typu I, spełniający identyczne wymagania jak filtr
Butterwortha z przykładu 4 w rozdziale 6.3, wykorzystując program z tablicy 6-3. Zastosujemy
identyczną metodologię przekształcenia częstotliwościowego prototypu LP jak poprzednio.
Wymagania: filtr pasmowoprzepustowy
vp1 = 2 rd/s; vp2 = 3 rd/s; Apass = 1,5 dB
vs1 = 1,5 rd/s; vs2 = 3,5 rd/s; Astop =16 dB
Obliczenia: transformacja częstotliwości: ωpass = 1; ωstop = 1,7857
N = 2,504 = 3; R1 = 0,4201; R2 = 1,0847
bieguny R1: p1,2 = −0,2101±j0,3638; p3 = −0,4201
bieguny R2: p1,2 = −0,5423±j0,9393; p3 = −1,0847
bieguny: p1,2 = −0,2101±j0,9393; p3 = −0,4201
( p) 0,38923
H LP (s) = 3
s + 0,84022s 2 + 1,103s + 0,38923
filtr docelowy:
zera: z1,2,3 = 0
bieguny: p1,2 = −0,08523±j2,02230; p3,4 = −0,12482±j2,96165
p5,6 = −0,21006±j2,44047
0,38923s3
H BP ( s ) = 6
s + 0,84022s + 19,103s + 10,4719s3 + 114,6179s 2 + 30,2481s + 216
5 4
20log10|HLP(p)(jω)| [dB]
1 -5
0.5 -10
Imag(s)
0
-15
-0.5
-1 -20
-1.5 -25
-0.5 -0.4 -0.3 -0.2 -0.1 0 0 0.5 1 1.5 2
Real(s) ω [rd/s]
b) filtr HBP(s)
3 0
2 -2
-4
Φ(jω) [rd]
1
Imag(s)
0 -6
-1 -8
-2 -10
-3 -12
-0.25 -0.2 -0.15 -0.1 -0.05 0 0 1 2 3 4 5
Real(s) ω [rd/s]
1 0
20log10|HBP(jω)| [dB]
0.8
-20
|HBP(jω)|
0.6
0.4
-40
0.2
0 -60
0 1 2 3 4 5 0 1 2 3 4 5
ω [rd/s] ω [rd/s]
Rys. 6.9. Rozłożenie zer „z” i biegunów „³” transmitancji prototypowej HLP(p)(s) Czebyszewa typu I
i zaprojektowanej transmitancji HBP(s) oraz ich charakterystyki częstotliwościowe
gdzie N jest dane wzorem (6.63), „bieguny” pk są zdefiniowane wzorem (6.68), „zera” zk są zaś
równe jsin(φk), gdzie kąt φk jest określony wzorem (6.66).
Przykład
Obecnie zaprojektujemy filtr Czebyszewa typu II, spełniający identyczne wymagania jak filtr
Butterwortha z przykładu 5 w rozdziale 6.3. Zastosujemy identyczną metodologię przekształ-
cenia częstotliwościowego prototypu LP jak poprzednio. Zaprezentowane wyniki zostały
wygenerowane przez specjalnie napisany program komputerowy, przedstawiony w tablicy 6-4.
W celach poglądowych pokazano wartości zk, 1/zk i H0 otrzymywane podczas obliczeń.
Wymagania: filtr pasmowozaporowy
vs1=2 rd/s; vs2 = 3 rd/s; Astop = 1,5 dB
vp1 = 1,5 rd/s; vp2 = 3,5 rd/s; Apass = 12 dB
Analogowe filtry Butterwortha i Czebyszewa 163
Tab. 6-4. Program w języku Matlab, służący do zaprojektowania transmitancji filtrów LP, HP, BP i BS
Czebyszewa typu II
wp=1;
Nreal = acosh(sqrt((10^(astop/10)-1) / (10^(apass/10)-1))) / acosh(ws/wp)
N = ceil( Nreal )
pause
epsi=sqrt( 1 / (10^(astop/10)-1) );
D=asinh(1/epsi)/N;
R1=sinh(D)
R2=cosh(D)
pause
wzm = prod(-z)/prod(-p);
164 Analogowe filtry Butterwortha i Czebyszewa
20log10|HLP(p)(jω)| [dB]
1
-20
0.5
Imag(s)
0 -40
-0.5
-60
-1
-1.5 -80
-1.5 -1 -0.5 0 0 0.5 1 1.5 2
Real(s) ω [rd/s]
b) filtr HBS(s)
4 3
3 2
2
1
Φ(jω) [rd]
1
Imag(s)
0 0
-1 -1
-2
-3 -2
-4 -3
-0.4 -0.3 -0.2 -0.1 0 0 1 2 3 4 5
Real(s) ω [rd/s]
1 0
20log10|HBS(jω)| [dB]
0.8 -10
|HBS(jω)|
0.6 -20
0.4 -30
0.2 -40
0 -50
0 1 2 3 4 5 0 1 2 3 4 5
ω [rd/s] ω [rd/s]
Rys. 6.10. Rozłożenie zer „z” i biegunów „³” transmitancji prototypowej HLP(p)(s) Czebyszewa typu II
i zaprojektowanej transmitancji HBS(s) oraz ich charakterystyki częstotliwościowe
% Zera/bieguny prototypu)
plot( real(p), imag(p), 'xb' ); grid; title('Położenie biegunów');
xlabel('real'); ylabel('imag'); pause
Zadanie to oraz jego najprostsze rozwiązania przedstawiono na rysunku 6.11. Jak już wiemy
z powyższych przykładów obliczeniowych, w praktyce musimy umieć zrealizować sprzętowo
wielomiany zmiennej s wysokich rzędów. Problem ten rozwiązuje się w ten sposób, że „roz-
pracowuje” się dokładnie układy realizujące wielomiany (transmitancje) niskich rzędów, naj-
częściej pierwszego i drugiego, a następnie łączy się je kaskadowo, zakładając, że poszcze-
gólne stopnie wzajemnie się nie obciążają. Z tego ostatniego powodu preferuje się nie pasywne
układy RLC tylko aktywne układy RC ze wzmacniaczami operacyjnymi. Z zastosowania cewek
(indukcyjności) L rezygnuje się natomiast z powodów technologicznych (duża wielkość,
ograniczony zakres wartości indukcyjności, a przede wszystkim niemożność uniknięcia rezys-
tancji pasożytniczej RL i uzyskania dużej dobroci cewki QL). Znacznie łatwiej jest wytworzyć
miniaturowe kondensatory o szerokich zakresie wartości pojemności. Na rysunku 6.12 są
przedstawione przykładowe struktury aktywnych, analogowych filtrów RC, zaproponowane
przez Sallena-Keya: układ dolnoprzepustowy pierwszego i drugiego rzędu oraz górnoprze-
pustowy pierwszego i drugiego rzędu.
Na rysunku 6.12 pod schematami ideowymi poszczególnych układów zostały podane wyraże-
nia na ich transmitancje, będące funkcjami wartości elementów R, L, C. Dla przykładu
wyprowadzimy teraz wzór na transmitancję H(s) filtra dolnoprzepustowego LP. W analogiczny
sposób otrzymuje się wyrażenie na transmitancję układu HP.
Analizowany układ jest przedstawiony na rysunku 6.13. Napięcia względem masy, występujące
w jego poszczególnych punktach (czyli właściwie ich potencjały elektryczne), są oznaczone
jako U. Dodatkowo niech IX(s) oznacza transformatę Laplace’a prądu płynącego przez element
X. Z prawa zachowania prądów wpływających do dowolnego węzła i z niego wypływających
mamy wówczas:
I R1 ( s ) = I R 2 ( s ) + I C 1 ( s ) (6.75)
gdzie
U we ( s ) − U1 ( s ) U ( s) − U 2 ( s ) U ( s ) − U wy ( s )
I R1 ( s ) = , I R 2 ( s) = 1 , I C1 ( s ) = 1 (6.76)
R1 R2 1 / sC1
166 Analogowe filtry Butterwortha i Czebyszewa
funkcja U wy ( s )
uwe(t) elementów uwy(t) Uwe(s) H ( s) = Uwy(s)
U we ( s )
R, L, C
R R sL
1 sC 1 / RC 1 sC 1 / LC
H ( s) = = H ( s) = = 2
R + 1 sC s + 1 / RC R + sL + 1 sC s + ( R / L ) s + 1 / LC
Rys. 6.11. Graficzna ilustracja problemu projektowania układów analogowych o zadanej transmitancji H(s).
Przedstawione układy są prostymi dzielnikami napięcia
1 RC s
H ( s) = H ( s) =
s + 1 RC s + 1 RC
C1 C2
R1 R2
Uwe Uwe R2
C2 Uwy Uwy
RB RB
RA RA
K R1 R2 C1C 2 Ks 2
H ( s) = H (s) =
1 1 1− K 1 1 1 1− K 1
s2 + + + s + R R C C s2 + + + s +
R1C1 R2 C1 R2 C 2 1 2 1 2 R 2 C 2 R 2 C1 R1C1 R1 R 2 C1C 2
Rys. 6.12. Przykład realizacji układowych filtrów analogowych dolnoprzepustowych (LP) oraz górnoprze-
pustowych (HP) pierwszego i drugiego rzędu (struktury Sallena-Keya). Filtry wyższych rzędów uzyskuje się
poprzez kaskadowe połączenie filtrów rzędów 1 i 2. Impedancja wyjściowa każdego układu jest bardzo mała
(zależna od typu wzmacniacza operacyjnego) i umożliwia łączenie kaskadowe poszczególnych stopni.
W przypadku a) i b) wzmacniacz operacyjny pracuje jako prosty wtórnik napięcia, zapewniający małą
impedancję wyjściową całego układu
Analogowe filtry Butterwortha i Czebyszewa 167
C1
R1 R2 U2
Rx
Uwe U1 C2 '
Uwy Ry Uwy
U3
RB
RA
Rys. 6.13. Schemat układu realizującego filtr dolnoprzepustowy drugiego rzędu z korekcją wzmocnienia
Ponieważ wzmacniacz operacyjny ma bardzo duże wzmocnienie a na jego wyjściu jest skoń-
czone napięcie, to różnica napięć na jego wejściu jest bardzo mała. W związku z tym napięcia
U2 i U3 są równe, skąd wynika, że:
R A + RB
U wy ( s ) = U 2 (s) (6.77)
RA
Dodatkowo napięcia U1 i U2 są ze sobą związane następującą zależnością:
1 / sC2
U 2 ( s) = U1 ( s ) (6.78)
R2 + 1 / sC2
Ze wzorów (6.77) i (6.78) otrzymujemy zależność wiążącą napięcia U2 i U1 z napięciem Uwy:
RA
U 2 ( s) = U wy ( s ) (6.79)
R A + RB
R2 + 1 / sC2 R + 1 / sC2 R A
U1 ( s ) = U 2 ( s) = 2 U wy ( s ) (6.80)
1 / sC2 1 / sC2 R A + RB
Po podstawieniu (6.79) i (6.80) do (6.76) i uwzględnieniu równości (6.75) otrzymujemy
zależność napięcia Uwy od Uwe, a w następnym kroku transmitancję układu H(s):
1
U wy ( s ) R1R2C1C2
H ( s) = =K (6.81)
U we ( s ) 1 1 1− K 1
s2 + + + s +
R1C1 R2C1 R2C2 R1R2C1C2
gdzie
R A + RB R
K= = 1+ B (6.82)
RA RA
Po przyjęciu równości R1 = R2 i C1 = C2 transmitancja (6.81) jest równa:
1
H ( s) = K R C2 2
(6.83)
3 − K 1
s2 + s+ 2 2
RC RC
Załóżmy, że za pomocą układu o transmitancji (6.83) chcemy praktycznie zrealizować trans-
mitancję Hteor(s), daną wzorem (b0 = a0):
168 Analogowe filtry Butterwortha i Czebyszewa
b0 a0
H teor ( s ) = G 2
=G 2
(6.84)
a2 s + a1s + a0 a2 s + a1s + a0
wówczas muszą zachodzić następujące równości:
3− K 1
a2 = 1, a1 = , a0 = 2 2 (6.85a, b, c)
RC RC
Jeśli arbitralnie wybierzemy wartość pojemności C, to wówczas z (6.85c) mamy:
1
R= (6.86)
C a0
KR y = G (Rx + R y ) ⇒ R y =
G K
Rx = Rwy (6.92)
K −G K −G
Po przyjęciu wartości pojemności C oraz rezystancji RA i Rwy, równania (6.86), (6.88), (6.82),
(6.91), (6.92) służą nam kolejno do wyznaczenia wartości R, RB, K, Rx i Ry.
Oczywiście, istnieje wiele metod wyznaczania prądów i napięć występujących w układach ele-
ktrycznych, na przykład metoda potencjałów węzłowych. My staraliśmy się wybrać i zasto-
sować metodę najbardziej zrozumiałą dla mało „wtajemniczonych”.
Na koniec dla przykładu, w celach poglądowych, zaprojektujemy układ dolnoprzepustowego
filtra Butterwortha. Jego transmitancję H(s) wyznaczymy na podstawie wzorów z rozdz. 6.3,
Analogowe filtry Butterwortha i Czebyszewa 169
a do jej praktycznej realizacji użyjemy układów z rysunku 6.12a i 6.12c. Załóżmy, że jest to
filtr antyaliasingowy, przeznaczony do współpracy z przetwornikiem A/C dyskretyzującym w
czasie sygnał z częstotliwością fpr = 44100 Hz. Zgodnie z twierdzeniem o próbkowaniu filtr ten
powinien wyeliminować z sygnału składowe o częstotliwości większej lub równej 22050 Hz.
Dążąc do otrzymania filtra niskiego rzędu, nie stawiamy mu bardzo ostrych wymagań.
Obliczenia zrealizowano za pomocą programu komputerowego, przedstawionego w tabeli 6-5.
Przykład
Wymagania : filtr dolnoprzepustowy
Apass = 2 dB; fpass = 8000 Hz
Astop = 40 dB; fstop = 22050 Hz
Obliczenia: bezpośrednio ze wzorów z rozdziału 6.3 bez transformacji częstotliwości:
: ωpass = 2πfpass = 50 265,5 rd/s; ωstop = 2πfstop = 138 544,2 rd/s
N = 4,8066 = 5; ω3dB = R = 55156 rd/s
∆φ = 2π/10; φk = π/2+k∆φ/2; k = 1, 2, 3, 4, 5
bieguny (g): p1,2 = −17 044±j52 456,5; p3,4 = −44 622±j32420; p5 = −55156
3 042 184 930 ⋅ 3 042 184 930 ⋅ 55156
H (s) =
( s 2 + 34088,3s + 3 042 184 930)( s 2 + 89244,3s + 3 042 184 930)( s + 55156)
Wyznaczone wartości rezystorów R1, R2, R3, R1B, R2B, Rx i Ry zazwyczaj nie należą do tzw.
typoszeregu dostępnego w sklepach RTV i z tego powodu muszą być zastąpione „najbliższy-
mi” rezystancjami, które są w sprzedaży.
Tab. 6-5. Program w języku Matlab, służący do zaprojektowania układu elektronicznego dolnoprze-
pustowego filtra Butterwortha
% WYMAGANIA PROJEKTOWE
fpass = 8000; % częstotliwość pasma przepustowego odpowiadająca apass
fstop = 22050; % częstotliwość pasma zaporowego odpowiadająca astop
apass = 2; % nieliniowość pasma przepustowego w dB („zwis”)
astop = 40; % tłumienie w paśmie zaporowym
170 Analogowe filtry Butterwortha i Czebyszewa
12000
8000
Imag(s/(2π))
4000
0
-4000
-8000
-12000
-60000 -40000 -20000 0
Real(s)
0 0
20log10|H(jω)| [dB]
-20 -2
Φ(jω) [rd]
-40
-4
-60
-80 -6
-100 -8
0 20000 40000 0 20000 40000
f [Hz] f [Hz]
Rys. 6.14. Rozkład biegunów „³” oraz charakterystyka amplitudowo-częstotliwościowa i fazowo-często-
tliwościowa zaprojektowanego układu
C11 C21
R11 R12
R21 R22
R3 Rx
Uwe C12
C22
C3 Uwy
Ry
R1B
R1A R2B
R2A
1 pF 1 pF
R1 R1
R2 R2
R3 Rx
Uwe 1 pF
1 pF
1 pF Uwy
Ry
R1B
10 kΩ R2B
10 kΩ
Rys. 6.15. Przykład realizacji filtra dolnoprzepustowego piątego rzędu: (góra) schemat ogólny, (dół) sche-
mat uproszczony po przyjęciu wartości pewnych elementów (do wyznaczenia pozostają: R1, R2, R3, R1B, R2B,
R x, R y)
Analogowe filtry Butterwortha i Czebyszewa 171
7.1. Podstawy
W związku z tym, że wartości parametrów elementów elektronicznych układów analogowych
(np. rezystancji i pojemności) zależą od wielu czynników (np. temperatury i wilgotności)
i zmieniają się w czasie (żargonowo: „starzeją się” materiałowo), funkcje realizowane przez te
układy nie są stałe w czasie. Obecnie więc powszechnie obserwuje się tendencję do coraz
szybszego „przechodzenia” z sygnałem do postaci cyfrowej i realizowanie funkcji przetwarza-
nia metodami cyfrowego przetwarzania sygnałów. Nie bez znaczenia jest także mniejszy
wpływ zakłóceń na sygnały przesyłane w postaci cyfrowej.
W tym miejscu pozwolę sobie na małą dygresję. Jako młody asystent, pracujący na uczelni
technicznej, wielokrotnie prowadziłem zajęcia laboratoryjne ze studentami i do pomiaru prze-
sunięcia fazowego metodą krzywych Lissajous wykorzystywałem wzorcowy generator RC. Sęk
w tym, że „wzorcowym” był on tylko z nazwy, gdyż po kilkunastu latach pracy wartości jego
elementów RC i generowane częstotliwości były już zupełnie inne.
Jak już było powiedziane w rozdziale pierwszym, wszystkie sygnały w uproszczeniu dzieli się
na sygnały: ciągłe i dyskretne („w czasie” i „w wartościach”) oraz na sygnały deterministyczne
i losowe. W dalszej części książki zajmować się będziemy wyłącznie analizą i przetwarzaniem
sygnałów dyskretnych „w czasie” o dowolnych wartościach, czyli sygnałów ciągłych czasu
dyskretnego. W ogólności proces przetwarzania sygnałów ciągłych na dyskretne składa się
z trzech operacji: próbkowania w czasie, kwantowania wartości oraz kodowania. Zwycza-
jowo sygnały, które są tylko spróbkowane w czasie, są nazywane sygnałami dyskretnymi (ang.
discrete-time), sygnały zaś dyskretne, które dodatkowo są poddane kwantyzacji przyjmowa-
nych wartości i kodowaniu − sygnałami cyfrowymi. Przybliżmy obecnie dokładniej zagadnie-
nia próbkowania w czasie i kwantyzacji sygnałów analogowych.
Operacja próbkowania (dyskretyzacji) sygnału w czasie polega na pobraniu z sygnału ciągłe-
go x(t) jego „próbek” w wybranych, najczęściej równoodległych, chwilach czasowych. Opera-
174 Dyskretyzacja sygnałów analogowych
0 0
−0,5 −0,5 ∆t
−1 −1
0 0,1 0,2 0,3 0,4 0 0,1 0,2 0,3 0,4
t [s] t [s]
0 0
−0,5 −0,5
∆t
−1 −1
0 0,1 0,2 0,3 0,4 0 0,1 0,2 0,3 0,4
t [s] t [s]
Rys. 7.1. Przykład graficzny deskretyzacji sygnałów: a) sygnał ciągły „w czasie” i „w wartościach” x(t),
b) sygnał dyskretny „w czasie” i ciągły „w wartościach” x(n⋅∆t) = x(n) (spróbkowany „w czasie”), c) sygnał
ciągły „w czasie” i dyskretny „w wartościach” xq(t) (spróbkowany „w wartościach”, czyli skwantowany),
d) sygnał dyskretny „w czasie” (spróbkowany) i dyskretny „w wartościach” (skwantowany) xq(n⋅∆t), czyli
sygnał cyfrowy xq(n)
cja ta jest przedstawiona na rysunku 7.1b, który stanowi powtórzenie części rysunku 1.2.
Odległość „czasową” pomiędzy dwoma kolejnymi próbkami nazywa się okresem próbkowania
∆t, a jego odwrotność 1/∆t − częstotliwością próbkowania. Jeśli przez t0 oznaczymy dowolną
chwilę czasową, w której „spróbkowano” sygnał, wówczas zbiór próbek sygnału jest równy
{x(t0+n∆t), −∞ ≤ n ≤ ∞}. Dla t0 = 0 mamy {x(n∆t), −∞ ≤ n ≤ ∞}. Ponieważ okres próbkowania
jest znany, więc w praktyce najczęściej stosuje się zapis: {x(n)}, domyślnie zakładając, że
„indeks” czasu n zmienia się od minus do plus nieskończoności. Dalej upraszczając, często
opuszcza się oznaczenie „zbioru próbek” i mówi się o sygnałach dyskretnych x(n), y(n) czy
s(n). Z kontekstu wynika wówczas, czy mamy na myśli sygnał „w ogóle” jako zbiór jego
wszystkich próbek, czy konkretną próbkę sygnału w chwili czasowej o indeksie n. Oczywiście,
jeśli napiszemy x(n) = sin(2πf(n∆t)), wówczas x(n) może być utożsamiane z „przepisem” fun-
kcyjnym na wartość sygnału w dowolnej chwili czasowej n.
Z kolei kwantyzacja to sprowadzenie zbioru wartości, przyjmowanych przez sygnał x(t),
najczęściej nieskończonego zbioru liczb rzeczywistych, do jego skończonego podzbioru.
W jej wyniku powstaje sygnał xq(t), czyli sygnał ciągły przyjmujący tylko wartości z określo-
nego zbioru (rysunek 7.1c i 7.2). Kwantyzacja sygnału wynika z konieczności zastosowania
Dyskretyzacja sygnałów analogowych 175
xq xq
x x
Rys. 7.2. Charakterystyka przykładowego kwantyzatora sygnału analogowego: x(t) → xq(t): po lewej − ide-
alnego, po prawej − nieidealnego (występowanie nieliniowości i histerezy). Całe przedziały wartości przyj-
mowanych przez zmienną x mają tylko jednego reprezentanta xq
gdzie bity bN−1, ..., b1, b0, przyjmują tylko dwie wartości ze zbioru {0, 1}. Wynika stąd, że na
N bitach można zapisać tylko 2N różnych liczb o wartościach od 0 do 2N−1 (przykładowo na
dwóch bitach b1b0 możemy zapisać tylko cztery liczby: 00, 01, 10, 11, czyli 0, 1, 2, 3), a więc
nieskończona liczba wszystkich możliwych wartości przyjmowanych przez sygnał musi być
przedstawiona za pomocą tylko 2N reprezentantów. Przyjmuje się wówczas, że reprezentanci ci
„pokrywają” cały zakres zmienności sygnału, czyli od xmin do xmax, wtedy „kwant” zakresu jest
równy ∆x = (xmax−xmin)/2N i numer przedziału k = 0, 1, 2, ..., N−1, oznacza, że wartość sygnału
znajduje się w przedziale k-tym, tzn. x∈[xmin+k∆x, xmin+ (k+1)∆x ). Oczywiście wartość x musi
176 Dyskretyzacja sygnałów analogowych
być liczbą naturalną (tzn. liczbą całkowitą nieujemną: 0, 1, 2,...), aby można ją było zapisać
według wzoru (7.1). A co z liczbami całkowitymi ujemnymi? Dla nich czasami stosuje
się konwencję zapisu: znak-moduł, poświęcając najstarszy bit bN−1 na reprezentację znaku:
bN−1 = 0 − oznacza liczbę dodatnią, bN−1 = 1 − liczbę ujemną:
0bN −2 ...b2b1b0 − liczba dodatnia lub zero
1bN −2 ...b2 b1b0 − liczba ujemna
W konwencji tej wartość liczby całkowitej (ujemnej lub dodatniej) jest dekodowana według
równania:
N −2
x = ( −1)bN −1 [bN − 2 2 N − 2 + ... + b2 22 + b1 21 + b0 ] = ( −1)bN −1 ⋅ ∑ bi 2i (7.2)
i =0
Przykład. Jeśli N = 8, to w zapisie znak-moduł liczby całkowite 5 i −6 oraz ich suma są odpo-
wiednio równe:
00000110 = (−1)0 ⋅ [ 22 + 21 ] = 6
+ 10000101 = (−1)1 ⋅ [ 22 + 20 ] = −5
------------------------------------------------------
10001011 = (−1)1 ⋅ [ 23 + 21 + 20 ] = −11
Jak widać problem z reprezentacją liczb całkowitych typu znak-moduł polega na tym, że suma
i różnica dwóch liczb tak zapisanych nie zawsze daje poprawny wynik, jeśli liczba wynikowa
jest także interpretowana jako znak-moduł. Aby zapis uwzględniał także liczby całkowite
ujemne i nie stwarzał kłopotów obliczeniowo-interpretacyjnych, najczęściej stosuje się tzw.
kod uzupełnień do dwóch U2. W kodzie tym liczby nieujemne są zapisywane na dolnych N−1
bitach a bN−1 = 0:
0bN −2 ...b2b1b0 − liczba dodatnia lub zero
Alternatywnie „kod” binarny liczby ujemnej można także wyznaczyć na podstawie kodu liczby
dodatniej. Należy wówczas przesuwać się od prawej do lewej strony zapisu bitowego aż do
pierwszej jedynki, a następnie zanegować wszystkie bity, które występują po niej. Liczby
ujemne w kodzie U2 także zawsze mają jedynkę na najstarszym bicie i po tym są odróżniane
od liczb dodatnich. Liczby zapisane w kodzie U2 są dekodowane w sposób następujący:
N −2
x = −bN −1 2 N −1 + bN −2 2 N −2 + ... + b2 2 2 + b1 21 + b0 = −bN −1 2 N −1 + ∑ bi 2i (7.3)
i =0
1 1 1
(ZM) − 1 + N −1 , 1 − N −1 , (U2) − 1, 1 − 2 N −1
2 2
1 1 3
00000110 = 0 + + = +
32 64 64
1 1 1 1 1 1 123 5
11111011 = −1 + + + + + + = −1 + =−
2 4 8 16 64 128 128 128
178 Dyskretyzacja sygnałów analogowych
x = ( −1) z ⋅ 2 c ⋅ m
gdzie „z” oznacza znak (równy 0 lub 1), „c” jest cechą (wykładnikiem, eksponentą), będącą bi-
narną liczbą całkowitą (ujemną lub dodatnią), a „m” reprezentuje mantysę, zapisywaną jako
dodatnia liczba ułamkowa (2−1 ≤ m <1). W standardzie IEEE SP (ang. Single Precision), czyli
w pojedynczej precyzji, na zapis liczby w pamięci komputera przeznacza się 32 bity, z których
pierwszy jest bitem znaku, następnych osiem stanowi p r z e s u n i ę t ą cechę, ostatnie 23 bity
reprezentują zaś mantysę:
Największa i najmniejsza liczba, które można w ten sposób zakodować, wynoszą 3,4⋅1038 oraz
1,18⋅10−38. W standardzie IEEE DP (ang. Double Precision), czyli w podwójnej precyzji, na
liczbę przeznacza się 64 bity: 1 na znak, 11 na cechę i 52 na mantysę. Wówczas:
Oczywiście nas interesują sygnały, które występują na samym początku toru przetwarzania,
czyli sygnały ciągłe i „ciągły” stan diagnozowanych obiektów, które je generują. Przykładowo
ciągły zapis sygnału elektrokardiogramu serca i stan pacjenta oraz ciągły zapis sygnału mowy
i „ciągła” treść wypowiedzi. Jednak jeśli do analizy i przetwarzania tych sygnałów (monitoro-
wania obiektów) chcemy zastosować procesor cyfrowy lub komputer, jest oczywistym, że
każdy sygnał musi zostać zastąpiony przez zbiór związanych z nim liczb: stałoprzecinkowych
(zapisanych w dwójkowym systemie pozycyjnym) lub zmiennoprzecinkowych (cecha i man-
tysa). W tym momencie każdy „sen o potędze” musi się skończyć i o sygnale analogowym
(ciągłym) pozostaje już tylko wspomnienie. Jest jednak ważne, aby wspomnienie to było
„wiecznie żywe”, tzn. aby sygnał dyskretny miał jak „najwięcej” właściwości (cech) sygnału
analogowego, tzn. aby dyskretyzacja prowadziła do jak najmniejszej utraty informacji. Z twier-
dzenia o próbkowaniu, przedstawionego w jednym z poprzednich rozdziałów, wynika, że jeśli
pasmo częstotliwościowe sygnału jest ograniczone, to wystarczy go próbkować z częstotliwoś-
cią co najmniej dwa razy większą niż szerokość tego pasma, a jesteśmy w stanie w pełni
zrekonstruować sygnał analogowy x(t) z jego próbek x(n). Oczywiście przy założeniu, że nie
„zaokrąglamy” wartości próbek sygnału. A przecież takie „zaokrąglanie” w komputerze zaw-
sze występuje. Dodatkowo, w przypadku liczb zmiennoprzecinkowych, błąd bezwzględny za-
okrąglenia nie jest stały i zależy od wartości liczby. Wynika to z faktu, że liczba bitów mantysy
jest skończona, a więc jest ograniczona także liczba cyfr znaczących liczby binarnej w niej
zapisanej, niezależnie od jej wartości. Przykładowo dla pojedynczej precyzji błąd zaokrąglenia
liczby jest równy 2c⋅2−23 i zależy od wartości jej cechy c. Dodatkowo nie należy zapominać o
tym, że przetworniki analogowo-cyfrowe, dostarczające do procesora (komputera) próbki
sygnału, mają skończoną liczbę bitów (Nb = 8, 10 12, 14, 16, ...), czyli są w stanie rozróż-
nić skończoną liczbę przedziałów wartości sygnału (Np = 2Nb, odpowiednio: 256, 1024, 4096,
16384, 65536, ...). Tak więc już na wstępie, w sposób bezpowrotny jest tracona informacja
zawarta w sygnale.
Oczywiście, nie należy się załamywać. W telefonii cyfrowej spróbkowany sygnał mowy jest
przechowywany (transportowany) tylko na ośmiu bitach i wszyscy są zadowoleni. Podobnie
„muzyka z komputera” wykorzystuje „tylko” 16 bitów i w dużej mierze zaspokaja wymagania
melomanów początku XXI wieku. A temperatura pacjentów w szpitalach jest odczytywana
i zapisywana w karcie chorego tylko dwa razy na dobę, i to wystarcza do celów diagnostycz-
nych. Wniosek: decyzję o liczbie bitów oraz o częstotliwości próbkowania należy podjąć w za-
leżności od właściwości sygnału i celów analizy.
Obecnie skrótowo, tylko w celu zaznajomienia mniej „wtajemniczonego” Czytelnika, przedsta-
wimy praktyczną stronę konwersji sygnałów analogowych na cyfrowe, czyli budowę typowych,
najczęściej stosowanych przetworników analogowo-cyfrowych i cyfrowo-analogowych.
analogowe, czyli napięcie „reprezentanta” całego przedziału. Zwykle jest to wartość napięcia
środka przedziału kwantowania. N-bitowy przetwornik A/C ma dwa „sygnały” wejściowe (mie-
rzone napięcie analogowe oraz napięcie referencyjne) oraz N „sygnałów” wyjściowych
(poszczególne bity numeru przedziału kwantowania), a N-bitowy przetwornik C/A odwrotnie:
ma N+1 „sygnałów” wejściowych (N bitów numeru przedziału oraz napięcie referencyjne)
i jeden analogowy sygnał wyjściowy. Oczywiście przetworniki te mogą mieć jeszcze inne wej-
ściowe i wyjściowe sygnały sterujące. Interpretacja „sygnałowa” działania przetworników A/C
i C/A jest przedstawiony na rysunku 7.3.
UREF UREF
b3={0,1} b3={0,1}
Ux Przetwornik Przetwornik U
A/C b2={0,1} b2={0,1} C/A
b1={0,1} b1={0,1}
b0={0,1} b0={0,1}
K 0 Nr=5 A/C=101
Ux Ux
R Nr=4 A/C=100
K 1
R U3 Nr=3 A/C=011
K 1
U2 Nr=2 A/C=010
R
K 1 U1 Nr=1 A/C=001
R
U0 Nr=0 A/C=000
0
Rys. 7.4. Ilustracja zasady pracy przetwornika A/C z bezpośrednim porównaniem napięć: a) schemat ukła-
dowy, b) schemat logiczny
Przetwornikiem A/C, który realizuje operację kwantowania sygnału w sposób najbardziej natu-
ralny, jest przetwornik A/C „bezpośredniego porównania”, przedstawiony na rysunku 7.4a.
Przetwornik ten otrzymuje z zewnątrz stabilne napięcie referencyjne, z którego wytwarza
w swoim wnętrzu napięcie zakresowe. Napięcie to jest podawane na drabinę M rezystorów
o takiej samej wartości rezystancji R (dzielnik napięcia). Napięcie na każdym rezystorze wyno-
si ∆U = Uzakres/M (szerokość przedziału kwantowania), napięcie zaś po k-tym rezystorze jest
równe Uk = k∆U, k = 0,1,2,..., M. Za każdym rezystorem znajduje się komparator, czyli układ
porównujący dwa napięcia: napięcie przetwarzane Ux oraz konkretne napięcie z dzielnika Uk.
Jeśli napięcie Ux jest większe od napięcia Uk (Ux > Uk), to wyjście z k-tego komparatora jest
Dyskretyzacja sygnałów analogowych 181
wysokie (logiczna „jedynka”), kiedy zaś Ux < Uk, to jest ono niskie (logiczne „zero”). Na wyj-
ściu układu komparatorów otrzymujemy więc wskaźnik liniowy: sekwencję jedynek, po której
następuje sekwencja zer (analogia do słupka rtęci w termometrze). Liczba jedynek określa
numer przedziału kwantowania, w którym znajduje się przetwarzane napięcie Ux. Znajdujący
się w przetworniku transkoder zamienia ten numer na binarny kod dwójkowy, naturalny lub
z uzupełnieniem do dwóch. Na rysunku 7.4b przedstawiono sytuację, kiedy przetwornik ma
M = 8 rezystorów, czyli 8 przedziałów kwantowania ponumerowanych od 0 do 7. Wystarczy
więc Nb = 3 bitów, aby zapisać ten numer w kodzie naturalnym dwójkowym. Przykładowo
wynikiem przetwarzania napięcia Ux przypadającego na czwarty przedział kwantowania
(Nr = 4) jest liczba binarna b2b1b0 = 100.
Wielką zaletą przedstawionych powyżej przetworników A/C z bezpośrednim porównaniem
napięć jest ich bardzo krótki czas przetwarzania, związany jedynie z czasem przełączania się
komparatorów oraz szybkością pracy transkodera sposobu zapisu numeru przedziału kwanto-
wania. Podstawową ich wadą jest jednak duży błąd rozdzielczości oraz wysoka cena, wyni-
kająca z konieczności użycia dużej liczby komparatorów dla przetworników wielobitowych
(dokładnie 2Nb−1 komparatorów dla przetwornika Nb-bitowego, co dla przetwornika 12-bito-
wego daje 4095 takich układów). W praktyce stosuje się 8-bitowe przetworniki tego typu
w układach przetwarzania obrazu.
Do innej grupy należą kompensacyjne przetworniki A/C, zdecydowanie tańsze niż przetwor-
niki bezpośredniego porównania, ale wolniejsze od nich. Ich budowa i zasada działania jest
przedstawiona na rysunku 7.5. Układ A/C z kompensacją liniową (rysunek 7.5a) składa się
z komparatora, przetwornika C/A, licznika binarnego i generatora. Zewnętrzny sygnał Start
uruchamia generator, którego impulsy zaczyna zliczać licznik binarny. Na jego wyjściu kolejno
pojawiają się liczby: 0000, 0001, 0010, 0011, ... które są podawane na wejście przetwornika
C/A. Następnie jest syntezowane napięcie analogowe Ulicznik porównywane przez komparator
z przetwarzanym napięciem Ux. Wyście z komparatora jest równe 1 dopóki Ux jest większe od
Ulicznik. Jednak w pewnym momencie liniowo narastające napięcie Ulicznik staje się większe od
Ux, w związku z czym na wyjściu komparatora pojawia się sygnał 0 blokujący impulsy
generatora. „Zatrzaśnięty” stan licznika jest wynikiem przetwarzania C/A.
Wielką zaletą opisanego powyżej rozwiązania jest jego prostota, a główną wadą − potencjalnie
bardzo długi czas przetwarzania. Dla napięcia Ux nieznacznie mniejszego od napięcia
zakresowego, muszą bowiem zostać sprawdzone napięcia „reprezentantów” wszystkich prze-
działów kwantowania. Przykładowo dla przetwornika 12-bitowego jest to 4096 napięć. Każde
z nich musi zostać ustawione oraz porównane, dlatego układ przetwornika A/C z kompensacją
liniową (równomierną) w praktyce nie znajduje zastosowania. Wypiera go zdecydowanie szyb-
szy układ z kompensacją wagową. Opiera się on na znanej od starożytności metodzie „poło-
wienia przedziału”, w informatyce nazywanej szybką metodą przeszukiwania (porządkowania)
„dwójkowego”. Załóżmy, że mamy uporządkowany rosnąco zbiór liczb {u1, u2, u3, ...,uM} oraz
jakąś liczbę ux. Naszym zadaniem jest znalezienie pierwszej liczby uk mniejszej od ux. Oczy-
wiście, możemy po kolei porównywać z ux wartości liczb u1, u2, u3, ..., czyli zastosować
metodę przeszukiwania liniowego (równomiernego). Ale możemy także wybrać liczbę uk leżą-
cą w środku naszego zbioru i sprawdzić, czy tak wybrane uk jest mniejsze od ux. Jeśli jest
mniejsze, to dalej należy kontynuować poszukiwania w górnej części zbioru, w przeciwnym
przypadku − w dolnej. Oczywiście ponownie można zastosować technikę podziału wybranego
podzbioru na część „dolną” i „górną”. Operację tę powtarza się aż do momentu, kiedy
sprawdzi się wszystkie liczby zbioru.
Załóżmy obecnie, że zbiór {uk} składa się z 2Nb elementów. W takim przypadku w metodzie li-
niowej maksymalnie wykonuje się 2Nb porównań, a w metodzie „dwójkowej” (decyzja „na
182 Dyskretyzacja sygnałów analogowych
dole” lub „na górze”) zawsze tylko Nb porównań. Dla Nb = 12 w drugiej metodzie wykonuje-
my tylko 12 porównań zamiast 4096. Zysk jest kolosalny!
Na rysunku 7.5b przedstawiono schemat blokowy i przykładową zmienność napięcia UC/A dla
przetwornika A/C z kompensacją wagową. Układ logiki ustawia kolejno bity od „najstarszego”
(ang. MSB − Most Significant Bit), leżącego po lewej stronie, do „najmłodszego” (ang. LSB −
Least Significant Bit), znajdującego się po prawej stronie, i pozostawia je lub kasuje w zależ-
ności od sygnału decyzyjnego z komparatora. Kolejność operacji jest następująca:
1) inicjalizacja: wyzerowanie wszystkich bitów wychodzących z układu logiki oraz ustawienie
indeksu pierwszego ustawianego bitu k = Nb;
2) zsyntezowanie napięcia UC/A przez przetwornik C/A, odpowiadającego ustawionej kombi-
nacji bitów;
3) porównanie napięcia UC/A z Ux przez komparator: jeśli Ux > UC/A, to wyjście z komparatora
jest równe 1, w przeciwnym przypadku zero;
4) weryfikacja ostatnio ustawionego bitu: pozostawienie jeśli stan komparatora jest równy
1 oraz wyzerowanie w przeciwnym razie;
5) ustawienie indeksu kolejnego bitu k = k−1; skok do punktu 2).
Na rysunku 7.5b jest pokazana przykładowa zmienność napięcia UC/A dla przetwornika cztero-
bitowego (Nb = 4). Na początku jest ustawiany najstarszy bit (czyli liczba 1000) i syntezowane
napięcie równe 1/2 zakresu przetwornika A/C. W związku z tym, że napięcie to jest mniejsze
od Ux, najstarszy bit nie zostaje wyłączony przez komparator. Następnie jest ustawiany drugi
od lewej strony, związany z napięciem 1/4 zakresu (czyli jest ustawiana liczba 1100) i jest
syntezowane napięcie odpowiadające 1/2+1/4 = 3/4 zakresu. Ale to napięcie jest już większe
od Ux, dlatego ostatnio włączony bit zostaje wyzerowany. Potem zostają włączone bity odpo-
wiadające 1/8 i 1/16 zakresu, które nie zostają wyłączone, ponieważ sumaryczne napięcie UC/A
w obu przypadkach nie przekracza napięcia Ux. Wynikiem przetwarzania jest więc liczba bi-
narna 1011.
Opisany powyżej przetwornik A/C powszechnie jest nazywany przetwornikiem kompensacyj-
no-wagowym, ponieważ w trakcie procesu przetwarzania napięcie UC/A stara się zrównać z na-
pięciem Ux, czyli − innymi słowy − skompensować go. Sam algorytm kompensacji nie jest
natomiast liniowy tylko wagowy („dwójkowy”). Jeśli założymy, że przetwornik potrzebuje
czas tb na ustawienie 1 bitu, to ustawienie Nb bitów zajmuje zawsze Nb⋅tb sekund. W trakcie
tego czasu napięcie Ux nie powinno się zmieniać.
Z powodu trudności w uzyskaniu napięcia referencyjnego o bardzo dużej dokładności i stabil-
ności, realizacja dużej liczby bitów jest podstawowym problemem we wszystkich typach prze-
tworników A/C.
Poza wymienionymi powyżej powszechne zastosowanie znajdują także przetworniki typu sig-
ma-delta (zwłaszcza w sprzęcie audio i wibroakustyce) oraz podwójnie całkujące (w cyfro-
wych przyrządach pomiarowych). W związku z dostępnością literatury na ich temat, nie omó-
wiono ich dalej szczegółowo, tylko skrótowo scharakteryzowano. Należy zwrócić szczególną
uwagę na fakt, że przetworniki całkujące są przetwornikami wartości średnich a nie chwilo-
wych napięcia, które umożliwiają eliminację (odfiltrowanie) analogowych zakłóceń okreso-
wych podczas samego przetwarzania A/C.
Ux 0/1
Ux 0/1 K
K UC/A
Ulicznika
C/A UREF
C/A UREF
0 0 1 1 Stop
0 0 1 1 Stop Układ logiki
Licznik/Generator Start
Start UC/A
Ulicznika Uzakres Uzakres
3/4Uz Ux
Ux
1/2Uz
1/4Uz
stan licznika
a) LSB
k=0 i/8 1 8R
k=1 i/4 1 4R
0 2R
is Rs
k=2 i/2
k=3 i 0 R
MSB Wzm
UREF
Uwy
2R
b) LSB
i/8 2R 1
R i/4 2R 1
R 2R is Rs
i/2 0
R i 2R 0
Wzm
UREF MSB
Uwy
Rys. 7.6. Przykładowe schematy blokowe przetworników C/A z sumowaniem prądów. Układ z drabinką
rezystorów: a) Rk = 2kR, b) R-2R
Nb −1 Nb −1 U
U wy = −is Rs = − ∑ bk ik Rs = − ∑ bk REF Rs (7.6)
k =0 k =0 2k R
gdzie bk jest wartością k-tego bitu przetwarzanej liczby binarnej, która decyduje o zamknięciu
(„1”) lub otwarciu („0”) klucza w k-tej gałęzi.
Przedstawiony powyżej układ przetwornika A/C jest bardzo prosty i intuicyjnie zrozumiały, ale
ma bardzo poważną wadę: w przypadku dużej liczby bitów w drabince będą występowały
rezystory o bardzo dużej różnicy rezystancji: R0 = 2Nb−1R i RNb−1 = R. Ponieważ każdy z nich
jest wykonany z określoną tolerancją może się okazać, że błąd wartości rezystora dużego prze-
kracza wartość rezystora małego. W praktyce preferuje się więc przetworniki C/A z sumowa-
niem prądów, w których występuje drabinka rezystorów mających tylko dwie wartości: R i 2R.
Schemat blokowy takiego układu jest pokazany na rysunku 7.6b. Rezystancje o wartości 2R
znajdujące się w poziomych gałęziach są połączone po prawej stronie zawsze do „masy” albo
bezpośrednio (dla bitu „0”), albo „poprzez” wzmacniacz operacyjny (dla bitu „1”), dlatego
zawsze płynie przez nie prąd, ustawienie przełącznika zaś decyduje jedynie o tym, czy prąd ten
będzie wpływał na rezystor Rs czy też nie. Wartości prądów w poziomych gałęziach równe
i, i/2, i/4 oraz i/8 wynikają natomiast z wartości poszczególnych rezystorów i struktury ich
połączenia. Idąc od góry, r ó w n o l e g ł e połączenie rezystora 2R, zwartego bezpośrednio do
masy po lewej stronie, z rezystorem 2R górnej gałęzi poziomej daje wypadkową rezystancję
równą R. W wyniku s z e r e g o w e g o połączenia tej rezystancji z rezystorem R, znajdującym
się w górnej gałęzi pionowej, ponownie otrzymujemy rezystancję 2R i cała operacja się
powtarza: następuje kolejne łączenie równoległe a po nim szeregowe. Jeśli tak, to wypadkowa
rezystancja części układu znajdującej się powyżej każdego rezystora 2R, leżącego w dowolnej
gałęzi poziomej, jest równa także 2R. Jeśli więc przez dolny rezystor 2R płynie jakiś prąd i, to
taki sam prąd wpływa do górnej części układu. W pierwszym węźle dzieli się on na połowę
(otrzymujemy i/2), w następnym dzieli się ponownie (i/4) itd., czyli otrzymujemy takie same,
„ważone” wartości prądów jak w układzie z rysunku 7.6a, jednak przy zastosowaniu tylko
dwóch wartości rezystorów: R i 2R. Problem dokładności ich wykonania jest więc zdecydowa-
nie mniejszy niż wykonania rezystancji dla układu Rk = 2kR. Poza tym układ R-2R wykonuje
się w jednej strukturze, w której są istotne jedynie stosunki rezystancji.
x(n) y(n)
x(t) Filtr xf(t) Układ xp(t) yq(t) Układ yp(t) Filtr y(t)
DP P&P
A/C µP C/A
P&P DP
Gotów Gotów
Rys. 7.7. Jeden kanał A/C − C/A toru przetwarzania analogowo-cyfrowego (A/C) i cyfrowo-analogowego
(C/A) sygnałów: filtr dolnoprzepustowy DP, układ próbkowania z podtrzymaniem P&P, przetwornik A/C,
mikroprocesor µP, przetwornik C/A, układ próbkowania z podtrzymaniem, filtr dolnoprzepustowy (rekon-
struujący)
Rys. 7.8. Przykłady najprostszych rozwiązań układów próbkowania z podtrzymaniem P&P: a) szybkie
ładowanie kondensatora C, czyli próbkowanie chwilowej wartości napięcia Uwe (bardzo mała rezystancja R1,
uwzględniająca rezystancję zamkniętego klucza), b) bardzo wolne rozładowanie kondensatora C poprzez
bardzo dużą rezystancję R2 − podtrzymanie na wyjściu spróbkowanej wartości napięcia, „zapisanej” na
kondensatorze, c) układ P&P wykorzystujący wzmacniacze operacyjne, mające bardzo dużą impedancję
(rezystancję) wejściową oraz bardzo małą impedancję (rezystancję) wyjściową
xx(t) Multi
2(t) Filtr Układ x(n)
A/C plekser µP
DP P&P cyfrowy
Start
Układ logiki
Multi
xx(t)
2(t) Filtr Układ plekser x(n)
DP P&P
A/C µP
analogowy
Start
Układ logiki
Rys. 7.9. Różne warianty wielokanałowych układów przetwarzania A/C (a, b, c) oraz układ do wielofa-
zowego próbkowania jednego sygnału, który podwyższa maksymalną częstotliwość próbkowania całego
systemu i z tego powodu jest stosowany w oscyloskopach cyfrowych (d)
x1(t) Filtr
DP
Multi x(n)
Układ
x2(t) Filtr plekser A/C µP
P&P
DP analogowy
x3(t)
Filtr
DP
Start
Układ logiki
x(t)
Filtr Układ
A/C
DP P&P
Multi x(n)
Układ plekser
P&P
A/C µP
cyfrowy
Układ
A/C
P&P
Start
Układ logiki
a) b) UREF
Rtemp Rtensometr Rc
Uwy Ra Rb Uwy
UREF RREF
i wzmacniacz
pomiarowy
Rys. 7.10. Przykład akwizycji dwóch wielkości fizycznych: a) pomiar temperatury za pomocą termore-
zystora, b) pomiar naprężenia za pomocą tensometru w układzie mostkowym
UREF
Uz czujnik A/C
Rys. 7.11. Przykładowy układ („z wyjściem ilorazowym”) próbkowania napięcia z czujnika, który nie jest
wrażliwy na zmianę napięcia zasilającego Uz
W pierwszym układzie pod wpływem temperatury zmienia się rezystancja czujnika Rtemp, co
powoduje zmianę wartości prądu i, płynącego w obwodzie (i = UREF/(Rtemp+RREF)). Z kolei
przepływ tego prądu przez rezystancję RREF daje zmienne napięcie Uwy = iRREF, które jest poda-
wane na wejście toru przetwarzania A/C. Dla uproszczenia założyliśmy, że impedancja wej-
ściowa toru przetwarzania A/C jest bardzo duża w porównaniu z RREF i można zaniedbać prąd
wpływający do tego toru.
W drugim układzie czujnikiem jest zaś tensometr, czyli rezystor zmieniający swoją wartość
podczas rozciągnięcia. Załóżmy, że jest on naklejony na części układu mechanicznego. Pod
wpływem naprężenia część ta ulega deformacji (zmienia się jej kształt). W wyniku tego zmie-
nia się także długość tensometru i jego rezystancja. Ponieważ tensometr znajduje się w ukła-
dzie mostka wstępnie zrównoważonego (RtensometrRb = RaRc), zmiana jego rezystancji powoduje
pojawienie się napięcia „niezrównoważenia” na przekątnej „sygnałowej” mostka. Napięcie to
jest podawane poprzez wzmacniacz różnicowy na wejście toru A/C. Oczywiście pomiar tem-
peratury może być także wykonywany w układzie mostkowym.
W obu omawianych przypadkach należy zadbać o to, aby napięcie wyjściowe zależało tylko od
wielkości mierzonej lub zminimalizować wpływ innych czynników. Na rysunku 7.11 jest
przedstawiony przykładowy układ („z wyjściem ilorazowym”) próbkowania napięcia z czuj-
nika, który nie jest wrażliwy na zmianę napięcia zasilającego Uz. Osiągnięto to poprzez wyko-
rzystanie napięcia Uz jako napięcia referencyjnego UREF przetwornika A/C.
Najlepiej jest gdy zależność napięcia od wielkości mierzonej jest liniowa. Równocześnie
maksymalna zmiana napięcia, odpowiadająca maksymalnej zmianie wartości wielkości fizycz-
nej, powinna zajmować prawie cały zakres przetwornika A/C. Dzięki temu po skwantowaniu
kształt sygnału jest odtworzony wiernie. Aby tak było, sygnał z układu czujnika musi być
odpowiednio wzmocniony.
Najczęściej stosuje się wzmacniacze wykorzystujące scalone wzmacniacze operacyjne. Mają
one impedancję wejściową rzędu 106÷1012 Ω pomiędzy wejściami „+” i „−” , czyli bardzo
dużą, oraz wzmocnienie rzędu 105÷106 dla częstotliwości 1 Hz (wzmocnienie to spada do je-
dności dla częstotliwości 300 kHz ÷ 100 MHz, w zależności od modelu). Z powodu bardzo du-
190 Dyskretyzacja sygnałów analogowych
Wzm=-R2/R1 R2
R1 Uwe Uwy
R2
Uwe Uwy
R3 R1
Wzm=1+R2/R1
Wzm=R2/R1 Wzm=R4/R3⋅(1+2R2/R1)
R2 R3 R4
R1
Uwe R2
R1 Uwy Uwe R1
R2 R2
Uwy
R3 R4
Rys. 7.12. Stosowane układy wzmacniaczy, wykorzystujące wzmacniacze operacyjne: a) wzmacniacz od-
wracający napięcie, b) wzmacniacz nieodwracający napięcia, c) wzmacniacz różnicowy, d) pomiarowy
wzmacniacz różnicowy
żej rezystancji wejściowej zakłada się, że do wzmacniacza operacyjnego nie wpływa prąd,
czyli napięcia na obu jego wejściach są identyczne.
Na rysunku 7.12 są przedstawione cztery podstawowe rodzaje wzmacniaczy, zbudowane na
wzmacniaczach operacyjnych. Ich wzmocnienia są określone przez sposób połączeń i wartości
zastosowanych rezystorów. Wzmocnienia te są także podane na rysunku 7.12. Dla przykładu
wyprowadzimy wzmocnienie dla wzmacniacza odwracającego. Ponieważ do wzmacniacza
operacyjnego nie wpływa prąd, więc na wejściu „+” i „−” mamy napięcie masy. W związku
z tym przez rezystor R1 płynie prąd i o wartości Uwe/R1. Prąd ten płynie dalej przez rezystor R2,
powodując na nim spadek napięcia równy R2i. W związku z tym, że na wejściu „−”
wzmacniacza mamy „masę”, więc Uwy = = −R2i = −(R2/R1)Uwe, czyli wzmocnienie układu wy-
nosi −R2/R1. W podobny sposób wyprowadza zależności określające wzmocnienia pozostałych
wzmacniaczy. W tabeli 7-1 zebrano właściwości wszystkich układów. Zastosowanie wejścia
różnicowego jest korzystne ze względu na niewrażliwość układu na „zakłócenia” addytywne,
dodające się równocześnie do obu „gałęzi” wejściowych. Wzmacniacz różnicowy jest także
niewrażliwy na zmianę temperatury, gdyż w taki sam sposób zmieniają się rezystory podłączo-
ne do jego wejścia „+” i „−”. Na szczególną uwagę zasługuje układ wzmacnicza pomiarowego,
który ma zarówno wejście różnicowe, jak i dużą impedancję wejściową. W porównaniu ze
zwykłym wzmacniaczem różnicowym jest zminimalizowany w nim także „przesłuch” z wejścia
dodatniego do ujemnego oraz jest zwiększone tłumienie zakłóceń „wspólnych”, występujących
na obu wejściach.
Dyskretyzacja sygnałów analogowych 191
Wróćmy na koniec jeszcze raz do rysunku 7.7. Terminem „cyfrowe przetwarzanie sygnałów”
(lub „przetwarzanie sygnałów cyfrowych”) nazywa się przetwarzanie sekwencji próbek sygna-
łu x(n) na sekwencję próbek sygnału y(n). Stosowne obliczenia są realizowane przed dowolny
mikroprocesor (mikrokontroler, procesor, komputer). Najpopularniejsze metody analizy i prze-
twarzania sygnałów cyfrowych x(n) będą przedmiotem naszego zainteresowania w następnych
rozdziałach.
8
Analiza częstotliwościowa
sygnałów dyskretnych
∞ ∞
1 ωp
X δ ( jω) = X ( jω) ⊗ ω p ∑ δ(ω − kω p ) =
2π
∑ X ( j ( ω − kω p ) ) (8.2)
k = −∞ 2π k = −∞
jesteśmy w stanie zsyntezować z niej ciągły sygnał oryginalny x(t). W tym celu należy wyzna-
czyć odwrotne przekształcenie Fouriera „kopii” i zmodulować częstotliwościowo uzyskany
wynik, tzn. wymnożyć go z odpowiednim sygnałem harmonicznym exp(jkωpt)) (patrz podroz-
dział 4.5).
W poprzednim rozdziale wykazywaliśmy że sygnał, analizowany numerycznie na cyfrowych
procesorach uniwersalnych (np. komputer) lub sygnałowych (np. telefon komórkowy) musi być
dyskretny (cyfrowy) z racji ograniczeń sprzętowych. Przypomnijmy: w komputerze sygnał to
zbiór liczb x(n), czyli ciąg „pobranych” (w równych odstępach czasu) wartości próbek sygnału,
zapisanych ze skończoną precyzją. Jakie jest widmo częstotliwościowe takiej dyskretnej
reprezentacji sygnału ciągłego? Teoretycznie jest ono ciągłe. Jednak kiedy jesteśmy zmuszeni
wyznaczać je numerycznie, to czynimy to dla wybranych, konkretnych, interesujących nas
wartości częstotliwości, czyli je dyskretyzujemy w osi częstotliwości. „Próbkujemy” więc wid-
mo sygnału X(f) (lub X(jω)), podobnie jak próbkowaliśmy sam sygnał x(t).
W ogólnym przypadku rozważając problem analizy widmowej sygnałów mamy do czynienia
z czterema różnymi metodami (odmianami) zastosowania analizy fourierowskiej. A mianowi-
cie rozróżniamy:
• przekształcenie Fouriera dla sygnałów ciągłych (ciągły czas i częstotliwość),
• szereg Fouriera dla sygnałów ciągłych (ciągły czas i dyskretna częstotliwość),
• przekształcenie Fouriera dla sygnałów dyskretnych (dyskretny czas i ciągła częstotliwość),
• szereg Fouriera dla sygnałów dyskretnych (dyskretny czas i częstotliwość).
Obecnie omówmy poszczególne przypadki. W celu zachowania kompletności wywodów po-
wtórzymy także definicję całkowego przekształcenia Fouriera.
Sygnał x(t) ma transformatę Fouriera X(ω) wtedy i tylko wtedy, kiedy spełnia on określone
warunki (tzw. warunki Dirichleta), które gwarantują określoność całki, występującej w równa-
niu (8.3a). Wzory (8.3) mogą być także interpretowane jako całki z iloczynów dystrybucji
(funkcji uogólnionych), których wynikiem może być także dystrybucja. Sygnał x(t) jest przed-
stawiony jako suma nieskończonej liczby blisko siebie leżących drgań zespolonych o ampli-
tudzie dA = X(ω)dω, stąd X(ω) = dA/dω i w związku z tym X(ω) może być interpretowane jako
„gęstość amplitudy” lub „gęstość spektralna” widma sygnału x(t). Ciągłe przekształcenie Fou-
riera jest granicznym przypadkiem szeregu Fouriera ciągłego sygnału okresowego. Własności
przekształcenia Fouriera, zdefiniowanego przez parę równań (8.3), zostały szczegółowo omó-
wione w rozdziale czwartym.
Kiedy analizowany sygnał jest sygnałem okresowym o okresie T, mogą w nim występować tyl-
ko pulsacje o określonej częstotliwości, tzn. składowa stała oraz pulsacja podstawowa ω0 i jej
wielokrotności (harmoniczne) kω0:
194 Analiza częstotliwościowa sygnałów dyskretnych
T /2 ∞
1 2π
X (kω0 ) = x (t )e − jkω0t dt , ∑ X (kω0 )e jkω t ,
T −T∫/ 2
x (t ) = 0 ω0 = , k = 0, ± 1, ± 2, ... (8.4a, b)
k = −∞ T
Można wykazać, iż dla T→∞ równania (8.4) sprowadzają się do (8.3). Szczegóły dotyczące
szeregu Fouriera (8.4) przedstawiono w rozdziale trzecim.
która jest przykładowo równa 2π dla f = fp oraz −π i π dla −fp /2 i fp /2. Zastosowanie oznacze-
nia X(ejω ) w (8.5a) dla widma dyskretnego sygnału x(n) ma go odróżnić od widma X(jω)
ciągłego sygnału x(t). Konwencja ta będzie stosowana w całej dalszej części książki. Podobnie,
pulsacja Ω będzie konsekwentnie dalej oznaczała pulsację unormowaną względem częstotli-
wości próbkowania fp.
W celu wyprowadzenia wzoru odwrotnej transformacji Fouriera dla sygnałów dyskretnych,
umożliwiającego syntezę sygnału x(n∆t) na podstawie jego widma X(ejΩ), przypomnijmy, że
zgodnie z rozważaniami przeprowadzonymi w rozdziale czwartym (twierdzenie o próbkowa-
niu) X(ejΩ) jest funkcją okresową o okresie 2π, a my syntezujemy sygnał tylko z dolnopasmo-
wej części tego widma (oryginał lub jedna z „kopii”). W związku z tym wymnóżmy obie strony
równania (8.5b) przez e jΩm i scałkujmy je granicach od −π do π względem Ω:
Analiza częstotliwościowa sygnałów dyskretnych 195
π π ∞
∫ X ( e jΩ ) e jΩ m d Ω = ∫ n∑
=−∞
x( n∆t )e − jΩ n e jΩ m d Ω =
−π −π
π N π
N
− jΩ n jΩ m
= lim ∑
∫ N →∞ n =− N x ( n ∆ t )e e d Ω = lim
N →∞
∑
x ( n ∆ t ) ∫ e jΩ ( m − n ) d Ω =
−π n =− N −π
∞ π
= ∑ x ( n∆t ) e jΩ ( m − n )dΩ = 2 πx (m∆t )
∫
(8.7a)
n = −∞ −π
skąd otrzymujemy:
1 π jΩ jΩ m
x ( m ∆t ) = ∫ X (e ) e d Ω
2π −π
(8.7b)
jest jednostajnie zbieżne do widma X(ejΩ) (8.5b) dla N dążącego do nieskończoności, co umoż-
liwiło nam zmianę kolejności całkowania i sumowania. Wykorzystaliśmy także właściwość
ortogonalności funkcji harmonicznych (bazy fourierowskiej):
π
jΩ ( m − n ) 2π, m = n
∫e dΩ =
0, m ≠ n
.
−π
Jak widać sygnał dyskretny x(n) można zawsze odtworzyć z jego widma X(ejΩ), natomiast od-
tworzenie sygnału x(t) na podstawie x(n) jest możliwe tylko wtedy, kiedy częstotliwość prób-
kowania została odpowiednio dobrana (zgodnie z twierdzeniem Nyquista).
P r z y p o m n i j m y, baza fourierowska ejΩn = cos(Ωn)+jsin(Ωn), występująca w równaniu
(8.8a), jest taka sama dla Ω i Ω+k⋅2π, gdyż:
cos[( Ω + k 2 π)n ] = cos(Ωn + k 2πn ) = cos(Ωn ) cos(k 2πn ) − sin(Ωn ) sin(k 2πn ) = cos(Ωn )
sin[(Ω + k 2π)n ] = sin(Ωn + k 2πn ) = sin(Ωn ) cos( k 2πn ) + cos(Ωn ) sin( k 2πn ) = sin(Ωn )
W związku z tym widmo X(ejΩ) powtarza się okresowo co 2π. W praktyce wyznacza się jego
okres „podstawowy” dla [−π, π) lub [0, 2π). Jeśli podczas próbkowania spełnione było twier-
dzenie Kotielnikowa-Shannona („o próbkowaniu”), to z każdego z tych okresów można od-
tworzyć sygnał x(n). Otrzymujemy w ten sposób granice całkowania w równaniu (8.8b).
Zgodnie ze wzorem (8.7) zmienności Ω w przedziałach [−π, π) lub [0, 2π) odpowiada więc
zmienność częstotliwości sygnału x(n) w przedziałach [−fp/2, fp/2) lub [0, fp).
196 Analiza częstotliwościowa sygnałów dyskretnych
( )
∞ ∞ ∞
∑ x(n − n0 )e − jΩn = ∑ x(m)e − jΩ( m + n 0) = e − jΩn 0 ∑ x(m)e − jΩm = e − jΩn 0 X e jΩ (8.10)
n = −∞ n = −∞ n = −∞
i właściwością iloczynu:
∞ ∞ 1 +π
∑ [ x ( n ) y ( n ) ] e − j Ωn = ∑ x (n )
2π ∫ ( )
Y e jΘ e j Θn d Θ e− jΩn =
n =−∞ n =−∞ −π
1 +π ∞ − j ( Ω−Θ) n jΘ 1 +π j ( Ω−Θ)
= ∫ ∑ x (n)e Y (e ) d Θ = ∫ X (e ) Y ( e jΘ ) d Θ
2 π −π n =−∞ 2π −π
(8.12)
czyli podobnie jak dla całkowego przekształcenia Fouriera sygnałów ciągłych konsekwencją
splotu w jednej dziedzinie jest iloczyn w drugiej dziedzinie. Na koniec przypomnijmy jeszcze
raz: widmo X(ejΩ) zawsze powtarza się okresowo co 2π, czyli co częstotliwość próbkowania fp
(wniosek z rozdziału 4), oraz w przypadku sygnału rzeczywistego jego część rzeczywista jest
symetryczna, część urojona zaś − asymetryczna względem punktu Ω = 0, gdyż:
( )
+∞ ∞ ∞
X e j( +Ω0 ) = ∑ x(n )e − j Ω 0n = ∑ x(n) cos(Ω0n) − j ∑ x(n) sin(Ω0n) = X Re (Ω 0 ) − jX Im (Ω 0 )
n = −∞ n = −∞ n = −∞
( )
+∞ ∞ ∞
X e j ( −Ω 0 ) = ∑ x(n )e j Ω 0n = ∑ x(n) cos(Ω0n) + j ∑ x(n) sin(Ω0n) = X Re (Ω 0 ) + jX Im (Ω 0 )
n = −∞ n = −∞ n = −∞
Przykład 1
Załóżmy, że zespolony sygnał x(t) ma widmo X(jω) przedstawione na rysunku 8.1a. Ponieważ
sygnał przyjmuje wartości zespolone, jego widmo jest niesymetryczne względem pulsacji
ω = 0. W związku z tym, po spróbkowaniu sygnały xδ(t) i x(n) mają widma Xδ(jω) i X(ejΩ),
które są także przedstawione na rysunku 8.1a. Obserwujemy w nich powtarzające się okresowo
co ωp (lub 2π) widmo X(jω). Zgodnie z (8.2) widma te są sumą poprzesuwanych widm X(jω):
∑X(j(ω−kωp)). Ponieważ założyliśmy spełnienie twierdzenia o próbkowaniu, poszczególne
widma X(j(ω−kωp)) nie zachodzą na siebie. Każde z nich daje więc nam pełną informację
o „oryginale”, czyli widmie X(jω). Wystarczy więc wyznaczyć widmo X(ejΩ) dla 0 ≤ Ω < 2π,
co odpowiada zmienności częstotliwości 0 ≤ f < fp. Na rysunku 8.1a interesujący nas „zakres”
widma (jego jeden okres) przedstawiono na szarym tle.
Sytuacja się upraszcza, kiedy analizowany sygnał przyjmuje wyłącznie wartości rzeczywiste.
Przypadek ten jest pokazany na rysunku 8.1b. Wówczas widmo X(jω) jest symetryczne wzglę-
dem ω = 0 i wystarczy wyznaczyć widmo X(ejΩ) tylko dla 0 ≤ Ω ≤ π, co odpowiada zmienności
częstotliwości 0 ≤f ≤ fp/2.
a) X(jω) Xδ(jω)=X(ejΩ)
0 -ωp 0 ωp ω
-2π 0 2π Ω
b) X(jω) Xδ(jω)=X(ejΩ)
0 -ωp 0 ωp/2 ωp ω
-2π 0 π 2π Ω
Rys. 8.1. Przykładowe widma X(jω), Xδ(jω) i X(ejΩ) (równania (8.3a), (8.2), (8.8a) sygnału x() o wartoś-
ciach: a) zespolonych (brak symetrii widma X(jω) względem ω = 0), b) rzeczywistych (występowanie syme-
trii widma X(jω) względem ω = 0)
Przykład 2
Na rysunku 8.2a jest przedstawione widmo Fouriera X(jω) (8.3a) ciągłego sygnału kosinuso-
idalnego:
198 Analiza częstotliwościowa sygnałów dyskretnych
(
x (t ) = cos( ω0t ) = 0,5 e jω0t + e − jω0t )
natomiast rysunek 8.2b prezentuje widmo Fouriera Xδ(jω) (8.2) sygnału x(t) po spróbkowaniu
go z częstotliwością fp (okresem ∆t = 1/fp, pulsacją ωp = 2πfp) szeregiem impulsów Diraca δ(t)
i równego:
∞
xδ (t ) = cos(ω0t ) ⋅ ∑ δ(t − n∆t )
n = −∞
Jak widać w widmie Xδ(jω) co ωp powtarza się okresowo widmo X(jω), gdyż zgodnie z (8.2)
jest ono sumą poprzesuwanych widm ∑X(j(ω−kωp)). Z kolei widmo X(ejΩ) (8.8a) sygnału:
f
x (n ) = cos(ω0 ( n∆t ) ) = cos 2π 0 n = cos(Ω 0n )
f p
jest identyczne jak Xδ(jω), tylko jego argumentem jest pulsacja unormowana. Ponieważ jest
analizowany sygnał rzeczywisty i jego widmo jest symetryczne, wystarczy wyznaczyć widmo
X(ejΩ) w przedziale [0, π).
a) X(jω) b) Xδ(jω)=X(ejΩ)
ω
-ω0 ω0
-ωp -ω0 ω0 ωp/2 ωp ω
-2π -Ω0 Ω0 π 2π Ω
Rys. 8.2. Widma: a) Fouriera X(jω) (8.3a) ciągłego sygnału kosinusoidalnego o pulsacji ω0, b) Xδ(jω) (8.2)
i X(ejΩ) (8.8a) tego samego sygnału po spróbkowaniu z częstotliwościąfp (pulsacją ωp), gdzie Ω = 2πf/fp
obliczone będą wartości widma X(N)(ejΩ). Teoretycznie wybór jest dowolny. Jednak im więcej
prążków (próbek) widma się wyznacza, tym lepiej będzie oddany rzeczywisty kształt „ciągłej”
funkcji X(N)(ejΩ) w przedziale −π ≤ Ω < π i tym łatwiejsza będzie jego interpretacja (zagad-
nienie to będziemy szerzej dyskutować w dalszej części tego rozdziału). Najczęściej oblicza
się tylko N prążków widma, czyli dokładnie tyle ile jest próbek sygnału. Prążki te próbkują
ciągłe widmo X(N)(ejΩ). Dla uproszczenia zakłada się, że analizowany sygnał jest sygnałem
okresowym o okresie N i że oblicza się jego N składowych harmonicznych. W związku z tym
równania w pełni dyskretnej, realizowalnej obliczeniowo, transformacji Fouriera (dyskretny
czas, dyskretna częstotliwość, skończona liczba próbek sygnału), wyprowadza się dyskretyzu-
jąc równania szeregu Fouriera dla sygnałów ciągłych. Wyprowadzenie to zostało przedstawio-
ne w rozdziale trzecim. W jego wyniku otrzymuje się następującą parę równań:
N −1 2π
1 −j kn
X (k ) =
N
∑ x (n)e N , k = 0, 1, 2, , , , N − 1 (8.14a)
n =0
N −1 2π
j kn
x (n) = ∑ X ( k )e N , n = 0, 1, 2,..., N − 1 (8.14b)
k =0
N −1 2π
1 j kn
x (n) =
N
∑ X ( k )e N , n = 0, 1, 2,..., N − 1 (8.15b)
k =0
Jak wiemy już z rozdziału 2.4, DFT jest transformacją ortogonalną w przestrzeni wektorowej
N-wymiarowej.
Dyskretna transformacja Fouriera (8.14), (8.15) jest szczególnym przypadkiem przekształcenia
(8.8) w sytuacji, kiedy jest analizowany sygnał dyskretny x(n) o okresie N:
x (n ) = x( n + mN )
gdyż wówczas wystarczy przeanalizować częstotliwościowo tylko jeden okres tego sygnału, na
przykład:
x N (n ) = x ( n ), n = 0, 1, 2,..., N − 1 (8.16)
i to tylko względem wybranych pulsacji Ωk, związanych z wielokrotnością jego okresu:
1 2π
f k = kf 0 = k , Ω k = ωk ∆t = 2πf k ∆t = k , k = 0, 1, 2, ..., N−1 (8.17)
N∆t N
Po wyznaczeniu widma X N ( e jΩk ) = DFT ( x N (n )) , k = 0, 1, ..., N−1, ze wzoru (8.14a) można na
podstawie (8.14b) odtworzyć N próbek sygnału x N (n ) = IDFT ( X N (e jΩk )) , n = 0, 1, 2, ..., N−1,
a po uwzględnieniu okresowości − cały sygnał x(n). W takim przypadku naturalnym wydaje się
wniosek, że w przypadku dyskretnych sygnałów okresowych DFT powinno mieć wszystkie
właściwości przekształcenia Fouriera (8.8), z tą różnicą, że miejsce ciągłego, okresowego wid-
ma X(ejΩ) zajmie w tym przypadku dyskretne („prążkowe”), także okresowe widmo X (e jΩk ) .
200 Analiza częstotliwościowa sygnałów dyskretnych
3) Własność splotu. Załóżmy, że X(k) i Y(k) oznaczają DFT sygnałów x(n) i y(n). Niech Z(k) =
= X(k)Y(k). Wyznaczmy obecnie sygnał z(l), l = 0...N−1, jako IDFT widma Z(k):
N −1 2π N −1 2π
1 j kl 1 j kl
z (l ) =
N
∑ Z (k ) e N =
N
∑ [ X (k )Y ( k )] e N = (8.20)
k =0 k =0
N −1 N −1 −j
2 π N −1
− j km j kl
2π 2π N −1 N −1 N −1 j 2 π k (l − m − n )
1 kn 1
= ∑ ∑ x(n)e N
m∑
y ( m) e N e N
= ∑ ∑ x ( n ) y ( m ) ∑ e N
N k =0
n = 0 =0
N n=0 m=0 k = 0
Wyrażenie w nawiasie kwadratowym jest sumą skończonego szeregu potęgowego, która jest
równa:
N −1 N dla a = 1
∑ a k = 1 − a N dla a ≠ 1
(8.21)
k =0 1 − a
ponieważ:
N −1 N −1
1− aN
∑ak = S ⇒ a ∑ a k = aS = S + a N − a 0 ⇒ S=
1− a
(8.22)
k =0 k =0
W naszym przypadku:
2π
j (l − m −n )
a=e N , aN = 1
W związku z tym mamy:
N −1 N gdy l − m − n = pN , p ∈ Z
∑ ak = (8.23)
k =0 0 w przeciwnym przypadku
ponieważ sygnał y(m) jest okresowy (y(l−n−pN) = y(l−n)). Ze wzorów (8.20) i (8.24) wynika,
że splotowi (8.24) dwóch sygnałów w dziedzinie czasu odpowiada iloczyn ich widm DFT
w dziedzinie częstotliwości. Podczas analizy DFT zakładamy jednak okresowość sygnałów
Analiza częstotliwościowa sygnałów dyskretnych 201
(okres równy N próbek), dlatego sygnały x(n) i y(n) we wzorze (8.24) są okresowe. Załóżmy,
że dysponujemy próbkami: xN(n) = x(n), yN(n) = y(n), n = 0...N−1. Mamy wówczas y(l−n) =
= yN((l−n)N), gdzie (n)N oznacza indeks modulo-N. Próbka o numerze leżącym poza „zakre-
sem” jest więc zastępowana przez odpowiadającą jej próbkę o indeksie z przedziału 0...N−1.
Cyklicznie odnosimy się więc do próbek yN(n), n = 0...N−1. Z tego powodu splot sygnałów
okresowych (8.24) jest nazywany splotem cyklicznym.
4) Własność iloczynu. W analogiczny sposób jak wyżej można wykazać, że iloczynowi dwóch
sygnałów okresowych:
z (n ) = x(n ) y (n ), n = 0, 1, 2,..., N − 1 (8.25)
odpowiada c y k l i c z n y splot ich widm DFT:
N −1
1
Z (k ) =
N
∑ X ( p )Y (k − p), k = 0, 1, 2,..., N − 1 (8.26)
p=0
gdyż
N −1 −j
2π N −1 −j
2π N −1 N −1 2π 1 N −1 2π − j 2 π kn
kn kn 1 j pn j qn
Z (k ) = ∑ z ( n )e N = ∑ [ x ( n) y ( n) ] e N = ∑ N ∑ X ( p)e N
N ∑ Y ( q )e N e N =
n =0 n= 0 n =0 p =0 q=0
1 N −1 N −1 N −1 j 2 π n ( p + q − k ) 1 N −1
=
N2
∑ X ( p ) ∑ ∑ e N
Y ( q ) =
N
∑ X ( p)Y (k − p ) (8.27)
p =0 q=0 n = 0 p =0
Splot (8.26) jest cykliczny, ponieważ widmo Y (e jΩk ) dyskretnego sygnału x(n) powtarza się
okresowo co 2π. W związku z czym analogicznie jak poprzednio mamy Y(k−p) = YN( (k−p)N ).
5) (A)symetria DFT sygnału rzeczywistego. Dla sygnału rzeczywistego x(n) mamy:
2π N 2π 2π
N N −1 − j +k n N −1 − j kn N −1 − j kn
X + k = ∑ x ( n ) e N 2 = ∑ x ( n )e − jπn e N = ∑ [ x( n )( −1)n ] e N (8.28)
2 n =0 n =0 n =0
1 x1(t) 2
x2(t) x2(n)
0.8 1
0.6
x2(n) 0
0.4
0.2 -1
0 -2
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
t [s] t [s]
a) fx = 2 Hz b) fx = 2,5 Hz
|X3(N)(ej2πf /fpr)| |X4(N)(ej2πf /fpr)|
0.5 0.5
0.4 0.4
0.3 0.3
0.2 0.2
0.1 0.1
0 0
0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16
f [Hz] f [Hz]
|X3(k)| |X4(k)|
0.5 0.5
0.4 0.4
0.3 0.3
0.2 0.2
0.1 0.1
0 0
0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16
k k
Rys. 8.4. Moduł transformaty Fouriera dwóch N = 16-punktowych sygnałów sinusoidalnych: a) x3(n) =
= sin(2π(f3/fpr)n), f3 = 2 Hz, b) x4(n) = sin(2π(f4/fpr)n), f4 = 2,5 Hz, spróbkowanych z częstotliwością fpr =
= 16 Hz. Linią ciągłą zaznaczono widmo ciągłe X(N)(ej2πf/fpr)/N (8.13a), a kropkami „•” wynik z N-pun-
ktowego DFT X(k) (8.14a)
sygnał powtarzający się okresowo co N próbek (x(n) = x(n+N)). Wówczas występują w nim
wyłącznie „częstotliwości” sprawdzane przez DFT, czyli określone przez wzór (8.17). Ale
przecież wcale tak być nie musi: częstotliwość pracy przetwornika analogowo-cyfrowego
i liczba próbek poddawanych analizie najczęściej nie jest „zsynchronizowana” z okresem syg-
nału, którego nie znamy. Bardzo często analizowane sygnały w ogóle nie są okresowe. Dlatego
od razu przygotujmy się przede wszystkim do analizy widm „rozmytych” (rysunek 8.4b).
W tym miejscu należy także zwrócić uwagę na fakt, że w DFT jest analizowany fragment syg-
nału „wycięty” przez okno prostokątne (a więc sygnał nie jest modyfikowany w amplitudzie).
Podczas analizy częstotliwościowej często DFT poddaje się fragment sygnału „wycięty” przez
inne funkcje okien, np. Blackmana, Dolpha-Czebyszewa, Hamminga, Hanninga, Kaisera. I to
nie bez powodu (o tym w dalszej części rozdziału). Ale w takiej sytuacji „idealnego” widma
z rysunku 8.4a nigdy się nie osiągnie, gdyż zmniejszenie amplitudy „oscylacji” widma jest
uzyskiwane kosztem „rozmycia” jego „prążków”.
I jeszcze jedna, ostatnia dygresja. Dyskretna transformacja Fouriera (8.14)(8.15) jest transfor-
macją zawsze odwracalną. Stanowi ona zawsze w stu procentach udaną aproksymację N-ele-
mentowego wektora próbek analizowanego sygnału (nawet impulsowego) za pomocą N orto-
gonalnych wektorów bazowych N-elementowych (przykład N-wymiarowej przestrzeni wekto-
rowej − patrz rozdział 2). Ale w sytuacji kiedy w sygnale występuje składowa sinusoidal-
na, która nie jest „obecna” w zbiorze wektorów bazowych, to musi ona zostać przedstawiona
Analiza częstotliwościowa sygnałów dyskretnych 205
jako suma większej liczby sygnałów „bazowych”, czyli jej widmo ulega „rozmyciu” (patrz ry-
sunki 2.4 i 2.5).
2) Część rzeczywista widma Fouriera reprezentuje „zawartość” w sygnale składowych kosinu-
soidalnych, a część urojona − składowych sinusoidalnych.
3) Dla sygnałów rzeczywistych część rzeczywista oraz moduł widma są symetryczne względem
prążka N/2, a część urojona i faza widma są asymetryczne względem tego punktu. W roz-
patrywanym przypadku N/2 równa się 8. Dlatego w praktyce wystarczy wyznaczać „prążki”
widma X(k) o indeksach k = 0, 1, 2, ..., N/2.
4) Z powodu (a)symetrii każda częstotliwość „występuje” w widmie dwa razy. W związku
z czym jej amplituda jest dwukrotnie mniejsza. Przykładowo wysokość prążka widma Re(Y(k))
i |Y(k)| dla częstotliwości równej 1 herc wynosi 0,5, pomimo tego, że składowa sygnału
cos(2πf1(n∆t)), f1 = 1 Hz, ma amplitudę równą 1. Podobnie Im(Y(k)) i |Y(k)| dla częstotliwości
równej 2 herce wynosi 0,25, choć amplituda składowej 0,5sin(2πf2(n∆t)), f2 = 2 Hz, jest równa
0,25.
5) W widmie ciągłym X(N)(ejΩ)/N (Ω = 2πf/fpr) (8.13a) niektóre częstotliwości mogą się „zle-
wać”. Taka sytuacja występuje dla składowych 1 i 2 herce w analizowanym sygnale x2(n). Re-
ceptą na to jest zwiększenie rozdzielczości częstotliwościowej analizy poprzez zwiększenie
liczby analizowanych próbek. Przykładowo na rysunku 8.5 po lewej stronie przedstawiono mo-
duł widma |X2(N)(ej2πf/fpr)/N| w sytuacji, kiedy analizujemy coraz dłuższy fragment sygnału x2(n)
jak poprzednio, czyli kolejno dla N = 16, 32 i 64 próbek. Jak widać powoduje to „odseparo-
wanie” od siebie składowych 1 Hz i 2 Hz w widmie ciągłym, tym lepsze im więcej próbek
analizujemy. Ponieważ równocześnie widmo jest próbkowane coraz gęściej, także w widmie
dyskretnym separacja ta jest także coraz lepiej widoczna.
W sytuacji kiedy nie jest możliwe „wydłużenie” fragmentu analizowanego sygnału, można do
posiadanych N próbek sygnału dodać na końcu M próbek o wartościach zerowych i obliczyć
DFT tak „spreparowanych” danych. W takim przypadku spróbkujemy przedział częstotliwości
[0, fpr) w N+M punktach, czyli gęściej niż poprzednio. Najczęstszym źródłem krótkich „zapi-
sów” danych są macierze, składające się ze względnie małej liczby równoodległych czujników.
Analizowany wektor danych otrzymuje się w nich poprzez jednoczesne „zatrzaśnięcie” sygna-
łów chwilowych na wszystkich czujnikach. Taka sytuacja ma miejsce podczas estymacji „kie-
runku przybycia” (ang. DOA − Direction of Arrival) wroga w pasywnych systemach rada-
rowych.
Na rysunku 4.5b (prawa strona) przedstawiono wyniki zastosowania przedstawionej metody
w stosunku do sygnału x2b(n) = cos(2π(f1/fpr)n)+0,5sin(2π(f2/fpr)n), f1 = 1 Hz, f2 = 2,2 Hz, n = 0,
1, 2, ..., 15. Do N = 16 próbek sygnału dodajemy na końcu kolejno 16, 48 i 112 wartości
zerowych. Jak widać w przypadku dodania zer widmo ciągłe ma ciągle taki sam kształt. Nie
powinno to dziwić, ponieważ za każdym razem jest ono wyznaczane na podstawie takiej samej
„wiedzy” o sygnale (tylko 16 próbek). Natomiast wraz ze wzrostem liczby zer widmo dys-
kretne coraz „gęściej” próbkuje widmo ciągłe i coraz lepiej trafia w jego lokalne maksima.
6) Dla częstotliwości, w których zeruje się charakterystyka amplitudowa, w charakterystyce fa-
zowej występuje skok o +π radianów. W rozdziale 12.1 pokażemy, że przedstawienie widma
Fouriera sygnału w postaci X(ejΩ) = A(Ω)ejΨ(Ω) i dopuszczenie ujemności funkcji A(Ω) (jej
przejść przez zero) powoduje, że funkcja Ψ(Ω) będzie ciągła (patrz rysunek 12.1).
206 Analiza częstotliwościowa sygnałów dyskretnych
a) b)
|X2a(N)(ej2πf /fpr)| |X2b(N)(ej2πf /fpr)|
0.5 0.6
0.4
0.4
0.3
0.2
0.2
0.1
0 0
0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16
f [Hz] f [Hz]
związkom pomiędzy widmami X(jω), X(ejΩ), X(N)(ejΩ) i X(k) zdefiniowanymi przez równania
(8.3), (8.8), (8.13) i (8.14).
Przed przystąpieniem do dalszej lektury niniejszego podrozdziału jest wskazane przypomnie-
nie sobie materiału zaprezentowanego w podrozdziałach 4.3 − 4.6. Metodologia analizy czę-
stotliwościowej sygnałów dyskretnych jest bowiem nierozerwalnie związana z metodologią
analizy częstotliwościowej sygnałów ciągłych. Nie powinno to dziwić, ponieważ sygnały dys-
kretne powstają w wyniku spróbkowania sygnałów ciągłych. Równocześnie interesują nas ce-
chy „oryginałów”, a nie ich „kopii”. Teraz szczególnie są istotne dla nas rysunki 4.16 − 4.18.
W celu zachowania kompletności rozważań prowadzonych w tym rozdziale część z tych
rysunków powtórzymy w nieco zmienionej formie. Obecnie zostaną przedstawione jedynie
moduły wszystkich widm.
Na rysunku 8.6 jest zaprezentowany przypadek analizy częstotliwościowej spróbkowanego fra-
gmentu sygnału kosinusoidalnego xw(n) (rysunek 8.6g). Moduł jego ciągłego widma Fouriera
jest pokazany na rysunku 8.6h. Po „spróbkowaniu” jednego okresu tego modułu otrzymujemy
„prążki” widma „•” przedstawione na rysunku 8.6i. Ale dlaczego moduł widma z rysunku 8.6h
ma właśnie taką postać? Prześledźmy po kolei rysunki. Na rysunku 8.6a widzimy „cały” anali-
zowany ciągły sygnał x(t), a na rysunku 8.6b − moduł jego widma |X(jω)|, zgodny ze wzorem
(4.31a). Niestety analizie częstotliwościowej możemy poddać tylko fragment sygnału. „Wyci-
namy” go w najprostszy sposób za pomocą prostokątnego okna „obserwacji” w(t) (funkcja
pT(t−T) (4.26)), pokazanego na rysunku 8.6c. Moduł widma funkcji „okna” |W(jω)| jest przed-
stawiony na rysunku (8.6d) i zgodny z (4.26), ponieważ przesunięcie w czasie powoduje tylko
przesunięcie fazowe widma (4.10). Wynik działania funkcji „okna” jest zaprezentowany na
rysunku 8.6e. Jest to sygnał xw(t) = x(t)w(t), czyli fragment sygnału ciągłego x(t). W związku
z tym, że jest on wynikiem iloczynu dwóch sygnałów, jego widmo Xw(jω) jest równe splotowi
widm sygnałów mnożonych (4.14), czyli X(jω) i W(jω). Dodatkowo X(jω) = 0,5δ(ω−ω0)+
+0,5δ(ω+ω0), stąd Xw(jω) = W(j(ω−ω0))+W(j(ω+ω0)). Mając na uwadze rysunki 8.6a i 8.6d,
akceptujemy kształt modułu widma |Xw(jω)|, przedstawiony na rysunku 8.6f. Teraz pozostaje
tylko spróbkować sygnał xw(t) z częstotliwością fp (fp > 2fmax sygnału), czyli z pulsacją
ωp = 2πfp. W wyniku tej operacji otrzymujemy zbiór próbek xw(n), oznaczonych za pomocą
symbolu „•” na rysunku 8.6g. Zgodnie z twierdzeniem o próbkowaniu i równaniem (4.49),
moduł widma |Xw(jω)| sygnału dyskretnego xw(n), n = 0, 1, 2, ..., N−1, powinien być równy
sumie przeskalowanych w amplitudzie i przesuniętych o kωp modułów widm |Xw(j(ω+ωp)|
sygnału ciągłego xw(t). Potwierdza to rysunek 8.6h. Widmo |Xw(jω)| powtarza się co ωp, dlatego
wystarczy, że zainteresujemy się tylko jednym jego okresem i go „spróbkujemy”. Uzyskamy
wówczas prążki widma, oznaczone symbolem „•” na rysunku 8.6i. Jak widać otrzymaliśmy
„jakościowo” taki sam rezultat jak ten przedstawiony na rysunku 8.4. Wiemy więc już do-
kładnie jakie jest jego pochodzenie.
Rysunek 8.6 powinien nas jednoznacznie przekonać, że opłacała się matematyczna „wspi-
naczka” przeprowadzona w rozdziale czwartym.
Na rysunku 8.7 pokazano przypadek analizy fragmentu sygnału kosinusoidalnego „wyciętego”
przez „okno” Hanninga (tabela 4-1) i spróbkowanego. Całe rozumowanie przeprowadzane jest
analogicznie jak powyżej. Inne jest jedynie okno (rysunek 8.7c) i moduł jego widma (rysunek
8.7d). Widmo |W(jω)| jest szersze, ale za to charakteryzuje się zdecydowanie mniejszymi oscy-
lacjami. Co to powoduje? W widmie sygnału, który będzie się składał z kilku składowych
kosinusoidalnych o różnych częstotliwościach, szybciej mogą się „zlać” wierzchołki, należą-
ce do częstotliwości leżących blisko siebie. Ale równocześnie łatwiej będzie można za-
uważyć wierzchołek składowej kosinusoidalnej o odległej częstotliwości i małej amplitudzie,
208 Analiza częstotliwościowa sygnałów dyskretnych
a) x(t) b) X(ω)
t
ω
-ω0 ω0
c) w(t) d)
|W(ω)|
t
ω
0 T
e) xw(t)=x(t)w(t) f)
|Xw(ω)|=|X(ω)⊗W(ω)|
0 T ω
-ω0 ω0
|Xw(n)(ω)|
g) xw(n) h)
0 N
ω
|Xw(n)(ω)|
i)
0 ω0 ωp-ω0 ωp
Rys. 8.6. Przykładowe widmo fragmentu sygnału kosinusoidalnego, „wyciętego” przez okno prostokątne
i potem spróbkowanego
Analiza częstotliwościowa sygnałów dyskretnych 209
a) x(t) b) X(ω)
t
ω
-ω0 ω0
c) w(t) d) |W(ω)|
t
ω
0 T
e) xw(t)=x(t)w(t) f)
|Xw(ω)|=|X(ω)⊗W(ω)|
0 T ω
-ω0 ω0
|Xw(n)(ω)|
g) xw(n) h)
0 N ω
|Xw(n)(ω)|
h)
ω
0 ω0 ωp-ω0 ωp
Rys. 8.7. Przykładowe widmo fragmentu sygnału kosinusoidalnego, „wyciętego” przez okno Hanninga i po-
tem spróbkowanego
210 Analiza częstotliwościowa sygnałów dyskretnych
ponieważ nie będzie już on ginął w „gąszczach” oscylacji bocznych składowych o dużej amp-
litudzie. Kształt widma okna ma więc decydujący wpływ na rozdzielczość częstotliwościową
i amplitudową analizy, przeprowadzanej za pomocą DFT. Dla sygnałów ciągłych i okna pro-
stokątnego problem rozdzielczości częstotliwościowej i amplitudowej był pokazany na rysunku
4.6. Z rysunków 8.6 i 8.7 wynika, że po spróbkowaniu sygnałów fragmentów ciągłych problem
rozdzielczości będzie w analogiczny sposób dotyczył analizy częstotliwościowej fragmentów
sygnałów dyskretnych.
W żargonie specjalistów transformata Fouriera okna, czyli jego widmo, ma „listek” główny
oraz „listki” boczne. Im węższy jest listek główny, tym łatwiej można rozróżnić dwie często-
tliwości leżące blisko siebie. Im większe tłumienie mają listki boczne, tym wyraźniej „widać”
w widmie sygnał o małej amplitudzie, występujący w listkach bocznych składowej o większej
amplitudzie. Zamiast okna prostokątnego do wycięcia fragmentu sygnału z sygnału nieskoń-
czonego można użyć innej funkcji, np. Hanna, Hamminga, Blackmana, Kaisera. Powoduje to
rozszerzenie listka głównego i równoczesne obniżenie poziomu oscylacji listków bocznych.
Wielkość tych zmian można kontrolować odpowiednio zmieniając kształt okna. Widmo okna
powinno być jak najwęższe (wąski „listek główny”), a jego oscylacje boczne powinny być jak
najmniejsze (niskie „listki boczne”).
Co z tego wynika? Bardzo wiele. Jeśli wykorzystujemy DFT do analizy częstotliwościowej, nie
możemy zapomnieć o wpływie wyboru okna na kształt otrzymanego widma i oferowaną przez
niego rozdzielczość częstotliwościową i amplitudową. „Bezkrytyczne” stosowanie wzorów
(8.14) i (8.15) jest równoznaczne z użyciem okna prostokątnego.
Dalszą część tego rozdziału w całości poświęcimy „magii” wybranych funkcji okien.
Przypomnijmy częstotliwość próbkowania ma być więcej niż dwa razy większa od największej
częstotliwości występującej w sygnale. Ponieważ w praktyce filtr nie ma idealnej charakte-
rystyki w dziedzinie częstotliwości (prostokątnej, zero-jedynkowej charakterystyki amplitudo-
wej i zerowej charakterystyki fazowej), widmo X(LP)(ω) różni się od widma X(ω).
w(n)
Rys. 8.8. Schemat blokowy toru przetwarzania sygnałów podczas analizy częstotliwościowej ciągłego syg-
nału x(t) za pomocą dyskretnej transformacji Fouriera DFT
( )
∞
1
x (n ) = xδ( LP ) (t ) = A / C x ( LP ) (t ) , X (e jΩ ) = X δ( LP ) ( jω) = ( )
ω p ∑ X f j ( ω − kω p ) (8.32)
2π k = −∞
W równaniu (8.32) Ω oznacza pulsację unormowaną względem częstotliwości próbkowania fp,
równą Ω = ωp/fp = 2πf/fp. Widmo X(ejΩ) jest wyznaczane ze wzoru (8.8a). Kwantyzacja nie jest
obecnie przez nas uwzględniana (wprowadza ona do sygnału tzw. szum kwantyzacji, który jest
także widoczny w widmie).
3) wymnożenie sygnału z oknem czasowym
x w ( n ) = x ( n ) ⋅ w( n ), − ∞ < n < ∞ (8.33)
jest związane z faktem, że analizie DFT poddajemy tylko N próbek sygnału. W równaniu
(8.33) w(n) oznacza dowolne okno czasowe, prostokątne lub inne, które przyjmuje wartości
różne od zera tylko dla n = 0, 1, 2, ..., N−1. Konsekwencją iloczynu (8.33) jest zgodnie
z (8.12) splot widm sygnału i okna:
1 π
( )
X w e jΩ = jΘ
∫ X (e ) W ( e
2π −π
j ( Ω−Θ)
) dΘ (8.34)
N −1
X w (k ) = DFT ( x w (n ) ) = ∑ x w (n )e − j (2π / N )k n , k = 0, 1, 2,..., N − 1 (8.35a)
n =0
X w ( k ) = X ( e jΩ ) (8.35b)
Ω=Ω k = 2 πk / N
W tabeli 8-1 zostały podane równania oraz parametry najpopularniejszych okien dyskretnych
w(n), które są stosowane podczas analizy częstotliwościowej. Są to okna czasowe, których ko-
lejne próbki są wymnażane z kolejnymi próbkami analizowanego sygnału, zgodnie z (8.33).
Ponieważ kształt ich widma w sposób zdecydowany wpływa na właściwości przeprowadzanej
analizy, są one często nazywane także oknami widmowymi. Okna te przyjmują wartości nie-
zerowe wyłącznie dla n = 0, 1, 2, ..., N−1, gdzie parametr N oznacza dowolną długość okna,
parzystą lub nieparzystą. W tabeli 8-1 nie podano definicji dyskretnego okna Gaussa, ponieważ
jego parametry zależą od parametru a, podobnie jak dla okna ciągłego (4.35). Na rysunku 8.9
przedstawiono kształt funkcji okien Hanninga, Hamminga i Blackmana dla N = 100, a na
rysunku 8.10 porównano widma Fouriera tych okien z widmem okna prostokątnego.
W tabeli 8-1 podano definicje tzw. okien symetrycznych (w(n) = w(N−1−n)). Na ich podstawie
generuje się tzw. okna okresowe, które z przodu mają dodatkowo jedną próbkę o wartości
równej zero. Przykładowo, okno tego typu jest stosowane w standardzie MPEG audio.
Obecnie wyprowadzimy wzór na widmo Fouriera dyskretnego okna prostokątnego:
1, n = 0, 1, 2,..., N − 1
wR (n) = (8.36)
0, pozostałe n
Stosując wzór (8.8a) otrzymujemy:
Tab. 8-1. Wybrane dyskretne, nieparametryczne okna czasowe w(n) i ich parametry: ∆ml − szerokość listka
głównego oraz Asl − względne (w stosunku do W(0)) tłumienie najwyższego listka bocznego
2πn
Hamminga 0,54 − 0, 46 cos 8π/N 42,7 dB
N −1
2πn 4πn
Blackmana 0, 42 − 0,50 cos + 0, 08cos 12π/N 58,1 dB
N −1 N −1
1
w(n)
0.8
0.6
0.4
0.2 n
0
0 10 20 30 40 50 60 70 80 90 100
Rys. 8.9. Kształt funkcji okien Hamminga, Hanninga i Blackmana (kolejno od góry do dołu), zdefiniowa-
nych w tabeli 8-1, dla N = 100
Ω = 2πf / f p (8.38)
Jeśli wprowadzimy oznaczenie:
WR (e jΩ ) = S
− jΩ − j ΩN
S (1 − e ) = 1− e
skąd otrzymujemy:
1 − e − jΩ N (
e − j Ω N / 2 e j Ω N / 2 − e − jΩ N / 2 ) = e− jΩ( N −1) / 2 sin(ΩN / 2)
( )
WR e jΩ = S =
1− e − jΩ
=
e − j Ω / 2 ( e j Ω / 2 − e − jΩ / 2 ) sin(Ω / 2)
(8.39a)
214 Analiza częstotliwościowa sygnałów dyskretnych
a) okno prostokątne
0
-20
|W(ejΩ)/N|
-40
-60
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
b) okno Hanninga
0
-20
|W(ejΩ)/N|
-40
-60
-80
-100
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
c) okno Hamminga
0
-20
|W(ejΩ)/N|
-40
-60
-80
-100
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
d) okno Blackmana
0
-20
|W(ejΩ)/N|
-40
-60
-80
-100
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
Rys. 8.10. Moduły widm |W(ejΩ)/N| (8.8a) wybranych okien w(n) z tabeli 8-1 dla N = 10, 20 i 40 (gdy
wartość N rośnie, to widma stają się coraz węższe). Zgodnie z (8.38) zmienność pulsacji unormowanej
−0,5 ≤ Ω/(2π) ≤ 0,5 odpowiada zmienności częstotliwości −fp/2 ≤ f ≤ fp/2 (fp − częstotliwość próbkowania)
Analiza częstotliwościowa sygnałów dyskretnych 215
Wzór ten można także otrzymać bezpośrednio wykorzystując zależność (8.21) w równaniu
(8.37).
W analogiczny sposób wykazuje się, że widmo okna prostokątnego wRS(n), n = −M, ...,−1, 0,
1, ..., M, symetrycznego względem punktu n = 0, jest równe:
sin (Ω( 2 M + 1) / 2 )
( )
WRS e jΩ =
sin(Ω / 2 )
(8.39b)
Oczywiście |WR(ejΩ)| = |WRS(ejΩ)|. Szerokość „listka głównego” okna prostokątnego (czyli od-
ległość pomiędzy pierwszymi przejściami przez zero po obu stronach pulsacji Ω = 0) jest
równa 4π/N, ponieważ:
Ω1 N / 2 = π ⇒ Ω1 = 2π / N
Ω 2 N / 2 = − π ⇒ Ω 2 = −2 π / N
∆Ω R = Ω1 − Ω 2 = 4π / N (8.40)
Na rysunku 8.10a pokazano moduł widma |WR(ejΩ)/N| (8.8a) okna prostokątnego wR(n), n =
= 0, 1, 2, ..., N−1, dla N = 10, 20 i 40 oraz dla −0,5 ≤ Ω/(2π) ≤ 0,5, co zgodnie z (8.38) odpo-
wiada zmienności częstotliwości −fp/2 ≤ f ≤ fp/2. Jak widać wzrost N powoduje zmniejszenie
szerokości listka głównego widma ∆ml, natomiast nie ma on wpływu na poziom tłumienia list-
ków bocznych Asl, który pozostaje stały. Jest to konsekwencją wzorów (8.39). Jednak w funkcji
częstotliwości listki boczne dłuższego okna szybciej zanikają. Z kolei na rysunkach 8.10b −
8.10d są przedstawione moduły widm |W(ejΩ)/N | (8.8a) okien Hanninga, Hamminga i Black-
mana z tabeli 8-1 (także dla N = 10, 20 i 40). Ponieważ funkcje okien przyjmują wyłącznie
wartości rzeczywiste, więc ww. moduły są zawsze symetryczne względem punktu Ω = 0. Dla-
tego wystarczyłoby przedstawić wykres ich zmienności tylko dla 0 ≤ Ω ≤ π (0 ≤ f ≤ fp/2). Nie
zrobiliśmy tak na rysunku 8.10, aby pokazać pełny kształt głównego listka widmowego.
Zwróćmy także uwagę na różny poziom widm dla pulsacji unormowanej Ω = 0. Na rysunku
8.11 porównano natomiast właściwości częstotliwościowe wybranych okien dla N = 40 tylko
w zakresie 0 ≤ Ω ≤ π (0 ≤ f ≤ fp/2). W tym przypadku widma zostały unormowane w wyniku
podzielenia przez wartość przyjmowaną przez W(ejΩ)/N dla Ω = 0 i oznaczone jako
Wnorm(ejΩ)/N.
0
-20
|Wnorm(ejΩ)/N|
-40
-60
-80
-100
0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
Rys. 8.11. Porównanie właściwości częstotliwościowych okna prostokątnego, Hamminga i Blackmana, zde-
finiowanych w tabeli 8-1, na podstawie modułów ich widm |W(ejΩ)/N| (8.8a) dla N = 40. W tym przypadku
widma zostały unormowane (podzielone przez wartość przyjmowaną przez W(ejΩ)/N dla Ω = 0)
216 Analiza częstotliwościowa sygnałów dyskretnych
Z rysunków 8.10 i 8.11 wynika, ze wzrost N powoduje zmniejszenie szerokości listka główne-
go widma ∆ml niezależnie od rodzaju okna, natomiast nie ma on wpływu na poziom tłumienia
kolejnych listków bocznych Asl, który jest stały dla każdego z okien. Wybór okna determinuje
więc rozdzielczość amplitudową analizy częstotliwościowej, przeprowadzanej z jego pomocą,
a rozdzielczość częstotliwościową zawsze można zwiększyć zwiększając wartość N.
Okna Hanna, Hamminga i Blackmana z tabeli 8-1 są ważoną sumą składowych kosinusoidal-
nych postaci:
2 πk
wC( k ) ( n ) = wR (n ) cos n , − ∞ ≤ n ≤ ∞ (8.41)
N −1
Widma tych składowych powstają w wyniku splotu widma okna prostokątnego (8.39) z wid-
mem funkcji kosinus. Ponieważ
2 πk e jΩk n + e − jΩk n 2 πk
cos n = cos(Ω k n ) = , Ωk = (8.42)
N −1 2 N −1
więc widmo okna wC(k)(n) jest sumą dwóch przeskalowanych (przez 1/2) widm okna prosto-
kątnego, przesuniętych o +Ωk i −Ωk:
Ponieważ dla k = 1 mamy Ω1 = 2π/(N−1), więc dla dużego N możemy przyjąć Ω1 ≈ 2π/N. Wy-
nika stąd, że szerokość listka głównego okna Hanna i Hamminga z tabeli 8-1 jest w przybli-
żeniu równa:
∆ ml = ∆Ω R + 2Ω1 ≈ 4π / N + 2 ⋅ 2π / N ≈ 8π / N (8.44)
Konstrukcja widm ciągłych okien Hanna i Blackmana jako sumy poprzesuwanych widm okna
prostokątnego została przedstawiona w podrozdziale 4.4 (patrz rysunek 4.8). W przypadku
okien dyskretnych sytuacja jest analogiczna.
Uogólniając powyższe rozważania można stwierdzić, że jeśli okno ma postać:
K
2 πk
w( n ) = ∑ a (k ) cos N − 1 n , n = 0, 1, 2,..., N − 1 (8.46)
k =0
2 πk
w(n ) = 0,5 + 0,5cos n (8.49)
N −1
Analiza częstotliwościowa sygnałów dyskretnych 217
mamy:
W (e jΩ ) = 0, 5WR (e jΩ ) + 0, 25WR (e jΩ− 2 π / N ) + 0, 25WR (e jΩ+ 2 π / N ) (8.50)
Wynika stąd wniosek, że w przypadku okien postaci (8.46) operację „okienkowania” można
także przeprowadzić w dziedzinie pulsacji (częstotliwości). W takim przypadku należy naj-
pierw wyznaczyć DFT XR(k) sygnału z oknem prostokątnym xR(n) = x(n)wR(n), a następnie za-
stąpić każdy prążek widma średnią ważoną tego prążka i jego sąsiadów zgodnie z (8.47),
podstawiając Ω = Ωk = 2πk/N. W przypadku okna Hanna mamy:
Nieco więcej informacji o wielomianach Czebyszewa można znaleźć w podrozdziale 6.4. Stałą
C przeskalowuje się okno w amplitudzie w zależności od potrzeb. Najczęściej przyjmuje się ta-
ką wartość, aby środkowa próbka okna była równa 1.
Na rysunku 8.12a zaprezentowano okna czasowe Dolpha-Czebyszewa o długości N = 40 dla
γ = 0,01; 0,0001 i 0,000001 (Asl = 40, 80 i 120 dB), a na rysunku 8.12b − moduły widm tych
okien. Jak widać zmniejszanie wartości parametru γ (zwiększanie Asl) powoduje zawężanie
okna w dziedzinie czasu oraz obniżenie poziomu listków bocznych w dziedzinie częstotli-
wości. Zwiększając długość okna N przy ustalonym parametrze γ, powodujemy natomiast
zmniejszenie szerokości listka głównego widma okna. Sytuacja ta jest przedstawiona na ry-
sunku 8.13. Widzimy na nim moduły widm okien o długości N = 40 oraz N = 120 dla
γ = 0,000001 (Asl = 120 dB).
Okno Kaisera
Okno Kaisera jest wynikiem optymalizacji, podczas której minimalizuje się szerokość listka
głównego widma przy założeniu jego określonej długości oraz procentowego udziału energii
listków bocznych w całkowitej energii widma. Energię listków bocznych definiuje się jako
różnicę pomiędzy całkowitą energią widma okna |W(ejΩ)|2 w przedziale [−π, π] a energią
samego listka głównego. W związku z tym, w porównaniu z oknem Dolpha-Czebyszewa,
energia i szerokość listka głównego jest większa, a energia listków bocznych − mniejsza. Listki
boczne mają jednak różną wysokość i najwyższy z nich ma mniejsze tłumienie niż to w oknie
Dolpha-Czebyszewa.
Definicja okna Kaisera jest następująca (dla N parzystego lub nieparzystego):
2
n − ( N − 1) / 2
I 0 β 1 −
( N − 1) / 2
wK (n ) = , 0 ≤ n ≤ N−1 (8.55)
I 0 (β )
Ponieważ wraz ze wzrostem k kolejne składniki sumy szybko maleją, dobre przybliżenie fun-
kcji Bessela stanowi już suma 20 pierwszych wyrazów (niektórzy autorzy podają liczbę 32).
Dla β = 0 otrzymujemy okno prostokątne, natomiast wraz ze wzrostem wartości β jest gene-
Analiza częstotliwościowa sygnałów dyskretnych 219
1 0
0.8
|Wnorm(ejΩ)/Ν|
-40
0.6
w(n) 0.4 -80
0.2 -120
0
0 10 20 30 40 -0.5 -0.25 0 0.25 0.5
n Ω/2π [Hz/Hz]
Rys. 8.12. Okna Dolpha-Czebyszewa (po lewej) oraz moduły ich widm (po prawej). N = 40 oraz γ = 0,01;
0,0001 i 0,000001 (Asl = 40, 80 i 120 dB). Zmniejszanie wartości parametru γ (zwiększanie Asl) powoduje
zawężanie okna w dziedzinie czasu oraz obniżenie poziomu listków bocznych w dziedzinie częstotliwości
0 0
|Wnorm(ejΩ)/Ν|
|Wnorm(ejΩ)/Ν|
-40 -40
-80 -80
-120 -120
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 8.13. Moduły widm dwóch okien Dolpha-Czebyszewa o długości N = 40 (po lewej) oraz N = 120 (po
prawej) dla γ = 0,000001 (Asl = 120 dB). Zwiększając długość okna N przy ustalonym parametrze γ, powo-
dujemy zmniejszenie szerokości listka głównego widma okna
rowane okno coraz szybciej opadające do zera (rysunek 8.14a). W dziedzinie widmowej towa-
rzyszy temu rozszerzenie szerokości listka głównego widma i obniżenie poziomu listków
bocznych (rysunek 8.14b). Oczywiście podczas zwiększania długości okna przy stałej wartości
parametru β, listki boczne pozostają na niezmienionym poziomie, ale szerokość listka głów-
nego staje się mniejsza (rysunek 8.15).
W literaturze podaje się wzory, wiążące wymagane parametry analizy częstotliwościowej ∆ml
i Asl z parametrami projektowymi okna β i N:
(8.57)
1 0
0.8
|Wnorm(ejΩ)/Ν|
-40
0.6
w(n)
-80
0.4
-120
0.2
0 -160
0 10 20 30 40 -0.5 -0.25 0 0.25 0.5
n Ω/2π [Hz/Hz]
Rys. 8.14. Dwa okna Kaisera (po lewej) oraz moduły ich widm (po prawej). N = 40 oraz β = 8 i 16. Zwię-
kszanie wartości parametru β powoduje zawężanie okna w dziedzinie czasu oraz obniżenie poziomu listków
bocznych w dziedzinie częstotliwości
0 0
|Wnorm(ejΩ)/Ν|
|Wnorm(ejΩ)/Ν|
-40 -40
-80 -80
-120 -120
-160 -160
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 8.15. Moduły widm dwóch okien Kaisera o długości N = 40 (po lewej) oraz N = 120 (po prawej) dla
β = 16. Zwiększając długość okna N przy ustalonym parametrze β, powodujemy zmniejszenie szerokości
listka głównego widma okna
f2 się zmienia i może być 1000 razy mniejsza od amplitudy składowej o częstotliwości f1
(A1 = 1, A2 = 0,001), co odpowiada jej stłumieniu o 60 dB. Chcąc w sposób wyraźny zauważyć
wierzchołek słabszej składowej w listkach bocznych składowej silniejszej, przyjmujemy
Asl = 80 dB. W związku z tym ze wzorów (8.57) i (8.58) otrzymujemy: β = 10,734, N = 115.
Znając wartości tych parametrów, możemy wyznaczyć na podstawie (8.55) i (8.56) dyskretne
okna Kaisera wK(n), gwarantujące spełnienie zadanych wymagań projektowych. W wyniku
zastosowania wzoru (8.8a) lub (8.13a) w stosunku do sygnału xw(n) = x(n)wK(n), 0 ≤ n ≤ N−1,
otrzymujemy interesujące nas widmo Xw(ej2πf/fpr).
Rysunek 8.16 stanowi ilustrację kolejnych, przeprowadzanych operacji dla sygnału, w którym
druga składowa ma amplitudę równą A2 = 0,5. Na rysunku 8.16a jest przedstawiony zbiór
N = 115 próbek dyskretnego sygnału x(n), 0 ≤ n ≤ N−1, który poddajemy analizie. Z kolei na
rysunku 8.16b są zaprezentowane próbki dyskretnego okna Kaisera o długości N = 115
i β = 10,734. Okno to zostało pomnożone przez współczynnik skalujący będący ilorazem pól
powierzchni okna prostokątnego i okna Kaisera. Operacja ta ma zapobiec zjawisku zaniżaniu
wartości wynikowego widma, spowodowanemu przez ograniczenie energii fragmentu ana-
lizowanego sygnału w wyniku operacji okienkowania. Wynik iloczynu xw(n) = x(n)wK(n),
0 ≤ n ≤ N−1, sygnału i okna, czyli ww. okienkowania, jest przedstawiony na rysunku 8.16c.
Widmo W(ej2πf/fpr) (8.8a), (8.13a) okna Kaisera jest zaprezentowane na rysunku 8.16d, a widma
Xw(ej2πf/fpr) (8.8a), (8.13a) oraz Xw(k) (8.14a) sygnału xw(n) są pokazane na rysunku 8.16e. Pier-
wsze z nich jest zaznaczone linią ciągłą, a drugie − za pomocą symboli „•”. Jak widać od-
nieśliśmy sukces: obie składowe są w widmie wystarczająco „odseparowane”.
W związku z tym przeprowadzimy bardziej wymagający eksperyment: poddajmy analizie syg-
nał, w którym amplituda drugiej składowej jest bardzo mała i równa A2 = 0,001. Otrzymany
wynik jest przedstawiony na rysunku 8.17. Jak widać w analizowanym fragmencie sygnału po
operacji okienkowania druga składowa w ogóle nie jest zauważalna (rys. 8.17a), natomiast
w widmie jest bardzo dobrze widoczna (rys. 8.17b). Teraz nie mamy już wątpliwości: zaproje-
ktowane narzędzie obliczeniowe do przeprowadzania analizy częstotliwościowej sygnałów ma-
ją założoną przez nas rozdzielczość częstotliwościową i amplitudową. W celach porównaw-
czych na rysunku 18.17c przedstawiono widmo analizowanego sygnału, uzyskane w przypad-
ku zastosowania okna Hamminga. Co prawda prążek „silnej” składowej pierwszej sygnału
(A1 = 1) jest węższy niż poprzednio, ale za to prążek „słabej” składowej drugiej (A2 = 0,001)
zupełnie nie jest widoczny, „utonął” w wysokich listkach bocznych składowej pierwszej.
1.5
1
0.5
0
0 10 20 30 40 50 60 70 80 90 100 110 120
n
1
0
-1
-2
0 10 20 30 40 50 60 70 80 90 100 110 120
n
-40
-80
-120
-160
-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
f [Hz]
Rys. 8.16. Przykład analizy częstotliwościowej sygnału x(n) = A1cos(2πf1(n∆t))+A2sin(2πf2(n∆t)), n = 0, 1,
2, ..., N−1, N = 115, o następujących parametrach: A1 = 1, A2 = 0,5, f1 = 1 Hz, f2 = 2 Hz, fpr = 16 Hz (skąd
∆t = 1/fpr = 1/16 sekundy i ∆f = fpr/N herca)
Analiza częstotliwościowa sygnałów dyskretnych 223
e) widmo Xw(ej2π f / fpr) (linia ciągła) oraz Xw(k) („•”) sygnału xw(n) z rysunku c)
0
-20
a) fragment sygnału xw(n) = x(n)w(n) „wycięty” przez okno w(n) Kaseira (β = 10,734)
3
2
1
xw (n)
0
-1
-2
-3
0 10 20 30 40 50 60 70 80 90 100 110 120
n
b) widmo Xw(ej2π f / fpr) (linia ciągła) oraz Xw(k) („•”) sygnału xw(n) (z rys. 8.17a) dla okna Kaisera
0
-20
|Xw (ej2 πf / fpr )/N|
-40
-60
-80
-100
-120
0 1 2 3 4 5 6 7 8
f [Hz]
c) widmo Xw(ej2π f / fpr) (linia ciągła) oraz Xw(k) („•”) sygnału xw(n) dla okna Hamminga
0
|Xw (ej2 πf / fpr )/N|
-20
-40
-60
0 1 2 3 4 5 6 7 8
f [Hz]
Rys. 8.17. Przykład analizy częstotliwościowej sygnału x(n) = A1cos(2πf1(n∆t))+A2sin(2πf2(n∆t)), n = 0, 1,
2, ..., N−1, N = 115, o następujących parametrach: A1 = 1, A2 = 0,001, f1 = 1 Hz, f2 = 2 Hz, fpr = 16 Hz
224 Analiza częstotliwościowa sygnałów dyskretnych
0
-20
-40
-60
-80
-100
-120
0 1 2 3 4 5 6 7 8
f [Hz]
0
-20
|Xw (ej2 πf / fpr )/N|
-40
-60
-80
-100
-120
0 1 2 3 4 5 6 7 8
f [Hz]
0
-20
|Xw (ej2 πf / fpr )/N|
-40
-60
-80
-100
-120
0 1 2 3 4 5 6 7 8
f [Hz]
Rys. 8.18. Przykład analizy częstotliwościowej fragmentu zokienkowanego sygnału z rysunku 8.17a z wy-
korzystaniem szybkiego algorytmu FFF implementującego DFT (8.14a), po uzupełnieniu ww. fragmentu na
końcu zerami do długości NFFT = 128, 256, 1024 i 4096 (kolejno od góry)
fragmentu sygnału, np. do długości NFFT = 2p, oraz zastosowaniu szybkiego algorytmu FFT.
Krok próbkowania widma w częstotliwości zależy wówczas od liczby dodanych zer i jest
równy df = fpr / NFFT. Na rysunku 8.18 przedstawiono wyniki analizy sygnału z przykładu 1 dla
A1 = 1 i A2 = 0,001 (rys. 8.17), w sytuacji kiedy N = 115 próbek zokienkowanego sygnału,
przedstawionego na rysunku 8.17a, uzupełniono zerami do długości 128, 256, 1024 i 4096. Jak
widać uzyskujemy gęściejsze próbkowanie widma przy zdecydowanie mniejszych nakładach
obliczeniowych.
Analiza częstotliwościowa sygnałów dyskretnych 225
Tab. 8-2. Przykład programu do przeprowadzania analizy częstotliwościowej sygnałów za pomocą dyskret-
nego przekształcenia Fouriera (8.8a) i (8.13a)
% Generacja okna
w1 = boxcar(N); % różne okna
w2 = bartlett(N); %
w3 = hanning(N); %
w4 = hamming(N); %
w5 = blackman(N); %
w6 = kaiser(N,beta); %
w = w6; % wybierz okno: wskazane okno Kaisera
w = w'; % zamień wektor pionowy na poziomy
% Widmo „spróbkowane” DFT (8.14a), tylko jeden okres − funkcja Matlaba fft()
X2 = fft(xw); X2 = 2*abs(X2)/N; X2 = 20*log10(X2);
plot(f1,X1,'-k',f2,X2,'ko','MarkerFaceColor','k');
grid; xlabel('f [Hz]'); title('Widma - porównanie freqz() i fft() Matlaba'); pause
gęstości widmowej mocy Pxx(f) (1.45), definiowanej jako wynik przekształcenia Fouriera
funkcji autokorelacji sygnału Rxx(τ). Dla dyskretnych sygnałów losowych analiza widmowa
może być w szczególności przeprowadzana metodą Blackmana-Tukeya za pomocą następują-
cej pary równań (1.48a), (1.49b):
N −1− |m |
1
Rˆ xx (m) =
N
∑ x (n ) x ∗ (n − m), m = 0, 1, 2, ..., M − 1 (8.59)
n =0
fk
M −1 − j 2π m
∑
f pr
PˆN ( f k ) = w( m) Rˆ xx (m) e (8.60)
m = − ( M −1)
gdzie w(m) oznacza wybraną funkcję okna czasowego. Ponieważ splot (korelacja) dwóch
sygnałów w dziedzinie czasu jest równoważny iloczynowi ich widm (patrz (4.13), (4.15),
(8.20) − (8.24)), istnieje efektywny algorytm obliczeniowy, służący do wyznaczenia estymat
Rˆ xx ( m) oraz PˆN ( f ) , w którym stosuje się szybkie wersje (FFT) algorytmów dyskretnej
transformacji Fouriera DFT, omówione w rozdziale następnym. Ma on postać przedstawioną
w tabeli 8-3.
Tab. 8-3. Algorytm szybkiego wyznaczania estymaty funkcji autokorelacji oraz estymaty funkcji gęstości
widmowej mocy Blackmana-Tukeya (1.49a)
4. Oblicz K-punktowe odwrotne IDFT (IFFT) (8.15b) z |X(k)|2 = X(k)X*(k) (iloczyn widm X(k)X*(k) w dzie-
dzinie częstotliwości jest równoważny operacji autokorelacji sygnału w dziedzinie czasu, zgodnie
z (4.15)):
1 K −1
∑ X (k ) e j (2 π / K )kn , n = 0, 1, 2, ..., N − 1
2
R xx ( n ) =
K k =0
Dodanie w powyższym algorytmie M−1 zer na końcu sygnału x(n) ma na celu wymuszenie
jego liniowego przesuwania maksymalnie o M−1 próbek i wynika z faktu, że za pomocą DFT
jest realizowane kołowe a nie liniowe przesuwanie sygnałów (patrz rozdziały 13.4 i 13.5).
W przypadku wyznaczania funkcji autokorelacji nie występuje odwracanie żadnego sygnału
w czasie: uzupełniony zerami sygnał x(n) jest nieruchomy, a jego kopia (także z zerami) jest
przesuwana w sposób kołowy (cykliczny, rotacyjny). Dla każdej wartości przesunięcia z za-
kresu od 0 do M−1 oba sygnały są ze sobą wymnażane.
Tworzenie natomiast „dziwnego” sygnału s(n) jest spowodowane chęcią uzyskania rzeczy-
wistych wartości funkcji Pxx(k). A tak będzie jeśli sygnał poddawany DFT w kroku 6 będzie
miał symetrię właściwą dla DFT (symetria względem próbki o indeksie k = K/2).
Przykładowy program w języku Matlab, realizujący i testujący w praktyce wyżej opisany
szybki algorytm wyznaczania estymaty Blackmana-Tukeya funkcji gęstości widmowej mocy,
jest przedstawiony w tabeli 8-4. Na rysunku 8.19 zaprezentowano wyniki analizy zaszumio-
nego sygnału sinusoidalnego o częstotliwości 100 herców, uzyskane z jego pomocą. W celach
porównawczych skonfrontowano je z uśrednionym periodogramem (1.51), (1.52). Przypomnij-
my, periodogram jest kwadratem transformaty Fouriera iloczynu fragmentu analizowanego
sygnału z wybraną funkcją okna. W obu metodach estymacji zastosowano okno Hanninga.
Jak już było podkreślone w rozdziale 1, zazwyczaj stosuje się uśrednianie kilku widm zaszu-
mionego sygnału (1.52) w celu zmniejszenia wariancji estymaty funkcji gęstości widmowej
mocy. Wybrane przykłady analizy częstotliwościowej sygnałów losowych z wykorzystaniem
uśrednionego periodogramu (metoda Welcha (1.52)) były przedstawione w rozdziale 1 na ry-
sunkach 1.13 i 1.14.
Tab. 8-4. Przykład programu do szybkiego wyznaczania estymaty funkcji autokorelacji oraz estymaty
funkcji gęstości widmowej mocy Blackmana-Tukeya (1.49b)
a) 3
2
1
x(t)
0
-1
-2
-3
0 0.05 0.1 0.15 0.2 0.25
t [s]
b) 1.5
1
0.5
Rxx(τ)
0
-0.5
-1
-0.25 -0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.2 0.25
τ [s]
c) 1.5
1
0.5
Rxx(τ)
0
-0.5
-1
0 0.005 0.01 0.015 0.02 0.025 0.03
τ [s]
d) 12
10
8
Pxx(f)
6
4
2
0
0 50 100 150 200 250 300 350 400 450 500
f [Hz]
e) 8
6
Pxx (f)
0
0 50 100 150 200 250 300 350 400 450 500
f [Hz]
Rys. 8.19. Przykład zastosowania algorytmu szybkiego wyznaczania estymat funkcji autokorelacji i funkcji
gęstości widmowej mocy (patrz tabele 8-3 i 8-4): a) analizowany sygnał x(n) = sin(2πfx(n∆t)) + szum
gaussowski: fx = 100 Hz, n = 0, 1, 2, ..., 255, ∆t = 0,001 sekundy (fpr = 1000 Hz), b) jego funkcja autoko-
relacji, c) fragment funkcji autokorelacji (8.59) wyznaczony metodą szybką (M = 32), d) funkcja gęstości
widmowej mocy Blackmana-Tukeya (8.60) wyznaczona na podstawie ww. fragmentu, e) periodogram
(1.51), (1.52) obliczony w celach porównawczych
230 Analiza częstotliwościowa sygnałów dyskretnych
% Wyznacz estymatę funkcji gęstości widmowej mocy procesu losowego, czyli transformatę Fouriera
% funkcji autokoralacji tego procesu − metoda Blackmana-Tukeya (1.49b)
L = N; % liczba prążków widma
w = hanning(2*M-1); w=w(M:2*M-1); w=w'; % wybierz okno widmowe, np. Hanninga
Rw = R3 .* w; % wymnóż funkcję autokorelacji z oknem
s = [ Rw(1:M) zeros(1,L-2*M+1) Rw(M:-1:2)]; % symetria wejścia FFT --> wyjście rzeczywiste
S = real(fft(s)); % transformacja Fouriera
df = 1/(L*dt); f=0:df:(L-1)*df; k=1:L/2+1;
subplot(311); plot(f(k),S(k),'b'); grid;
title('Funkcja gęstości widmowej mocy'); xlabel('f [Hz]'); pause
uzyskane w rozdziale trzecim w wyniku dyskretyzacji wzorów szeregu Fouriera dla sygnałów
ciągłych. Równania te można zapisać w następującej postaci:
N −1
1
X (k ) = ∑ x(n ) f k* (n ), k = 0, 1, 2, ..., N − 1 (9.3)
N n =0
N −1
x (n ) = ∑ X (k ) f k (n ), n = 0, 1, 2, ..., N − 1 (9.4)
k =0
zsyntezować z nich sygnał (9.2). Dlaczego tak się dzieje? Ponieważ zbiór N harmonicznych
funkcji bazowych fk(n) (k = 0, 1, 2, ..., N−1):
2π
j k n
f k (n) = e N , n = 0, 1, 2, ..., N − 1 (9.5)
jest ortonormalny w N-wymiarowej przestrzeni wektorowej z iloczynem skalarnym:
N −1
1 0, k ≠ l
f k , fl =
N
∑ f k (n ) f l* (n ) = 1, k =l
(9.6)
n =0
Zależność (9.6) otrzymujemy podstawiając (9.3) do (9.4). Matematyczne aspekty powyższych
stwierdzeń zostały przedyskutowane w rozdziale drugim. Podsumowując je można stwierdzić,
że równania dyskretnej transformacji Fouriera (9.1), (9.2) i (9.3), (9.4) (X(k) = Xk):
N −1 N −1
1
x (n ) = ∑ X k f k (n) , X k = x, f k l N2
= ∑ x(n ) f k* (n ) (9.7)
k =0 N n =0
X ( 0) 1 1 1 " 1 x ( 0)
X (1) 1 WN−1 WN− 2 " WN− ( N −1) x (1)
1
X ( 2) = 1 WN− 2 WN− 4 " WN− 2( N −1) ⋅ x(2) (9.9)
N # # # % #
# #
X ( N − 1) 1 WN− ( N −1) WN− 2( N −1) " WN− ( N −1)( N −1)
x ( N − 1)
x ( 0) 1 1 1 " 1 X ( 0)
x (1) 1 WN1 WN2 " WNN −1 X (1)
x ( 2) = 1 WN2 WN4 " WN2( N −1) ⋅ X ( 2) (9.10)
# # # # % # #
x ( N − 1) 1 WNN −1 WN2( N −1) " WN( N −1)( N −1)
X ( N − 1)
Wykładniki WN są iloczynami numeru k prążka widma X(k) oraz numeru n próbki sygnału x(n).
Przykładowo w trzecim wierszu macierzy równania (9.9) mamy k = 2, gdyż obliczamy X(2),
więc wykładniki te są równe −kn = 0, −2, −4, −6, ..., −2(N−1), ponieważ k = 2 i n = 0, 1, 2, ...,
N−1. Zapiszmy równania (9.9) i (9.10) jako:
1 *
X= W x (analiza) (9.11)
N
x = WX (synteza) (9.12)
Algorytmy wyznaczania dyskretnej transformacji Fouriera 233
gdzie „*” oznacza zespolone sprzężenie elementów macierzy. Zwróćmy uwagę na fakt, że
w kolejnych kolumnach macierzy W (równanie syntezy (9.10)) znajdują się kolejne harmo-
niczne funkcje bazowe fk(n), k = 0, 1, 2, ..., N−1, a w kolejnych wierszach macierzy W* (rów-
nanie analizy (9.9)) − te same funkcje, tylko sprzężone. Łatwo wykazać, że jest to „zgodne”
z ideą przedstawienia sygnału jako ważonej sumy funkcji bazowych fk(n). Podczas syntezy
każda n-ta próbka sygnału x(n) jest bowiem uzyskiwana jako suma wszystkich n-tych próbek
sygnałów bazowych fk(n), k = 0, 1, 2, ..., N−1, wziętych z „wagami” X(k), podczas analizy zaś
k-ty prążek widma jest otrzymywany jako suma iloczynów wszystkich próbek sygnału i sprzę-
żonej k-tej funkcji bazowej.
Wyznaczenie dyskretnej transformaty Fouriera X(k) sygnału x(n) sprowadza się więc do rea-
lizacji numerycznej równania macierzowego (9.9), synteza zaś sygnału x(n) z jego X(k) jest
przeprowadzana na podstawie równania macierzowego (9.10). Oba równania różnią się jedynie
znakiem wykładnika liczby WN. Zakładając, że sygnał wejściowy jest zespolony, w obu z
nich trzeba wykonać N2 mnożeń zespolonych (N wierszy po N mnożeń) oraz N(N−1) dodawań
zespolonych (N wierszy po N−1 dodawań). Przykładowo dla N = 256 mamy 65 536 mnożeń
i 65 280 dodawań, a dla N = 1024: 1 048 676 mnożeń i 1 047 552 dodawań, czyli ponad
milion mnożeń i dodawań zespolonych. Jak widać liczba operacji arytmetycznych nie jest mała
i szybko rośnie wraz ze wzrostem długości wektora danych. Na szczęście istnieją jednak
„szybkie” algorytmy FFT, które w prosty sposób radykalnie zmniejszają tę liczbę, a oferują
identyczny wynik. Należy jednak wyraźnie podkreślić, że identyczność ta jest tylko teoretycz-
na, gdyż w realizacji komputerowej obliczenia są zawsze przeprowadzane ze skończoną
precyzją, a kolejność operacji arytmetycznych na danych wejściowych w algorytmach DFT
i FFT jest różna, więc otrzymane wyniki także będą nieznacznie różne od siebie i różne od
wyniku „idealnego”, teoretycznego. Stąd się bierze błąd względny wyniku rzędu 10−7 dla ob-
liczeń o pojedynczej precyzji (liczby zmiennoprzecinkowe 32-bitowe w standardzie IEEE SP)
oraz błąd rzędu 10−14 dla obliczeń o podwójnej precyzji (liczby zmiennoprzecinkowe 64-bito-
we w standardzie IEEE DP). Dla N będącego potęgą liczby 2, czyli N = 2p, algorytmy FFT
typu radix-2 oferują złożoność obliczeniową rzędu (N/2)log2N mnożeń i Nlog2N dodawań ze-
spolonych. Przykładowo dla N = 256 mamy 1024 mnożenia i 2048 dodawań, a dla N = 1024
− 5120 mnożeń i 10 240 dodawań, czyli ponad 100 razy mniej. Jak widać oszczędności są
olbrzymie, a więc „gra jest warta świeczki” niezależnie od tego jak szybki procesor oblicze-
niowy ma się do dyspozycji.
W dalszej części rozdziału przedstawimy jeden z algorytmów szybkiego DFT, czyli algorytm
FFT. Ze względu na podobieństwo równań (9.9) i (9.10) algorytm ten może być wykorzysty-
wany do wyznaczania prostej i odwrotnej transformacji Fouriera, należy tylko uwzględnić inny
znak wykładnika WN (dodatni zamiast ujemnego). Jak się później okaże dwywymiarowa tran-
sformacja Fouriera może być przedstawiona jako złożenie dwóch transformacji jednowymia-
rowych, dlatego „szybki” algorytm może być także stosowany przy wyznaczaniu transformacji
dwywymiarowej.
Zaproponowanie „szybkich” algorytmów wyznaczania DFT w latach sześćdziesiątych XX
wieku stanowiło milowy krok w rozwoju cyfrowego przetwarzania sygnałów. Zmniejszyło ono
bowiem radykalnie wymagania sprzętowe, niezbędne do obliczania DFT w „rozsądnym”
czasie i w konsekwencji umożliwiło jego szerokie zastosowanie.
234 Algorytmy wyznaczania dyskretnej transformacji Fouriera
( )( ) ( )
N −1
X (k ) = x(0) + x (1)WN− k + x(2) WN− k WN− k + ... + x ( N − 1) WN− k (9.13)
to okazuje się, że podczas wyznaczania X(k) (N−1)-sza próbka sygnału jest mnożona (N−1)
razy przez WN−k, (N−2)-ga próbka sygnału jest mnożona (N−2) razy przez WN−k, ..., a próbka
zerowa wcale nie jest mnożona. Taka sytuacja zachodzi właśnie w układzie przedstawionym na
rysunku 9.1. W każdej iteracji algorytmu układ wykonuje jedno mnożenie zespolone (przez
WN−k) oraz jedno dodawanie rzeczywiste (sumator „⊕”), czyli łącznie cztery mnożenia i trzy
dodawania rzeczywiste. Ponieważ odwrotna kolejność podawania próbek może być nie-
wygodna, można w pętli sprzężenia zwrotnego zastosować mnożnik WNk i kolejność naturalną,
a wynik dodawania pomnożyć przez WN−k(N−1). Sprawdzenie poprawności tej modyfikacji
pozostawiamy Czytelnikowi.
Dla dociekliwych (po lekturze rozdziału 10 i 11). Układ przedstawiony na rysunku 9.1 jest re-
kursywnym układem (filtrem) ze sprzężeniem zwrotnym, opisanym przez równanie:
y k (n ) = x (n ) + WN− k y k ( n − 1) (9.14)
Algorytmy wyznaczania dyskretnej transformacji Fouriera 235
z−1
WN = e j 2π / N
WN− k
Rys. 9.1. Wyznaczanie rekurencyjne DFT metodą Goertzela. „z−1” − opóźnienie o jedną próbkę
( )
Pomnóżmy licznik i mianownik tej transmitancji przez 1 − WNk z −1 . Otrzymujemy wówczas:
1 − WNk z −1
H k ( z) = (9.16)
1 − 2 cos(2πk / N )z −1 + z − 2
Transmitancji tej odpowiada układ przedstawiony na rysunku 9.2a, będący kaskadowym połą-
czeniem dwóch dyskretnych układów LTI. Po zamianie ich kolejności otrzymujemy układ, po-
kazany na rysunku 9.2b, opisany następującymi równaniami czasowymi
y k (n ) = wk (n ) − WNk wk (n − 1) (9.18)
W celu wyznaczenia k-tego prążka widma Fouriera X(k) należy iterować równanie (9.17) dla
n = 0, 1, 2, ..., N, a równanie (9.18) wyznaczyć tylko dla n = N. W ten sposób redukuje się licz-
bę mnożeń do tylko N+1 mnożeń rzeczywistych, czyli uzyskuje się znaczne zmniejszenie zło-
żoności obliczeniowej układu w porównaniu z realizacją z rysunku 9.1.
a) b)
x(n) yk(n) x(n) wk(n) yk(n)
a X1(k) − widmem N próbek sygnału x(n), n = 1, 2, 3, ..., N, czyli zaczynających się od próbki
pierwszej:
N
1
X 1 (k ) =
N
∑ x(n)e − j (2 π / N )k ( n −1) , k = 0, 1, 2,..., N − 1 (9.20)
n =1
1 N −1
= x (0) − x (0) + ∑ x ( n ) e − j (2π / N ) kn e j (2π / N ) k + x ( N )e − j 2π k e j (2π / N ) k ) =
N n =1
e j (2π / N ) k N −1 − j (2π / N ) kn
=
N ∑ x (n)e − x (0) + x ( N ) =
n =0
1 N −1
1
= e j (2π / N ) k ∑ x ( n )e − j (2π / N ) kn
+ N ( x ( N ) − x (0) ) =
N n =0
1
= e j ( 2 π / N ) k X 0 (k ) + ( x ( N ) − x (0) ) (9.21)
N
Z ostatniego wzoru widać, jak należy zmodyfikować k-ty prążek widma X(k), k = 0, 1, 2, ...,
N−1, jeżeli usuwamy z analizowanego wektora danych próbkę x(0) („najstarszą”) i dodajemy
próbkę x(N) („najświeższą”). Schemat blokowy odpowiedniego algorytmu obliczeniowego jest
przedstawiony na rysunku 9.3.
Powtórzmy powyższe przekształcenia w sytuacji kiedy transformowany sygnał jest wymnażany
z oknem eksponencjalnym:
w( n ) = e α n (9.22)
Wówczas otrzymujemy:
N −1
1
X 0w ( k ) =
N
∑ eαn x(n)e − j ( 2π / N )kn , k = 0, 1, 2, ..., N − 1
n =0
Algorytmy wyznaczania dyskretnej transformacji Fouriera 237
1 −1
1/N
X(k−1)
e j ( 2 πk / N ) z−1
X(k)
Rys. 9.3. Schemat blokowy algorytmu wyznaczania sekwencji dyskretnych transformat FourieraX(k)
N
1
X 1w ( k ) =
N
∑ e α( n −1) x(n)e − j (2 π / N )k ( n −1) , k = 0, 1, 2,..., N − 1
n =1
1 N −1 α ( n −1)
X 1w ( k ) =
N ∑ e x ( n )e − j (2π / N ) kn e j (2π / N ) k + eα ( N −1) x ( N ) e− j (2π / N ) k ( N −1) =
n =1
e −α N −1 α n − j (2π / N ) kn j ( 2π / N ) k
=
N ∑ e x( n )e e − x (0)e j (2π / N ) k + eα N x ( N )e j (2π / N ) k ) =
n =0
1 N −1
1
= e −α e j (2π / N ) k ∑ eα n
x ( n )e − j (2π / N ) kn + ( eα N x ( N ) − x (0) ) =
N n =0 N
= e − α e j ( 2 π / N )k X 0w ( k ) +
1 αN
N
(
e x ( N ) − x (0)
) (9.23)
( )
cos( ωn ) = 0,5 e jωn + e − jωn = 0,5 e αn + e −αn , α = jω ( ) (9.24)
Przykładowo dla okna Hamminga (−43 dB) oraz Blackmana-Harrisa (−67 dB) odpowiednio
mamy:
238 Algorytmy wyznaczania dyskretnej transformacji Fouriera
a0 = 0, 54; a1 = 0, 46; a2 = 0
X 1w (k ) = e − j ( 2 π / N ) m e j ( 2 π / N ) k X 0w (k ) +
N
(
1 j ( 2 π / N ) mN
e )
x ( N ) − x (0)
1
X 1w (k ) = e j ( 2 π / N )( k − m ) X 0w (k ) + ( x ( N ) − x (0) ) (9.27)
N
Jeśli natomiast okno nie jest dane wzorem (9.22) tylko inaczej zapisanym wzorem (9.26):
M M 2π
2π 2π j mn
w(n ) = b0 + ∑ b− m exp − j m + bm exp j m = ∑ bm e N (9.28)
m =1 N N m =− M
1 −1
1/N
b−1 b0 b1
X(k)
Rys. 9.4. Schemat blokowy algorytmu wyznaczania rekurencyjnego prążka X(k) widma Fouriera w przy-
padku zastosowania okien kosinusoidalnych (wzór (9.29))
Algorytmy wyznaczania dyskretnej transformacji Fouriera 239
f k = f 0 + k ⋅ ∆f , k = 0, ..., M (9.30)
A ≡ e − j 2 π f 0 , W ≡ e − j 2 π ∆f / 2 (9.32)
(9.31) przyjmuje następującą postać
N −1
X (k ) = ∑ x ( n ) AnW 2 kn , k = 0, ..., M (9.33)
n =0
która z kolei po uwzględnieniu równości 2kn = n2+k2−(k−n)2 może być przedstawiona jako:
N −1
∑ x(n ) AnW n W − ( k − n )2 ,
2 2
X (k ) = W k k = 0, 1, ..., M (9.34)
n =0
W dziedzinie częstotliwości odpowiada tej operacji iloczyn widm Y1(k) i Y2(k) obu sygnałów.
Wynika stąd, że równanie (9.34) może być także zrealizowane za pomocą wykonania trzech
dyskretnych transformacji Fouriera DFT, dwóch prostych i jednej odwrotnej. W przypadku
zastosowania szybkiej wersji DFT, tzw. FFT (ang. Fast Fourier Transform), otrzymuje się al-
gorytm potocznie nazywany „szybkim” splotem. Schemat blokowy programowej implemen-
tacji równania (9.34) jest przedstawiony na rysunku 9.5. Wyznaczanie widma X(k) z (9.34)
metodą świergotową jest efektywniejsze niż bezpośrednio z (9.31) dla odpowiednio dużych
wartości parametrów N i M. Algorytm szybkiej transformacji Fouriera FFT poznamy w następ-
nym podrozdziale.
Podczas programowej implementacji algorytmu transformacji świergotowej należy pamiętać,
że „szybki” splot dwóch sygnałów, realizowany za pomocą sekwencji trzech FFT, jest splotem
kołowym a nie liniowym. Muszą być więc podjęte specjalne zabiegi programowe, aby uzyskać
splot liniowy. Sprowadzają się one do uzupełnienia zerami „splatanych” sygnałów. Więcej in-
formacji o problemach implementacji splotu liniowego sygnałów dyskretnych za pomocą FFT
podamy w rozdziale 13, poświęconym szybkim algorytmom filtracji cyfrowej.
240 Algorytmy wyznaczania dyskretnej transformacji Fouriera
W tabeli 9-1 jest przedstawiony program, implementujący opisany powyżej szybki algorytm
transformacji świergotowej. Wyznacza on M prążków widma w zadanym przedziale często-
tliwościowym (fd − częstotliwość dolana, fg − częstotlowość górna) dla sygnału x(n), mającego
N próbek. Zgodnie z rozważaniami przeprowadzonymi w rozdziałach 13.4 i 13.5 (rysunki
2
13.13 i 13.14), sygnał y1 ( n ) = x(n ) AnW n z rysunku 9.5 jest uzupełniony na końcu M−1 zerami,
2
natomiast sygnał y2 (n ) = W − n , −(N−1) ≤ n ≤ (M−1), jest ukształtowany w taki sposób, aby po
jego odwróceniu w czasie, wykonywanym podczas operacji splotu, próbki o indeksach n = 1,
..., M−1 „trafiły” w zera dodane na końcu sygnału y2(n).
2
AnW n
2
y1(n) Y1(k) Wk
x(n) FFT
IFFT X(k)
2
W −n FFT
y2(n) Y2(k)
Rys. 9.5. Schemat blokowy wyznaczania wybranych prążków widma Fouriera X(k) za pomocą dyskretnej
transformacji świergotowej
Tab. 9-1. Program w języku Matlab, implementujący dyskretną transformację świergotową sygnału
% FFT sygnału
Xfft=fft(x)/(N/2);
df=1/(N*dt); f=0:df:(N-1)*df;
plot(f,abs(Xfft)); grid; title('Abs(FFT)'); xlabel('f [Hz]'); pause
Ideę, którą się stosuje w algorytmach typu DIT FFT jest podział próbek transformowanego sy-
gnału na te o indeksach parzystych (0, 2, 4, ...) i nieparzystych (1, 3, 5, ...), wykonanie DFT
na każdym z tych zbiorów, a następnie odtworzenie widma „całego” sygnału z dwóch widm
„cząstkowych”. Ponieważ DFT charakteryzuje się złożonością obliczeniową rzędu N 2, dzieląc
sygnał na dwie części i transformując je osobno, musimy wykonać dwa razy po (N/2)2 operacji
plus niewielką liczbę operacji, potrzebnych na „sklejenie” widm częściowych. Przykładowo
dla N = 1024, zamiast wykonywać N 2 = 1 048 676 mnożeń wykonuje się 2(N/2)2 = N 2/2 =
= 524 288 mnożeń, czyli dwa razy mniej. Nawet jeśli operacja „sklejania” widm nie jest „bez-
bolesna”, podejście takie i tak zdecydowanie się opłaca. A przecież operacją podziału można
kontynuować dalej, tzn. dalej dzielić podzbiory próbek na parzyste i nieparzyste, dochodząc
w końcu do zbiorów dwuelementowych. I tak jest w istocie. W algorytmie radix-2 (podział na
„dwa” podzbiory) DIT (decymacja w czasie, czyli próbek sygnału) FFT wymaga się, aby
transformowany sygnał składał się z N = 2p próbek, a następnie:
1) dokonuje się zmiany kolejności próbek, dzieląc je rekurencyjnie na próbki o indeksach pa-
rzystych i nieparzystych, aż do uzyskania zbiorów dwuelementowych;
2) wykonuje się serię N/2 dwupunktowych DFT;
3) następnie składa się widma dwuprążkowe w widma czteroprążkowe, czteroprążkowe
w ośmioprążkowe itd., aż do momentu odtworzenia widma N-prążkowego, czyli widma
całego sygnału.
Dla danego N mamy log2N etapów obliczeń, przykładowo dla N = 8 mamy log28 = 3 etapy:
musimy wykonać serię czterech dwupunktowych transformacji DFT (etap 1), następnie cztery
widma dwupunktowe złożyć w dwa widma czteropunktowe (etap 2) i dwa widma cztero-
punktowe złożyć w jedno widmo ośmiopunktowe (etap 3). Ponieważ w najprostszej wersji
algorytmu w każdym etapie obliczeń wykonuje się N mnożeń i N dodawań zespolonych (N/2
motylki po dwa mnożenia i dwa dodawania zespolone), całkowita złożoność obliczeniowa
szybkiego algorytmu radix-2 DIT FFT wynosi Nlog2N mnożeń i Nlog2N dodawań zespolonych.
W wersji jeszcze „szybszej” redukuje się liczbę mnożeń do (N/2)log2N.
242 Algorytmy wyznaczania dyskretnej transformacji Fouriera
Dygresja. Dawniej kiedy procesory wykonywały operację mnożenia o wiele dłużej niż doda-
wanie i odejmowanie, korzystna była minimalizacja liczby mnożeń, nawet kosztem zwiększe-
nia liczby dodawań i odejmowań. Jednak obecnie tak nie jest. Procesory sygnałowe potrzebują
tyle samo cykli zegarowych na każdą z tych operacji. Co więcej tyle samo co operacje aryt-
metyczne (poza dzieleniem) trwa także przesyłanie liczb pomiędzy rejestrami procesora a pa-
mięcią. Optymalizacja programu sprowadza się więc obecnie do minimalizacji wszystkich
operacji programowych związanych z realizacją konkretnego algorytmu.
Ponieważ
2π 2π
WN− 2 kn = exp ( −2kn ) = exp ( −kn ) = WN− kn
/2
N N /2
stąd
N / 2−1 N / 2−1
X (k ) = ∑ x (2n )WN− /kn2 + WN− k ∑ x (2n + 1)WN− /kn2 , k = 0, 1, 2, ..., N − 1 (9.37)
n =0 n =0
W dwóch sumach występujących w nawiasach kwadratowych rozpoznajemy N/2-punktowe
równania DFT próbek parzystych i nieparzystych. Jednak z pewnymi różnicami: w N/2-pun-
ktowym DFT indeks k zmienia się od 0 do N/2−1, a w równaniu (9.37) zmienia się od 0 do
N−1. Dodatkowo brak jest dzielenia sum przez N/2. Dzielenie nie stanowi problemu, gdyż i tak
w algorytmach DFT operacja ta jest na zewnątrz rdzenia obliczeniowego i dzieli się tylko raz
cały wynik dekompozycji. Również zmniejszenie górnego indeksu k nie stanowi problemu,
ponieważ funkcje WN/2−kn mają okres N/2 ze względu na k:
2π
WN− (/k2+ N / 2) n = WN− kn / 2 exp(− 2 πn ) = WN / 2
− ( N / 2 )n
/ 2WN / 2 = WN− kn
/ 2 exp − ( N / 2)n = WN− kn − kn
N / 2
Dlatego dla k = 0, 1, 2, ..., N/2−1 równanie (9.37) można zapisać w następującej postaci:
gdzie X2n(k) i X2n+1(k) oznaczają N/2-punktowe, nieunormowane (brak dzielenia przez N/2)
transformaty DFT próbek parzystych (2n) i nieparzystych (2n+1). Prążki X(k) dla k = N/2, ...,
N−1 oblicza się natomiast z zależności:
N
X k + = X 2 n ( k ) + WN− ( k + N / 2) X 2 n +1 ( k ) , k = 0,1, 2,..., N / 2 − 1 (9.39)
2
Algorytmy wyznaczania dyskretnej transformacji Fouriera 243
a) b)
1 1
X(k) X(k) X(k) X(k)
−k 1
W N
etap (i) etap (i+1) etap (i) etap (i+1)
1 1
X(k+N/2) X(k+N/2) X(k+N/2) X(k+N/2)
− WN− k WN− k −1
Rys. 9.6. Struktura obliczeniowa podstawowego bloku obliczeniowego algorytmu DIT FFT radix-2, czyli
tzw. „motylka”. a) wersja „pełna”, b) wersja „prostsza” o zredukowanej liczbie operacji arytmetycznych, po
przesunięciu (wyłączeniu) czynnika WN− k . Przypomnijmy: − WN− k = WN− ( k + N / 2 )
Ponieważ
WN− ( k + N / 2) = WN− kWN− N / 2 = WN− k e − jπ = −WN− k
X (k ) 1 WN− k X 2 n ( k )
X ( k + N / 2) = 1 −W − k X ( k ) , k = 0,1, 2,..., N / 2 − 1 (9.41)
N 2 n +1
Wzór (9.41) jest prawdziwy na wszystkich etapach dekompozycji. Na każdym kolejnym etapie
stosuje się podstawienie N = N/2, czyli połowę N z etapu poprzedniego, aż uzyska się N = 2.
Jeśli wektory złożone z prążków widmowych X2n(k) i X2n+1(k) złożymy razem, jeden za drugim,
i wynikowy wektor nazwiemy X(k), to wówczas (9.41) przyjmuje formę rekurencyjną:
X (k ) 1 WN− k X (k )
X ( k + N / 2) = 1 −W − k X ( k + N / 2) , k = 0,1, 2,..., N / 2 − 1 (9.42)
N
Graficzna ilustracja równania (9.42) jest pokazana na rysunku 9.6a i ze względu na kształt nosi
nazwę „motylka”. Na najniższym poziomie wektor X(k) jest inicjalizowany wektorem xp(n),
składającym się z odpowiednio poprzestawianych próbek sygnału wejściowego x(n) (wynik
końcowy rekurencyjnego podziału próbek na parzyste i nieparzyste). Wówczas równanie
(9.42) odpowiada algorytmowi dwupunktowego DFT (N = 2, k = 0, bez skalowania, czyli dzie-
lenia przez 2)
X (k ) 1 1 X (k )
X ( k + N / 2) = 1 −1 W − k X ( k + N / 2) , k = 0,1, 2,..., N / 2 − 1 (9.44)
N
244 Algorytmy wyznaczania dyskretnej transformacji Fouriera
która wymaga tylko jednego mnożenia zespolonego i dwóch dodawań zespolonych, zamiast
dwóch mnożeń i dwóch dodawań. Prostszy „motylek”, odpowiadający równaniu (9.44), jest
przedstawiony na rysunku 9.6b. W przypadku jego zastosowania w a l g o r y t m i e r a d i x - 2
DIT FFT liczba mnożeń zespolonych maleje z Nlog2N do (N/2)log2N
(log2N etapów po N/2 mnożeń, czyli po jednym mnożeniu w N/2 motylkach).
Do omówienia pozostaje jeszcze metoda przestawiania próbek. Metoda bezpośrednia polegają-
ca na wielokrotnym podziale próbek na parzyste i nieparzyste jest poprawna, ale niezbyt
szybka, gdyż dane są wielokrotne sortowane (przestawiane). Metodą często proponowaną w li-
teraturze jest metoda „numeracji o odwróconej kolejności bitów”, w której próbka wejścio-
wego wektora danych od razu jest umieszczana na właściwej pozycji przed serią „motylków”
FFT. Wynika ona w sposób bezpośredni z operacji wielokrotnego podziału próbek na parzyste
i nieparzyste.
Załóżmy, że chcemy wykonać FFT wektora danych (próbek sygnału) o długości N = 8. Po
pierwszym podziale na próbki parzyste i nieparzyste otrzymujemy:
{x (0), x(2), x(4), x(6)}, {x(1), x(3), x(5), x(7)}
Do drugim podziale mamy:
{x (0), x(4)}, {x (2), x(6)}, {x(1), x(5)}, {x(3), x(7)}
Ponieważ dostaliśmy już zbiory dwuelementowe, „tasowanie” próbek się kończy. Porównajmy
kolejność próbek na początku i po przestawieniu:
przed: x (0), x(1), x( 2), x(3), x (4), x (5), x(6), x (7 )
po: x (0), x(4), x(2), x(6), x (1), x (5), x(3), x (7 )
Uproszczony diagram szybkiego algorytmu Fouriera DIT FFT radix-2 dla N = 8 jest przed-
stawiony na rysunku 9.7. Jak widać na początku przestawiamy próbki sygnału wejściowego,
następnie wykonujemy serię DFT dwupunktowych, a potem już tylko składamy widma: dwu-
punktowe w czteropunktowe, czteropunktowe w ośmiopunktowe i tak dalej (w ogólności). Jak
widać prążki kolejnego widma zastępują („nadpisują”) prążki widm poprzednich i nie jest
potrzebna dodatkowa pamięć na przechowywanie wyników przejściowych. Pełny schemat
omawianego algorytmu prezentuje rysunek 9.8, na rysunku 9.9 przedstawiono zaś kolejne
etapy jego wyprowadzenia. „Sercem” numerycznym programu, implementującego algorytmu
radix-2 DIT FFT, jest wykonanie obliczeń związanych z jednym „motylkiem”. A cała reszta to
kontrolowanie położenia i szerokości motylka na poszczególnych etapach. W tabeli 9-2
przedstawiono wartości parametrów programu na poszczególnych etapach obliczeń. W kolej-
nych etapach wartości próbek bazy Fouriera są uzyskiwane poprzez wielokrotne mnożenie
przez siebie „mnożnika” bazy, różnego na każdym etapie, np.
Aby uniknąć wielokrotnego wyznaczania tych samych wartości próbek baz Fouriera w kolej-
nych etapach obliczeń, np. W4−1 z etapu 2, W8−2 z etapu 3 oraz W16−4 z etapu 4 są identyczne
(patrz tabela 9-3), może je wyznaczyć tylko jeden raz na początku dla bazy o największej
długości, a potem pobierać co którąś próbkę z tego wektora.
Kod źródłowy programu FFT, napisanego w języku Matlab, a wynikający z tabeli 9-2, jest
przedstawiony w tabeli 9-3. Jeśli zmienimy znak przed funkcją sinus w zmiennej W z „−” na
„+”, program ten oblicza odwrotną transformację Fouriera.
246 Algorytmy wyznaczania dyskretnej transformacji Fouriera
Rys. 9.7. Uproszczony schemat blokowy algorytmu DIT FFT radix-2 dla N = 8
1 1 1
x(0) X(0)
1 1 1
1 1 1
x(4) X(1)
0
W 2 −1 1 1
1 1
1
x(2) X(2)
0
1 W 4 −1 1
1 1 1
x(6) −1
X(3)
W 0
−1 W −1
2
4
1
1
1 1
x(1) X(4)
1 1 W80 −1
1
11 1
x(5) −1
X(5)
W20 −1 1 W 8 −1
1 1 1
x(3) X(6)
1 W40 −1 W8−2 −1
1 1 1
x(7) −1 W −3 X(7)
W20 −1 W 4 −1 8
−1
Rys. 9.8. Pełny schemat blokowy algorytmu DIT FFT radix-2 dla N = 8
Oczywiście algorytm radix-2 DIT FFT nie jest jedynym szybkim algorytmem typu DIT, istnie-
jącym do wyznaczania DFT. Rodzina „szybkich” algorytmów jest o wiele większa. Po pier-
wsze, dlaczego dekomponować sygnał tylko na dwa „podsygnały” (próbki parzyste i nie-
parzyste), a nie na więcej składowych, jeśli tylko wiemy w jaki sposób należy „składać” widma
DFT „części” do widma „całości”. W literaturze szeroko są dyskutowane nie tylko szybkie
algorytmy typu radix-2 (dwie „części”), ale także jeszcze efektywniejsze obliczeniowo
algorytmy radix-4 (cztery „części”). Jedno DFT N-punktowe zastępują się w nich czterema
Algorytmy wyznaczania dyskretnej transformacji Fouriera 247
X2n(0)
x(0) X(0)
X2n(1)
x(2) DFT X(1)
N=4 X2n(2)
x(4) X(2)
X2n(3)
x(6) X(3)
X2n+1(0) W 80
x(1) X(4)
X2n+1(1) W8−1 −1
x(3) DFT X(5)
N=4 X2n+1(2) W8−2 −1
x(5) X(6)
X2n+1(3) W8−3 −1
x(7) X(7)
−1
x(0) X(0)
W20
x(4) X(1)
−1 W 40
x(2) X(2)
W20 W4−1 −1
x(6) X(3)
−1 −1
0
W8
x(1) X(4)
W20 W8−1 −1
x(5) X(5)
−1 W 40 W8−2 −1
x(3) X(6)
W20 W4−1 −1 W8−3 −1
x(7) X(7)
−1 −1 −1
Rys. 9.9. Wyprowadzenie schematu blokowego DIT FFT radix-2 z rysunku 9.8
248 Algorytmy wyznaczania dyskretnej transformacji Fouriera
Tab. 9-2. Wartości parametrów programu, implementującego algorytm radix-2 DIT FFT, w kolejnych eta-
pach obliczeń
Tab. 9-3. Program implementujący algorytm radix-2 DIT FFT w języku Matlab
clera all;
% GENERACJA SYGNAŁU
N=8; % liczba próbek sygnału
x=0:N-1; % przykładowe wartości próbek
typBitReverse=1; % 1 lub 2 - wybór algorytmu przestawiania próbek (wolna, szybka)
typFFT=1; % 1 lub 2 - wybór właściwej pętli FFT (wolna, szybka)
xc = x; % kopia sygnału x
for b=1:N-1 %
if (b<a) %
T=x(a); x(a)=x(b); x(b)=T; %
end %
c=N/2; %
while (c<a) %
a=a-c; c=c/2; %
end %
a=a+c; %
end %
end
DFT N/4-punktowymi. Na każdym etapie obliczeń algorytm radix-4 wykonuje 3*(N/4) mnoże-
nia zespolone, zamiast N/2 mnożeń tak jak w algorytmie radix-2, ale etapów jest teraz dwa razy
mniej. W wyniku tego do wyznaczenia DFT metoda radix-4 potrzebuje „tylko” (3N/8)* *log2N
mnożeń zespolonych, zamiast podejście radix-2 − „aż” (N/2)*log2N mnożeń.
Idąc dalej, dlaczego nie stosować różnego podziału na różnych etapach dekompozycji? Tę ideę
wykorzystano w algorytmach typu „rozłożony” podział (ang. split-radix). Jest w nich możliwe,
przykładowo, podzielenie sygnału na dwie części, potem każdej z nich na cztery części, dalej
na dwie, cztery lub osiem części itd. Ich podstawową zaletą jest to, że oferują bardzo dużą efe-
ktywność obliczeniową dla sygnałów, których długość nie jest potęgą liczby 2, ale jest to
okupione mniejszą regularnością (większą logiczną złożonością) i większą długością imple-
mentujących je programów. W literaturze pod nazwą split-radix najczęściej rozumie się „naj-
szybszy” z obecnie znanych algorytmów FFT, będący połączeniem algorytmów radix-2 i radix-
4, wykorzystujących decymację w dziedzinie częstotliwości DIF (ang. Decimation in Fre-
quency). Z algorytmami typu DIF FFT zapoznamy się w rozdziale 9.5.2. W ww. algorytmie
split-radix podział DIF radix-2 jest stosowany do wyznaczenia N/2 parzystych prążków widma,
metodę DIF radix-4 wykorzystuje się zaś do wyznaczenia dwóch N/4-punktowych, naprze-
miennych sekwencji prążków nieparzystych. Ze względu na specyficzną budowę motylka
algorytm ten charakteryzuje się jeszcze mniejszą liczbą mnożeń niż algorytmy radix-2
i radix-4.
Kończąc ten krótki przegląd metod, nie wypada zapomnieć o algorytmach FFT Cooleya-
-Tukeya i Gooda-Thomasa, służących do szybkiego wyznaczania DFT sygnałów o długości
N = LM, gdzie L i M są liczbami naturalnymi, w drugim przypadku względnie pierwszymi (ich
jedynym wspólnym podzielnikiem jest 1).
Załóżmy, że N może być przedstawione jako iloczyn dwóch liczb L i M: N = LM, wówczas
indeksy „czasu” n i „częstotliwości” k mogą być zapisane jako:
n = l + mL, k = pM + q (9.46)
Ponieważ:
W N− ( pM + q )( l + mL) = WN− pMlWN− pMmLW N− qlWN− qmL (9.49)
oraz
WN− pMl = WN− pl − pl − pMmL
/ M = WL , W N = WN− pmN = 1, WN− qmL = WN− qm − qm
/ L = WM (9.50)
M − 1 L −1
X ( p, q ) = ∑ ∑ x(l , m)WL− plWN− qlWM− qm (9.51)
m =0 l =0
4) Kończąc wykonuje się serię L-punktowych DFT wszystkich kolumn macierzy B(l,q):
L −1
X ( p, q ) = ∑ B(l , q)WL− pl , p = 0, 1, ..., L − 1, q = 0, 1, 2, ..., M − 1
l =0
m
0 1 2 M-1
l
0 x(0) x(L) x(2L) … x((M−1)L)
: : : … :
L-1 x(L−1) x(2L−1) x(2L−1) … x(LM−1)
Rys. 9.10. Graficzna ilustracja rozłożenia wektora danych x(n), n = 0, 1, 2, ..., N−1, w macierzy x(l,m),
l = 0, 1, ..., L−1, m = 0, 1, ..., M−1 (LM = N. n = l+mL). DFT wektora x(n) sprowadza się do: 1) wykonania
DFT wszystkich wierszy macierzy x(l,m) i zastąpieniu ich obliczonymi transformatami, 2) korekcji tak
otrzymanej macierzy, 3) wykonania DFT wszystkich kolumn macierzy otrzymanej w kroku 2
Podobnie jak w poprzednim przypadku załóżmy, że N jest równe potędze liczby 2, oraz że za-
interesowani jesteśmy szybkim wyznaczeniem k-tego prążka X(k) widma Fouriera ze wzoru
(WN = exp(j2π/N)):
N −1
X (k ) = ∑ x(n)WN− kn , k = 0, 1, 2,..., N − 1 (9.53)
n =0
Teraz jednak nie będziemy decymować próbek sygnału x(n) tylko prążki widma X(k), tzn.
osobno wyznaczymy prążki o indeksach parzystych i nieparzystych (k = 0, 1, 2, ..., N/2−1):
N −1
X ( 2k ) = ∑ x(n )WN− ( 2k )n (9.54)
n =0
N −1
X (2k + 1) = ∑ x(n)WN− (2k +1)n (9.55)
n =0
N / 2 −1 N / 2 −1
X (2k + 1) = ∑ x(n)WN− (2k +1)n + ∑ x(n + N / 2)WN− ( 2k +1)(n + N / 2) (9.59)
n =0 n =0
Ponieważ:
i wykorzystując zależność:
otrzymać:
N / 2 −1 N / 2 −1
X (2k + 1) = ∑ x(n)WN− (2k +1)n − ∑ x(n + N / 2)WN− (2k +1)n (9.64)
n =0 n=0
N / 2 −1
= ∑ [ x(n ) − x(n + N / 2)]W
n =0
−2 kn
N WN− n =
N / 2 −1
= ∑
n =0
{ [ x(n) − x(n + N / 2)]WN−n }WN−kn/ 2 (9.65)
Jak widać zarówno parzyste, jak i nieparzyste prążki widma X(2k) i X(2k+1) można otrzy-
mać w wyniku transformacji DFT, która jest o połowę krótsza (N/2) niż sygnał wejściowy (N).
Jest ona jednak wykonywana nie na sygnale oryginalnym, ale na danych sztucznie „spre-
parowanych”:
x1 ( n ) = x ( n ) + x ( n + N / 2), n = 0, 1, 2,..., N / 2 − 1 (9.66)
a) x(0) X(0)
c) x(0) X(0)
W20
x(1) X(4)
W40 −1
x(2) X(2)
−1 W4−1 W20
x(3) X(6)
−1 −1
0
W8
x(4) X(1)
−1 W8−1 W20
x(5) X(5)
−1 W8−2 W40 −1
x(6) X(3)
−1 W8−3 −1 W4−1 W20
x(7) X(7)
−1 −1 −1
Rys. 9.11. Schemat blokowy algorytmu DIF FFT radix-2: a) pierwszy, b) drugi, c) końcowy etap dekom-
pozycji
Algorytmy wyznaczania dyskretnej transformacji Fouriera 255
X (k ) = X * (N − k ), k = 1, 2, ..., N − 1 (9.68)
tzn.
Re ( X ( k ) ) = Re ( X ( N − k ) ) , Im ( X (k ) ) = − Im ( X ( N − k ) ) , k = 1,..., N − 1
N N N N N
Re X + k = Re X − k , Im X + k = − Im X − k , k = 0,..., − 1
2 2 2 2 2
Jeśli tak, to w przypadku sygnałów rzeczywistych część „pary idzie w gwizdek”, tzn. liczy się
coś co nie jest potrzebne, gdyż i tak jest znane.
Jak wykażemy poniżej właściwość symetrii widma DFT można z sukcesem wykorzystać i za
pomocą jednego, N-punktowego algorytmu FFT wyznaczać dwa N-prążkowe widma dwóch
sygnałów o długości N lub też wyznaczać N-prążkowe widmo sygnału o długości N, ale za
pomocą N/2-punktowego algorytmu FFT. Rozważmy teraz oba przypadki.
Załóżmy, że mamy dwa sygnały rzeczywiste x1(n) i x2(n), n = 0, 1, 2, ..., N −1, N = 2p. Utwórz-
my sygnał zespolony y(n), taki że:
y ( n ) = x1 ( n ) + jx 2 ( n ) (9.69)
Sygnał ten jest superpozycją dwóch sygnałów: y1(n) = x1(n)+j0 i y2(n) = 0+jx2(n). Widmo pier-
wszego z nich jest równe Y1(k) = X1(k), a drugiego Y2(k) = jX2(k). Widma X1(k) i X2(k) chara-
kteryzują się (a)symetrią typową dla transformat DFT sygnałów rzeczywistych (część rzeczy-
wista symetryczna, a urojona − asymetryczna). Ponieważ dyskretna transformacja Fouriera jest
liniowa, to widmo sygnału y(n) = y1(n)+y2(n) jest równe sumie widm poszczególnych sygna-
łów, czyli:
Y ( k ) = Y1 ( k ) + Y2 ( k ) = X 1 ( k ) + jX 2 ( k ) (9.70)
Niech:
X 1 ( k ) = X 1r (k ) + jX 1i (k ), X 2 (k ) = X 2 r ( k ) + jX 2i (k ) (9.71)
wówczas:
Y (k ) = {X 1r (k ) + jX 1i (k )} + j{X 2 r ( k ) + jX 2i (k )}
Y (k ) = {X 1r (k ) − X 2i (k )} + j{X 1i (k ) + X 2 r (k )}
Y (k ) = Yr (k ) + jYi (k ) (9.72)
czyli w jego części rzeczywistej Y(k) mamy różnicę widm rzeczywistych X1r(k)−X2i(k), w częś-
ci zaś urojonej − sumę widm rzeczywistych X1i(k)+X2r(k). Każde z widm składowych X1r(k),
X1i(k), X2r(k) i X2i(k) ma określoną symetrię lub asymetrię (rysunek 9.12). Aby z części
rzeczywistej Yr(k) widma Y(k) „odzyskać” widmo X1r(k) należy „pozbyć” się z niej składowej
256 Algorytmy wyznaczania dyskretnej transformacji Fouriera
X2i(k). Ponieważ wiemy, że jest ona asymetryczna względem punktu k = N/2, „zniknie”
w przypadku dodawania próbek widma Yr(k), leżących symetrycznie względem tego punktu.
W wyniku takiego dodawania symetryczna względem k = N/2 składowa X1r(k) „wzmocni się”
dwa razy, czyli:
1
X 1r (k ) = [Yr (k ) + Yr ( N − k )] , k = 1, 2, 3, ..., N − 1 (9.73)
2
Aby z kolei odzyskać z Yr(k) jego asymetryczną składową X2i(k), trzeba się „pozbyć” skła-
dowej symetrycznej X1r(k), a można to uczynić w wyniku odejmowania próbek leżących syme-
trycznie względem punktu k = N/2. Ponieważ jednak składowa ta jest zanegowana w Yr(k),
wynik odejmowania także trzeba zanegować:
1 1
X 2i ( k ) = − [Yr (k ) − Yr ( N − k )] = [Yr ( N − k ) − Yr (k )] , k = 1, 2, 3, ..., N − 1 (9.74)
2 2
Analogicznie uzyskuje się:
1
X 1i (k ) = [Yi (k ) − Yi ( N − k )], k = 1, 2, 3, ..., N − 1 (9.75)
2
1
X 2r (k ) = [Yi (k ) + Yi ( N − k )], k = 1, 2, 3, ..., N − 1 (9.76)
2
Pozostają nam jeszcze do wyznaczenia zerowe prążki widm X1(k) i X2(k) dla k = 0. Ponieważ
X1i(0) = X2i(0) = 0, widmo X1r(k) znajduje w części rzeczywistej Yr(k) widma Y(k), a widmo
X2r(k) − w części jego części urojonej Yi(k), stąd mamy:
X 1r (0) = Yr (0), X 1i (0) = 0 (9.77)
X 2 r (0) = Yi (0), X 2i (0) = 0 (9.78)
Jednoczesne wyznaczanie dwóch widm sygnałów rzeczywistych może być korzystne wszędzie
tam, gdzie w sposób ciągły analizuje się zmianę widma sygnału, np. w przypadku analizy
sygnału mowy.
Przypadek ten jest konsekwencją przypadku poprzedniego oraz właściwości, z której skorzy-
staliśmy podczas wyprowadzenia algorytmu radix-2 szybkiej transformacji Fouriera z decy-
macją w dziedzinie czasu. Przypomnijmy, że widmo X(k) całego sygnału może być odtworzone
na podstawie znajomości widma X2n(k) jego próbek parzystych i widma X2n+1(k) jego próbek
nieparzystych na podstawie wzoru:
X (k ) = X 2n (k ) + WN− k X 2n +1 (k ) (9.79)
Załóżmy, że analizujemy N-punktowy sygnał x(n). Jeśli utworzymy sygnał y(n) w taki sposób,
że próbki parzyste x(2n), umieścimy w jego części rzeczywistej sygnału y(n), a próbki x(2n+1)
w jego części urojonej:
y (n ) = x(2n ) + jx(2n + 1), n = 0, 1, 2,..., N / 2 − 1 (9.80)
Algorytmy wyznaczania dyskretnej transformacji Fouriera 257
wówczas wykonując szybką transformację Fouriera sygnału y(n) znajdujemy jego widmo Y(k).
Następnie tak jak w przypadku 1 należy z Y(k) „odtworzyć” widma X2n(k) i X2n+1(k), czyli
X2n,r(k), X2n,i(k), X2n+1,r(k) i X2n+1,i(k), a na ich podstawie widmo X(k) całego sygnału, korzy-
stając z wzoru (9.79). Przekształcając wzory (9.73)÷(9.76) oraz uwzględniając (9.79), otrzy-
mujemy (k = 0, 1, 2, ..., N/2−1):
1 N 1 N
X (k ) = Y (k ) + Y * − k + j ⋅ e − j 2 πk / N Y * − k − Y (k ) (9.81)
2 2 2 2
N/2 k
0 N/2 k 0
N/2 k
0 0 N/2 k
Rys. 9.12. Graficzna ilustracja (a)symetrii odpowiednich widm
N −1 N − 1 2π
1 j ( mk + nl )
x ( m, n ) =
N2
∑ ∑ X (k , l ) e N (9.83)
k =0 l =0
N −1 N −1 2π 2π
−j nl − j mk
X (k , l ) = ∑ ∑ x ( m, n ) e N e N (9.84)
m =0
n =0
258 Algorytmy wyznaczania dyskretnej transformacji Fouriera
stąd wynika, że obliczenie dwuwymiarowego DFT sprowadza się do wykonania dwóch serii
jednowymiarowych, N-punktowych algorytmów DFT, przy czym każda seria składa się z N ta-
kich algorytmów:
1) DFT wszystkich wierszy miecierzy x(m,n), m = 0, 1, ..., N−1:
N −1 2π
−j nl
X w ( m, l ) = ∑ x ( m, n ) e N (9.85)
n =0
π(2n + 1) ⋅ k
N −1
X (k ) = c (k ) ⋅ ∑ x(n ) cos , 0 ≤ k ≤ N −1 (9.87)
n =0 2N
1 2
c (0) = , c (k ) = dla 1≤ k ≤ N −1 (9.88)
N N
π(2n + 1) ⋅ k
N −1
x (n ) = ∑ c(k )X (k ) cos , 0 ≤ n ≤ N −1 (9.89)
k =0 2N
Równanie (9.87) można przekształcić w następujący sposób, oddzielnie sumując parzyste i nie-
parzyste próbki sygnału x(n):
Algorytmy wyznaczania dyskretnej transformacji Fouriera 259
( N / 2 )−1 π ( 4n + 1) k ( N / 2 )−1 π ( 4n + 3) k
X ( k ) = c ( k ) ∑ x ( 2n ) cos + ∑ x ( 2n + 1) cos =
n =0 2N n =0 2N
( N / 2 )−1
π ( 4n + 1) k ( N / 2)−1 π ( 4n + 3) k
= c ( k ) ∑ x ( n ) cos + ∑ x ( N − n − 1) cos (9.90)
n =0 2N n =0 2N
Zmieniając granice sumowania w drugiej sumie równania (9.90) na n' = N−n−1 oraz łącząc
obie sumy otrzymujemy:
N −1 π ( 4n + 1) k N −1
X (k ) = c (k ) ∑ x ( n ) cos = Re c ( k ) e
− j πk / 2 N
⋅ ∑ x ( n ) e − j 2 πkn / N (9.92)
n =0 2 N n =0
[
X (k ) = Re c (k )e − jπk / 2 N ⋅ DFTN ( ~
x (n )) ] (9.93)
x (n ) = Re IDFTN { c ( k ) e jπ k / 2 N X ( k ) } = (9.94)
N-1
= Re ∑ { c ( k ) e jπ k / 2 N X ( k ) } e j 2π kn / N (9.95)
k =0
to próbki parzyste i nieparzyste sygnału wejściowego x(n) można w następujący sposób od-
tworzyć z próbek sygnału x (n ) (n = 0, 1, ..., N/2−1):
1, n = 0
δ( n ) = (10.1)
0, n ≠ 0
Schemat blokowy takiego układu jest pokazany na rysunku 10.1. Zachodzą dla niego następu-
jące zależności, wiążące sygnał wejściowy i wyjściowy:
δ( n ) → h ( n ) (10.2)
x (n) → y ( n) (10.3)
Jest natomiast liniowy, kiedy na sumę wymuszeń odpowiada sumą odpowiedzi na poszcze-
gólne wymuszenia:
{x1 ( n) → y1 (n ), x2 ( n ) → y2 ( n )} ⇒ { ax1 (n ) + bx2 ( n) → ay1 ( n) + by2 (n)} (10.5)
Układy dyskretne 261
∞ ⇒ ∞
y (n ) = ∑ h(k ) x(n − k ) y (n ) = ∑ h ( k ) δ( n − k ) = h ( n )
k = −∞
k = −∞
jΩ
Y(e )=H(e )X(e ) jΩ jΩ
Y(e )=H(ejΩ)∆(ejΩ)=H(ejΩ)
jΩ
Rys. 10.1. Schemat blokowy i równania liniowego układu dyskretnego niezmiennego w czasie: x(n) − syg-
nał wejściowy, y(n) − sygnał wyjściowy, h(n) − odpowiedź impulsowa układu, δ(n) − impuls jednostkowy
(delta Kroneckera), X(ejΩ), Y(ejΩ), H(ejΩ) i ∆(ejΩ) − transformaty Fouriera (8.8a) dyskretnych sygnałów cza-
sowych. ∆(ejΩ) = 1
Jakie są konsekwencje tych kilku założeń dla układu? Wbrew pozorom OLBRZYMIE!
Na początek zauważmy, że każda próbka x(n) dowolnego sygnału może być przedstawiona
w następującej postaci:
∞
x (n) = ∑ x(k )δ(n − k ) (10.6)
k = −∞
czyli jako suma przesuniętych impulsów jednostkowych δ(n−k) wziętych z „wagami” x(k).
Natomiast zgodnie z (10.2) i (10.4) odpowiedzią układu LTI na przesunięty impuls jednostko-
wy jest przesunięta odpowiedź impulsowa:
δ( n − k ) → h ( n − k ) (10.7)
W równaniu (10.8a) rozpoznajemy omawiany już w rozdziale pierwszym splot dwóch sygna-
łów dyskretnych. Tak więc wyjście y(n) układu dyskretnego LTI jest splotem jego wejścia x(n)
z odpowiedzią impulsową tego układu h(n). Po podstawieniu n−k = m, można równanie (10.8a)
zapisać także jako:
∞
y(n) = ∑ h( m) x( n − m) = h(n ) ⊗ x (n ) (10.8b)
m = −∞
∞ ∞ ∞
y (n) = ∑ h( k ) x( n − k ) = ∑ h (k )e jΩ ( n − k )
= e jΩ n ∑ h(k )e − jΩ k
= x( n ) H ( e jΩ ) =
k =−∞ k =−∞ k =−∞
( )
= e jΩn H e jΩ = e jΩn M (Ω )e jΦ ( Ω ) = M (Ω) e j[Ωn +Φ ( Ω )] (10.9)
gdzie H(ejΩ) oznacza zespolone widmo Fouriera (8.8a) dyskretnej odpowiedzi impulsowej
h(n):
( ) ( )
jΩ
H e jΩ = H e jΩ e j)H ( e )
= M (Ω )e jΦ ( Ω )
Wynika stąd, że wartość modułu M(Ω) liczby zespolonej H(ejΩ) będzie decydowała o ewentu-
alnej zmianie amplitudy harmonicznego sygnału wyjściowego, a faza Φ(Ω) liczby zespolonej
H(ejΩ) − o przesunięciu fazowym (opóźnieniu), wnoszonym przez układ. Oznacza to, że pro-
jektowanie dyskretnego układu LTI sprowadza się do takiego doboru próbek jego odpowiedzi
impulsowej h(n), aby ich transformata Fouriera miała określone właściwości częstotliwościowe
(„przepuszczanie” i „zerowanie” wybranych częstotliwości).
Jeśli układ jest przyczynowy, to jego odpowiedź nie wyprzedza pobudzenia. Z definicji dys-
kretnego impulsu jednostkowego δ(n) (10.1) i odpowiedzi impulsowej h(n) (10.2) wynika
więc, że odpowiedź impulsowa h(n) układu LTI przyjmuje wartości równe zero dla n < 0.
Wówczas (10.8b) upraszcza się do następującej postaci:
∞
y(n) = ∑ h(m ) x(n − m) (10.10)
m =0
Z kolei układ jest stabilny w sensie BIBO (ang. Bounded Input Bounded Output), kiedy jego
odpowiedź na pobudzenie o ograniczonej amplitudzie (|x(n)| ≤ Mx < ∞) ma także zawsze ogra-
niczoną amplitudę (|y(n)| ≤ My < ∞). Wówczas układ się nie wzbudza. Warunkiem koniecznym
i wystarczającym stabilności układów LTI jest bezwzględna sumowalność ich odpowiedzi
impulsowej:
∞
∑ h( n ) < ∞ (10.11)
n = −∞
Zasadność warunku (10.11) można w prosty sposób wykazać, wyznaczając wartość bez-
względną obu stron równania (10.8b) i dalej przekształcając prawą stronę otrzymanej w ten
sposób zależności:
∞ ∞ ∞
y(n) = ∑ h (m) x (n − m) ≤ ∑ h(m ) x( n − m) ≤ M x ∑ h(m)
m = −∞ m = −∞ m = −∞
H(z)=H1(z)+H2(z)
x(n) h1(n) y(n) x(n) y(n)
a) h(n)=h1(n)+h2(n)
δ(n) h2(n) h(n) δ(n) h(n)
H(z)=H1(z)H2(z)
x(n) y(n) x(n) y(n)
b) h1(n) h2(n) h(n)=∑k h1(k)h2(n−k)
δ(n) h(n) δ(n) h(n)
Rys. 10.2. Równoległe (a) i kaskadowe (b) połączenie dwóch dyskretnych układów LTI
x(n) y(n)
−a z− 1
y(n−1)
Rys. 10.3. Schemat blokowy układu dyskretnego opisanego równaniem: y(n) = x(n)−ay(n−1). Blok „z−1” oz-
nacza opóźnienie o jedną próbkę
Ponieważ odpowiedź impulsowa h(n) dyskretnych układów LTI jest przyczynowa (h(n) = 0 dla
n < 0), więc z równań (10.8a)(10.8b) i ich praktycznej realizacji wynika, że ich wyjście y(n)
w n-tej chwili czasowej zależy tylko od wartości sygnału wejściowego x(k) w chwilach cza-
sowych k = n, n−1, n−2,..., czyli obecnej i poprzednich. Układ pamięta więc ileś ostatnich
próbek sygnału wejściowego i generuje na ich podstawie aktualną próbkę sygnału wyjścio-
wego. Długość bufora pamięci danych wejściowych zależy od liczby niezerowych próbek
odpowiedzi impulsowej h(n), czyli od tego jak szybko maleją one do zera po pobudzeniu
układu impulsem jednostkowym.
Załóżmy obecnie, że odpowiedź impulsowa przyczynowego układu LTI (10.10) jest nieskoń-
czona w czasie i przykładowo równa (|a| < 1):
h (n ) = ( −a ) n dla n ≥ 0 (10.14)
Taką odpowiedź na impuls jednostkowy ma także układ ze sprzężeniem zwrotnym, opisany na-
stępującym równaniem (przy założeniu zerowych warunków początkowych: y(n) = 0 dla
n < 0):
y ( n ) = x( n ) − ay (n − 1) (10.15)
Układ ten jest przedstawiony na rysunku 10.3. Rzeczywiście po jego pobudzeniu sygnałem
jednostkowym (10.1) (x(n) = δ(n)) kolejne wartości sygnału wyjściowego y(n) wynoszą bo-
wiem: y(0) = 1, y(1) = −a, y(2) = (−a)2, y(3) = (−a)3, ... Dochodzimy w tym miejscu do pew-
nego dualizmu: układ zdefiniowany równaniem (10.15) ma odpowiedź impulsową (10.14),
a więc może być także opisany za pomocą równania (10.10). W związku z tym jest to również
układ LTI.
Uwzględniając w (10.15) większą liczbę elementów opóźniających, otrzymujemy uogólnioną
postać układów LTI ze sprzężeniem zwrotnym:
∞ ∞
y ( n) = x( n) − ∑ ak y (n − k ) = x( n) − ∑ g (k ) y (n − k ) (10.16)
k =1 k =1
264 Układy dyskretne
natomiast w wyniku kaskadowego połączenia układu LTI typu (10.10) z układem LTI typu
(10.16), otrzymujemy uogólnione równanie przyczynowych układów LTI:
∞ ∞
y(n) = ∑ h(m ) x( n − m ) − ∑ g (k ) y (n − k ) (10.17a)
m=0 k =1
lub
∞ ∞
y(n) + ∑ g (k ) y(n − k ) = ∑ h (m) x (n − m) (10.17b)
k =1 m =0
Rys. 10.4. Schemat blokowy filtra cyfrowego dla M = N = 3: a) pełny, b) linia opóźniająca tylko na wejściu,
c) linia opóźniająca tylko na wyjściu. Oznaczenia (angielskie): FIR − Finite Impulse Response, IIR − Infinite
Impulse Response, ARMA − Autoregressive Moving Average, MA − Moving Average, AR − Autoregressive
Układy dyskretne 265
w której zakłada się indeksowanie numerów „wag” filtra od jedynki, a nie od zera. Wiąże się to
z faktem, że w wielu ułomnych językach programowania, także w Matlabie, tylko w taki spo-
sób można indeksować tablice (chlubnym wyjątkiem jest język Pascal, który dopuszcza bardzo
elastyczne indeksowanie tablic). Filtr (10.19) ma M współczynników bm, m = 1, 2, 3, ..., M,
oraz N współczynników ak, k = 1, 2, 3, ..., N (zawsze a1 = 1). Do przechowywania próbek
wejściowych jest wykorzystywany bufor bx[.] o długości M, a do zapamiętywania próbek wyj-
ściowych − bufor by[.] o długości N−1. Użycie nawiasów kwadratowych w przypadku buforów
ma na celu odróżnienie ich od próbek danych. Po „przyjściu” kolejnej danej, wejściowej x(n)
lub wyjściowej y(n), wartości znajdujące się w buforach są przesuwane o jedną pozycję w pra-
wo, w wyniku czego „najstarsza” dana jest z nich usuwana. Nowe dane są zawsze umieszczane
na początku bufora. Ze względu na taką organizację pracy, bufory bx[.] i by[.] są nazywane
buforami przesuwnymi. W przypadku dużej liczby wag bm i ak, operacja przesuwania (kopio-
wania) danych w buforach staje się coraz bardziej czasochłonna. Wówczas jest korzystniej
nieco skomplikować „logicznie” algorytm filtracji (zastosować bardziej złożone adresowanie
danych), ale uzyskać sprawniej działający filtr. Rozwiązanie takie opiera się na technice
buforów kołowych (cyklicznych). W metodzie tej nowa dana zostaje zapisana na miejscu naj-
starszej danej, tzn. przychodzące próbki są zapisywane w kolejnych „komórkach” bufora
w trybie „kołowym” (modulo). Przykładowo dla bufora bx[.] o długości M = 3 i indeksowa-
nego od jedynki, kolejne próbki sygnału x(n) są zapisywane do „komórek”: bx[1], bx[2], bx[3],
bx[1], bx[2], bx[3], bx[1], ... itd. Załóżmy, że zapisaliśmy kolejną próbkę x(n) na pozycji dru-
giej: bx[2]. W następnym kroku algorytmu filtracji należy obliczyć sumę b0x(n) + b1x(n−1) +
+ b2x(n−2). W rozpatrywanym przypadku mamy: b0⋅bx[2] + b1⋅bx[1] + b2⋅bx[3], czyli powin-
niśmy pobierać „wstecznie”, w sposób „kołowy” kolejne próbki z bufora, zaczynając od
pozycji numer 2, tzn. bx[2], bx[1] i ... bx[3]. Indeks pobieranej próbki, u nas 3, jest równo-
cześnie numerem pozycji, na której powinna zostać umieszczona następna próbka wejściowa
x(n+1). W tabeli 10-2 są przedstawione programy napisane w języku Matlab, które imple-
mentują oba przedstawione wyżej algorytmy filtracji: z buforami przesuwnymi (funkcja
filtrBP()) oraz buforami kołowymi (funkcja filtrBK()). Szczegóły filtracji i imple-
mentacji w czasie rzeczywistym buforów kołowych na procesorach sygnałowych przedsta-
wiono w rozdziale 25. Tam też można znaleźć graficzną ilustrację zasady ich pracy.
266 Układy dyskretne
Dla N = 1 przedstawione algorytmy realizują operację splotu sygnału x(n) z wagami filtra bm,
m = 1, 2, 3, ..., M.
Tab. 10-1. Algorytm filtracji cyfrowej sygnału x(n) „na bieżąco” zgodnie z równaniem (10.19), wykorzy-
stujący metodę buforów przesuwnych
Tab. 10-2. Przykładowy program komputerowy, napisany w języku Matlab, implementujący filtrację syg-
nałów z wykorzystaniem buforów przesuwnych i kołowych
function y = filterBK(b,a,x)
Nx=length(x); % długość sygnału
M=length(b); N=length(a); % liczba współczynników filtra
a=a(2:N); N=N-1; % usunięcie a(1)=1
bx=zeros(1,M); by=zeros(1,N); y=[]; % inicjalizacja i wyzerowanie buforów
ix = 1; iy = 1; % inicjalizacja wskaźników do buforów
for n=1:Nx % powtórz dla wszystkich próbek sygnału
bx(ix) = x(n); % pobranie danej wejściowej do bufora WE
sum = 0; ib = 1; ia = 1; % inicjalizacja
10.3. Transformacja Z
Transformacja Z jest zdefiniowana za pomocą następującego równania:
∞
X ( z) = ∑ x ( n ) z −n (10.20)
n = −∞
gdzie „z” jest zmienną zespoloną, pełniącą podobną rolę jak zmienna zespolona „s” w trans-
formacji Laplace’a. Wzór (10.20) to tzw. szereg Laurenta. Aby istniała transformata X(z)
sygnału x(n), szereg ten musi być zbieżny. Dla danego sygnału określa się obszar zmienności
wartości „z”, dla którego zbieżność zachodzi:
X ( z ) = 0,1 + z −1 + 2 z −2 + 3z −3 + 4 z −4
Zgodnie bowiem z definicją współczynnik występujący przed potęgą zmiennej z−n jest równy
próbce sygnału w chwili x(n).
Tak jak dla transformacji Laplace’a, i w tym przypadku rutynowo wyznacza się transformaty Z
typowych sygnałów. Najważniejsze z nich są przedstawione w tabeli 10-3 wraz z podaniem
obszaru zbieżności. Należy na to zwrócić uwagę, gdyż często tylko dzięki obszarowi zbież-
ności można rozróżnić dwie pozornie identyczne transformaty Z.
Przykłady
1, n = 0
1 δ( n ) = 1 0 ≤ |z| ≤ ∞
0, n ≠ 0
1, n ≥ 0 1
u(n) = |z| > 1
4
0, n < 0 1 − z −1
z −1
n ⋅ u (n ) |z| > 1
5
(1 − z −1 )
2
z −1 (1 + z −1 )
6 n 2 ⋅ u(n ) |z| > 1
(1 − z −1 )
3
z −1 (1 + 4 z −1 + z −2 )
7 n 3 ⋅ u(n ) |z | > 1
(1 − z −1 )
4
1
8 a n ⋅ u(n ) |z| > |a|
1 − az −1
az −1
n |z| > |a|
9 na ⋅ u(n )
(1 − az −1 )
2
az −1 (1 + az −1 )
10 n 2 a n ⋅ u( n ) |z| > |a|
(1 − az −1 )
3
an
11 ⋅ u(n ) ea / z |z| > 0
n!
1
( n + 1)a n ⋅ u( n )
12
(1 − az −1 ) |z| > |a|
2
1
(n + 1)( n + 2)a n
⋅ u(n)
13
(1 − az −1 ) |z| > |a|
3
2!
1
(n + 1)( n + 2) ⋅ ⋅ ⋅ (n + k )a n |z| > |a|
⋅ u( n )
14
(1 − az −1 )
k
k!
270 Układy dyskretne
1 1, n = 0
∫
v z n −1dz = (10.23)
2 πj Γ 0, n ≠ 0
mamy bowiem:
∞
1 1 ∞ 1 − k + n −1
∫
v X ( z ) z n −1dz = ∫
v ∑ x ( k ) z − k z n −1dz = ∑ x (k ) v∫ z dz = x (n ) (10.24)
2 πj Γ 2πj Γ k =−∞
k =−∞ 2 π j Γ
W najprostszym przypadku, kiedy X(z) jest zwykłym wielomianem zmiennej „z”:
n2
X ( z) = ∑ bn z −n (10.25)
n =n1
sygnał x(n) można wyznaczyć w sposób bardzo prosty, tzn. w odpowiedni sposób interpretując
współczynniki stojące przed potęgami tej zmiennej. Przykładowo bezpośrednio ze wzoru
(10.20) wynika, że X(z) równe:
X ( z) = 5 + 4 z −1 + 3 z −2 + 2 z −3 + z −4 ,
X ( z ) = x (0) + x (1) z −1 + x ( 2) z −2 + x ( 3) z −3 + x ( 4) z −4
Przykłady
2 + 2 z −1 + z −2
X ( z) = , z >1
1 + z −1
Wyznaczymy ją za pomocą trzech alternatywnych metod.
Układy dyskretne 271
Podczas dzielenia mnożymy kolejno wielomian mianownika przez takie wartości az−k, aby
uzyskać „lewy skrajny” składnik aktualnej „różnicy”, który w wyniku późniejszego odejmo-
wania ma zostać uproszczony. Analityczny wzór na wartości współczynników wielomianu,
będącego wynikiem dzielenia, ma postać:
k
bk − ∑ ck − i ai
b0 b −c a b −c a −c a i =1
c0 = , c1 = 1 0 1 , c2 = 2 1 1 0 2 , ..., c k = (10.26)
a0 a0 a0 a0
1
X ( z ) = 1 + z −1 + , z >1
1 + z −1
skąd po uwzględnieniu transformat z tabeli 10-3 uzyskujemy:
x ( n ) = δ( n ) + δ( n − 1) + ( −1) n u( n )
czyli taki sam wynik jak poprzednio. Metoda ta wymaga umiejętności przekształcania wielo-
mianów, aż do momentu uzyskania sumy prostszych składowych, które występują w tabelach.
272 Układy dyskretne
Dla dociekliwych. W sytuacji kiedy X(z) jest ilorazem dwóch wielomianów zmiennej „z” i rząd
wielomianu licznika jest większy niż rząd wielomianu mianownika, X(z) należy przekształcić
do postaci (M≤N):
M
K ∑ bm z −m
X ( z) = X 1 ( z) + X 2 ( z) = ∑ ck z −k + mN=0 (10.28)
k =0
∑ a n z −n
n =0
Sygnał x1(n), związany z X1(z), wyznacza się bezpośrednio z definicji transformacji Z, nato-
miast odwrotną transformatę X2(z) (M≤N):
b0 + b1 z −1 + b2 z −2 + ... + bM z − M
X 2 ( z) = (10.29)
a 0 + a1 z −1 + a 2 z −2 + ... + a N z − N
wyznacza się dekomponując X2(z) na sumę składników prostych. Jeśli X2(z) ma tylko jedno-
krotne bieguny pk, k = 1, 2, ..., N (jednokrotne zera wielomianu mianownika), to może być za-
pisane jako:
B( z ) c1 c2 cN
X 2 ( z) = = c0 + + + ... + (10.30)
( 1 )( 2 ) ( N )
1 − p z −1
1 − p z −1
... 1 − p z −1
1 − p 1 z −1
1 − p 2 z −1
1 − p N z −1
c k = X ( z ) ⋅ (1 − pk z −1 ) |z = p k , k = 1, 2, 3, ..., N (10.31)
B( z ) ck m d l , j z1− j
X 2 (z) = = c0 + ∑ + ... + ∑ + ... (10.33)
(1 − p z ) (1 − p z ) ... (1 − p z )
1
−1
2
−1
k
−1 m
... k 1 − pk z −1 j =1 (1 − p z )
l
−1 j
ck m dl , j z
X 2 ( z ) = c0 + ∑ + ... + ∑ + ... (10.34)
j =1 ( z − pl )
−1
k 1 − pk z j
dl, j =
1 d m− j (z − pl )m (10.35)
X ( z)
( m − j )! dz m − j z z = p k
d l ,2 z −1 d l ,2 p l z −1 d l ,2
X k ( z) = = ↔ x(n ) = ⋅ n ⋅ ( pl )n (10.37)
(1 − pl z )
−1 2
(
pl 1 − p z −1
l ) 2 pl
• przekształcenia, analiza:
2z 2 + 2z + 1 2z 2 + 2z + 1
X ( z) = = , z >1
z2 + z z ( z + 1)
z n (2 z 2 + 2 z + 1)
F ( z ) = z n −1 X ( z ) = , z >1
z 2 ( z + 1)
wnioski dotyczące F(z):
− dla n ≥ 2: jeden biegun p1 = −1 (pojedynczy),
− dla n = 1: dwa bieguny p1 = −1 (pojedynczy) i p2 = 0 (pojedynczy),
− dla n = 0: dwa bieguny p1 = −1 (pojedynczy) i p2 = 0 (podwójny).
• przypadek n ≥ 2:
z n −2 ( 2 z 2 + 2 z + 1)
F ( z) =
( z + 1)
2z 2 + 2z + 1
x (n ) = Res[ p1 , F ( z )] = ( z − p1 ) F ( z ) z = p1 = ( z + 1) z n − 2 z = −1 = ( −1) n − 2 = ( −1) n
z +1
• przypadek n = 1:
2z 2 + 2z + 1
F ( z) =
z ( z + 1)
2z 2 + 2z + 1
x1 (1) = Res[ p1 , F ( z )] = ( z − p1 ) F ( z ) z = p1 = ( z + 1) z = −1 = −1
z ( z + 1)
2z 2 + 2z + 1
x 2 (1) = Res[ p2 , F ( z )] = ( z − p2 ) F ( z ) z = p2 =z z =0 =1
z ( z + 1)
x (1) = x1 (1) + x 2 (1) = −1 + 1 = 0
• przypadek n = 0:
2z 2 + 2z + 1
F ( z) =
z 2 ( z + 1)
2z 2 + 2z + 1
x1 (0) = Res[ p1 , F ( z )] = ( z − p1 ) F ( z ) z = p1 = ( z + 1) z = −1 =1
z 2 ( z + 1)
x 2 (0) = Res[ p 2 , F ( z )] =
d
dz
[
( z − p2 ) 2 F ( z ) ] z = p2 =
d 2 2 z 2 + 2 z + 1
z
dz
z 2 ( z + 1)
z=0 =1
Dla dociekliwych. Jeżeli X(z) jest funkcją wymierną (iloraz dwóch wielomianów), to na pod-
stawie twierdzenia Cauchy’ego o residuach definicja (10.22) ma postać:
x (n) = ∑ ρ k (10.38)
k
gdzie ρk są residuami funkcji:
F ( z ) = z n−1X ( z ) (10.39)
w jej wszystkich biegunach pk leżących wewnątrz konturu Γ. Residuum funkcji F(z) w punkcie
z = pk, gdzie pk jest jej m-krotnym biegunem (zerem wielomianu mianownika), zdefiniowane
jest w sposób następujący:
1 d m −1
ρk = ( z − pk ) m F ( z ) (10.40)
(m − 1)! dz m −1 z = pk
ρ k = ( z − pk ) m F ( z ) z = pk
= ( z − p k ) z n −1 X ( z ) z = pk
(10.41)
1
= ∫
v X ( z / ν)Y ( ν)v −1d ν (10.45)
2 πj Γ
podobnie jak całkowe przekształcenie Fouriera.
M N
Y ( z ) = ∑ bm z −m X ( z ) − ∑ a k z −k Y ( z ) (10.49)
m =0 k =1
skąd:
gdzie zk oznaczają zera wielomianu licznika (zera transmitancji), a pk − zera wielomianu mia-
nownika (bieguny transmitancji). W przypadku kiedy układ nie ma pętli sprzężenia zwrotnego
z „wyjścia” (ak = 0), to wówczas transmitancja (10.50) ma tylko wielomian w liczniku i współ-
czynniki bm tego wielomianu są równe wartościom próbek odpowiedzi impulsowej h(n) z rów-
nania (10.47). Mnożąc równocześnie licznik i mianownik transmitancji (10.50) przez zM i zN,
otrzymujemy (a0 = 1):
276 Układy dyskretne
z N b0 z M + b1 z M −1 + ... + bM −1 z + bM b0 ( z − z1 )( z − z 2 )...( z − z M )
H ( z) = N −1
= z N −M (10.51)
z M
a0 z N
+ a1 z + ... + bN −1 z + bN a 0 ( z − p1 )( z − p 2 )...(1 − p N )
( ) ∑ x(n )e − jΩn
+∞
transformacja Fouriera: X e jΩ =
n = −∞
więc widzimy, że transformata X(z) sprowadza się do transformacji Fouriera X(ejΩ) sygnałów
dyskretnych dla:
z = e jΩ (10.52)
Układy dyskretne 277
( ) ( )N −M ab0
H e jΩ = e jΩ
( e jΩ − z1 )( e jΩ − z 2 )...( e jΩ − z M )
(10.54)
0 (e jΩ − p1 )( e jΩ − p 2 )...( e jΩ − p N )
czyli widzimy, że w przypadku układów dyskretnych powtarza się z drobnymi zmianami „sce-
nariusz”, znany nam już z projektowania układów analogowych. Teraz jednak nie „poruszamy”
się po osi urojonej (s = jω) w przestrzeni zmiennej zespolonej „s”, tylko po okręgu o promieniu
jednostkowym (z = ejΩ) w przestrzeni zmiennej zespolonej „z”, natomiast tak jak poprzednio
interesują nas dla każdej wartości Ω moduły i kąty liczb zespolonych:
Bm = e jΩ − zm , (
An = e jΩ − pn , θm = ) e jΩ − zm , ϕn = ) e jΩ − pn ) ( ) (10.56)
Dlaczego scenariusz jest „ten sam”? Ponieważ zero transmitancji, leżące na okręgu jednostko-
wym w punkcie zm = e jΩm , zeruje transmitancję dla pulsacji Ωm, natomiast biegun transmitan-
cji, leżący w punkcie pn = εe jΩn , ε ≈ 1 , tzn. wewnątrz tego okręgu ale blisko niego, powoduje,
że układ wzmacnia pulsację Ωn. Wynika to z następujących wzorów:
M
∏ B m e jθ m
He ( ) = M (Ω )e
jΩ jΦ ( Ω )
( )
= e jΩ N − M b0
a0
m =1
N
(10.57)
∏ An e jϕn
n =1
M
b
∏ Bm M N
M ( Ω) = 0
a0
m =1
N
, Φ ( Ω ) = Ω( N − M ) + ∑ θm − ∑ ϕn (10.58)
∏ An m =1 n =1
n =1
278 Układy dyskretne
Jeśli bowiem dla jakieś pulsacji Ω jeden z modułów Bm się zeruje (czyli m-te zero leży na
okręgu jednostkowym), to wówczas moduł transmitancji także jest równy zeru dla tej pulsacji.
Z kolei jeśli jeden z biegunów transmitancji leży blisko okręgu jednostkowego, ale wewnątrz
niego w pobliżu wybranej pulsacji, to wówczas jeden z modułów An staje się mały dla tej
pulsacji, a więc moduł transmitancji rośnie, czyli układ wzmacnia.
Metoda projektowania transmitancji H(z) metodą „zer i biegunów” jest graficznie przedstawio-
na na rysunku 10.5. Zmieniając częstotliwość f od zera do częstotliwości próbkowania fpr poru-
szamy się na płaszczyźnie zmiennej zespolonej z po okręgu jednostkowym w kierunku prze-
ciwnym do ruchu wskazówek zegara. Dla dowolnego Ω = 2πf/fpr z przedziału [0, 2π) potrafimy
znaleźć związane z nim f. Umieszczając zero transmitancji w pobliżu wybranego f powo-
dujemy tłumienie tej częstotliwości przez układ. Jeśli zero leży dokładnie na okręgu jedno-
stkowym, to układ całkowicie usuwa z sygnału składową o danej częstotliwości. Z kolei zbliża-
nie bieguna do okręgu (od wewnątrz) w wybranym punkcie, powoduje wzmacnianie składowej
o częstotliwości związanej z tym punktem. Tym bardziej, im biegun leży bliżej okręgu. Zera
transmitancji mogą leżeć w dowolnym miejscu na płaszczyźnie zmiennej zespolonej z, bieguny
zaś − tylko wewnątrz okręgu. Jeśli zera i bieguny są zespolone, to zawsze występują w parach
sprzężonych.
Jak widać projektowanie metodą „zer i biegunów” jest bardzo prostą, intuicyjnie zrozumiałą
metodą projektowania dyskretnych układów LTI. Za pomocą tej metody trudno jest jednak
uzyskać charakterystyki amplitudowo-częstotliwościowe dobrej „jakości”, odznaczające się
dużą liniowością w paśmie przepustowym. W praktyce są więc preferowane inne metody pro-
jektowe, a metodę „zer i biegunów” wykorzystuje się wyłącznie do „jakościowej” prezentacji
zasad samego procesu projektowania (czyli wpływu położenia zer i biegunów na projekt koń-
cowy). Metody te opisano w następnym rozdziale.
Na koniec kilka uwag. P o p i e r ws z e , należy przypomnieć o istnieniu pewnych „zjawisk”
w obserwowanej charakterystyce częstotliwościowo-fazowej układów dyskretnych, a miano-
wicie występujących w niej skoków. Ponieważ zjawisko to ma taką samą naturę jak w układach
analogowych, nie będzie tutaj ponownie omawiane. Przypomnijmy tylko, że skoki ”fazy”
o +2π radianów są spowodowane okresowością funkcji arcus tangens, z pomocą której wyzna-
cza się charakterystykę fazową układu, natomiast skoki o +π radianów są związane z zerami
transmitancji, leżącymi na okręgu jednostkowym. P o d r u g i e , w rozdziale tym nie zajmo-
waliśmy się szczegółowo problemem stabilności układów dyskretnych. Przypomnijmy, po-
dobnie jak układy analogowe, także układy dyskretne są stabilne, jeśli ich bieguny leżą
w określonych obszarach płaszczyzny zespolonej. Dla układów analogowych była to lewa pół-
płaszczyzna zmiennej s, natomiast dla układów dyskretnych bieguny powinny leżeć wewnątrz
okręgu o promieniu jednostkowym w przestrzeni zmiennej z. P o t r z e c i e , należy w tym
miejscu powtórzyć i wyraźnie zaznaczyć, że w rozdziale tym zajmowaliśmy się tylko dyskret-
nymi układami typu LTI, czyli liniowymi, niezmiennymi w czasie, i w dodatku nie wyczer-
paliśmy wszystkich możliwości ich zapisu, przykładowo w ogóle nie przedstawiliśmy zapisu
w formie zmiennych stanu (patrz rozdział 13.2) oraz za pomocą struktur polifazowych (pkt.
18.2.2 i 18.2.3) i kratowych (rozdział 20.2). Oczywiście, klasa układów dyskretnych wykracza
poza układy LTI, czego przykładem są filtry nieliniowe, np. medianowe, „neuronowe” w sie-
ciach neuronowych itd. W każdym z tych przypadków układ odpowiada „liczbami” na „licz-
by”, ale nie w sposób „liniowy”.
Zostaną teraz przedstawione dwa przykłady zastosowania metody „zer i biegunów” do zapro-
jektowania prostych układów dyskretnych. Posłużą nam one do bardziej szczegółowego przyj-
rzenia się praktycznym aspektom działania układów dyskretnych.
Układy dyskretne 279
a) Im
z
jπ/2
e
ejΩ0
R=1
ej0 Re
ejπ
ej2π
ej3π/2 z=ejΩ
b)
Im z Im z
z1 z1
z=ejΩ0
z2 z=ejΩ0 z2
z3 z3 p1
p1
Re Re
p2 z3 p2
p1*
z3* z3* p1*
*
z2 z2*
*
z1 z=e jΩ
z1* z=ejΩ
c)
Im z Im z
z1
p1
z=ejΩ0 z=ejΩ0
Re Re
ϕ
p1*
z1* z1*
z=ejΩ z=ejΩ
Rys. 10.5. Ilustracja graficzna projektowania transmitancji H(z) metodą zer i biegunów: a) aby wyznaczyć
charakterystykę transmitancji H(z) podstawiamy z = ejΩ, Ω = 2πf/fpr, czyli poruszamy się po okręgu o pro-
mieniu jednostkowym (zmienności Ω [0, 2π) odpowiada zmienność f [0, fpr)); b) wszystkie zera „z” i bie-
guny „³”, jeśli są zespolone, to występują w parach sprzężonych; bieguny muszą leżeć wewnątrz okręgu,
a zera nie; zera zazwyczaj leżą na okręgu i zerują charakterystykę filtra dla wybranych pulsacji (często-
tliwości), bieguny zaś leżą w pobliżu okręgu i wpływają w ten sposób na wzmacnianie „okolicznych”
pulsacji (częstotliwości) przez układ; c) ilustracja zasady „konstrukcji” charakterystyki amplitudowo-czę-
stotliwościowej układu (iloraz dwóch iloczynów: iloczynu odległości wszystkich zer od wybranej pulsacji
(częstotliwości) i analogicznego iloczynu odległości biegunów) oraz charakterystyki fazowo-często-
tliwościowe (suma kątów zer minus suma kątów biegunów)
280 Układy dyskretne
Przykład 1
Załóżmy, że mamy sygnał dyskretny, składający się z dwóch komponentów o częstotliwoś-
ciach fs = 10 Hz (sygnał użyteczny) oraz fz = 50 Hz (zakłócenie sieciowe). Niech częstotliwość
próbkowania tego sygnału fpr wynosi 1000 Hz (okres próbkowania ∆t = 1/fpr = 0,001 s). Chce-
my zaprojektować filtr cyfrowy, który usunie z sygnału zakłócenie 50-hercowe, ale pozostawi
składową 10-hercową. Zgodnie z opisaną powyżej metodologią, aby „wyzerować” na wyjściu
częstotliwość 50 herców powinniśmy umieścić zero transmitancji filtra na okręgu jednostko-
wym w punkcie określonym przez kąt ϕz = Ωz = 2π(fz/fpr). W związku z tym zero to jest równe:
j 2 π ( f z / f pr )
z z = e jϕ z = e jΩ z = e = e j 2 π( 50 / 1000) = e jπ / 10 (10.59)
oraz biegun z nim sprzężony ps*. W związku z powyższym transmitancja H(z) jest równa:
Jej zera i bieguny są przedstawione na rysunku 10.6a. Po wymnożeniu wyrazów licznika i mia-
nownika otrzymujemy:
Podstawiając
j 2 π ( f / f pr )
z = e jΩ = e
1 − 1, 9021e − jΩ + e −2 jΩ
H (e jΩ ) = (10.64)
1 − 1, 9561e − jΩ + 0, 9604e −2 jΩ
Układy dyskretne 281
a) 1 b) 40
20log10|H(ej2πf/fpr)| [dB]
0.5 20
Imag(z)
0
0
-20
-0.5 -40
-1 -60
-1 -0.5 0 0.5 1 0 20 40 60 80 100
Real(z) f [Hz]
c) 40 d) 1
30 0
kąt H(ej2πf/fpr)
|H(ej2πf/fpr)|
-1
20
-2
10 -3
0 -4
0 20 40 60 80 100 0 20 40 60 80 100
f [Hz] f [Hz]
Rys. 10.6. Projekt 1: a) położenie zer „z” i biegunów „³” transmitancji H(z), b), c) charakterystyka
amplitudowo-częstotliwościowa |H(ej2πf/fpr)| w skali decybelowej i liniowej, d) charakterystyka fazowo-czę-
stotliwościowa )H(ej2πf/fpr) w radianach
1
x(n) y(n)
e)
f) 1
0.8
0.6
0.4
h(n)
0.2
0
-0.2
-0.4
0 100 200 300 400 500
n
g) 2 h) 40
1 20
y(n)
x(n)
0 0
-1 -20
-2 -40
0 100 200 300 400 500 0 100 200 300 400 500
n n
i) 1 j) 40
0.8 30
|X(ej2πf/fpr)|
|Y(ej2πf/fpr)|
0.6
20
0.4
0.2 10
0 0
0 20 40 60 80 100 0 20 40 60 80 100
f [Hz] f [Hz]
Rys. 10.6. (cd.) e) schemat blokowy układu filtra, f) odpowiedź impulsowa h(n), g) sygnał wejściowy x(n),
h) sygnał wejściowy y(n), i), j) moduły widm Fouriera |X(ej2πf/fpr)| i |Y(ej2πf/fpr)| (8.8a) sygnałów x(n) i y(n)
dla n = 501, 502, ..., 1000
Schemat blokowy tego układu jest przedstawiony na rysunku 10.6e. Na rysunku 10.6f przed-
stawiono odpowiedź impulsową zaprojektowanego filtra, czyli jego odpowiedź na dyskretny
impuls jednostkowy (deltę Kroneckera) (10.1). Dla osoby nie wtajemniczonej stanowi ona po-
Układy dyskretne 283
czątkowo duże zaskoczenie: filtr ma bowiem tylko kilka współczynników, a h(n) ustala się tak
długo. Ale nie zapominajmy, że jest to układ ze sprzężeniem zwrotnym. Aby rozwiązać zagad-
kę h(n), zastosujmy (10.30)(10.31) w stosunku do (10.63). Otrzymamy wówczas:
h (n ) = (0, 7669 ⋅ e − j1,5977 )(0, 98e jπ / 50 )n u( n ) + (0, 7669 ⋅ e j1,5977 )(0, 98e − jπ / 50 )n u (n ) (10.71)
Ponieważ pierwszy wyraz powyższej sumy jest zespolonym sprzężeniem wyrazu drugiego dla
dowolnego n, stąd:
π π
y ( n ) = G sin n + φ = 37,23 ⋅ sin n − 1,4 (10.76)
10 10
Rzeczywisty sygnał otrzymany na wyjściu filtra jest pokazany na rysunku 10.6h. Jak widać
czas jego ustalania się jest równy „długości” odpowiedzi impulsowej filtra z rysunku 10.6f.
Moduły widm Fouriera (8.8a) fragmentów sygnałów x(n) i y(n), n = 501, 502, ..., 1000 (po
ustaleniu się sygnału y(n)), są przedstawione na rysunkach 10.6i i 10.6j. Jak widać składowa
50-hercowa została odfiltrowana. Oczywiście z powodu analizy fragmentów sygnałów, „wy-
ciętych” przez okno prostokątne, na rysunkach 10.6i i 10.6j widzimy poprzesuwane w często-
tliwości moduły widma okna prostokątnego (patrz rozdział 8).
W tabeli 10-4 przedstawiono program napisany w języku Matlab, za pomocą którego
dokonano stosownych obliczeń i wygenerowano wyniki, zaprezentowane na rysunku 10.6. Na
szczególną uwagę Czytelnika zasługują jeszcze raz podprogramy filterBP() oraz
filterBK(), realizujące operację filtracji, czyli implementujące równanie (10.69). Ich kod
źródłowy był przedstawiony w tabeli 10-2 oraz omówiony w sposób ogólny w podrozdziale
10.2, ale nic tak nie uczy jak konkretny przykład. Przypomnijmy: M oznacza w nich liczbę
wyrazów wielomianu licznika transmitancji filtra, a N reprezentuje liczbę wyrazów wielomianu
mianownika transmitancji. Współczynniki wielomianu licznika są oznaczone jako {b1, b2, ...,
bM}, a współczynniki mianownika przez {a1, a2, ..., aN}. W rozpatrywanym przypadku
M = N = 3 oraz {bm} = {1; −1,9021; 1} i {ak} = {1; −1,9561; 0,9604}. Należy zwrócić
284 Układy dyskretne
uwagę, że indeksowanie wag filtra rozpoczyna się od 1, a nie od 0, czyli w podprogramach jest
implementowane równanie (10.19) a nie (10.18).
Przykład 2
Zaprojektujemy teraz metodą „zer i biegunów” cyfrowy filtr pasmowoprzepustowy. Do sygna-
łu x(n) (10.75) z przykładu 1 dodamy trzecią składową o częstotliwości f3 = 250 Hz (n = 0,
1, 2, ..., 999):
f 250 π
x 3 ( n ) = sin (2πf 3n∆t ) = sin 2π 3 n = sin 2 π n = sin n (10.77)
f 1000 4
pr
i postaramy się zaprojektować filtr przepuszczający częstotliwości od 200 do 300 Hz, czyli
pozostawiający tylko trzecią składową na swoim wyjściu. Zgodnie z podstawową zasadą meto-
dy „zer i biegunów” zera umieszczamy w paśmie zaporowym:
f
z k = exp j 2 π zk , f zk = 50, 100, 150, 350, 400, 450 Hz (10.78)
f
pr
a bieguny w pobliżu okręgu jednostkowego blisko częstotliwości pasma przepustowego:
f pk
pk = rk exp j 2π , rk = 0, 9; 0, 65 ; 0, 9; f pk = 200, 250, 300 Hz (10.79)
f pr
Oczywiście wszystkie zera i bieguny sprzęgamy, aby wielomiany transmitancji miały współ-
czynniki rzeczywiste. Na rysunku 10.7 są zbiorczo przedstawione wszystkie charakterystyki
otrzymanego filtra. Podobnie jak poprzednio obserwujemy skoki charakterystyki fazowej w ze-
rach transmitancji (o π radianów) oraz stan przejściowy na wyjściu filtra, którego czas trwania
zależy od długości odpowiedzi impulsowej filtra h(n) (liczby jej „niezerowych” próbek).
a) 1 b) 40
20log10|H(ej2πf/fpr)| [dB]
0.5 20
Imag(z)
0
0
-20
-0.5 -40
-1 -60
-1 -0.5 0 0.5 1 0 100 200 300 400 500
Real(z) f [Hz]
c) 80 d) 0
60 -5
kąt H(ej2πf/fpr)
|H(ej2πf/fpr)|
-10
40
-15
20 -20
0 -25
0 100 200 300 400 500 0 100 200 300 400 500
f [Hz] f [Hz]
e) 3 f) 80
2
40
1
y(n)
x(n)
0 0
-1
-40
-2
-3 -80
0 50 100 150 200 0 50 100 150 200
n n
g) 1 h) 80
0.8 60
|X(ej2πf/fpr)|
|Y(ej2πf/fpr)|
0.6
40
0.4
0.2 20
0 0
0 100 200 300 400 500 0 100 200 300 400 500
f [Hz] f [Hz]
Rys. 10.7. Projekt 2: a) położenie zer „z” i biegunów „³” transmitancji H(z), b), c) charakterystyka ampli-
tudowo-częstotliwościowa |H(ej2πf/fpr)| w skali decybelowej i liniowej, d) charakterystyka fazowo-częstotli-
wościowa )H(ej2πf/fpr) w radianach, e) sygnał wejściowy x(n), f) sygnał wejściowy y(n), g), h) moduły widm
Fouriera |X(ej2πf/fpr)| i |Y(ej2πf/fpr)| (8.8a) sygnałów x(n) i y(n) dla n = 501, 502, ..., 1000
286 Układy dyskretne
i) 15
10
5
h(n)
0
-5
-10
-15
0 50 100 150 200
n
Tab. 10-4. Przykładowy program komputerowy do projektowania filtrów cyfrowych metodą „zer i biegu-
nów” i testujący zaprojektowany filtr
H = freqz(b,a,wn);
Habs = abs(H); HdB = 20*log10(Habs); Hfa = unwrap(angle(H));
plot( f, Habs); grid; title('|H(f)|'); xlabel('f [Hz]'); pause
plot( f, HdB); grid; title('|H(f)| dB'); xlabel('f [Hz]'); pause
plot( f, Hfa); grid; title('kąt H(f)'); xlabel('f [Hz]'); ylabel('[rd]'); pause
Drugie podejście jest częściej stosowane, zwykle wybiera się metodę transformacji biliniowej.
Skrótowo omówimy każdą z podanych metod.
MLP(Ω) LP
1+δpass
1
1−δpass
δstop
Rys. 11.1. Orientacyjny kształt charakterystyki amplitudowo-częstotliwościowej M(Ω) = |H(ejΩ)| (biały „tu-
nel”) dla cyfrowego filtra dolnoprzepustowego (LP). F oznacza częstotliwość unormowaną (F = f / fpr),
Ω − pulsację unormowaną (Ω = 2πF), f zaś jest częstotliwością wyrażoną w hercach
MLP(Ω) LP MHP(Ω) HP
1+δpass 1+δpass
1 1
1−δpass 1−δpass
δstop δs
Ω Ω
0 Ωpass Ωstop π 0 Ωstop Ωpass π
MBP(Ω) BP MBS(Ω) BS
1+δpass 1+δpass
1 1
1−δpass 1−δpass
δstop δstop
Ω Ω
0 Ωstop1 Ωpass1 Ωpass2 Ωstop1 π 0 Ωpass1 Ωstop1 Ωstop2 Ωpass1 π
n =1
K 2
E= ∑ H p ( e jΩ k ) − H ( e jΩ k ) (11.6)
k =1
Nieznane współczynniki filtra {g, a1i, a2i, b1i, b2i}, i = 1, 2, ..., L znajduje się wyznaczając
pochodne cząstkowe błędu aproksymacji E względem tych współczynników i przyrównując je
do zera. Uzyskuje się w ten sposób układ 4L+1 równań z 4L+1 niewiadomymi. Jedną z metod
rozwiązania tego układu równań jest tzw. metoda Flechera-Powella.
Do projektowania filtrów według powyższego scenariusza służy funkcja yulewalk()
w programie Matlab.
Mnożenie ha(t) przez okres próbkowania T ma na celu uniezależnienie wzmocnienia filtra cyf-
rowego od tego okresu. Niech transmitancja filtra analogowego ma postać (5.43):
b0 + b1s + ... + bM s M
H a (s ) = , N≥M (11.8)
ao + a1s + ... + a N s N
i niech pk, k = 1, 2, ..., N, oznaczają jej bieguny (zera wielomianu mianownika transmitancji).
Odpowiedź impulsową filtra (11.8) wyznaczamy za pomocą odwrotnej transformaty Laplace’a
(lub Fouriera, patrz podrozdziały 5.2 i 5.3):
Transmitancja Hc(z) odpowiedniego filtra cyfrowego jest równa transformacie Z (10.20) jego
odpowiedzi impulsowej hc(n), czyli z (11.10), (11.11) na podstawie (10.36) mamy:
N
Tck
H c (z ) = ∑ H c( k ) (z ) , H c( k ) (z ) = (11.12)
k =1 1 − e p k T z −1
czyli jest ona równa sumie poprzesuwanych charakterystyk filtra analogowego (patrz pod-
rozdział 4.5, dotyczący twierdzenia o próbkowaniu oraz zawarte w nim rysunki).
gdzie
−3− j 3 − 3+ j 3
c1 = ω3dB , c2 = ω3dB , c3 = c1* = ω3dB
6 6
Na podstawie (11.12) transmitancja odpowiedniego filtra cyfrowego jest po przekształceniach
równa:
Hc ( z) =
Ω 3dB
− ( )
Ω3dB − Ω3dBe −Ω3dB / 2 cos ( α ) + sin ( α ) / 3 z −1
1 − e −Ω3dB z −1
1 − 2e −Ω 3dB / 2
cos ( α ) z + e
−1 −Ω3dB −2
z
czyli zmianom pulsacji analogowej ω w zakresie (−∞, +∞) powinny odpowiadać zmiany pul-
sacji cyfrowej Ω (unormowanej względem częstotliwości próbkowania: Ω = 2πf/fpr) w zakresie
(−π, +π). Niech:
z = φ(s ) (11.18)
(
H c ( z ) = H a φ −1 ( z ) ) (11.20)
3) Jeśli układ analogowy opisany transmitancją Ha(s) jest stabilny, to także układ cyfrowy
o transmitancji Hc(φ(s)) powinien być stabilny. Jeśli więc bieguny transmitancji układu
analogowego leżą w lewej półpłaszczyźnie (Re(s) < 0), to bieguny odpowiadającego mu
układu cyfrowego powinny leżeć wewnątrz okręgu jednostkowego, czyli powinien być
spełniony warunek |φ(s)| < 1.
4) Jeśli „zerowa” częstotliwość ma być zachowana, to powinien być spełniony warunek
φ(0) = 1.
W transformacji biliniowej przyjmuje się następującą funkcję przekształcającą filtr cyfrowy
Hc(z) na filtr analogowy Ha(s):
(2 / T ) + s 1 + sT / 2
z = φ(s ) = = (11.21)
( 2 / T ) − s 1 − sT / 2
gdzie T jest okresem próbkowania sygnału dyskretnego. Definicja ta spełnia wszystkie powyż-
sze warunki. Transformacja odwrotna do (11.21) ma postać:
2 z −1
s = φ −1 ( z ) = (11.22)
T z +1
jω =
2 e jΩ − 1 2 e
=
jΩ / 2
( )
e jΩ / 2 − e − jΩ / 2 / 2 2 j sin ( Ω / 2 )
=
( )
T e jΩ + 1 T e jΩ / 2 e jΩ / 2 + e − jΩ / 2 / 2 T cos ( Ω / 2 )
czyli
2
ω= tg(Ω / 2 ) , Ω = 2 arctg (ωT / 2 ) (11.23a), (11.23b)
T
Graficzna ilustracja zasady transformacji biliniowej jest przedstawiona na rysunku 11.3, nato-
miast zależność funkcyjna pulsacji analogowej ω od unormowanej pulsacji cyfrowej Ω, i od-
wrotnie, jest pokazana na rysunku 11.4. Kolejność projektowania rekursywnych filtrów cyfro-
wych metodą transformacji biliniowej jest następująca:
Projektowanie rekursywnych filtrów cyfrowych 295
Imag(s) Imag(z)
2 z −1
s=
T z +1
Ha(s) Hc(z)
1
Real(s) Real(z)
jω ejΩ
Ha(s)
zmienna "s" zmienna "z"
Rys. 11.3. Graficzna ilustracja transformacji biliniowej transmitancji Ha(s) filtra analogowego na transmi-
tancję Hc(z) filtra cyfrowego: 1) lewa półpłaszczyzna zmiennej zespolonej „s” transformacji Laplace’a prze-
chodzi we wnętrze okręgu o promieniu jednostkowym na płaszczyźnie zmiennej zespolonej „z” transforma-
cji Z, 2) oś jω przechodzi w okrąg ejΩ, Ω = 2πf / fpr
ω⇔Ω Ω
H(ω) ⇔ H(ejΩ)
ω=(2/T)tg(Ω/2)
Ωpass2 Ω=2arctg(ωT/2)
Ωpass1
ωp1 ωpass2
|HBP(ejΩ) ω
1
|HBP(ω)|
1) Podanie zbioru zadanych pulsacji granicznych {Ωg = 2πfg/fpr} filtra cyfrowego z przedziału
[0,π) (filtry dolnoprzepustowe, górnoprzepustowe, pasmowoprzepustowe, pasmowozapo-
rowe) oraz wymaganych wartości tłumienia w paśmie przepustowym (Apass) i zaporowym
(Astop).
2) Wyznaczenie pulsacji ωg dla filtra analogowego Ha(s), związanego z filtrem cyfrowym
Hc(z):
2
ωg = tg ( Ω g / 2 )
T
296 Projektowanie rekursywnych filtrów cyfrowych
H c ( z ) = H a (s ) s = ( 2 / T )( z −1) /( z +1)
W tabeli 11-1 przedstawiono kod źródłowy programu napisanego w języku Matlab, trans-
formującego filtr analogowy w filtr cyfrowy metodą transformacji biliniowej. Zasada jego
pracy jest bardzo prosta, identyczna jak w przypadku transformacji częstotliwości opisanych
w rozdziale 6.2. Problemu nie stanowi bowiem obliczenie zer wielomianów licznika i mia-
nownika transmitancji filtra cyfrowego, jeśli są znane zera wielomianów licznika i mianownika
transmitancji filtra analogowego. Stosując podstawienie (11.22), otrzymujemy:
2 f pr + z k
z−
2 f pr − zk
s − z k = 2 f pr
z −1
z +1
(
− z k = 2 f pr − z k ) z +1
Jeśli wykonamy powyższą operację w stosunku do wszystkich zer wielomianów transmitancji
Ha(s) filtra analogowego, to otrzymamy wszystkie zera wielomianów transmitancji Hc(z) filtra
cyfrowego.
2
analogową częstotliwość graniczną: ω3dB = tg(Ω 3dB / 2 ) = 2 tg(π / 4 ) = 2
T
− p1 p2 p3 ω33dB
filtr analogowy: Ha (s) = =
( s − p1 )( s − p2 ) ( s − p3 ) ( s + ω ) s 2 + sω + ω2
( )
3dB 3dB 3dB
(
gdzie p1 = p3* = ω3dB −1 + j 3 / 2 ,
) p2 = −ω3dB
8
po uwzględnieniu ω3dB = 2: Ha ( s ) =
( s + 2)( s 2
+ 2s + 4 )
( 1 + z −1 )
3
2 z −1 ( z + 1) 3
filtr cyfrowy: Hc ( z) = Ha = =
(
T z + 1 2 z 3z 2 + 1
) 2 ( 3 + z −2 )
( 1 + e − jΩ )
3
2 ( 3 + e −2 j Ω )
Projektowanie rekursywnych filtrów cyfrowych 297
Tab. 11-1. Kod źródłowy programu transformacji biliniowej, przekształcającej transmitancję Ha(s) filtra
analogowego na transmitancję Hc(z) filtra cyfrowego: Ha(s) → Hc(z), zastosowanie podstawienia s =
= 2fpr(z−1)/(z+1) (transformacja zer „z” i biegunów „p” transmitancji Ha(s) na zera „zz” i bieguny „pp”
transmitancji Hc(z)). W programie fpr oznacza częstotliwość próbkowania, a wzm − wzmocnienie
% Bilinear TZ
pp = []; zz = [];
for k=1:length(z)
zz = [ zz (2*fpr+z(k))/(2*fpr-z(k)) ];
wzm = wzm*(2*fpr-z(k));
end
for k=1:length(p)
pp = [ pp (2*fpr+p(k))/(2*fpr-p(k)) ];
wzm = wzm/(2*fpr-p(k));
end
if (length(p)>length(z)) zz = [ zz -1*ones(1,length(p)-length(z)) ]; end
if (length(p)<length(z)) pp = [ pp -1*ones(1,length(z)-length(p)) ]; end
rozdział 6.2), uzyskano transmitancję filtra pasmowozaporowego HBS(s) o rozkładzie zer i bie-
gunów oraz charakterystyce amplitudowo-częstotliwościowej przedstawionych na rysunku
11.5a i 11.5b. Jak widać filtr analogowy spełnia postawione wymagania „analogowe”, ozna-
czone na rysunku za pomocą symbolu „o”. Oczywiście graniczne częstotliwości „analogowe”
są różne od zadanych, granicznych częstotliwości „cyfrowych”. Jednak po dokonaniu podsta-
wienia (11.22) w HBS(s) otrzymujemy satysfakcjonujący nas filtr cyfrowy o transmitancji
HBS(z). Ma on rozkład zer i biegunów oraz charakterystykę amplitudowo-częstotliwościową
przedstawioną na rysunkach 11.5c i 11.5d. Jak widać trzeba rzeczywiście zaprojektować inny
filtr analogowy, aby otrzymać w wyniku transformacji biliniowej (11.22) zadany przez nas filtr
cyfrowy.
Z kolei na rysunku 11.6 są przedstawione w sposób bardziej kompleksowy przykłady zapro-
jektowanych cyfrowych filtrów Butterwortha różnych typów: dolnoprzepustowego, górno-
przepustowego, pasmowoprzepustowego i pasmowozaporowego. Dla każdego filtra przedsta-
wiono: 1) rozkład zer i biegunów jego transmitancji, 2) charakterystykę amplitudowo-często-
tliwościową, 3) charakterystykę fazowo-częstotliwościową oraz 4) odpowiedź impulsową. Na
charakterystyce amplitudowo-częstotliwościowej za pomocą symbolu „o” zaznaczono zadane
wymagania projektowe: Apass = 3 dB i Astop = 60 dB dla odpowiednich częstotliwości. Jak
widać wszystkie filtry spełniają stawiane warunki. Obserwowane skoki na charakterystykach
fazowo-częstotliwościowych występują dla częstotliwości pasma zaporowego, dla których filtr
bardzo silnie tłumi sygnał wejściowy (bardzo mała wartość |H(ejΩ)|) i są spowodowane ograni-
czoną precyzją obliczeń komputerowych. Należy także zwrócić uwagę na różne kształty odpo-
wiedzi impulsowych poszczególnych filtrów oraz względnie długi czas ich trwania (zaniku do
„zera”).
a) 2000 b) 0
1500
20log10|H(jω)| [dB]
-20
1000
Imag(s/2π)
500 -40
0 -60
-500 -80
-1000
-1500 -100
-2000 -120
-10000 -5000 0 0 1000 2000 3000
Real(s) f [Hz]
c) 1 d) 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z)
0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
Rys. 11.5. Przykład zaprojektowania pasmowozaporowego filtra cyfrowego na podstawie analogowego
filtra Butterwortha: a) zera „z” i bieguny „³” transmitancji filtra analogowego H(s), b) charakterystyka
amplitudowo-częstotliwościowa filtra analogowego H(jω), c) zera i bieguny transmitancji filtra cyfrowego
H(z), d) charakterystyka amplitudowo-częstotliwościowa filtra cyfrowegoH(ejΩ), Ω = 2πf / fpr
Projektowanie rekursywnych filtrów cyfrowych 299
a) filtr dolnoprzepustowy, N = 16
1 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z) 0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
0.2 0
0.15 -5
kąt H(ej2πf/fpr)
0.1
-10
h(n)
0.05
-15
0
-0.05 -20
-0.1 -25
0 50 100 150 0 200 400 600 800 1000
n f [Hz]
b) filtr górnoprzepustowy, N = 16
1 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z)
0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
0.2 0
0.1 -5
kąt H(ej2πf/fpr)
-10
h(n)
0
-15
-0.1 -20
-0.2 -25
0 50 100 150 0 200 400 600 800 1000
n f [Hz]
c) filtr pasmowoprzepustowy, N = 9
1 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z)
0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
0.2 5
0
0.1
kąt H(ej2πf/fpr)
-5
-10
h(n)
0
-15
-0.1 -20
-25
-0.2 -30
0 50 100 150 0 200 400 600 800 1000
n f [Hz]
d) filtr pasmowozaporowy, N = 11
1 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z)
0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
0.4 0
0.3 -5
kąt H(ej2πf/fpr)
0.2 -10
h(n)
0.1 -15
0 -20
-0.1 -25
-0.2 -30
0 50 100 150 0 200 400 600 800 1000
n f [Hz]
a) filtr dolnoprzepustowy N = 8
1 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z) 0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
b) filtr górnoprzepustowy N = 8
1 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z)
0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
c) filtr pasmowoprzepustowy N = 6
1 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z)
0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
d) filtr pasmowozaporowy N = 7
1 0
20log10|H(ej2πf/fpr)| [dB]
-20
0.5
-40
Imag(z)
0 -60
-80
-0.5
-100
-1 -120
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
Rys. 11.7. Przykłady cyfrowych filtrów Czebyszewa typu I (oscylacje w paśmie przepustowym). Na cha-
rakterystyce amplitudowo-częstotliwościowej za pomocą symboli „o” zaznaczono wymagania projektowe,
które były stawiane filtrowi: Apass = 3 dB i Astop = 60 dB dla wybranych częstotliwości. Symbol „z” oznacza
zero transmitancji, a „³” − biegun transmitancji. Wszystkie zera są N-krotne
302 Projektowanie rekursywnych filtrów cyfrowych
a) filtr dolnoprzepustowy N = 8
1 0
20log10|H(ej2πf/fpr)| [dB]
0.5 -20
Imag(z)
-40
0
-60
-0.5 -80
-1 -100
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
b) filtr górnoprzepustowy N = 8
1 0
20log10|H(ej2πf/fpr)| [dB]
0.5 -20
Imag(z)
-40
0
-60
-0.5 -80
-1 -100
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
c) filtr pasmowoprzepustowy N = 6
1 0
20log10|H(ej2πf/fpr)| [dB]
0.5 -20
Imag(z)
-40
0
-60
-0.5 -80
-1 -100
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
d) filtr pasmowozaporowy N = 7
1 0
20log10|H(ej2πf/fpr)| [dB]
0.5 -20
Imag(z)
-40
0
-60
-0.5 -80
-1 -100
-1 -0.5 0 0.5 1 0 200 400 600 800 1000
Real(z) f [Hz]
Rys. 11.8. Przykłady cyfrowych filtrów Czebyszewa typu II (oscylacje w paśmie zaporowym). Na chara-
kterystyce amplitudowo-częstotliwościowej za pomocą symboli „o” zaznaczono wymagania projektowe,
które były stawiane filtrowi: Apass = 3 dB i Astop = 60 dB dla wybranych częstotliwości. Symbol „z” oznacza
zero transmitancji, a „³” − biegun transmitancji. Wszystkie zera są jednokrotne
Projektowanie rekursywnych filtrów cyfrowych 303
0 0.2
-5 0.1
kąt H(ej2πf/fpr)
-10
h(n)
0
-15
-20 -0.1
-25 -0.2
0 200 400 600 800 1000 0 50 100 150
f [Hz] n
Na rysunkach 11.7 i 11.8 przedstawiono rozkład zer i biegunów oraz charakterystykę ampli-
tudowo-częstotliwościową transmitancji filtrów cyfrowych Czebyszewa typu I i typu II, speł-
niających identyczne wymagania projektowe jak przedstawione wcześniej filtry Butterwortha.
Cóż wynika z tych rysunków? P o p i e r ws z e , rząd tych filtrów jest o wiele niższy niż filtrów
Butterwortha, czyli ich złożoność obliczeniowa jest mniejsza. W odróżnieniu od filtrów
Butterwortha charakterystyki amplitudowo-częstotliwościowe filtrów Czebyszewa mają jednak
zafalowania: typu I w paśmie przepustowym, a typu II w paśmie zaporowym. W związku
z tym można wybrać albo „oscylacyjny” kształt charakterystyki w paśmie przepustowym filtra
ale za to bardzo duże tłumienie w paśmie zaporowym (filtr Czebyszewa typu I), albo od-
wrotnie, „oscylacyjny” kształt charakterystyki i małe tłumienie w paśmie zaporowym ale za to
liniowość przetwarzania w paśmie przepustowym (filtr Czebyszewa typu II). W przypadku
filtra typu II oscylacje w paśmie zaporowym mogą być do zaakceptowania w wielu zastoso-
waniach, gdyż występują w zakresie częstotliwości, których filtr nie „przenosi”. Nieliniowość
charakterystyki filtra II typu w paśmie przepustowym jest związana wyłącznie z jej „opada-
niem” podczas zbliżania się do częstotliwości „granicznych”. P o d r u g i e , rozkład zer i bie-
gunów transmitancji filtrów Czebyszewa typu I jest powtórzeniem filozofii znanej z filtrów
Butterwortha: na okręgu jednostkowym w środku każdego pasma zaporowego występuje tylko
jedno zero wielokrotne, bieguny zaś tak jak poprzednio leżą wewnątrz tego okręgu na łukach
„elips”, znajdujących się w sąsiedztwie pasma przepustowego. Jednak teraz łuki te przylegają
do okręgu jednostkowego (są „wklęsłe”). Z kolei bieguny filtrów Czebyszewa typu II leżą na
łukach „wypukłych” tak jak w przypadku filtrów Butterwortha, ale zera nie są wielokrotne. Są
one rozłożone nierównomiernie na okręgu jednostkowym, coraz rzadziej wraz z oddalaniem
się od częstotliwości granicznych pasma przepustowego. Rozkład zer i biegunów z rysunku
11.8c przypomina nasz intuicyjny projekt filtra pasmowoprzepustowego z rysunku 10.7, wyko-
nany metodą zer i biegunów.
Aby nie zanudzać Czytelnika nie przedstawiono dla cyfrowych filtrów Czebyszewa ich chara-
kterystyk fazowo-częstotliwościowych oraz ich odpowiedzi impulsowych. Należy jednak nad-
mienić, że charakterystyki te są o wiele bardziej nieliniowe, odpowiedzi impulsowe zaś zani-
kają do zera o wiele dłużej niż w przypadku filtrów Butterwortha. Potwierdza to regułę, że im
bardziej jest stroma charakterystyka amplitudowo-częstotliwościowa filtra rekursywnego, tym
bardziej jest nieliniowa jego charakterystyka fazowa i tym dłużej trwają występujące w nim
stany przejściowe. Nieprzedstawiony w niniejszym rozdziale cyfrowy filtr eliptyczny, mający
oscylacje zarówno w paśmie przejściowym, jak i zaporowym, ale za to charakteryzujący się
najkrótszym pasmem przejściowym, także potwierdza powyższą zasadę. W celach poglądo-
wych na rysunku 11.9 zaprezentowano odpowiedź impulsową oraz charakterystykę fazowo-
304 Projektowanie rekursywnych filtrów cyfrowych
Tab. 11-2. Program w języku Matlab, służący do zaprojektowania transmitancji cyfrowych filtrów LP, HP,
BP i BS Butterwortha na podstawie transmitancji analogowych filtrów Butterwortha
12.1. Wprowadzenie
Jak już wiemy cyfrowa filtracja nierekursywna jest określona następującym równaniem (10.8),
(10.10), (10.18):
∞ ∞ N −1 N −1
y(n) = ∑ h(m) x(n − m) = ∑ h(m) x(n − m) = ∑ h(m) x(n − m) = ∑ bm x(n − m) (12.1)
m = −∞ m =0 m=0 m =0
gdzie x(n) oznacza sygnał wejściowy, y(n) − sygnał wyjściowy, a h(n) to odpowiedź impulso-
wa filtra (odpowiedź na dyskretny impuls jednostkowy δ(n)), charakteryzująca jego właści-
wości częstotliwościowe. Ponieważ układ jest przyczynowy i h(n) = 0 dla n < 0, stąd dolna
granica sumy może być przesunięta do m = 0. Dodatkowo dla układów stabilnych odpowiedź
impulsowa musi mieć skończoną energię (czyli być bezwzględnie całkowalna), skąd wynika,
że powinna ona zanikać do zera dla czasu dążącego do nieskończoności. Uwzględniając aspek-
ty implementacji programowej, ograniczamy więc długość „filtra” h(n) do pierwszych N pró-
bek, numerowanych od 0 do N−1. Projektowanie filtrów cyfrowych opisanych równaniem
(12.1) sprowadza się do wyznaczenia N wartości odpowiedzi impulsowej h(n), lub jak kto
woli, współczynników bm (konwencja stosowana w programie Matlab). W dziedzinie częstotli-
wości równaniu (12.1) odpowiada zależność:
Y ( e jΩ ) = H ( e jΩ ) X ( e jΩ ) (12.2)
gdzie Y(ejΩ), H(ejΩ) i X(ejΩ) są widmami Fouriera (8.8a) sygnałów dyskretnych y(n), h(n) i x(n).
Przykładowo:
( ) ∑ x(n )e − jΩn
+∞
X e jΩ = (12.3)
n = −∞
+π
x (n ) =
1
2π −∫π
( )
X e jΩ e jΩn dΩ (12.4)
H ( e jΩ ) = R( Ω) + jI (Ω) (12.6)
więc w procesie projektowania filtra h(n) tak właściwie „projektujemy” moduł i fazę H(ejΩ):
I (Ω )
Φ (Ω) = arctg (12.8)
R (Ω )
Projektowanie nierekursywnych filtrów cyfrowych 309
5 5
4 4
3 3
2 2
M(Ω)
A(Ω)
1 1
0 0
-1 -1
-2 -2
-0.5 0 0.5 -0.5 0 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
8 8
4 4
Ψ(Ω) [rd]
Φ(Ω) [rd]
0 0
-4 -4
-8 -8
-0.5 0 0.5 -0.5 0 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.1. Charakterystyki amplitudowo-częstotliwościowe M(Ω) i A(Ω) oraz fazowo-częstotliwościowe
Φ(Ω) i Ψ(Ω) dla filtra o wagach h(0) = h(1) = h(2) = h(3) = h(4) = 1, mającego H(ejΩ) dane wzorem (12.11)
Jednak funkcja M(Ω) nie jest analityczna (m.in. nie ma ciągłej pochodnej w miejscach zero-
wych), a funkcja Φ(Ω) nie jest ciągła (ma skoki o π radianów). Problem ten rozwiązuje się
definiując funkcję A(Ω):
A(Ω) = ± M (Ω) (12.9)
w której wybrane fragmenty M(Ω) są zanegowane. Funkcja A(Ω), podobnie jak M(Ω), przyj-
muje tylko wartości rzeczywiste, jednak nie tylko dodatnie, także ujemne. Wówczas H(ejΩ)
można zapisać w następującej postaci:
H ( e jΩ ) = A(Ω) e jΨ ( Ω ) (12.10)
Na rysunku 12.1 pokazano przykładowy kształt funkcji M(Ω), Φ(Ω) oraz A(Ω), Ψ(Ω) dla filtra
dolnoprzepustowego (okna prostokątnego) o długości N = 5, mającego tylko następujące „wa-
gi” niezerowe: h(0) = h(1) = h(2) = h(3) = h(4) = 1. W rozdziale 8.4.1 wykazaliśmy, że w ta-
kim przypadku jest prawdziwa zależność (8.39a):
sin (ΩN / 2 )
( )
H e jΩ = e − jΩ ( N −1) / 2
sin(Ω / 2 )
(12.11)
Podstawową zaletą filtrów nierekursywnych, opisanych równaniem (12.1), jest łatwość uzy-
skiwania idealnej liniowej charakterystyki fazowej filtra:
Ψ (Ω) = c1 + c2 Ω (12.12)
co jak wiemy (np. z rozdziału 5.2) zapewnia takie samo opóźnienie wszystkich przenoszonych
częstotliwości, czyli nie zmienianie kształtu sygnału. W równaniu (12.12) c1 i c2 oznaczają do-
310 Projektowanie nierekursywnych filtrów cyfrowych
= e − jΩM h(0)e jΩM + h (1)e jΩ( M −1) + ... + h ( N − 1)e jΩ( M −( N −1)) (12.15)
Zakładając:
N −1
M = ⇒ M − ( N − 1) = − M (12.16)
2
oraz wykorzystując symetrię (asymetrię) funkcji kosinus (sinus) możemy równanie to zapisać
jako:
Teraz możemy rozważyć kilka możliwości. Filtr będzie miał liniową charakterystykę fazo-
wo-częstotliwościową tylko wtedy, kiedy wyrażenie w nawiasie {.} będzie miało tylko część
rzeczywistą lub tylko część urojoną. Aby to „spowodować” musimy założyć określoną syme-
trię odpowiedzi impulsowej h(n). Dla symetrycznej odpowiedzi impulsowej:
h (n ) = h( N − 1 − n ), n = 0, 1, 2, ..., N − 1 (12.18)
„znika” część rzeczywista. Rozważmy osobno oba przypadki dla N nieparzystego i N parzys-
tego:
I) symetryczna odpowiedź impulsowa o długości nieparzystej (N = 2L+1, M = L):
M −1
H (e jΩ ) = e − jΩM A(Ω ) = e − jΩM ∑ 2h(n ) cos(Ω( M − n )) + h( M ) (12.20)
n =0
M −1
H (e jΩ ) = je − jΩM A(Ω) = je − jΩM ∑ 2h( n ) sin(Ω( M − n )) (12.22)
n =0
N / 2 −1
H (e jΩ ) = je − jΩM A(Ω ) = je − jΩM ∑ 2h(n ) sin(Ω( M − n )) (12.23)
n =0
Tab. 12-1. Własności charakterystyk amplitudowych A(Ω) dla czterech typów filtrów h(n), mających linio-
wą charakterystykę fazowo-częstotliwościową. Filtry: LP − dolnoprzepustowy, HP − górnoprzepustowy, BP
− pasmowoprzepustowy, BS − pasmowozaporowy, H − Hilberta, D − różniczkujący
Typ
Właściwości h(n)
Okres Ω punktów Ω punktów Rodzaje filtrów
(a)symetria / długość symetrii asymetrii
I h(n) = h(N−1−n), N = 2L+1 2π 0, π −− LP, HP, BP, BS
a) 0 π 2π 3π 4π 5π 6π 0 π 2π 3π 4π 5π 6π
9 9
8 8
7 7
6 6
M(Ω)
5 5
A(Ω)
4 4
3 3
2 2
1 1
0 0
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
b) 0 π 2π 3π 4π 5π 6π 0 π 2π 3π 4π 5π 6π
6 6
4 5
2 4
M(Ω)
A(Ω)
0 3
-2 2
-4 1
-6 0
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
c) 0 π 2π 3π 4π 5π 6π 0 π 2π 3π 4π 5π 6π
6 6
4 5
2 4
M(Ω)
A(Ω)
0 3
-2 2
-4 1
-6 0
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
d) 0 π 2π 3π 4π 5π 6π 0 π 2π 3π 4π 5π 6π
6 5
4 4
2
3
M(Ω)
A(Ω)
0
2
-2
-4 1
-6 0
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.2. Przykładowe charakterystyki amplitudowe A(Ω) i M(Ω) = |A(Ω)| dla filtrów: a) typu I: h1(n) =
= {1, 2, 3, 2, 1}, b) typu II: h2(n) = {1, 2, 2, 1}, c) typu III: h3(n) = {1, 2, 0, −2, −1}, d) typu IV: h4(n) =
= {1, 2, −2, −1}. Dla a) i c) długość filtra N = 5 i n = 0, 1, 2, 3, 4, natomiast dla b) i d) filtr ma długość N = 4
i n = 0, 1, 2, 3. Symbolami „•” zaznaczono punkty symetrii i asymetrii
Projektowanie nierekursywnych filtrów cyfrowych 313
Aby otrzymać rzeczywistą, (a)symetryczną odpowiedź impulsową h(n) dla parzystych i niepa-
rzystych wartości N, trzeba uwzględnić obserwacje poczynione w poprzednim podrozdziale
(patrz tabela 12-1), tzn. umieścić zadane wartości charakterystyki amplitudowo-częstotliwo-
ściowej tylko w części rzeczywistej H(ejΩ) (filtry typu I i II, symetryczne h(n)) lub części uro-
jonej H(ejΩ) (filtry typu III i IV, asymetryczne h(n)). Dodatkowo należy pamiętać o tym, że nie
każdy rodzaj filtra (LP, HP, BP, BS, H, D) można zaprojektować z wybranego „prototypu” ze
względu na asymetrię H(ejΩ), czyli jej zerowanie się w wybranych punktach.
Załóżmy, że wyznaczamy dyskretną transformatę Fouriera już zaprojektowanego prototypu:
N −1
1
H (e jΩ ) =
N
∑ h(n)e − jΩn (12.27)
n =0
N −1 N −1 j k n
2π
1
H ( e jΩ ) = ∑ ∑ X ( k )e N e − jΩ n (12.28)
N n =0 k =0
Po zmianie kolejności sumowania i obliczeniu sumy względem zmiennej „n” otrzymujemy:
N −1 j 2 π k n
1 N −1 1 N −1 1 − e − jΩ N
H (e jΩ
)=
N
∑ X (k ) ∑ e N e − jΩn = N
∑ X (k ) j (2 π / N ) k − jΩ
(12.29)
k =0
n =0
k =0 1 − e e
1
0.8
0.6
Sinc(Ω)
0.4
0.2
0
-0.2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Ω/2π [Hz/Hz]
Rys. 12.3. Przykładowy kształt funkcji interpolującej Sinc(Ω) = (sin(x)/sin(y))/N z równania (12.31b) dla
N = 41 i k = 20
zmiennej Ω i może ona mieć między tymi punktami charakter oscylacyjny. Jest to związane
z faktem, że funkcja Sinc(Ω) = (sin(x)/sin(y))/N z równania (12.31b) ma kształt przedstawiony
na rysunku 12.3 dla N = 41, k = 20. Przykładowy kształt odpowiedzi częstotliwościowej filtra
typu I, zaprojektowanego za pomocą tej metody, jest pokazany na rysunku 12.4b. Symbolami
„o” oznaczono na nim zadane wartości prążków widma, linią zaś narysowano „ciągłą” chara-
kterystykę filtra Re(H(ejΩ)), daną wzorem (12.29). Jak widać otrzymana charakterystyka prze-
chodzi przez punkty zadane, lecz pomiędzy nimi znacznie oscyluje. Aby zmniejszyć poziom
tych oscylacji należy umieszczać („zadawać”) prążki widma także w paśmie przejściowym.
Inną metodą jest pomnożenie próbek odpowiedzi impulsowej filtra h(n), otrzymanych ze wzo-
ru (12.26), przez próbki okna czasowego w(n) o długości N: hw(n) = h(n)w(n), n = 0, 1, 2,
..., N−1. Do tego celu można użyć na przykład okna Hanninga, Hamminga lub Blackmana
(patrz rozdział 8, tabela 8-1). Iloczynowi sygnałów h(n) i w(n) w dziedzinie czasu odpowiada
splot widm H(ejΩ) i W(ejΩ) w dziedzinie częstotliwości, co prowadzi do redukcji oscylacji
w widmie Hw(ejΩ). Im widmo okna ma listki boczne na niższym poziomie, tym wynikowy filtr
odznacza się większym tłumieniem w paśmie zaporowym. Szerszy listek główny okna powo-
duje natomiast zwiększenia pasm przejściowych charakterystyki amplitudowo-częstotliwo-
ściowej filtra (zwiększenie szerokości „strefy” przejścia z pasma przepustowego do zaporowe-
go i odwrotnie).
Projektowanie nierekursywnych filtrów cyfrowych 315
Przykład
a) 0.6 d) 0.6
0.4 0.4
hw(n)
h(n)
0.2 0.2
0 0
-0.2 -0.2
0 10 20 30 40 0 10 20 30 40
n n
b) 1.2 e) 1.2
1 1
0.8 0.8
Re(Hw(ejΩ))
Re(H(ejΩ))
0.6 0.6
0.4 0.4
0.2 0.2
0 0
-0.2 -0.2
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
c) 20 f) 20
0 0
|Hw(ejΩ)| [dΒ]
|H(ejΩ)| [dΒ]
-20 -20
-40 -40
-60 -60
-80 -80
-100 -100
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.4. Ilustracja projektowania nierekursywnego filtra cyfrowego I typu metodą próbkowania w dzie-
dzinie częstotliwości (długość filtra N = 41): a), b), c) zastosowanie okna prostokątnego, d), e), f) zasto-
sowanie okna Blackmana. Kolejno w pionie: odpowiedź impulsowa filtra oraz jej widmo Fouriera w skali
liniowej oraz decybelowej. Zadane punkty charakterystyki częstotliwościowej są zaznaczone na rysun-
kach b) i e) symbolami „o”
316 Projektowanie nierekursywnych filtrów cyfrowych
Ćwiczenie komputerowe
Z2 = zeros(1,M2); J2=ones(1,M2);
Z4 = zeros(1,M4); J4=ones(1,M4);
if (typ==1) % FILTR LP TYPU 1
Ar = [ 1 J2 Z2 Z2 J2 ]; % zadane punkty: część rzeczywista
Ai = zeros(1,N); % zadane punkty: część urojona
end
if (typ==3) % FILTR BP TYPU 3
Ar = zeros(1,N); % zadane punkty: część rzeczywista
Ai = [ 0 Z4 J2 Z4 Z4 -J2 Z4 ]; % zadane punkty: część urojona
end
A = Ar + j*Ai;
Dla dyskutowanych wyżej filtrów typu I−IV równanie (12.32) można zapisać jako:
L −1 2
E= ∑ A(Ωk ) − Ap (Ω k ) (12.33)
k =0
gdyż ich odpowiedź częstotliwościowa H(ejΩ) jest albo w całości rzeczywista, albo w całości
urojona. W najprostszym przypadku zakłada się liniowe „próbkowanie” pulsacji, tzn.:
2π
Ωk = k , k = 0, 1, 2, ..., L − 1 (12.34)
L
Z twierdzenia Parsevala (zachowanie energii w dziedzinie transformaty Fouriera) wynika wów-
czas, że minimalizacja wyrażeń (12.32), (12.33) jest równoważna minimalizacji wyrażenia:
( L−1) / 2 2
E= ∑ h(n ) − h p (n ) (12.35)
n =−( L−1) / 2
E osiąga minimum, kiedy pierwszy składnik jest jak najmniejszy, tzn. kiedy za „zaprojekto-
waną” odpowiedź impulsową h(n) przyjmujemy próbki odpowiedzi hp(n) o indeksach od −M
do M, resztę zaniedbując.
Kiedy rozpatrujemy przypadek nierównomiernego próbkowania pulsacji Ω, metodologia pro-
jektowania jest inna. Wówczas stosujemy wzory (12.20)−(12.23), w których pulsacja Ω jest
dowolna, podstawiamy do nich wybrane wartości Ωk, k = 0, 1, 2, ..., L−1, oraz zadajemy war-
tości A(Ωk). Otrzymujemy w ten sposób układ L równań z M lub M+1 niewiadomymi (liczba
współczynników filtra, które są do wyznaczenia):
Fh ≅ a p (12.37)
Przykładowo dla filtrów typu I, F jest macierzą wartości funkcji cosinus o wymiarach
L×(M+1), h jest (M+1)-elementowym wektorem próbek h(n), a zaś jest L-elementowym we-
ktorem zadanych wartości A(Ωk). Błąd aproksymacji zadanej charakterystyki częstotliwościo-
wej w zapisie macierzowym ma następującą postać:
Fh = a p + e (12.38)
FT Fh = FT a p + FT e (12.39)
Aby błąd był najmniejszy, wektor błędu powinien być ortogonalny do wierszy macierzy F.
Wtedy FTe jest równe zero i „optymalny” wektor h jest rozwiązaniem równania:
FT Fh = FT a p (12.40)
skąd
( )−1 FT a p = pinv(F)a p
h = FT F (12.41)
FT WFh = FT Wa p (12.43)
(
h = FT WF )−1 FT Wa p (12.44)
gdzie W jest dodatnio określoną macierzą wag (na głównej diagonali ma wagi wk).
Przykład
Podobnie jak poprzednio zaprojektujemy obecnie dolnoprzepustowy, półpasmowy filtr typu
I, tzn. o długości nieparzystej N oraz symetrycznej odpowiedzi impulsowej. Przyjmijmy
N = 41, dla którego M = (N−1)/2 = 20. Tym razem zadamy K = 50 punktów charakterystyki
amplitudowo-częstotliwościowej filtra. Punkty te są zaznaczone symbolami „o” na rysunku
Projektowanie nierekursywnych filtrów cyfrowych 319
a) 0.6 b) 1
0.8
0.4
0.6
|H(ejΩ)|
h(n)
0.2
0.4
0 0.2
-0.2 0
0 10 20 30 40 0 0.1 0.2 0.3 0.4 0.5
n Ω/2π [Hz/Hz]
c) 0 d) 0
faza H(ejΩ) [rd]
-20 -40
-30 -60
-40 -80
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.5. Dolnoprzepustowy, półpasmowy filtr cyfrowy typu I, zaprojektowany metodą prostej (nieważo-
nej) optymalizacji średniokwadratowej w dziedzinie częstotliwości (długość filtra N = 41): a) odpowiedź
impulsowa h(n), b), d) charakterystyka amplitudowo-częstotliwościowa w skali liniowej i decybelowej,
c) charakterystyka fazowo-częstotliwościowa
a) 0 b) 0
-20 -20
|H(ejΩ)| [dΒ]
|H(ejΩ)| [dΒ]
-40 -40
-60 -60
-80 -80
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.6. Porównanie charakterystyk amplitudowo-częstotliwościowych dwóch filtrów cyfrowych, zapro-
jektowanych metodą ważonej optymalizacji średniokwadratowej w dziedzinie częstotliwości. Przypadki:
a) preferowanie pasma przepustowego (wagi: wpass = 1000, wtrans = 1, wstop = 1), b) preferowanie pasma zapo-
rowego (wagi: wpass = 1, wtrans = 1, wstop = 1000). Długość filtrów N = 41
320 Projektowanie nierekursywnych filtrów cyfrowych
Ćwiczenie komputerowe
h = [ h; h(M:-1:1) ];
% Rysunki
n = 0 : 2*M; subplot(111); stem(n,h); grid;
title('Odp impulsowa filtra'); xlabel('nr próbki'); pause
NF=500; wn =0:pi/(NF-1):pi; fn = wn/(2*pi); H = freqz(h,1,wn);
subplot(211); plot(fn,abs(H)); grid; title('Moduł odp częstotliwościowej');
subplot(212); plot(fn,180/pi*unwrap(angle(H))); grid;
title('Faza odp częstotliwościowej'); ylabel('stopnie'); xlabel('f norm [Hz]'); pause
subplot(111); plot(fn,20*log10(abs(H))); grid; title('Moduł odp częstotliwościowej');
xlabel('f norm [Hz]'); axis([0 0.5 -100 10]); pause
M
E (Ω) = W (Ω) ∑ cn cos(Ωn ) − Ap (Ω) (12.45)
n = 0
gdzie W(Ω) oznacza dowolną dodatnią funkcję wagową, która służy do innego ”tra-
ktowania” pasma przepustowego i zaporowego. Algorytm Remeza opiera się na ogólnym
twierdzeniu, według którego zawsze istnieje taki zbiór M+2 pulsacji Ωm, m = 1, 2, ..., M+2, że
powyższa funkcja błędu przyjmuje dla tych pulsacji tylko wartości ±ε:
M
W (Ω m ) ∑ cn cos(Ω m n ) − Ap (Ω m ) = ( −1) m ε, m = 1, 2, ..., M + 2 (12.46)
n = 0
z którego wyznacza się M+1 współczynników aproksymacji ck oraz amplitudę oscylacji ε. Pul-
sacje Ωm noszą nazwę pulsacji „ekstremalnych” (czyli pulsacji „ekstremów” funkcji błędu). Jak
widać z (12.46) dla kolejnych wartości Ωm błąd aproksymacji wynosi odpowiednio −ε, +ε, −ε,
+ε itd. Jednak pulsacje ekstremalne nie są znane. Istota algorytmu Remeza polega właśnie na
ich iteracyjnym, przybliżonym wyznaczeniu, a następnie na rozwiązaniu układu równań
(12.47) ze względu na zmienne cn, n = 0, 1, ..., M, i ε. Algorytm ten składa się z następujących
kroków:
322 Projektowanie nierekursywnych filtrów cyfrowych
gdzie
2h(n ), n = 0,1,..., M − 1
hn = (12.49)
h (n ), n = M
Przykład
Zaprojektujemy teraz za pomocą aproksymacji Czebyszewa dwa filtry dolnoprzepustowe
o długości N = 2M+1 = 39 (M = 19). W pierwszym przypadku nie będziemy różnicowali zna-
czenia jakości aproksymacji charakterystyki częstotliwościowej w paśmie przepustowym i za-
porowym (wagi: wpass = 1, wstop = 1), a w drugim większy priorytet przyznamy pasmu zapo-
rowemu (wagi: wpass = 1, wstop = 10). Uzyskane wyniki są przedstawione na rysunku 12.7:
pierwszy przypadek po lewej stronie, a drugi − po prawej. Uzyskano je za pomocą poglądo-
wego programu, realizującego przedstawiony wyżej algorytm w sposób uproszczony (upro-
szczenie dotyczy sposobu wyznaczenia ekstremów funkcji E(Ω)).
Ćwiczenie komputerowe
W tabeli 12-4 został przedstawiony program komputerowy, z pomocą którego zaprojektowano
filtry w powyższym przykładzie. Nie jest on optymalny, ponieważ sposób wyznaczania ekstre-
mów funkcji E(Ω) zrealizowano w nim w najprostszy sposób. Równocześnie program ten
w wersji obecnej umożliwia jedynie projektowanie filtrów dolnoprzepustowych. Ma jednak
dużą zaletę: jest stosunkowo prosty w porównaniu z innymi, istniejącymi implementacjami
programowymi, dzięki czemu pozwala na szybkie wniknięcie w istotę rozważanego zagadnie-
nia optymalizacji.
Projektowanie nierekursywnych filtrów cyfrowych 323
0.6 0.6
0.4 0.4
h(n)
h(n)
0.2 0.2
0 0
-0.2 -0.2
0 10 20 30 40 0 10 20 30 40
n n
1.2 1.2
1 1
0.8 0.8
H(ejΩ)
H(ejΩ)
0.6 0.6
0.4 0.4
0.2 0.2
0 0
-0.2 -0.2
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
0 0
-10 -10
|H(ejΩ)| [dΒ]
|H(ejΩ)| [dΒ]
-20 -20
-30 -30
-40 -40
-50 -50
-60 -60
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.7. Dwa przykłady projektowania filtrów cyfrowych metodą aproksymacji Czebyszewa. Po lewej
stronie: brak różnicowania pasma przepustowego i zaporowego (wagi: wpass = 1, wstop = 1), po prawej stronie
− przyznanie większego priorytetu pasmu zaporowemu (wagi:wpass = 1, wstop = 10). Długość filtrów N = 39
clear all;
% Rysunki
fz=fz/2;
stem(g); title('Wynikowa odp impulsowa filtra'); pause;
plot(fz(imax),Herr(imax),'or',fz,Herr,'b'); grid;
title('Błąd H(f) + jego EKSTREMA'); pause
plot(fz,Hd,'r',fz,H,'b'); grid; title('Wynikowe H(f)'); pause
plot(fz,20*log10(H),'b'); grid; title('Wynikowe H(f) w dB'); pause
hwM (n ) = hw (n − M ), 0 ≤ n ≤ 2 M (12.53)
w wyniku wymnożenia odpowiedzi impulsowej filtra h(n) z funkcją okna w(n), otrzymuje się
nową odpowiedź impulsową hw(n), która ma już inną charakterystykę częstotliwościową
Hw(ejΩ) niż oryginał H(ejΩ). Charakterystyka ta jest silnie zależna od widma Fouriera W(ejΩ)
zastosowanego okna i nie ma już „idealnej” (zero-jedynkowej) charakterystyki amplitudowo-
-częstotliwościowej. Ponieważ okna czasowe i ich charakterystyki częstotliwościowe zostały
szczegółowo omówione w rozdziale poświęconym analizie widmowej sygnałów dyskretnych,
w tym rozdziale poświęcimy im mniej miejsca.
Przypomnijmy jednak, że zachowując kształt okna i tylko zwiększając jego długość (czyli pro-
porcjonalnie go „przeskalowując”), możemy jedynie wpływać na szerokość listka głównego
widma okna. Poziom tłumienia listków bocznych widma pozostaje bez zmian. Wynika stąd, że
aby wynikowy filtr był bardziej stromy, należy zwiększyć długość okna, natomiast aby otrzy-
mać filtr o większym tłumieniu w paśmie zaporowym, należy zmienić okno na inne, „lepsze”,
tzn. mające listki boczne widma na niższym poziomie (tabele 12-6 i 12-7). Zwróćmy także
uwagę, że filtry zaprojektowane z użyciem konkretnych okien mają większe tłumienie niż same
okna. Przykładowo, listek boczny widma okna prostokątnego jest na poziomie −13,5 dB
w stosunku do listka głównego, a filtr zaprojektowany z wykorzystaniem tego okna ma tłumie-
nie około −21 dB. Zjawisko to dotyczy wszystkich okien.
Podczas projektowania filtra bardzo korzystnie jest stosować okna parametryczne, tzn. okna
o zmiennym kształcie. Najbardziej znanymi oknami tego typu są okna Kaisera i Dolpha-Cze-
byszewa. Zmieniając długość oraz parametr kształtu okna, można z ich pomocą projektować
filtry o różnej stromości pasm przejściowych i różnym tłumieniu w paśmie zaporowym.
Projektowanie nierekursywnych filtrów cyfrowych 327
H w( M ) (e jΩ ) = e − jΩM H w (e jΩ ) (12.55)
Ω0 cos(Ω0 n )
hLP (0) = 2 F0 = 2 F0 (z reguły d’Hospitala w granicy dla n → 0)
Ω0 n →0
1 0
π −Ω π
1
hHP (n ) =
2π ∫ H HP (e jΩ )e jΩn d Ω = ∫ 1 ⋅ e j Ωn d Ω + ∫ 1 ⋅ e j Ωn d Ω =
2π −π
−π Ω0
π Ω
1 1 0 j Ωn
∫ ∫ e dΩ =
j Ωn
= e d Ω −
2π −π 2π −Ω
0
sin(Ω 0 n ) Ω0
= δ(n ) − 2 F0 = δ( n ) − hLP (n ), n ≠ 0 (12.57)
Ω0n
HLP(ejΩ)
1
−π −Ω0 0 Ω0 π
HHP(ejΩ) 1−HLP(ejΩ)
1 1
Ω Ω
−π −Ω0 0 Ω0 π −π −Ω 0 Ω0 π
HBP(ejΩ) HLP2(ejΩ)−HLP1(ejΩ)
1 1
Ω Ω
−π −Ω −Ω 0 Ω1 Ω2 π −π −Ω −Ω 0 Ω1 Ω2 π
HBS(ejΩ) 1−HBP(ejΩ)
1 1
Ω Ω
skąd wynika, że
Ω0 Ω0 sin(Ω 0 n )
h HP ( n ) = δ(n ) − hLP (n ) = δ(n ) − 2 F0
Ω0n
Inną możliwością jest otrzymanie HHP(ejΩ) poprzez przesunięcie widma Fouriera HLP(ejΩ)
o π w kierunku pulsacji dodatnich: HHP(ejΩ) = HLP(ej(Ω−π)), wówczas hHP(n) uzyskuje się w wy-
niku wymnożenia hLP(n) z sygnałem ejπn = (−1)n .
Projektowanie nierekursywnych filtrów cyfrowych 329
1 1
−Ω Ω2
1 π
hBP ( n ) = ∫ H BP (e jΩ )e jΩ n d Ω = ∫ 1 ⋅ e jΩ n d Ω + ∫ 1 ⋅ e jΩ n d Ω =
2π −π 2π −Ω
2 Ω1
1 2 jΩ n
Ω Ω1
= ∫ e d Ω − ∫ e jΩ n d Ω =
2π −Ω
2 −Ω1
sin(Ω 2 n ) sin(Ω1n ) Ω2 Ω1
= 2 F2 − 2 F1 = hLP − hLP , n≠0 (12.58)
Ω2n Ω1n
I w tym przypadku wyprowadzony wzór nie powinien być dla nas zaskoczeniem, gdyż:
Ω1 ,Ω2 Ω2 Ω1
H BP (e jΩ ) = H LP ( e jΩ ) − H LP ( e jΩ )
skąd mamy:
Ω1 ,Ω 2 Ω2 Ω1 sin(Ω 2 n ) sin(Ω1n )
hBP (n ) = hLP ( n ) − hLP (n ) = 2 F2 − 2 F1
Ω2n Ω1n
1 2
−Ω Ω1
1 π π
hBS (n ) = ∫ H BS ( e jΩ )e jΩ n d Ω = ∫ 1 ⋅ e jΩ n d Ω + ∫ 1 ⋅ e jΩ n d Ω + ∫ 1 ⋅ e jΩ n d Ω =
2 π −π 2 π −π
−Ω1 Ω2
1 π jΩ n
Ω1 Ω2
= ∫ e d Ω + ∫ 1 ⋅ e j Ω n d Ω − ∫ 1 ⋅ e jΩ n d Ω =
2 π −π
−Ω1 −Ω 2
sin(Ω 2 n) sin(Ω1n)
= δ(n) − 2 F2 − 2 F1 =
Ω 2 n Ω1n
{Ω2
= δ ( n ) − hLP Ω1
( n ) − hLP }
(n) , n ≠ 0 (12.59)
Ω , Ω2 Ω , Ω2 sin(Ω 2 n ) sin(Ω1n )
h BS1 ( n ) = δ( n ) − hBP1 ( n ) = δ( n ) − 2 F2 − 2 F1
Ω2n Ω1n
330 Projektowanie nierekursywnych filtrów cyfrowych
Tab. 12-5. Wzory na odpowiedzi impulsowe filtrów „idealnych” o prostokątnej charakterystyce amplitudo-
wo-częstotliwościowej, przedstawionej na rysunku 12.8 (F, Ω − częstotliwość i pulsacja unormowana:
0 ≤ F < 1, 0 ≤ Ω < 2π; Ωk = 2πfk / fpr i Fk = fk / fpr, k = 0, 1, 2)
sin(Ω 0 n )
2 F , n≠0
Dolnoprzepustowy (LP) hLP ( n ) = 0 Ω 0 n
2 F0 , n = 0
sin(Ω 0 n )
δ( n ) − 2 F0 , n≠0
Górnoprzepustowy (HP) hHP ( n ) = Ω0n
1 − 2 F0 , n = 0
sin(Ω 2 n ) sin(Ω1n )
2 F − 2 F1 , n≠0
Pasmowoprzepustowy (BP) hBP ( n ) = 2 Ω 2 n Ω1n
2( F2 − F1 ), n = 0
sin(Ω 2 n ) sin(Ω1n )
δ( n ) − 2 F2 − 2 F1 , n ≠ 0
Psmowozaporowy (BS) hBS ( n ) = Ω 2 n Ω1n
1 − 2( F2 − F1 ), n = 0
2 F0 , n = 0
sin(Ω 0 n )
hLP (n ) = 2 sin( ∆Ωn / 2) (12.60)
⋅ 2 F0 , n≠0
∆Ωn Ω 0n
2 F0 , n = 0
hLP (n ) = sin( ∆Ωn / 2 K ) K sin(Ω 0 n ) (12.61)
∆Ωn / 2 K ⋅ 2 F0 Ω n , n ≠ 0
0
Projektowanie nierekursywnych filtrów cyfrowych 331
a) 0.4
0.3
0.2
h(n)
0.1
0
-0.1
-20 -15 -10 -5 0 5 10 15 20
n
b) 1
0.8
0.6
w(n)
0.4
0.2
0
-20 -15 -10 -5 0 5 10 15 20
n
c) 0.4
0.3
0.2
hw(n)
0.1
0
-0.1
-20 -15 -10 -5 0 5 10 15 20
n
d) 0.4
hw(M)(n)=hw(n-M)
0.3
0.2
0.1
0
-0.1
-20 -15 -10 -5 0 5 10 15 20
n
Rys. 12.9. Przykładowa ilustracja graficzna „konstrukcji” odpowiedzi impulsowej hw(M)(n) filtra LP (patrz
tabela 12-5, f0 = 200 Hz, fpr = 1000 Hz) w przypadku zastosowania okna prostokątnego (M = 7, N =
= 2M+1 = 15): a) h(n), b) w(n), c) hw(n), d) hw(M)(n)
Projektowanie nierekursywnych filtrów cyfrowych 333
a) 1
0.8
0.6
w(n)
0.4
0.2
0
-20 -15 -10 -5 0 5 10 15 20
n
b) 0.4
0.3
0.2
hw(n)
0.1
0
-0.1
-20 -15 -10 -5 0 5 10 15 20
n
c) 0.4
hw(M)(n)=hw(n-M)
0.3
0.2
0.1
0
-0.1
-20 -15 -10 -5 0 5 10 15 20
n
Rys. 12.10. Przykładowa ilustracja graficzna „konstrukcji” odpowiedzi impulsowej hw(M)(n) filtra LP (tabela
12-5, f0 = 200 Hz, fpr = 1000 Hz) w przypadku zastosowania okna Hanninga (tabela 12-6, M = 7, N =
= M+1 = 15): a) w(n), b) hw(n), c) hw(M)(n)
gdzie ∆f jest wyrażone w hercach i oznacza wymaganą szerokość zboczy pasm przejściowych
(albo najmniejszą z tych szerokości, w przypadku większej liczby zboczy).
Zwróćmy uwagę, że widma okien oraz odpowiedzi impulsowych filtrów z rysunku 12.11 mają
tłumienie zgodne z tym, które podano w tabelach 12-6 i 12-7 (odpowiednio: 13,5 dB i 21 dB
dla okna prostokątnego oraz 31 dB i 44 dB dla okna Hanninga).
Na rysunku 12.13 zaprezentowano możliwość zwiększenia stromości zboczy filtra poprzez
zwiększenie jego długości. W tym przypadku także projektowano filtr dolnoprzepustowy
o częstotliwości granicznej f0 = 200 Hz oraz częstotliwości próbkowania fpr = 1000 Hz, ale
z wykorzystaniem okna Blackmana. Na rysunku przedstawiony jest unormowany moduł widma
okna w(n) oraz moduł widma wynikowej odpowiedzi impulsowej filtra hw(M)(n) dla M = 7, 14
i 49. Wraz ze wzrostem M widmo okna staje się coraz węższe, a charakterystyka amplitudowo-
-częstotliwościowa filtra − coraz bardziej stroma. Na uwagę zasługuje także duży poziom tłu-
mienia w paśmie zaporowym (74 dB, zgodnie z tabelą 12-7).
334 Projektowanie nierekursywnych filtrów cyfrowych
a) 0
-20
|W(ejΩ)| [dB]
-40
-60
-80
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
b) 0
|Hw(M)(ejΩ)| [dB]
-20
-40
-60
-80
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
Rys. 12.11. Unormowane moduły widma Fouriera (20log10|W(ejΩ)/W(0)|) okna prostokątnego z rysunku
12.9b oraz widma okna Hanninga z rysunku 12.10a (a) oraz charakterystyki amplitudowo-częstotliwościowe
|Hw(M)(ejΩ)| filtrów hw(M)(n) uzyskane dla tych okien (b)
a) 0
-20
|W(ejΩ)| [dB]
-40
-60
-80
-100
-120
-140
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
b) 0
-20
|Hw(M)(ejΩ)| [dB]
-40
-60
-80
-100
-120
-140
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
Rys. 12.13. Moduły widma Fouriera: a) okna Blackmana w(n), b) odpowiedzi impulsowej hw(M)(n) filtra LP.
Wartości parametrów: f0 = 200 Hz, fpr = 1000 Hz oraz M = 7, 14, 49 (widma coraz węższe)
Projektowanie nierekursywnych filtrów cyfrowych 335
a) b)
1 1
0.8 0.8
0.6 0.6
w(n)
w(n)
0.4 0.4
0.2 0.2
0 0
-100 -50 0 50 100 -100 -50 0 50 100
n n
Rys. 12.12. Przykłady okien dyskretnych dla M = 100, N = 2M+1 = 201. Po lewej: okno Hamminga, Han-
ninga i Blackmana, zdefiniowane w tabeli 12-6 (kolejno coraz węższe). Po prawej: parametryczne okno
Kaisera dla β = 1, 5, 10, 15 (wraz ze wzrostem wartości β okno staje się coraz węższe)
Tab. 12-6. Równania definicyjne różnych okien czasowych w(n) o długości nieparzystej N = 2M+1:
Asl − względny poziom tłumienia „listków” bocznych widma okna w stosunku do tłumienia „listka” głów-
nego, wyrażony w decybelach, ∆ml − unormowana szerokość „listka” głównego widma okna, równa ∆f / fpr
[Hz/Hz]. Współczynnik β jest dodatkowym parametrem okna Kaisera
Tab. 12-7. Wybór rodzaju okna podczas projektowania filtrów FIR metodą „okien”
Projektując filtry cyfrowe metodą okien najkorzystniej jest zastosować parametryczne okno
Kaisera, które było szczegółowo omówione w pkt. 8.4.2. Dobierając w odpowiedni sposób
parametry tego okna, tzn. jego długość N oraz wartość parametru β, jesteśmy w stanie w spo-
sób kontrolowany zmieniać jego kształt, a co za tym idzie wpływać w świadomy sposób na
kształt jego widma. To z kolei decyduje o właściwościach projektowanego filtra:
− im bardziej stromy jest listek główny widma okna, tym bardziej stroma jest charakterystyka
amplitudowo-częstotliwościowa filtra (krótkie pasmo przejściowe);
− im niżej leżą listki boczne widma okna, tym większe jest tłumienie filtra w paśmie zaporo-
wym.
Projektowanie dolnoprzepustowych filtrów cyfrowych metodą okien z wykorzystaniem okna
Kaisera przebiega według scenariusza podanego w tabeli 12-8. Jako przykład wyznaczymy
odpowiedź impulsową hw(M)(n) dolnoprzepustowego filtra cyfrowego, spełniającego następują-
ce założenia:
• częstotliwość próbkowania: f pr = 1000 Hz
• częstotliwość graniczna: f0 = 200 Hz
• szerokość pasma przejściowego: ∆f = 25 Hz
• liniowość w paśmie przepustowym: δpass = 0,001
• „przepustowość” w paśmie zaporowym δstop = 0,00001
W wyniku zastosowania algorytmu z tabeli 12-8 otrzymujemy następujące wartości parame-
trów:
A = 100 dB; β = 10,0613; M = 128; N = 257
Na rysunku 12.14 przedstawiono uzyskane współczynniki wagowe filtra hw(n) (przed przesu-
nięciem w prawo o M = 128 próbek) oraz moduł jego charakterystyki amplitudowo-częstotli-
wościowej.
Tab. 12-8. Algorytm projektowania dolnoprzepustowych filtrów cyfrowych typu FIR typu I (symetrycz-
nych o długości nieparzystej N = 2M+1) metodą okien z wykorzystaniem okna Kaisera
( )
δ = min δ pass , δ stop , A = −20log10 ( δ )
0, dla A < 21 dB
β = 0,5842 ( A − 21) + 0,07886 ( A − 21) ,
0,4
dla 21 dB ≤ A ≤ 50 dB
0,1102 ( A − 8,7 ) , dla A > 50 dB
4. Oblicz nieparzystą długość filtra, spełniającego zadane wymagania ze wzoru (fpr oznacza częstotliwość
próbkowania):
Projektowanie nierekursywnych filtrów cyfrowych 337
A − 7,95 f pr
N≥
14,36 ∆f
5. Oblicz współczynniki okna Kaisera dla danego β i M:
I β 1 − (n / M ) 2
0
wK [n ] = , −M ≤n≤ M
I 0 (β )
0, dla pozostałych
gdzie I0(x) to zmodyfikowana funkcja Bessela zerowego rzędu.
6. Wymnóż wyznaczoną w sposób analityczny odpowiedź impulsową h(n) filtra idealnego z tabeli 12-5
(nieskończone, gasnące oscylacje typu sinx/x) z oknem Kaisera wK(n):
hw ( n ) = h( n ) wK ( n ), − M ≤ n ≤ M
7. Przesuń w prawo wyznaczoną odpowiedź impulsową o M próbek:
hw( M ) ( n ) = hw (n − M ), 0 ≤ n ≤ N − 1
0.4
0.3
0.2
hw(n)
0.1
0
-0.1
-120 -100 -80 -60 -40 -20 0 20 40 60 80 100 120
n
0
-20
|Hw(ejΩ)| [dB]
-40
-60
-80
-100
-120
-140
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz]
Rys. 12.14. Zaprojektowana odpowiedź impulsowa filtra hw(n) oraz jej widmo Fouriera Hw(ejΩ)
Ćwiczenie komputerowe
W tabeli 12-9 został przedstawiony program komputerowy, z pomocą którego zaprojektowano
filtr przedstawiony na rysunku 12.14 (metoda okien z oknem Kaisera). Umożliwia on proje-
ktowanie odpowiedzi impulsowych filtrów LP, HP, BP i BS typu I (symetryczne o długości
nieparzystej).
338 Projektowanie nierekursywnych filtrów cyfrowych
Tab. 12-9. Przykładowy program komputerowy implementujący metodę „okien” z oknem Kaisera
1 π xr ( τ )
xi ( t ) = H [ xr ( t )] = ∫ dτ ↔ X i ( jω) = H ( jω) X r ( jω) (12.63)
π −π t − τ
która przekształca sygnał xr(t) o wartościach rzeczywistych w sygnał xi(t), przyjmujący także
rzeczywiste wartości. Definicja transformacji odwrotnej jest następująca:
1 π xi ( τ )
xr ( t ) = H −1 [ xi (t )] = − ∫ dτ ↔ X r ( jω) = H −1 ( jω) X i ( jω) (12.64)
π −π t − τ
Równania (12.63), (12.64) są równaniami splotu (filtracji analogowej): w (12.63) sygnał xr(t)
jest splatany z odpowiedzią impulsową 1/(πt), a w (12.64) − z odpowiedzią impulsową −1/(πt).
Filtry te mają charakterystykę częstotliwościową (transmitancję widmową) równą:
− j, ω > 0 j, ω> 0
H ( jω) = 0 , ω = 0 , H ( jω) = 0,
−1
ω=0 (12.65) (12.66)
j, ω < 0 − j, ω< 0
Z równań (12.65), (12.66) wynika, że oba filtry są przesuwnikami fazowymi o ±π/2 oraz że
|H(jω)| = |H−1(jω)| = 1. Charakterystyki częstotliwościowe pierwszego filtra (12.65) są przedsta-
wione na rysunku 12.15. Jak widać nie zmienia on amplitudy sygnału, tylko przesuwa go
w fazie (pulsacje dodatnie są przesuwane o −π/2). Charakterystyka fazowa drugiego filtra (od-
wrotnej transformacji Hilberta) jest zanegowaniem charakterystyki filtra pierwszego. Jeśli za
pomocą wzoru (12.63) filtrowany jest sygnał kosinusoidalny:
xr(t) = cos(ω0t)
to wówczas:
xi (t ) = cos(ω0t − π / 2 ) = cos(ω0t )cos(π / 2 ) + sin (ω0t )sin (π / 2 ) = sin(ω0 t )
oraz
x (t ) = x r (t ) + jxi (t ) = cos(ω0 t ) + j sin(ω0 t ) = e jω0 t
Dla dociekliwych. Obecnie postaramy się wyprowadzić zależność (12.65) z definicji (12.63).
Z rozdziału 4.3 wiemy, że sygnał znaku x(t) = sgn(t) ma transformatę Fouriera postaci X(jω) =
= 2/(jω):
2
x (t ) = sgn(t ) ↔ X ( jω) = (12.67)
jω
Równocześnie ciągła transformacja Fouriera odznacza się właściwością „dualności”:
X(jt) ↔ 2πx(−ω)
340 Projektowanie nierekursywnych filtrów cyfrowych
Wynika stąd, że filtr o odpowiedzi impulsowej h(t) = 1/(πt) ma transformatę Fouriera równą:
1
h (t ) = ↔ H ( jω) = − j sgn(ω) (12.69)
πt
Otrzymaliśmy w ten sposób zależność (12.65), przedstawioną na rysunku 12.15 (zgodność
z wyłączeniem punktu ω = 0).
Dla ω ≥ 0 otrzymujemy:
X ( jω) = [1 + j ( − j )] X r ( jω) = 2 X r ( jω) (12.72)
|H(jω)|
∠H(jω)
π/2
1
ω
ω −π/2
xr(t) xr(t)
x(t)=xr(t)+jxi(t)
Transformacja
jxi(t)
Hilberta
ω ω ω
Wynika stąd, że dla pulsacji nieujemnych widmo sygnału analitycznego X(jω) jest równe po-
dwojonemu widmu Xr(jω), a dla pulsacji ujemnych jest ono równe zero. Nie występuje więc
w tym przypadku symetria widma F(ω) = F*(−ω), charakterystyczna dla sygnałów rzeczywis-
tych. Na rysunku 12.17 pokazano przykładowy kształt widm Xr(jω), jXi(jω) i X(jω), przy
założeniu, że Xr(jω) przyjmuje wyłącznie wartości rzeczywiste (wówczas wszystkie widma
mają wyłącznie wartości rzeczywiste). Jak widać dla ω < 0 widma Xr(jω) i jXi(jω) wzajemnie
się odejmują. Analogicznie jest w przypadku, kiedy widmo Xr(jω) przyjmuje wartości zespo-
lone i jest (a)symetryczne: Xr(ω) = Xr*(−ω).
Oczywiście z sygnału x(t) można „odtworzyć” sygnały xr(t) i xi(t), a z widma X(jω) − widma
Xr(jω) i Xi(jω). Z liniowości ciągłego przekształcenia Fouriera oraz właściwości x*(t) ↔
X*(−jω):
+∞ *
− jωt
+ ∞
∫x
*
(t ) e dt = ∫ x (t )e jωt dt = X * ( − jω) (12.74)
−∞ − ∞
1 1
xi ( t ) = x ( t ) − x* ( t ) ↔ X i ( jω) = X ( j ω) − X * ( − j ω ) (12.76)
2j 2j
=
1
2 πn
[ ]
(e j 0 − e − jπn ) − ( e jπn − e j 0 ) =
1
2 πn
[2 − 2 cos πn] = 1 [1 − cos πn]
πn
Ponieważ prawdziwa jest następująca zależność trygonometryczna:
1 − cos 2α
sin 2 α =
2
ostatecznie otrzymujemy:
sin 2 (πn / 2 )
h H ( n ) = πn / 2 , n ≠ 0 (12.79)
0, n = 0
Rysunek 12.18 stanowi ilustrację problemu projektowania filtra Hilberta. Oczywiście podczas
filtracji cyfrowej nie jest możliwe uwzględnienie wszystkich jej próbek. Podobnie jak w przy-
padku innych filtrów musimy zastosować funkcję okna czasowego. W zależności od rodzaju
użytego okna oraz wyboru wartości jego parametrów, w tym długości, uzyskuje się różny
kształt charakterystyki amplitudowej filtra Hilberta. Na rysunku 12.18a są pokazane próbki
fragmentu odpowiedzi impulsowej dyskretnego filtra Hilberta (12.79) dla −10 ≤ n ≤ 10 oraz
odpowiadające mu charakterystyki częstotliwościowe: amplitudowa i fazowa. Jest to przypa-
dek zastosowania okna prostokątnego w(n) jako funkcji wycinającej (hw(n) = h(n)w(n)). Wyni-
kowa charakterystyka amplitudowo-cząstotliwościowa filtra jest silnie zafalowana, podobnie
jak widmo okna prostokątnego. Wzrost długości okna z 21 do 41 próbek (linia przerywana)
rozszerzył pasmo użytkowe filtra, w którym wzmocnienie jest równe w przybliżeniu 1, ale nie
zlikwidował oscylacji charakterystyki amplitudowej tylko je zmniejszył. Charakterystyka fazo-
wa wskazuje, że filtr Hilberta przesuwa sygnał w fazie o minus 90 stopni. Z kolei na rysunku
12.18b przedstawiono przypadek zastosowania okna Blackmana. Uzyskujemy dużą liniowość
charakterystyki w paśmie przepustowym. Dodatkowo zwiększając długość okna (linia prze-
rywana) jesteśmy w stanie zwiększyć szerokość tego pasma oraz poprawić stromość zboczy
filtra. Jak widać, w przedstawionej realizacji filtr Hilberta jest filtrem pasmowoprzepustowym.
Wraz ze wzrostem jego długości okna (właściwie dobranego) pasmo przepustowe filtra staje
się coraz szersze, a jego zbocza coraz bardziej strome, czyli charakterystyka amplitudowa filtra
coraz bardziej upodabnia się do idealnej charakterystyki „prostokątnej” (brak modyfikacji
amplitudy sygnałów tylko ich przesunięcie w fazie). Na zafalowania charakterystyki w paśmie
przepustowym można wpływać poprzez dobór okna o odpowiednio niskim poziomie listków
bocznych. I w tym przypadku często wykorzystuje się parametryczne okno Kaisera.
Projektowanie nierekursywnych filtrów cyfrowych 343
0.6 0.6
0.4 0.4
0.2 0.2
hw(n)
hw(n)
0 0
-0.2 -0.2
-0.4 -0.4
-0.6 -0.6
-10 -5 0 5 10 -10 -5 0 5 10
n n
1.2 1
1 0.8
0.8
|Hw(ejΩ)|
|Hw(ejΩ)|
0.6
0.6
0.4
0.4
0.2 0.2
0 0
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
0 0
faza Hw(ejΩ) [deg]
-45 -45
-90 -90
-135 -135
-180 -180
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.18. Filtr Hilberta. Od góry do dołu: odpowiedź impulsowa hw(n), charakterystyka amplitudowo-
-częstotliwościowa |Hw(ejΩ)|, charakterystyka fazowo-częstotliwościowa ∠ Hw(ejΩ)|. M = 10 (N = 2M+1 =
= 21). Linią przerywaną zaznaczono przypadek M = 20 (N = 2M+1 = 41)
Dla dociekliwych. Alternatywną metodą obliczenia sygnału xi(n) lub x(n) jest zastosowanie
algorytmu szybkiej transformacji Fouriera FFT i skorzystanie z zależności częstotliwościo-
wych (12.65)(12.72):
FFT ( N ) FFT −1 ( N )
x r ( n ) → X r ( e jΩk ) → X i (e jΩk ) = H (e jΩk ) X r (e jΩk ) → x i ( n )
FFT ( N ) FFT −1 ( N )
x r ( n ) → X r ( e jΩk ) → X ( e jΩk ) = W ( e jΩk ) X r ( e jΩk ) → x ( n )
gdzie
n = 0, 1, 2, ..., N−1, k = 0, 1, 2, ..., N−1, Ωk = k2π / N
344 Projektowanie nierekursywnych filtrów cyfrowych
0, k =0
− j, k = 1...( N / 2 − 1)
H (k ) = H (e jΩ k ) =
0, k = N /2
j, k = ( N / 2)...( N − 1)
i otrzymuje się na wyjściu rzeczywisty sygnał xi(n), w drugiej zaś metodzie korzysta się z wła-
ściwości (12.72), (12.73) widma sygnału analitycznego, modyfikuje się wartości Xr(k) nastę-
pującą funkcją „wagową”:
1, k =0
2, k = 1...( N / 2 − 1)
W (k ) = W (e jΩ k )=
1, k = N /2
0, k = ( N / 2)...( N − 1)
i uzyskuje się sygnał analityczny x(n). Funkcja hilb() w języku Matlab pracuje według dru-
giego scenariusza. W obu powyższych metodach należy uwzględnić okresowość widm sygna-
łów dyskretnych i ujemnych pulsacji „szukać” w górnej części widma (k = N/2, ..., N−1).
Przykłady zastosowań
y ( t ) = A(t ) e j ( ωt +φ( t ))
Jeśli A(t) > 0, wówczas |y(t)| = A(t). Tak więc obliczając |y(t)|, jesteśmy w stanie wyznaczyć
chwilową wartość amplitudy A(t) dla dowolnej chwili czasowej t, czyli dokonać demodulacji
amplitudy sygnału x(t). Przykładem może być demodulacja AM sygnału radiowego.
y1 (t ) = A1 (t ) e (
j ωt +φ1 ( t ) )
, y 2 (t ) = A2 (t )e j(ωt +φ2 (t ))
Projektowanie nierekursywnych filtrów cyfrowych 345
z (t ) = y1* (t ) y2 ( t ) = A1 (t ) A2 (t )e (
j −ωt −φ1 ( t ) +ωt +φ2 ( t ) )
= A1 (t ) A2 ( t )e ( 2
j φ ( t ) −φ1 ( t ) )
Wynika stąd, że w dowolnej chwili czasowej przesunięcie fazowe pomiędzy sygnałami x1(t)
i x2(t) może być w prosty sposób wyznaczone ze wzoru:
imag( z (t ))
∆φ(t ) = φ2 (t ) − φ1 (t ) = arctg
real (z (t ))
W przypadku dysponowania zaszumionymi sygnałami, z(t) wyznacza się ze wzoru:
T T
z (t ) = ∫ w( τ) y1* ( t + τ ) y2 ( t + τ ) d τ, ∫ w( τ ) d τ = 1
−T −T
jako ważoną średnią bieżącą iloczynu sygnałów y1*(t) i y2*(t), gdzie w(τ) jest rzeczywistą fun-
kcją wagową (co jest równoznaczne filtracji z(t) za pomocą w(t)). Jest także możliwe „odszu-
mianie” samego przesunięcia fazowego ∆φ(t).
12.6.2.Filtr różniczkujący
π
1
π ∫0
=− Ω sin(Ωn )dΩ (12.81)
∫ udv = uv − ∫ vdu
gdzie u i v są funkcjami zmiennej Ω, mającymi ciągłą pochodną. Wówczas
1
u = Ω, dv = sin(Ωn )dΩ → v = ∫ dv = ∫ sin(Ωn )dΩ = − cos(Ωn )
n
346 Projektowanie nierekursywnych filtrów cyfrowych
1 1
0.5 0.5
hw(n)
hw(n)
0 0
-0.5 -0.5
-1 -1
-10 -5 0 5 10 -10 -5 0 5 10
n n
3.5 3.5
3 3
2.5 2.5
|Hw(ejΩ)|
|Hw(ejΩ)|
2 2
1.5 1.5
1 1
0.5 0.5
0 0
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
180 180
faza Hw(ejΩ) [deg]
135 135
90 90
45 45
0 0
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.19. Filtr różniczkujący. Od góry do dołu: odpowiedź impulsowa hw(n), charakterystyka amplitu-
dowo-częstotliwościowa |Hw(ejΩ)|, charakterystyka fazowo-częstotliwościowa ∠Hw(ejΩ), M = 10 (N = 2M+
+1 = 21). Linią przerywaną zaznaczono przypadek M = 20 (N = 2M+1 = 41)
skąd otrzymujemy:
π π
1 1 1
hD (n ) = − Ω − cos(Ωn ) − ∫ − cos(Ωn ) dΩ
π n 0 0 n
π
1 1 11 cos( πn )
= − π − cos( πn ) + sin(Ωn ) = (12.82)
π n nn 0 n
Odpowiedź impulsowa filtra różniczkującego jest przedstawiona na rysunku 12.19a. Teraz po-
zostaje nam tylko ograniczyć jej długość poprzez wymnożenie z wybranym oknem czasowym
(patrz metoda okien).
Projektowanie nierekursywnych filtrów cyfrowych 347
Przykład. Na rysunku 12.19a są pokazane próbki fragmentu odpowiedzi impulsowej filtra róż-
niczkującego (12.82) dla −10 ≤ n ≤ 10 oraz odpowiadające mu charakterystyki częstotliwo-
ściowe: amplitudowa i fazowa. Odpowiadają one przypadkowi zastosowania 21-punktowego
okna prostokątnego jako funkcji „wycinającej” (hw(n) = h(n)w(n)) i mają wady związane z tą
funkcją, czyli duże oscylacje charakterystyki amplitudowej. Wzrost długości okna do 41 pró-
bek (linia przerywana) zmniejszył oscylacje i poszerzył pasmo filtra. Na rysunku 12.19b
przedstawiono przypadek zastosowania okna Blackmana jako wagowej funkcji „obserwacji”.
Uzyskano liniową charakterystykę amplitudową za cenę zmniejszenia zakresu częstotliwości,
w którym filtr różniczkuje sygnał wejściowy.
W cyfrowym przetwarzaniu sygnałów często zachodzi potrzeba (lub konieczność) zmiany czę-
stotliwości próbkowania sygnałów cyfrowych już spróbkowanych. Przykładem mogą być sy-
stemy radiowe, w których dokonuje się konwersji bardzo różnych częstotliwości próbkowania
sygnałów (np. 8; 11,025; 16; 22,05; 24; 32; 44,1; 48 kHz) podczas ich odtwarzania w zależ-
ności od częstotliwości pracy wyjściowego przetwornika cyfrowo-analogowego. Często też
miksuje się (dodaje) różne sygnały radiowe po stronie cyfrowej, a to wymaga, aby dodawane
sygnały były identycznie spróbkowane.
Dokonując zmiany częstotliwości próbkowania sygnałów dyskretnych x(n) należy pamiętać
o konieczności spełnienia twierdzenia Nyquista (Kotielnikowa-Shannona), według którego
częstotliwość próbkowania sygnału musi być minimum dwa razy większa od maksymalnej
częstotliwości występującej w sygnale. Co prawda twierdzenie to zostało już uwzględnione
podczas pierwotnego próbkowania sygnału, ale także obowiązuje podczas jego dalszego
„repróbkowania” po stronie cyfrowej.
Do zmiany częstotliwości próbkowania sygnałów dyskretnych wykorzystuje się układy K-krot-
nego interpolatora i L-krotnego decymatora cyfrowego. Ich schematy blokowe są przedsta-
wione na rysunku 12.20. Składają się one, odpowiednio, z K-krotnego ekspandera oraz L-krot-
nego reduktora, które współpracują z dolnoprzepustowymi filtrami o odpowiedziach impulso-
wych h(n) i g(n). Pierwszy z tych filtrów jest nazywany filtrem interpolującym, a drugi − fil-
trem decymującym. Zasada działania ekspandera i reduktora cyfrowego jest pokazana rysunku
12.21. Układy interpolatora i decymatora mogą być połączone kaskadowo i wówczas umożli-
wiają zmianę częstotliwości próbkowania w stosunku K/L. W takim przypadku należy za-
stososować filtr o węższym paśmie przepustowym. Należy pamiętać, aby w kaskadzie inter-
polator wyprzedzał decymator. W przypadku interpolacji lub decymacji wysokiego rzędu, np.
100-krotnej, ze względów obliczeniowych jest korzystnie przeprowadzać ją stopniowo w ukła-
dzie kaskadowym, na przykład decymując najpierw sygnał 25-krotnie, a potem 4-krotnie.
Spowodowane to jest dużą długością filtrów decymujących i interpolujących w przypadku
jednoczesnego wymagania dużej stromości charakterystyki amplitudowo-częstotliwościowej
i wąskiego pasma przepustowego filtra.
a) interpolator b) decymator
Rys. 12.20. Schemat blokowy układu: intepolatora cyfrowego K-tego rzędu (po lewej) oraz decymatora cy-
frowego L-tego rzędu (po prawej)
x(n) x(n)
0 1 2 3 4 5 6 7 8 n 0 1 2 3 4 5 6 7 8 n
xe(n) xr(n)
0 1 2 3 4 5 6 7 8 9 n 0 1 2 3 4 5 6 7 8 9 n
ekspander reduktor
Rys. 12.21. Ilustracja graficzna zasady działania ekspandera i reduktora cyfrowego drugiego rzędu
(K = L = 2). Ekspander wstawia K−1 zer pomiędzy każde dwie próbki, reduktor zaś pozostawia co L-tą
próbkę
Filtr interpolatora
K-krotnym interpolatorem cyfrowym nazywa się układ, który zastępuje każdą próbkę sygnału
K próbkami, czyli zwiększa K-krotnie częstotliwość próbkowania. Jego schemat blokowy jest
przedstawiony na rysunku 12.20a. Co prawda od dawna są powszechnie znane różne wymyślne
Projektowanie nierekursywnych filtrów cyfrowych 349
1 sin( πn / K )
h(n) = K , − ∞ < n < ∞ (12.83)
K πn / K
Jest to K-krotnie wzmocniona odpowiedź impulsowa filtra dolnoprzepustowego (12.56). Rów-
nanie (12.83) opisuje dyskretny sygnał postaci sin(x)/x (gasnące oscylacje), który się zeruje dla
n = pK (p to dowolna liczba całkowita), za wyjątkiem n = 0, dla którego przyjmuje wartość
h(0) = 1. Powoduje to, że w wyniku filtracji nie są modyfikowane znane („stare”) próbki
sygnału. Cała operacja interpolacji cyfrowej jest szczególnym przypadkiem rekonstrukcji syg-
nału analogowego na podstawie jego próbek (patrz rozdział 4.5 i rysunek 4.13). Jednak w tym
przypadku interesuje nas nie „cały”, ciągły fragment sygnału, leżący pomiędzy dowolnymi
dwoma jego próbkami, tylko dodatkowe K−1 równoodległe wartości.
W praktyce występuje konieczność ograniczenia długości filtra (12.83), dlatego wymnaża się
go z wybranym oknem w(n) (patrz rozdział 12.4 − metoda okien),
hw ( n ) = w(n )h( n ), − ∞ ≤ n ≤ ∞ (12.84)
h w (n)
0.25 0.25
0 0
-0.25 -0.25
-15 -10 -5 0 5 10 15 -15 -10 -5 0 5 10 15
n n
6 6
5 5
4 4
|Hw(ejΩ)|
|Hw(ejΩ)|
3 3
2 2
1 1
0 0
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
20 20
0 0
|Hw(ejΩ)| [dB]
|Hw(ejΩ)| [dB]
-20 -20
-40 -40
-60 -60
-80 -80
-100 -100
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Ω/2π [Hz/Hz] Ω/2π [Hz/Hz]
Rys. 12.22. Filtr interpolujący piątego rzędu (K = 5): a) odpowiedź impulsowa hw(n), b) charakterystyka
amplitudowo-częstotliwościowa |Hw(ejΩ)|. M = 15 (N = 2M+1 = 31). Co piąta próbka odpowiedzi impulso-
wych się zeruje
1
0.8
x we(n), y wy (n)
0.6
0.4
0.2
0
0 5 10 15 20 25 30 35 40 45 50
numer próbki n
Rys. 12.23. Wynik eksperymentalnej weryfikacji zastosowania odpowiedzi impulsowej filtra interpolu-
jącego z rysunku 12.12b (K = 5) do sygnału sinusoidalnego. Oznaczenia: − próbki oryginalne, z − dodane
zera, { − przesunięte zera w wyniku filtracji dolnoprzepustowej, © − operacja przesuwania próbek
Projektowanie nierekursywnych filtrów cyfrowych 351
Dla dociekliwych. Filtry K-krotnie interpolujące nie wyczerpują oczywiście możliwości inter-
polacji sygnałów dyskretnych. Ich ograniczeniem jest zawsze całkowitoliczbowa krotność in-
terpolacji. W przypadku kiedy interesuje nas interpolacja „wymierna”, nie K-krotna, np. N pró-
bek sygnału chcemy zastąpić M próbkami (M > N), możemy do tego celu wykorzystać algo-
rytm dyskretnej transformacji Fouriera DFT. Należy wówczas: 1) obliczyć DFT z N próbek
sygnału x(n), 2) w odpowiedni sposób dodać (M−N) wartości zerowych w środku N-elemen-
towego wektora prążków widma X(k) (zmodyfikowany wektor powinien mieć cechy widma
Fouriera sygnału rzeczywistego, czyli powinien być asymetryczny względem próbki M/2 przy
numerowaniu od 0 do M−1), 3) obliczyć M-punktowe odwrotne DFT ze zmodyfikowanego
widma X(k), 4) przeskalować wynik w amplitudzie za pomocą współczynnika M/N. Uzyskamy
w ten sposób M próbek sygnału x’(n) odległych o (N/M)⋅∆t, gdzie ∆t oznacza odległość pomię-
dzy próbkami sygnału oryginalnego x(n). Przykładowo dla parzystej wartości N i dowolnej
wartości M (M > N) do interpolacji sygnału może być zastosowany poniższy program, napi-
sany w języku Matlab:
Filtr decymatora
L-krotnym decymatorem cyfrowym nazywa się układ, który pozostawia w sygnale cyfrowym
co L-tą próbkę, czyli zmniejsza L-krotnie częstotliwość próbkowania. Jego schemat blokowy
jest przedstawiony na rysunku 12.20b. Aby spełnić wymagania twierdzenia o próbkowaniu,
przed układem L-krotnego reduktora (rysunek 12.21b) należy L-krotnie ograniczyć pasmo
sygnału za pomocą L-krotnego filtra decymującego o odpowiedzi impulsowej g(n). Jest to
filtr dolnoprzepustowy mający pulsację graniczną pasma zaporowego Ωstop = π/L. Jest to
jego podstawowa różnica w stosunku do filtra interpolacyjnego, dla którego podaje się w fazie
projektowania graniczną, 3-decybelową pulsację pasma przepustowego Ω3dB = π/K. Nie
powinno to dziwić. Zadaniem filtra decymującego jest bowiem redukcja zjawiska przecieku
widmowego. Ponieważ do projektowania filtrów decymujących wykorzystuje się standardowe
procedury projektowania filtrów cyfrowych, w których zakłada się Ωstop = π/L, filtry te nie będą
obecnie szerzej omawiane.
dzane przez filtr zazwyczaj nie ma dla nas znaczenia. Sytuacja jest jednak diametralnie inne
dla filtrów przesuwających w fazie, różniczkujących i interpolujących. Wówczas chcielibyśmy
umieć powiązać odpowiadające sobie próbki wejściowe i wyjściowe. Ponieważ jest to bardzo
ciekawe zagadnienie dotyczące wszystkich filtrów typu FIR, rozpatrywanych w rozdziale 12,
dlatego szczegółowo omówimy go w następnym punkcie.
clear all;
M = 20; % połowa długości filtra (cały N=2*M+1)
typ = 1; % 1 = Hilberta, 2 = różniczkujący, 3 = interpolujący (K-krotnie)
N=2*M+1; n = 1 : M;
% Rysunki
stem(m,h); grid; title('h(n)'); xlabel('n'); pause
stem(m,hw); grid; title('hw(n)'); xlabel('n'); pause
plot(fn,abs(H)); grid; title('|H(fn)|'); xlabel('f norm]'); pause
plot(fn,abs(HW)); grid; title('|HW(fn)|'); xlabel('f norm]'); pause
plot(fn,unwrap(angle(H))); grid; title('kąt H(fn) [rd]'); xlabel('f norm'); pause
plot(fn,unwrap(angle(HW))); grid; title('kąt HW(fn) [rd]'); xlabel('f norm'); pause
gdzie A(Ω) jest funkcją przyjmującą wyłącznie wartości rzeczywiste, a M jest parametrem „po-
łowy” długości filtra. Wynika stąd, że charakterystyka fazowa Ψ(Ω) filtra jest równa:
Ψ (Ω) = − M Ω (12.86)
o czym świadczy powyższa, stała wartość opóźnienia grupowego tg(Ω) równa −M.
Jeśli przez N oznaczymy liczbę próbek odpowiedzi impulsowej filtra, to M = (N−1)/2. M jest
liczbą całkowitą dla nieparzystej długości filtra N (np. dla N = 21 mamy M = 10) oraz liczbą
ułamkową dla długości parzystej (np. dla N = 20 mamy M = 9,5). W niniejszym rozdziale pro-
jektowaliśmy wyłącznie filtry typu FIR mające nieparzystą liczbę współczynników wagowych
(patrz rysunki 12.4 a, d, 12.5 a, 12.7 (góra), 12.18 (góra), 12.19 (góra), 12.22 (góra)).
Wytłumaczymy teraz pochodzenie opóźnienia czasowego, wprowadzanego przez filtr, na przy-
kładzie metody okien (podrozdział 12.5). Teoretyczna odpowiedź impulsowa h(n) rozpatry-
wanych filtrów FIR jest nieograniczona w czasie oraz nieprzyczynowa, tzn. różna od zera dla
n < 0 (rys. 12.9 a). Po wymnożeniu z ograniczającą funkcją okna w(n) o długości N = 2M+1
otrzymujemy hw(n), które dalej jest nieprzyczynowe, ponieważ ma niezerowe próbki hw(−M ),
..., hw(0), ..., hw(M), czyli dla −M ≤ n ≤ M (rys. 12.9 c). Oznacza to, że w celu wyznaczenia
wartości próbki sygnału wyjściowego y(0), musimy dysponować próbkami wejściowymi
x(−M ), ..., x(0), ..., x(M), czyli także przyszłymi. Dlatego dodatkowo przesuwamy zokienko-
waną odpowiedź impulsową hw(n) w prawo o M próbek i otrzymujemy hw(M)(n) (rys. 12.9 d).
Jest to już o g r a n i c z o n a w c z a s i e (2M+1 próbek) i p r z y c z y n o wa (równa zero dla n < 0)
odpowiedź impulsowa, która, zgodnie z algorytmem filtracji (12.1), korzysta tylko z N ostat-
354 Projektowanie nierekursywnych filtrów cyfrowych
x(n) 1 2 3 4 5 6 7 nr próbki
9 krok 9
8 krok 8
7 krok 7
3 krok 3
2 krok 2
h(−n) 1 1 krok 1
y(n) 1 2 3 4 5 6 7 8 9 nr próbki
Rys. 12.24. Ilustracja graficzna opisanej zasady „synchronizowania” („fazowania”) próbek wejściowych
i wyjściowych filtra cyfrowego typu FIR. Oznaczenia: x(n) − sygnał wejściowy (Nx = 7), h(−n) − wagi filtra
(N = 2M+1 = 3), y(n) − sygnał wyjściowy (Ny = Nx+N−1 = 9). Odpowiadają sobie próbki {x(2), x(3), ...,
x(6)} oraz {y(3), y(4), ..., y(7)}, czyli {x(M+1), ..., x(Nx−M)} i {y(N), ..., y(Nx) }
a) b)
x(n) 1 2 3 x(n) 1 2 3 4
y(n) 1 2 3 y(n) 1 2 3 4
Rys. 12.25. Ilustracja graficzna synchronizowania próbek wejściowych i wyjściowych filtra cyfrowego typu
FIR w przypadku: a) nieparzystej długości odpowiedzi impulsowej filtra (N = 3), b) parzystej długości
(N=4)
tatnich próbek wejściowych x(0), x(−1), ..., x(N−1). Jednak opóźnienie o M próbek odpowiedzi
impulsowej hw(n) powoduje także opóźnienie sygnału wyjściowego z filtra. W związku z tym
zerowa próbka wyjściowa y(M)(0) z filtra opóźnionego jest równa y(0−M), a próbka pierwsza
y(M)(1) − y(0 − (M−1)). Dopiero M-ta próbka wyjściowa y(M)(M) z filtra opóźnionego jest równa
y(0) i odpowiada próbce wejściowej x(0), czyli jest z nią „zsynchronizowana”.
Na rysunku 12.24 jest przestawiona ilustracja graficzna opisanej wyżej zasady „synchroni-
zowania” („fazowania”) próbek wejściowych i wyjściowych filtra cyfrowego typu FIR. Sied-
miopróbkowy (Nx = 7) sygnał x(n) oznacza sygnał wejściowy, natomiast dziewięciopróbkowy
(Ny = Nx+N−1 = 9) sygnał y(n) jest sygnałem wyjściowym. Sygnał x(n) jest wymnażany
z trzypunktową (N = 2M+1=3), odwróconą w czasie, przesuwającą się odpowiedzią impulsową
filtra h(−n), np. Hilberta, która jest (a)symetryczna. Każda próbka sygnału y(n) jest wynikiem
sumy iloczynów odpowiednich próbek sygnałów x(n) oraz h(−n), analogicznie jak na rysunku
1.8. Numer wyznaczonej próbki sygnału y(n) jest równy największemu numerowi próbki
sygnału x(n), „widzianemu” przez odpowiedź impulsową h(−n) w kolejnym kroku (prze-
Projektowanie nierekursywnych filtrów cyfrowych 355
sunięciu), zmieniającym się od 1 do 9. W ten sposób wyznaczane są próbki: y(1), y(2), ..., y(9).
Odpowiadają one numerom próbek sygnału x(n) „wskazywanym” przez czarną próbkę środ-
kową wag h(−n), czyli x(0), x(1), ..., x(8). Poprawne wartości y(n) są obliczane tylko wtedy,
kiedy wszystkie wagi filtra h(−n) są wymnażane z próbkami sygnału x(n). W rozpatrywanym
przypadku są to próbki y(3), y(4), ..., y(7), odpowiadające „środkowym” próbkom x(2), x(3),
..., x(6). Pozostałe próbki sygnału y(n) reprezentują stan przejściowy „najeżdżania” i „zjeż-
dżania” wag h(−n) na próbki sygnału x(n).
W ogólności, w opisanym powyżej algorytmie filtracji próbki wyjściowe y(N), ..., y(Nx) odpo-
wiadają próbkom wejściowym x(M+1), ..., x(Nx−M).
Dla filtrów o długości nieparzystej sytuacja jest podobna. W tym przypadku nie jest jednak
możliwe dokładne zsynchronizowanie próbek sygnałów y(n) i x(n), ponieważ te pierwsze są
przesunięte w stosunku do tych drugich o 1/2 próbki. Sytuacja taka jest przedstawiona na
rysunku 12.25b. Załóżmy przykładowo, że (a)symetryczna odpowiedź impulsowa filtra h(n)
(np. z rysunku 12.9 a, c) składa się tylko z czterech współczynników (N = 4). Biorąc pod
uwagę zakładaną (a)symetrię względem zerowej chwili czasowej (h(−n) = ± h(n)), powinny
być one wtedy numerowane w sposób następujący: n = −3/2, −1/2, 1/2, 3/2. Jeśli wówczas
w wyniku filtracji jest wyznaczana na przykład próbka y(4), to odpowiada ona próbce
„środkowej” sygnału wejściowego x(2,5), którą nie dysponujemy. W przypadku filtrów FIR
o nieparzystej liczbie współczynników, problem ten nie występuje, co pokazano na rysunku
12.25a.
13
Algorytmy filtracji cyfrowej
gdzie x(n) oznacza sygnał wejściowy, y(n) to sygnał wyjściowy, a współczynniki wagowe
bm i ak decydują o właściwościach częstotliwościowych układu (i o jego stabilności). Schemat
obliczeniowy filtra (13.1) został już przedstawiony na rysunku 10.4. Obecnie przyjrzymy się
bliżej „anatomii” tego układu. Na rysunkach 13.1a oraz 13.1b są pokazane układy dwóch naj-
prostszych filtrów cyfrowych. Blok oznaczony przez „z−1” jest układem opóźniającym sygnał
o jedną próbkę. Pierwszy z tych układów (rys. 13.1a) jest filtrem nierekursywnym, w którym
sygnał wyjściowy y(n) jest ważoną sumą dwóch ostatnich próbek wejściowych: obecnej x(n)
oraz poprzedniej x(n−1). Wartości wag b0 i b1 decydują o charakterze „częstotliwościowym”
filtracji, to znaczy w jaki sposób są „przepuszczane” przez układ poszczególne częstotliwości
Algorytmy filtracji cyfrowej 357
wejściowe. Drugi układ (rys. 13.1b) jest filtrem rekursywnym, mającym sprzężenie zwrotne.
W tym przypadku każda kolejna próbka wyjściowa y(n) jest ważoną sumą aktualnej próbki
wejściowej x(n) oraz poprzedniej próbki wyjściowej y(n−1). Z powodu sprzężenia zwrotnego
układ może być niestabilny, jeśli waga a1 nie zostanie właściwie dobrana (przypomnijmy: bie-
guny transmitancji układu dyskretnego powinny leżeć wewnątrz okręgu o promieniu jedno-
stkowym). Na rysunku 13.1c pokazano filtr cyfrowy, który powstał w wyniku kaskadowego
połączenia filtrów z rysunków 13.1a i 13.1b. Ponieważ filtry „składowe” są liniowe, ich kolej-
ność nie ma znaczenia. Dlatego pod względem funkcjonalnym (x(n) → y(n): y(n) = f(x(n))
układ przedstawiony na rysunku 13.1d przetwarza sygnał wejściowy w sposób identyczny jak
układ z rysunku 13.1c.
z−1 z−1
b1 −a1
x(n−1) y(n−1)
Jak widać filtry cyfrowe są przedstawiane za pomocą grafów „przepływowych”, w których in-
formacja przepływa z węzła do węzła i jest pomiędzy tymi węzłami przetwarzana: mnożona
przez współczynniki skalujące oraz opóźniana. W teorii grafów liniowych obowiązuje zasada
transpozycji, według której, jeśli zmienimy kierunek przepływu danych na przeciwny, to uzys-
kamy tzw. układ transponowany, który realizuje taką samą funkcję jak układ oryginalny. Na
rysunku 13.2 przedstawiono kolejne kroki wyznaczenia struktur filtrów cyfrowych, które sta-
nowią transpozycje układów z rysunków 13.1a i 13.1b. Z kolei rysunek 13.3 stanowi „powtó-
rzenie” rysunku 13.1 tylko dla filtrów transponowanych. Na rysunku 13.2a i 13.2b są przedsta-
wione transponowane wersje prostych filtrów cyfrowych z rysunków 13.1a i 13.1b. Można je
wykorzystać do tworzenia „transponowanych” układów złożonych, pokazanych na rysunkach
13.3c i 13.3d, różniących się jedynie kolejnością występowania układów składowych.
358 Algorytmy filtracji cyfrowej
z−1 z−1
b1 −a1
x(n−1) y(n−1)
z−1 z−1
b1 −a1
z−1 z−1
b1 −a1
Rys. 13.2. Ilustracja zasady transpozycji filtrów cyfrowych (zmiana kierunku przepływu danych na prze-
ciwny)
a) y ( n ) = b0 x ( n ) + b1 x ( n − 1) b) y ( n ) = x ( n ) − a1 y ( n − 1)
z−1 z−1
b1 −a1
c) w( n ) = b1 x ( n ) − a1 y ( n ), y ( n ) = b0 x( n ) + w( n − 1)
x(n) b0 y(n) x(n) b0 y(n)
Rys. 13.3. Transponowane struktury najprostszych filtrów cyfrowych typu FIR i IIR z rysunku 13.1
Algorytmy filtracji cyfrowej 359
1 + 2 z −1 + z − 2
H (1) ( z ) = (13.2)
1 − 0,9 z −1 + 0,2 z −2
−4 + 6,5z −1 49 45
H (2) ( z ) = 5 + −1 −2
, H (3) ( z ) = 5 − −1
−
1 − 0,9 z + 0,2 z 1 − 0,4 z 1 − 0,5z −1
1 + z −1 1 + z −1
H (4) ( z ) =
1 − 0,4 z −1
1 − 0,5z −1 ( )(
, H (5) ( z ) = 1 + z −1 1 + z −1
1
)
−1
1
−1
1 − 0,4 z 1 − 0,5z
360 Algorytmy filtracji cyfrowej
z−1 z−1
b1 −a1
x(n−1) y(n−1)
−1 −1
z z
b2 −a2
x(n−2) y(n−2)
−1 −1
z z
b2 −a3
x(n−3) y(n−3)
z−1 z−1
b1 −a1
z−1 z−1
b2 −a2
z−1 z−1
b3 −a3
Rys. 13.4. Podstawowa struktura filtrów typów: „tylko FIR" i „tylko IIR” i ich wersje transponowane
Rys. 13.5. Kaskadowe połączenie filtrów typów „tylko FIR” i „tylko IIR” – podstawowa struktura filtra
cyfrowego typu I
Algorytmy filtracji cyfrowej 361
Rys. 13.6. Kaskadowe połączenie filtrów typów „tylko IIR” i „tylko FIR” – podstawowa struktura filtra
cyfrowego typu II
Rys. 13.7. Wersje transponowane filtrów cyfrowych typu I i typu II z rysunków 13.5 i 13.6
s1 (n + 1) = −a1s1 (n ) − a 2 s2 (n ) + x (n )
s2 (n + 1) = s1 ( n ) (13.3)
y ( n ) = c1s1 ( n ) + c2 s2 (n ) + dx ( n )
s(n + 1) = As(n ) + bx ( n )
t (13.4)
y (n ) = c s(n ) + dx ( n )
gdzie:
−a − a2 1 s1 (n )
A= 1 , b = , c t = [ c1 c2 ] , s( n ) = (13.5)
1 0 0 s2 (n )
362 Algorytmy filtracji cyfrowej
a) H(1)(z) 1 y(n)
x(n)
z−1 z−1
2 0.9
x(n−1) y(n−1)
z−1 z−1
1 −0.2
x(n−2) y(n−2)
5
(2)
b) H (z) 5 (3)
c) H (z)
−49 y(n)
x(n)
−4 y(n)
x(n)
-1
z−1
−1 −1 0.4
z z
6.5 0.9 45
x(n−1) y(n−1)
z−1 -1
z−1
−0.2 0.5
y(n−2)
d) H(4)(z) 1 1 y(n)
x(n)
e) H(5)(z) 1 1 y(n)
x(n)
Rys. 13.8. Schematy blokowe układów dyskretnych, realizujących różne zapisy transmitancjiH(z) (13.2)
−a1 − a2 − a3 1 s1 ( n )
A= 1 0 0 , b = 0 , c t = [ c1 c2 c3 ] , s( n ) = s2 ( n ) (13.6)
0 1 0 0 s3 ( n )
Algorytmy filtracji cyfrowej 363
a) b)
d d
−a 1 c1
z−1
s2(n)
−a 2 c2
Rys. 13.9. Rekursywny filtr cyfrowy drugiego rzędu w zapisie zmiennych stanu. Dwie zmienne stanu s1(n)
i s2(n): a) pełny schemat blokowy, b) macierzowy schemat blokowy, zgodny z równaniami (13.4),(13.5)
Sygnały wewnętrzne filtra sk(n) są nazywane zmiennymi stanu, ponieważ podczas jego pracy
zmieniają swój stan, zgodnie z równaniem (13.4). Macierzowy schemat blokowy cyfrowego
filtra rekursywnego jest przedstawiony na rysunku 13.9b. Układ ten ma transmitancję H(z) da-
ną wzorem:
∞ ∞ −1
∑ c A n −1 bz − n = d + z −1 c ∑ A k z − k b = d + z −1 c [ zI − A ] b
t t t
H ( z) = d + (13.7)
n =1 k =0
wszystko, otwórzmy jeszcze jedne drzwi, które do tej pory cały czas pozostawały zamknięte,
a prowadzące do krainy filtrów nieliniowych.
Jeśli bowiem działanie układu dyskretnego sprowadza się do obliczania liczb wyjściowych na
podstawie liczb wejściowych, to dlaczego się ograniczać tylko do równania (10.48). Można
przecież na wyjście układu „wyrzucać” wartości związane np. z pierwiastkami lub logarytmami
liczb wejściowych, lub też wymyślać różne logiczne (kontekstowe) reguły „sąsiedztwa” próbek
wejściowych dokładnie określające jaka wartość powinna się znaleźć na wyjściu układu.
W literaturze jest definiowanych wiele „filtrów” działających w sposób nieliniowy. Jednym
z nich są na przykład sieci neuronowe. Filtry nieliniowe są szeroko stosowane w przetwarzaniu
obrazów cyfrowych.
Najprostszym filtrem nieliniowym jest filtr medianowy. Zasada jego pracy jest bardzo prosta.
Filtr medianowy N-tego rzędu (załóżmy N = 2M−1):
1) zawsze pamięta N ostatnich próbek sygnału wejściowego w buforze roboczym:
{x (n − ( N − 1), x(n − ( N − 2), ..., x (n − 2), x(n − 1), x (n )}
2) porządkuje te próbki od wartości najmniejszej do największej,
{x1 (n ) ≤ x 2 (n ) ≤ ... x M −1 ( n ) ≤ x M (n ) ≤ x M +1 (n ) ≤ ... ≤ x N −1 (n ) ≤ x 2 M −1 (n )}
3) dla każdej chwili czasowej n podaje na wyjście układu medianę powyższego zbioru, czyli
próbkę środkową xM(n).
Wielką zaletą takiego filtra jest usuwanie zakłóceń impulsowych z sygnału, gdyż zakłócenia te
jako liczby zdecydowanie różniące się od pozostałych in minus lub in plus zawsze powinny się
znaleźć na początku lub na końcu zbioru wartości uporządkowanych rosnąco, czyli nie powin-
ny być „przekazane” na wyjście układu. Im N jest większe, tym dłuższe impulsy jest w stanie
„połykać” filtr medianowy.
w której nie występuje sprzężenie zwrotne z wyjścia filtra. Równanie (13.8) reprezentuje sobą
splot próbek sygnału wejściowego x(n) ze skończoną liczbą wag filtra bm, m = 0, 1, 2, ..., M,
według schematu blokowego przedstawionego na rysunku 13.4a (dla M = 3). Wagi te mogą
być interpretowane jako próbki odpowiedzi impulsowej filtra bm = h(m), m = 0, 1, 2, ..., M. Jak
wiemy z (8.11) splot w dziedzinie czasu dwóch nieskończonych, dyskretnych sygnałów jest
równoważny iloczynowi w dziedzinie częstotliwości ich ciągłych widm Fouriera (8.8a):
( ) ( ) ( )
Y e jΩ = H e jΩ X e jΩ (13.9)
Na podstawie Y(ejΩ) metodą odwrotnej transformacji Fouriera (8.8b) można wyznaczyć sygnał
y(n). Zamiast splatać ze sobą sygnały h(n) i x(n) zgodnie z (13.8) moglibyśmy więc obliczyć
numerycznie ich widma Fouriera H(ejΩ) i X(ejΩ), wymnożyć je i wyznaczyć sygnał y(n) jako
wynik odwrotnej transformacji Fouriera z iloczynu H(ejΩ)X(ejΩ):
(
y ( n ) = F −1 H ( e j Ω ) X ( e j Ω ) ) (13.10)
Szkopuł w tym, że w wersji „ciągłej” powyższą metodę możemy zastosować jedynie „na pa-
pierze” (analitycznie), gdyż widma H(ejΩ) i X(ejΩ) są wyznaczone z (8.8a) dla „ciągłej” zmiany
pulsacji unormowanej Ω w przedziale (−π, π). Dodatkowo X(ejΩ) powinno być obliczone z nie-
skończonej liczby próbek sygnału x(n). Także odwrotna transformacja Fouriera w postaci cał-
kowej stanowi problem obliczeniowy.
Koniecznością jest więc zastosowanie równań prostej (DFT) i odwrotnej (IDFT) dyskretnej
transformacji Fouriera (8.15) (0 ≤ n ≤ N−1, 0 ≤ k ≤ N−1):
N −1 2π N −1 2π
−j kn 1 j kn
X ( k ) = DFT ( N ) ( x ) = ∑ x ( n )e N , x (k ) = IDFT ( N ) ( X ) =
N
∑ X ( k )e N (13.11)
n =0 k =0
w stosunku do posiadanych zbiorów próbek sygnałów h(n) i x(n) z równania (13.8). W tym
przypadku trzeba w razie potrzeby oba sygnały uzupełnić na końcu zerami, tak aby każdy
z nich składał się z N próbek. Transformacja DFT charakteryzuje się także właściwością splotu
(8.20):
N −1
y(n) = ∑ h((m) N )x((n − m) N ) ⇔ Y (k ) = H ( k ) X (k ), k = 0, 1, 2, ..., N − 1 (13.12)
m=0
ale w odróżnieniu od (8.11), z racji swojej okresowości, jest „realizowany” z jej pomocą splot
k o ł o wy (cykliczny) a nie l i n i o wy . W wyniku sekwencji operacji:
(
y ( n ) = IDFT ( N ) DFT ( N ) (h ) ⋅ DFT ( N ) ( x ) ) (13.13)
otrzymujemy więc sygnał, który jest wynikiem kołowego splotu sygnałów h(n) i x(n) (po uzu-
pełnieniu zerami), a nie wynikiem ich splotu liniowego. W wyjaśnieniu równania (13.12) skon-
centrujemy się na jego drugim, alternatywnym zapisie:
N −1
y(n) = ∑ x((m) N )h((n − m) N ) ⇔ Y (k ) = X (k ) H (k ), k = 0, 1, 2, ..., N − 1 (13.14)
m=0
Oznaczenie h((n−m)N) należy interpretować tak jak w przypadku splotu liniowego (patrz roz-
dział 1.3.6 i rysunek 1.9), ale teraz indeksowanie próbek odbywa się modulo N: (n−m)N =
= (n−m)mod(N). Przykładowo: h((−1)N) = h(N−1), h((−2)N) = h(N−2), h(−3)N) = h(N−3) itd. Prób-
366 Algorytmy filtracji cyfrowej
ka o numerze leżącym poza „zakresem” jest zastępowana więc przez odpowiadającą jej próbkę
o indeksie z przedziału 0...N−1. „Cyklicznie” odnosimy się więc do próbek h(m), m = 0...N−1.
Poniżej przedstawiono ilustracje graficzne pokazujące różnicę pomiędzy splotem liniowym
dwóch sygnałów a ich splotem kołowym modulo(N).
Splot liniowy
Ponieważ klasyczna, nierekursywna filtracja cyfrowa (13.8) jest operacją splotu sygnału x(n)
z odpowiedzią impulsową filtra h(n) i jej zrozumienie ma podstawowe znaczenie w przetwa-
rzaniu sygnałów dyskretnych, teraz jeszcze raz zaprezentujemy przykład graficzny, będący
przypomnieniem rysunku 1.8. Na rysunku 13.10 pokazano kolejne etapy splotu liniowego
dwóch sygnałów dyskretnych x(k) i h(k). Oba sygnały są identyczne i mają tylko trzy próbki
niezerowe równe 1 dla k = 0, 1, 2. W pierwszym kroku drugi z sygnałów jest odwracany „w
czasie”, w wyniku czego otrzymujemy h(−k). W drugim kroku są mnożone parami wszystkie
próbki sygnałów x(k) i h(−k) dla tej samej wartości k: x(k)h(−k). W trzecim kroku wszystkie
iloczyny są sumowane, a otrzymana w ten sposób liczba jest traktowana jako wartość sygnału
wyjściowego z filtra w chwili „zerowej”: y(0) = ∑k[x(k)h(−k)]. Następnie sygnał h(−k) jest
przesuwany o jedną próbkę w prawo i są powtarzane kroki dwa i trzy, ale dla sygnału h(1−k).
Otrzymana w ten sposób liczba stanowi wyjście filtra w chwili „pierwszej: y(1) = ∑k[x(k)⋅
⋅h(1−k)]. I cała operacja powtarza się ponownie. Po n0 przesunięciach sygnału h(−k) w prawo
otrzymujemy więc próbkę sygnału wyjściowego o numerze n0, stanowiącą wynik splotu:
y(n0) = ∑k[x(k)h(n0−k)]. Jak widać splot linowy to nic trudnego. Raczej nie powinien straszyć
nas po nocach.
Splot kołowy
Pora więc przystąpić do przedstawienia idei splotu kołowego. Na początku musimy się jednak
zaznajomić z pojęciem przesunięcia „kołowego” („cyklicznego”). Jego ilustrację stanowi rysu-
nek 13.11. Podczas analizy danych zawsze dysponujemy skończoną liczbą próbek sygnału, na
przykład załóżmy, że posiadamy tylko pięć próbek sygnału x(k), k = 0, 1, 2, 3, 4. Załóżmy, że
w sposób sztuczny „uokresawiamy” nasz sygnał powtarzając „w nieskończoność” naszych pięć
próbek dla indeksów k ujemnych i dodatnich. Otrzymujemy w ten sposób okresowy sygnał
xp(k). Oczywiście w jego „środku” znajduje się „protoplasta” całej konstrukcji, wzięty na ry-
sunku w ramkę. Następnie przesuwajmy kolejno sygnał xp(k) o jedną próbkę w prawo, ale bez
ramki „protoplasty”.
Uzyskujemy w ten sposób sygnały xp(k−1), xp(k−2), xp(k−3) itd. Patrząc na nie przez ramkę,
mamy wrażenie, że obserwujemy przez okno przejeżdżający pociąg: to co znika po prawej
stronie pojawia się ponownie po lewej stronie. Tak jakby „protoplasta” sam kręcił się w ramce
w kółko. Pokazuje to prawa kolumna rysunków. Kołowe przesunięcie „protoplasty” może być
interpretowane jako następstwo indeksowania jego próbek w trybie modulo 5: x((k−n0)mod(5)),
gdzie k = 0, 1, 2, 3, 4, a n0 jest dowolną liczbą całkowitą odpowiedzialną za przesunięcie.
Przykładowo dla k = 2 i n0 = 1 mamy: x((2−1)mod(5)) = x((1)mod(5)) = x(1), a dla k = 2 i n0 = 3
otrzymujemy: x((2−3)mod(5)) = x((−1)mod(5)) = x(4). Na rysunku 13.11 sygnał „kołowy” („cykli-
czny”) oznaczono jako xmod(5)(k).
x(k) x(k) x(k) x(k)
1 1 1 1
k k k k
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
2 2 2 2
1 1 1 1
n n n n
-4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6 -4 -3 -2 -1 0 1 2 3 4 5 6
Rys. 13.10. Ilustracja graficzna splotu liniowego dwóch prostokątnych sygnałów dyskretnychx(k) i h(k)
368 Algorytmy filtracji cyfrowej
Aby przejść do wyjaśnienia operacji splotu kołowego musimy jeszcze zademonstrować wynik
odwrócenia „w czasie” sygnału „uokresowionego” xp(k) i związanego z nim sygnału „koło-
wego” xmod(5)(k), czyli sygnałów xp(−k) oraz xmod(5)(−k) (patrz rysunek 13.12). Oczywiście
kształt sygnału xp(−k) nie jest dla nas zaskoczeniem, ale postać xmod(5)(−k) dla k = 0, 1, 2, 3, 4,
na pierwszy rzut oka dziwi. A nie powinna. Przecież xmod(5)(−k) = x((−k)mod(5)), a stąd dla k =
= 0, 1, 2, 3, 4 mamy:
x(( 0)mod(5)) = x(0)
x((−1)mod(5)) = x(4)
x((−2)mod(5)) = x(3)
x((−3)mod(5)) = x(2)
x((−4)mod(5)) = x(1)
Po tym treningu możemy się już wypuścić na „szerokie wody”. Splot kołowy dwóch iden-
tycznych sygnałów dyskretnych x(k) i h(k) o długości N = 5 próbek jest przedstawiony na
rysunku 13.13. Dla k = 0, 1 i 2 przyjmują one wartość jeden, a dla k = 3 i 4 − wartość zero.
W splocie kołowym indeksowanie próbek sygnału h(k) jest wykonywane w trybie modulo
h((n0−k)mod(N)), dlatego na rysunku sygnał ten został oznaczony jako xmod(5)(k). W pierwszym
kroku sygnał hmod(5)(k) jest odwracany „w czasie” (w sposób kołowy!). W kroku drugim są
wymnażane przez siebie pary próbek sygnałów x(k) i hmod(5)(−k) dla k = 0, 1, 2, 3, 4. W kroku
trzecim są sumowane wyniki pięciu iloczynów i wynikowa wartość stanowi próbkę sygnału
wyjściowego o indeksie „0”: y(0) = ∑k[x(k)hmod(5)(−k)]. Następnie sygnał hmod(5)(−k) jest
przesuwany w prawo o jedną próbkę (w sposób kołowy!). Próbki otrzymanego sygnału
hmod(5)(1−k) są ponownie mnożone z odpowiadającymi im próbkami sygnału x(k) o tym samym
indeksie k. Zsumowana wartość wszystkich iloczynów stanowi próbkę sygnału wyjściowego
o indeksie „1”: y(1) = ∑k[x(k)hmod(5)(1−k)]. Postępując w sposób identyczny, po n0 przesunię-
ciach w prawo (kołowych!) sygnału hmod(5)(−k) otrzymujemy n0-ową próbkę wyniku splotu
kołowego: y(n0) = ∑k[x(k)⋅ hmod(5)(1−k)].
Cóż z tego wynika? A mianowicie, że wynik splotu kołowego może nowicjusza często wpra-
wić w osłupienie. Jeśli w przykładzie przedstawionym na rysunku 13.13 sygnały miałyby
wszystkie próbki równe 1, to w wyniku ich splotu kołowego otrzymalibyśmy sygnał y(n) = 5
dla n = 0, 1, 2, 3, 4, czyli wcale nie „trójkątny” wynik splotu linowego tych samych sygnałów.
Jeśli więc chcemy za pomocą splotu kołowego zrealizować splot liniowy N próbek sy-
gnału x(k), k = 0, 1, 2, ..., N−1, z M próbkami sygnału h(k), k = 0, 1, 2, ..., M−1, to
musimy oba sygnały uzupełnić na końcu zerami do długości K = N+(M−1). Wtedy próbki
odpowiedzi impulsowej h(k), k = 1, 2, 3, ..., M−1, po odwróceniu kołowym w czasie sygnału
hmod(K)(k) „lądują” na końcu wektora hmod(K)(−k), k = 0, 1, 2, ..., K−1, i „trafiają” na zera dodane
do sygnału x(n), wówczas y(0) = x(0)h(0). Występujące potem kolejne przesuwanie kołowe
sygnału hmod(K)(−k) o jedną próbkę w prawo powoduje natomiast, że kolejne próbki odpowiedzi
impulsowej h(k) „wsuwają się” na początek tego sygnału i poprawnie wymnażają z x(k), czyli
metodą kołową jest realizowany splot liniowy!
Jeśli nie wykonamy opisanej powyżej operacji dodania zer, to w wyniku splotu kołowego
pierwszych M−1 próbek sygnału y(n) nie będzie takich samych jak dla splotu linowego.
Algorytmy filtracji cyfrowej 369
x(k) xmod(5)(k)
k k
0 1 2 3 4 0 1 2 3 4
xP(k) xmod(5)(k)
k k
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
xP(k-1) xmod(5)(k-1)
k k
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
xP(k-2) xmod(5)(k-2)
k k
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
xP(k-3) xmod(5)(k-3)
k k
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
Rys. 13.11. Ilustracja graficzna przesunięcia cyklicznego sygnału x(k), k = 0, 1, 2, 3, 4. xP(k) − sygnał
„uokresowiony”, xmod(5) (k) − sygnał „cykliczny”, związany z sygnałem xP(k)
370 Algorytmy filtracji cyfrowej
xP(k) xmod(5)(k)
k k
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
xP(-k) xmod(5)(-k)
k k
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
Rys. 13.12. Wprowadzenie do operacji splotu „cyklicznego”: odwrócenie w czasie sygnału „uokresowio-
nego” xP(k) oraz związanego z nim sygnału „cyklicznego” xmod(5) (k)
Rys. 13.13. Ilustracja graficzna splotu kołowego („cyklicznego”) dwóch identycznych prostokątnych sy-
gnałów dyskretnych x(k) i h(k) o długości N = 5 próbek, w których tylko pierwszych M = 3 próbek jest nie-
zerowych. Jak widać, jeśli na końcu sygnałów jest minimum M−1 = 2 wartości zerowych, to wówczas splot
kołowy sygnałów jest równoważny splotowi liniowemu (patrz rysunek 13.10)
Algorytmy filtracji cyfrowej 371
Jaki jest zysk z zastosowania algorytmów „szybkiego” splotu? Dla przykładu załóżmy, że
sygnał i odpowiedź impulsowa filtra składają się 1024 próbek: N = M = 1024, wówczas
wyznaczenie pierwszych 1024 próbek splotu metodą bezpośrednią wymaga 524 800 mnożeń
i 523 776 dodawań rzeczywistych. Złożoność obliczeniowa metody „szybkiej” jest przedsta-
wiona w tabeli 13-1 dla K = N+M = 2048. Z rozdziału dziewiątego wiemy, że jedno K-punkto-
we FFT składa się z (K/2)log2(K) mnożeń i K*log2(K) dodawań zespolonych. Jak widać jest
o co walczyć, gdyż metoda „szybkiego” splotu wymaga w tym przypadku ponad 3,5 razy mniej
mnożeń i dodawań. Dodatkowo w przypadku wielokrotnej filtracji różnych sygnałów tym
samym filtrem, transformatę Fouriera odpowiedzi impulsowej wyznacza się tylko jeden raz.
Zysk obliczeniowy jest tym większy, im dłuższy jest sygnał i odpowiedź impulsowa filtra.
372 Algorytmy filtracji cyfrowej
Tab. 13-1. Złożoność obliczeniowa algorytmu „szybkiego” splotu, wykorzystującego FFT, dlaK=2048
1 1
x(n)
x(n)
0 0
-1 -1
-2 -2
0 10 20 30 0 10 20 30 40
n n
M=13 N-M=19 M=13 N-1=31
0.4 0.4
0.3 0.3
0.2 0.2
h(n)
h(n)
0.1 0.1
0 0
-0.1 -0.1
0 10 20 30 0 10 20 30 40
n n
1.5 1.5
1 1
0.5 0.5
y(n)
y(n)
0 0
-0.5 -0.5
-1 -1
-1.5 -1.5
0 10 20 30 0 10 20 30 40
n n
Rys. 13.14. Przykład zastosowania metody „szybkiego” wyznaczania splotu sygnału x(k), 0 ≤ k ≤ N−1,
z odpowiedzią impulsową h(k), 0 ≤ k ≤ M−1. N = 32, M = 13. Po lewej stronie splot kołowy (M−1 pierw-
szych próbek sygnału y(n) trzeba odrzucić), po prawej stronie splot liniowy
Algorytmy filtracji cyfrowej 373
h(n)
x(n)
x1(n)
y1(n)
x2(n)
y2(n)
x3(n)
y3(n)
x4(n)
y4(n)
y(n)
Rys. 13.15. Ilustracja algorytmu sekcjonowanego szybkiego splotu dwóch sygnałów metodą overlap-save.
M = 7 − długość filtra, N = 16 − długość fragmentów sygnału wejściowego, transformowanych za pomocą
FFT, h(n) − odpowiedź impulsowa filtra uzupełniona N−M = 9 zerami, x(n) − sygnał wejściowy (filtro-
wany), y(n) − sygnał wyjściowy (po filtracji), x1(n), x2(n), x3(n), x4(n) − kolejne fragmenty sygnału wejścio-
wego, pokrywające się M−1 = 6 próbkami, y1(n), y2(n), y3(n), y4(n) − kolejne fragmenty sygnału wyjściowego
(wynik odwrotnej transformacji FFT)
Algorytmy filtracji cyfrowej 375
h(n)
x(n)
x1z(n)
y1z(n)
x2z(n)
y2z(n)
x3z(n)
y3z(n)
x4z(n)
y4z(n)
y(n)
Rys. 13.16. Ilustracja algorytmu sekcjonowanego szybkiego splotu dwóch sygnałów metodą overlap-add:
M = 7 − długość filtra, N = 10 − długość fragmentów sygnału wejściowego, K = 16 długość FFT, h(n) − od-
powiedź impulsowa filtra uzupełniona K−M = 9 zerami, x(n) − sygnał wejściowy (filtrowany), y(n) − syg-
nał wyjściowy (po filtracji), x1z(n), x2z(n), x3z(n), x4z(n) − kolejne fragmenty 10-próbkowe sygnału wejścio-
wego, uzupełnione zerami do długości 16, y1z(n), y2z(n), y3z(n), y4z(n) − kolejne fragmenty sygnału wyjścio-
wego (wynik odwrotnej transformacji FFT)
376 Algorytmy filtracji cyfrowej
tującej FFT, blok jednorazowo przetwarzanych danych musi być większy niż liczba próbek
odpowiedzi impulsowej filtra. Z tego powodu metoda ta wprowadza opóźnienie tym większe,
im dłuższe jest h(n). W sytuacjach, kiedy duża wartość opóźnienia nie jest akceptowalna,
stosuje się metody kombinowane. Długą odpowiedź impulsową dzieli się w nich na części i dla
pierwszego jej fragmentu stosuje się metodę splotu bezpośredniego, dla pozostałych zaś −
metodę FFT.
Załóżmy, że odpowiedź impulsowa filtra składa się z M = 215 = 32 768 próbek. Wybierzmy
metodę overlap-add i przyjmijmy K = 2M = 216 i N = M+1. Obliczenie N kolejnych próbek
sygnału wyjściowego metodą bezpośrednią wymaga wówczas NM ≈ 1,1*109 mnożeń rzeczy-
wistych i N(M−1) ≈ 1,1*109 dodawań rzeczywistych. Dla metody overlap-add otrzymujemy
zaś 4K+4Klog2(K) = 4 456 448 ≈ 4,5*106 mnożenia rzeczywiste i 4Klog2(K) = 4 194 304 ≈
≈ 4,2*106 dodawania rzeczywiste (patrz rozdział 13.5, tabela 13-1), przy założeniu, że trans-
formata Fouriera odpowiedzi impulsowej filtra jest już wyznaczona. Przykład ten powinien
przekonać „niedowiarków”, że „gra jest warta świeczki”.
Tab. 13-2. Algorytmy splotu dwóch sygnałów dyskretnych: bezpośredni, „szybki” niesekcjonowany oraz
„szybki” sekcjonowany (wersje overlap-save i overlap-add)
14.1. Wprowadzenie
Wyobraźmy sobie sytuację, w której odszumiamy sygnał sinusoidalny zmodulowany w czę-
stotliwości. Sygnał taki może być w praktyce generowany przez układy mechaniczne obraca-
jące się ze zmienną częstotliwością (rysunek 14.1). „Nadajnik” znajduje się wówczas na części
obrotowej urządzenia, na przykład wale, „odbiornik” zaś jest przymocowany do części nie-
ruchomej. Załóżmy, że sygnał wyjściowy z odbiornika jest proporcjonalny do kwadratu od-
ległości c2 pomiędzy odbiornikiem i nadajnikiem. Jak łatwo wykazać z równości trójkąta (c2 =
= a2+b2+2abcosα → c2 = d 2+R 2+2dRcos(ωt), gdzie R − promień wału, d − odległość jego
środka od odbiornika), dla stałej prędkości obrotowej wału jest to sygnał o kształcie „kosinuso-
idalnym”, natomiast dla zmiennej − sygnał „kosinusoidalny” z modulacją częstotliwości. Po
spróbkowaniu sygnału może okazać się, że częstotliwość chwilowa tego sygnału zmienia się od
zera do prawie połowy częstotliwości próbkowania, czyli zajmuje prawie całe użyteczne pas-
mo częstotliwości. Powstaje wówczas problem jak odszumić sygnał, którego zakres zmiennoś-
ci częstotliwości „pokrywa się” z widmem częstotliwościowym szumu. Zastosowanie trady-
cyjnych filtrów mija się wówczas z celem. Jedynym rozwiązaniem jest zastosowanie wąskiego,
pasmowoprzepustowego filtra, którego częstotliwość środkowa jest przestrajana (adaptowana)
w taki sposób, aby pokrywała się z częstotliwością chwilową sygnału (rysunek 14.2).
Innym prostym przykładem filtra adaptacyjnego, tym razem pasmowozaporowego, może być
przypadek usuwania zmieniającego się w częstotliwości sygnału zakłócającego program ra-
diowy. Jak się wkrótce okaże istnieje wiele innych, bardzo ważnych praktycznych zastosowań
filtrów adaptacyjnych.
380 Filtry adaptacyjne
a) b) x(t)
nadajnik odbiornik 6
5.6
5.2
R d 4.8
ω 4.4
4
0 0.4 0.8 1.2 1.6 2
t [s]
Rys. 14.1. Pomiar chwilowej prędkości obrotowej wału: a) orientacyjna budowa obiektu mechanicznego
(bez zamocowania wału), b) przykładowy sygnał rejestrowany przez „odbiornik” (sinusoidalna modulacja
częstotliwości)
a) b)
częstotliwość
częstotliwość
f3
sygnał
pasmo
zaporowe
f2 przestrajany
filtr pasmo
przepustowe
f1 czas
czas
t1 t2 t3
Rys. 14.2. Ilustracja graficzna idei przestrajania w czasie (adaptowania) filtra pasmowoprzepustowego,
przypadek sygnału z modulacją częstotliwości: a) sinusoidalną (np. obracający się wał z rysunku 14.1),
b) liniową
J = E e2 ( n) = E ( d (n ) − y (n) )
2
(14.1)
gdzie E[.] oznacza wartość oczekiwaną. Jak wiemy w przypadku układów liniowych trans-
mitancja Hn(z) jest ilorazem dwóch wielomianów zmiennej zespolonej z o współczynnikach
{bk(n)} oraz {ak(n)}:
b0 (n ) + b1 (n ) z −1 + b2 (n ) z −2 + ... + bM (n ) z − M
H n ( z) = (14.2)
1 + a1 ( n ) z −1 + a 2 ( n ) z − 2 + ... + a N (n ) z − N
Filtry adaptacyjne 381
FILTR ADAPTACYJNY
d(n) e(n)
W tym przypadku współczynniki te mogą się zmieniać w czasie. Minimalizacja wartości wyra-
żenia (14.1) sprowadza się więc do wyznaczenia odpowiednich wartości współczynników
{bk(n)} oraz {ak(n)} transmitancji (14.2), one zaś z kolei decydują o charakterystykach często-
tliwościowych filtra, czyli o tym jak będą wzmocnione i przesunięte w fazie poszczególne
składowe częstotliwościowe sygnału x(n). Jeśli sygnały d(n) i y(n) są stacjonarne i ich właści-
wości nie zmieniają się w czasie, to „optymalne” współczynniki także nie zależą od czasu i są
równe {bkopt} i {akopt}.
Oczywiście, filtr (14.2) jest filtrem rekursywnym IIR, ponieważ ma wielomian zmiennej z
w mianowniku transmitancji. Jak wiemy filtry tego typu są potencjalnie niestabilne, gdyż mają
sprzężenie zwrotne (przypomnijmy: warunkiem stabilności takiego układu jest położenie zer
wielomianu mianownika wewnątrz okręgu jednostkowego). Z tego powodu struktura algoryt-
mów filtracji adaptacyjnej typu IIR jest o wiele bardziej złożona, na przykład algorytmu
SHARF. W tym rozdziale omówiono więc wyłącznie filtry adaptacyjne nierekursywne typu
FIR, gdyż to one są najczęściej stosowane w praktyce. Dla tego typu filtrów równanie trans-
mitancji filtra Hn(z) przyjmuje postać:
H n ( z ) = h0 (n ) + h1 (n ) z −1 + h2 ( n ) z −2 + ... + hM ( n ) z − M (14.3)
Błąd „dopasowania” sygnału y(n) do zadanych sygnałów x(n) i d(n) jest wtedy funkcją współ-
czynników filtra {hk(n)} (wektora h(n)):
M
2
J (h( n )) = E d ( n ) − ∑ hk ( n ) x ( n − k )
(14.5)
k =0
W przypadku stacjonarnych sygnałów wejściowych współczynniki „optymalnej” odpowiedzi
impulsowej są niezmienne w czasie (po okresie adaptacji), czyli mamy {hkopt}.
Problemem, który pozostaje do rozwiązania, jest sposób właściwego „przestrajania” w czasie
każdego współczynnika filtra hk(n):
hk ( n + 1) = hk (n ) + ∆hk ( n ), k = 0, 1, 2,..., M (14.6)
Pierwsze zetknięcie się z teorią filtrów adaptacyjnych zawsze wywołuje konsternację. Natych-
miast bowiem pojawia się pytanie: cóż uzyskujemy „dopasowując” za pomocą filtracji sygnał
y(n) do znanego sygnału odniesienia d(n)? Czy nie jest to czasem „masło maślane”? Jak się
jednak wkrótce okaże „scenariusz” filtracji adaptacyjnej jest bardzo elastyczny i znajduje
bardzo wiele ważnych zastosowań. Ponieważ teoria filtrów adaptacyjnych wyrosła na gruncie
adaptacyjnej „obserwacji” zachowania się obiektów dynamicznych, przedstawimy ją teraz
w skrócie.
a) b)
s(n)
nieznane nieznane
d(n) c(n) d(n)
F(z) F(z)
e(n) e(n)
x(n) x(n)
model model
y(n) y ( n ) = dˆ (n )
Hn(z) Hn(z)
Rys. 14.4. Schemat blokowy układu identyfikacji adaptacyjnej: a) idealny − bez szumu, b) rzeczywisty −
z szumem. Przykładowo, górna gałąź układu odpowiada sytuacji, kiedy przez kanał telekomunikacyjny
o transmitancji F(z) jest przesyłany sygnał x(n) w przypadku niewystępowania (a) lub występowania (b)
addytywnego zakłócenia s(n). Natomiast dolna gałąź stanowi estymator gałęzi górnej
Poszukujemy właśnie tych wartości. Dolna gałąź układu z rysunku 14.4 jest estymatorem gałę-
zi górnej i po „dostrojeniu” filtra ma postać:
M
dˆ (n ) = y (n ) = ∑ hk x(n − k ) = hT x(n) (14.8)
k =0
Filtry adaptacyjne 383
( ) ( )
2 2
J (h ) = E d ( n) − hT x( n) = E d 2 ( n) − 2 E d ( n)hT x(n) + E hT x( n) = (14.10a)
[ ] (n )
= E d 2 ( n ) − 2hT rdx + h T R (xxn ) h (14.10d)
[
h opt = R (xxn ) ]
−1 ( n )
rdx (14.12a)
R (xxn ) = rxx(n)
(i − j ) = E [ x ( n − i ) x ( n − j ) ] , i = 0,..., M , j = 0,..., M (14.13)
i, j
r ( n ) = r ( n ) (i ) = E [ d ( n ) x ( n − i ) ] , i = 0,..., M (14.14)
dx i dx
Filtr określony równaniem (14.12) nosi nazwę filtra Wienera. Jak widać zależy on od właści-
wości statystycznych przetwarzanych sygnałów (występowanie wartości „oczekiwanych”).
Jeśli właściwości te są niezmienne w czasie, również współczynniki „optymalnego” filtra
Wienera są stałe. W przeciwnym przypadku, zmieniają się wartości funkcji korelacji sygnałów
i wartości współczynników filtra: hk → hk(n).
384 Filtry adaptacyjne
Ma to zapewnić modyfikowanie wektora wag h „w stronę” minimum funkcji kosztu J(.) tym
szybciej, im większa jest jej wrażliwość na zmianę tego wektora. Na rysunku 14.5 przedsta-
wiono kształt „powierzchni” funkcji J = E[e2(n)] = E[(d(n)−y(n))2] dla filtra h o tylko jednym
współczynniku h0. Współczynnik skalujący µ, występujący w równaniu (14.15), decyduje
o szybkości przestrajania: im jest on większy, tym większa będzie zmiana ∆h(n), niezależnie
od wartości gradientu ∇n. Dodanie mnożnika 1/2 jest zabiegiem czysto kosmetycznym i jego
wprowadzenie wyjaśni się w następnym podrozdziale. W ogólności współczynnik µ jest
zmienny w czasie i dodatkowo do równania (14.15) wprowadza się macierz „wagową” W(n),
mającą zwiększyć szybkość adaptacji (poprawić jej zbieżność):
1
h(n + 1) = h(n ) − µ(n ) W( n )∇ n (14.16a)
2
W deterministycznej procedurze optymalizacji Newtona-Raphsona za macierz W(n) przyjmuje
się odwrotność hesjanu funkcji celu J(.) w n-tej chwili czasowej:
J=E[e2(n)]
h0
h0opt h0(0)
−1
∂2J ∂2J ∂2J
"
∂h0 ∂h0 ∂h0 ∂h1 ∂h0 ∂hM
∂2J ∂2J ∂2J
W(n) = ∇ n[ ]
2 −1
= ∂h ∂h
1 0 ∂h1∂h1
"
∂h1∂hM
(14.16b)
2# # % #
∂ J ∂2J ∂2J
∂h ∂h "
M 0 ∂hM ∂h1 ∂hM ∂hM
W przypadku kiedy jest trudno wyznaczyć wartość hesjanu, wykorzystuje się jego aproksymatę
i wówczas takie podejście nazywa się metodą quasi-Newtona.
Oczywiście, powstaje pytanie czy filtr przestrajany według reguły (14.15) w granicy n → ∞
osiągnie optymalne wartości współczynników, określone przez równanie (14.12). Stanie się
tak, jeśli zawsze będzie spełniony warunek:
J (h( n ) + ∆h( n ) ) ≤ J (h( n ) )
Załóżmy, że przyrost wartości współczynników jest bardzo mały. Wówczas funkcję dopasowa-
nia można aproksymować za pomocą rozwinięcia w szereg Taylora pierwszego rzędu:
∂J (h(n ))
J (h(n ) + ∆h(n ) ) ≅ J (h(n ) ) + ∆h T (n ) = J (h(n ) ) + ∆hT (n )∇ n
∂h(n )
skąd wynika, że dla „nieznacznie” zmodyfikowanych wag filtra funkcja „kosztu” osiąga war-
tość równą lub mniejszą niż poprzednio, czyli filtr jest zbieżny do nastaw optymalnych.
Ostatnim problemem jest zakres dopuszczalnych wartości parametru µ. Rozpatrzmy przypadek
optymalizacji średniokwadratowej (14.1) i filtracji Wienera. Jeśli podstawimy do wyrażenia
(14.15a) wartość na gradient ∇n, określony przez równanie (14.11), to otrzymamy (h(n)
zamiast hopt):
1
h(n + 1) = h(n ) − µ − 2rdx
2
(
(n)
+ 2R (xx
n)
h( n ) )
i przekształcimy powyższą zależność do postaci:
(
h(n + 1) = I − µR (xx
n)
) (n )
h( n ) + µrdx
( ) (h(0) − hopt )
n
h( n ) = hopt + I − µR (xxn )
2
1 − µλ k < 1 ⇒ 0 < µ <
λk
dla dowolnej wartości własnej macierzy korelacji Rxx(n). Wynika stąd następująca zależność
ograniczająca wartość parametru µ:
( )
M
2
0<µ< , λ max < Trace R (xxn ) = ∑ R xx
(n) ( n)
(i, i ) = ( M + 1) rxx ( 0) (14.17)
λ max i =0
Najwolniej zbieżny składnik wyrażenia (1−µλ)n (najbliższy wartości 1) jest związany z naj-
mniejszą wartością własną λmin. Po przyjęciu:
1
µ=
λ max
ma on postać (1−λmin/λmax)n. Jak widać kluczem do zwiększenia zbieżności adaptacji wag filtra
h(n) do wartości optymalnej hopt jest zmniejszenie rozrzutu wartości własnych macierzy auto-
korelacji Rxx(n) sygnału x(n), jeśli to możliwe. Jest więc najkorzystniej, aby macierz ta była
ortogonalna, co jest równoznaczne ze zdekorelowaniem sygnału x(n). Z t e g o p o wo d u
najczęściej stosuje się adaptacyjne filtry ortogonalne o strukturze krato-
we j , c h a r a k t e r y z u j ą c e s i ę wł a ś c i wo ś c i ą d e k o r e l a c j i d a n y c h we j ś c i o wy c h .
Filtry kratowe szczegółowo omówiono w rozdziale 20.
J = e 2 (n ) (14.18)
gdzie
M
∂ d ( n ) − ∑ hk x ( n − k )
2
∂e (n ) ∂e(n )
= 2e ( n ) = 2 e( n ) k =0 = −2 e ( n ) x ( n − k ) (14.20)
∂hk (n ) ∂hk (n ) ∂hk (n )
h0 (n + 1) h0 (n ) x(n )
h (n + 1) h (n ) x ( n − 1)
1 = 1 + µ( n ) W ( n ) ⋅ e ( n ) (14.21b)
# # #
h
M ( n + 1) h
M ( n ) x ( n − M )
Zależność (14.21) charakteryzuje szeroką rodzinę filtrów adaptacyjnych, które różnią się tylko
szczegółami implementacyjnymi. Obecnie skrótowo je przedstawimy.
1) Filtr LMS otrzymujemy przyjmując stały współczynnik skalujący (µ(n) = µ) oraz identycz-
nościową macierz wagową (W(n) = I − macierz diagonalna, jednostkowa):
h(n + 1) = h( n ) + µe(n )x( n ) (14.22)
Jego zaletą jest prostota implementacji i mała złożoność obliczeniowa każdej iteracji, a podsta-
wową wadą − wolna zbieżność algorytmu, zależna od stosunku λmin/λmax, czyli stosunku mini-
malnej wartości własnej macierzy autokorelacji wejściowego sygnału x(n) do maksymalnej
wartości własnej tej macierzy. W przypadku stacjonarnym, wartość średnia błędu „dostrojenia”
wag h(n) do wartości optymalnej hopt, zdefiniowanej równaniem (14.12), dąży do zera dla
n→∞, jeśli:
2
0<µ< (14.23)
λ max
natomiast błąd średniokwadratowy tego dostrojenia dąży do stałej wartości dla n → ∞, kiedy:
2 2
0<µ< lub 0<µ< (14.24a) (14.24b)
∑
M calkowita moc sygnalu x ( n )
λ
k =0 k
2) Unormowany filtr LMS, czyli NLMS, otrzymujemy uzależniając dodatkowo w (14.22) pa-
rametr µ od czasu w filtrze LMS w następujący sposób:
µ µ
µ(n ) = = (14.25)
γ+∑
T M
γ + x ( n )x ( n ) x 2 (n − k )
k =0
gdzie parametr γ ma zapobiec zerowaniu się mianownika powyższego wyrażenia. Jak widać
w praktyce implementuje się regułę (14.24b). Filtry NLMS charakteryzują się lepszą zbież-
nością (większą szybkością adaptacji) od filtrów LMS.
3) Zdekorelowany filtr LMS (NLMS). Szybkość zbieżności algorytmu LMS zależy od stosun-
ku wartości własnych λmin/λmax macierzy autokorelacji sygnału wejściowego x(n), tzn. jest tym
mniejsza, im większy jest ten stosunek. Sygnał x(n), występujący w równaniu adatacji wag
filtra (14.22), można zastąpić więc przez związany z nim, lecz zdekorelowany sygnał v(n):
x T (n )x( n − 1)
v (n ) = x( n ) − α( n )x (n − 1) , α( n ) = (14.26)
x T ( n − 1)x( n − 1)
388 Filtry adaptacyjne
gdzie „^” oznacza wynik transformacji odpowiedniego wektora. W tym przypadku jest adapto-
wanych nie M+1 wag filtra h, tylko ich transformata DCT.
n
K (n ) = R −xx1 (n )x( n ) , R xx ( n ) = ∑ λn − k x(k )x T (k ) (14.32a)
k =0
e( n ) = d ( n ) − h T ( n )x ( n ) (14.32b)
K(n) jest nazywane wzmocnieniem Kalmana. Równanie (14.32) można także zapisać w posta-
ci:
h(n + 1) = h( n ) + R −xx1 ( n )e(n )x(n ) (14.33)
czyli analogicznie do (14.12a), tylko z innymi definicjami Rxx(n) i rdx(n). Dla następnej chwili
czasowej oczywiście zachodzi równość:
390 Filtry adaptacyjne
−1
h(n + 1) = [ R xx (n + 1)] rdx ( n + 1) (14.40)
Teraz zostaje nam wykazać, że jest prawdziwa zależność (14.33), wiążąca wagi filtra h(n+1)
i h(n) w dwóch kolejnych chwilach czasowych. Na początek zauważmy, że są prawdziwe na-
stępujące zależności rekursywne:
Teraz chcemy w równaniu (14.42) zastąpić rdx(n) innym wyrażeniem. Z równania (14.39)
zauważamy, że:
rdx (n ) = R xx (n )h(n ) (14.43)
Teraz pozostaje nam uwzględnić zależność (14.44) w równaniu (14.42). Po prostych prze-
kształceniach otrzymujemy:
−1
h(n + 1) = h(n ) + [ R xx (n + 1)] x( n + 1) d ( n + 1) − xT (n + 1)h(n ) (14.45a)
−1
h(n + 1) = h(n ) + [ R xx (n + 1)] x( n + 1) [ d (n + 1) − y (n )] (14.45b)
h( n + 1) = h( n ) + [R xx ( n + 1) ] x ( n + 1) e( n )
−1
(14.45c)
I na tym moglibyśmy skończyć, pozostawiając resztę „na deser” (następny rozdział). Mamy już
bowiem równanie adaptacji wag filtra. Ale jesteśmy już tak blisko celu (algorytm WRLS −
Weighted Recursive Least Squares), że „brniemy” dalej, kosztem nieznacznego powtórzenia
wyników, które będą przedstawione później.
W algebrze macierzy jest znana następująca równość:
Obliczając macierze odwrotne obu stron równania (14.41a) oraz uwzględniając zależność
(14.46) po prawej stronie, otrzymujemy (A = λRxx(n), u = v = x(n+1)):
Zależność (14.47) pozwala nam w sposób szybki, rekursywny wyznaczyć macierz odwrotną
[Rxx(n+1)]−1 na podstawie macierzy odwrotnej [Rxx(n)]−1. Powstaje w ten sposób rekursywny
algorytm WLS, czyli WRLS. Dalsze szczegóły implementacyjne filtra WRLS poznamy w na-
stępnym rozdziale.
Filtry adaptacyjne 391
Przykład 2. Sygnał EKG w obecności zakłóceń sieciowych. Sygnał EKG s(n) jest sygnałem
impulsowym, którego kształt ma bardzo duże znaczenie diagnostyczne. Załóżmy, że dodaje się
do niego zakłócenie sieciowe z1(n). Klasyczna filtracja tego sygnału może doprowadzić do
zmiany kształtu jego załamków. Jednak jeśli jesteśmy w stanie rejestrować „kopię” zakłócenia
z2(n) (o innej amplitudzie i fazie niż oryginał z1(n)), to ponownie jesteśmy w stanie zmini-
malizować jego skutki, obserwując sygnał e(n) zamiast d(n).
Przykład 3. Usuwanie echa. W systemach telekomunikacyjnych często występuje zjawisko od-
bicia sygnału, tzn. do mówcy A dociera nie tylko wypowiedź sB(n) mówcy B, ale także echo
sA(echo)(n) jego własnych słów sA(n). Rozwiązuje się ten problem metodą filtra adaptacyjnego,
podstawiając:
Ponieważ wypowiedzi sA(n) i sB(n) zazwyczaj nie są skorelowane, wówczas filtr „dopasowuje”
sA(n) do sA(echo) (n) i wyniku tego otrzymujemy:
y ( n ) = H (s A ( n ) ) = eˆ (Aecho ) ( n )
(
e(n ) = d (n ) − y (n ) = sB (n ) + s (Aecho ) (n ) − sˆ(Aecho) ( n ) )
Rozważany przykład dotyczy także telefonicznych instalacji głośnomówiących (samochody,
pomieszczenia biurowe), w których dodatkowo występuje pogłos.
czyli składa się z sumy sygnałów sinusoidalnych o różnych parametrach (s(n)) oraz z szumu
(z(n)). Niech szum z(n) będzie nieskorelowany z sygnałem s(n) oraz sam ze sobą (tzn. że prób-
ka szumu z(n) nie jest związana z próbką z(n−1)). Oczywiście próbka sygnału s(n) jest skore-
lowana z próbką s(n−1), gdyż jak łatwo wykazać każdy z sygnałów si (n) = Ai sin(Ωi n) można
uzyskać za pomocą rekursywnej zależności:
si (n ) = −ai ,1si ( n − 1) − ai,2 si (n − 2)
gdzie
ai ,1 = −2 cos Ω i , ai ,2 = 1, si ( −1) = 0, si ( −2) = − Ai sin Ω i
Jeśli założymy:
x (n ) = d ( n − 1)
to wówczas (M + 1)-elementowy filtr adaptacyjny h(n) będzie dokonywał predykcji próbki d(n)
na podstawie zbioru próbek {d(n − 1), d(n − 2), ..., d(n − (M + 1))}. Ponieważ nieskorelowanego
szumu przewidzieć nie może, więc jego wyjście będzie liniową prognozą tylko części zde-
terminowanej, czyli:
Tak więc szum z(n) zostanie „odfiltrowany”. Opisany powyżej „scenariusz” odszumiania bę-
dzie także skuteczny, jeśli część „zdeterminowana” sygnału d(n) będzie wolnozmienna (np.
zmodulowana w częstotliwości), a algorytm dostrajania filtra − dostatecznie szybki. Aby filtr
mógł śledzić P składowych sinusoidalnych musi mieć co najmniej 2P współczynników (po
dwa na składową):
2 P −1 2P
y ( n ) = dˆ ( n ) = − ∑ hk ( n ) d ( n − 1 − k ) = − ∑ a k ( n ) d ( n − k )
k =0 k =1
Dysponując w każdej chwili czasowej n zestawem wag filtra {hk(n), k = 0, 1, 2, ..., 2P−1}, mo-
żemy je wykorzystać do estymacji chwilowego widma częstotliwościowego Dn(ejΩ) sygnału
d(n), gdyż stanowią one współczynniki aproksymującego go modelu AR (ak(n) = hk−1(n),
k = 1, 2, 3, ..., 2P):
1
Dn (e jΩ ) = Dn ( z ) z =exp( jΩ ) = − jΩ − j 2Ω
1 + a1 (n )e + a 2 ( n )e + ... + a 2 P (n )e − j 2 PΩ
i odszumiając wynik tej operacji. Jednak aby to wykonać, trzeba znać F(z). Nadajnik więc wy-
syła okresowo tzw. „pilota”, czyli odpowiedni sygnał, który jest znany odbiornikowi. Oznacz-
my ten sygnał przez p(n), odebrany zaś sygnał przez r(n). Wówczas stosując podstawienie
d(n) = r(n) oraz x(n) = p(n), otrzymujemy Hn→∞(z) ≈ F(z), dla d(n) = p(n) i x(n) = r(n) mamy
zaś Hn→∞(z) ≈ F−1(z).
x ( n ) = ∑ sin Ω k n (14.48)
k
394 Filtry adaptacyjne
d ( n ) = ∑ Ak sin (Ω k n + φk ) (14.49)
k
Do znalezienia wag hk filtra FIR przekształcającego sygnał (14.48) w (14.49) można wyko-
rzystać rozpatrywane w tym rozdziale algorytmy adaptacyjne. Wystarczy tylko za sygnały wej-
ściowe x(n) i d(n) filtra adaptacyjnego przyjąć (14.48)(14.49) oraz poczekać na ustalenie się
wag filtra hk(n) (dla dostatecznie dużego n).
Tab. 14-2. Przykładowy program napisany w języku Matlab, implementujący filtrację adaptacyjną (N)LMS
do adaptacyjnego usuwania zakłóceń
% Filtracja adaptacyjna
bx = zeros(1,M); % inicjalizacja bufora sygnalu wejściowego x
h = zeros(1,M); % inicjalizacja wag filtra
y = [];
e = [];
for i = 1 : length(x)
bx = [ x(i) bx(1:M-1) ];
dest = h * bx';
err = d(i) - dest;
if (ialg==1) h = h + ( 2*mi * err * bx ); end % LMS
if (ialg==2)
eng = bx * bx'; % NLMS
h = h + ( (2*mi)/(gamma+eng) * err * bx ); % NLMS
end
y = [y dest];
e = [e err];
end
W tym przypadku sygnały wejściowe filtra d(n) i x(n) były następujące (N = 1000, n = 0, 1,
2, ..., N−1, fpr = 1000 Hz):
( ) ( ) (
d ( n ) = s( n ) + z1 ( n ) = exp −50π( n / f pr − 0,5)2 cos 30π( n / f pr )2 + 0,5sin 2π(50 / f pr ) n )
(
x(n) = z2 (n) = 0,1sin 2π(50 / f pr )n − π / 5 )
Jak widać sygnał odniesienia d(n) był sumą dwóch składowych: 1) składowej użytecznej s(n)
− sygnału z liniową modulacją częstotliwości, zmodulowanego w amplitudzie funkcją Gaussa,
oraz 2) zakłócenia sinusoidalnego z1(n). Sygnał x(n) był natomiast „kopią” zakłócenia, mającą
inną amplitudę i przesuniętą w fazie. Zadaniem filtra było takie wzmocnienie oraz przesunięcie
w fazie sygnału x(n) = z2(n), aby sygnał y(n) był „dobrą” estymatą zakłócenia z1(n), obecnego
w d(n) (czyli skorelowanie zakłóceń z1(n) i z2(n) i ich „odjęcie”). Na rysunku 14.6a jest
przedstawiony wejściowy sygnał d(n), natomiast na rysunkach 14.6b i 14.6c − wyjściowy sy-
gnał błędu e(n) = d(n) − y(n) w przypadku zastosowania algorytmu NLMS z filtrem o długości
a) 1.5
1
0.5
d(n)
0
-0.5
-1
-1.5
0 100 200 300 400 500 600 700 800 900 1000
n
b) 1
0.5
e(n)
-0.5
-1
0 100 200 300 400 500 600 700 800 900 1000
n
c) 1
0.5
e(n)
-0.5
-1
0 100 200 300 400 500 600 700 800 900 1000
n
Rys. 14.6. Przykład 1: zastosowanie filtracji adaptacyjnej NLMS do usuwania zakłóceń sieciowych: a) sy-
gnał d (n), b) sygnał e(n) = d(n) − y(n) dla µ = 0,01, c) sygnał e(n) dla µ = 0,05. Długość filtra M = 50
Filtry adaptacyjne 397
M = 50 współczynników oraz z wartością parametru µ równą 0,01 oraz 0,05. Na rysunku 14.6b
linią przerywaną pokazano także oryginalny kształt składowej użytecznej s(n). Jak widać filtr
„dostroił” zakłócenie z2(n) do zakłócenia z1(n) i w wyniku odjęcia sygnału y(n) od d(n) otrzy-
mano w sygnale błędu e(n) estymatę składowej użytecznej s(n). W pierwszym przypadku pro-
ces adaptacji przebiegał wolniej (mniejsza wartość stałej µ), a w drugim szybciej (większa
wartość stałej µ). Jednak w przypadku wolniejszego filtra uzyskano wierniejsze odtworzenie
sygnału impulsowego s(n), gdyż filtr był za wolny, aby się odstroić od swojego stanu „ustalo-
nego” napotykając na „swojej drodze” sygnał impulsowy z modulacją amplitudy i często-
tliwości. Z rysunku 14.6c wynika, że szybszy filtr usiłuje się także adaptować do zmian
składowej użytecznej s(n) sygnału d(n), co pogarsza jakość filtracji.
a) 1.5
1
0.5
d(n)
0
-0.5
-1
-1.5
0 100 200 300 400 500 600 700 800 900 1000
n
b) 1.5
1
0.5
y(n)
0
-0.5
-1
-1.5
0 100 200 300 400 500 600 700 800 900 1000
n
c) 1.5
1
0.5
y(n)
0
-0.5
-1
-1.5
0 100 200 300 400 500 600 700 800 900 1000
n
Rys. 14.7. Przykład 2: zastosowanie filtracji adaptacyjnej NLMS do odszumiania sygnału: a) sygnał d(n),
b) sygnał y(n) dla µ = 0,01, c) sygnał y(n) dla µ = 0,05. Długość filtra M = 50
398 Filtry adaptacyjne
czyli sygnał x(n) był opóźnionym o jedną próbkę sygnałem d(n), natomiast szum był szumem
gaussowskim o wartości średniej równej zero oraz odchyleniu standardowym równym 0,25.
W procesie adaptacji filtr, dążąc do upodobnienia sygnału y(n) do d(n), starał się przewidzieć
następną próbkę sygnału d(n) na podstawie jego ostatnich M = 50 próbek. Ponieważ kolejne
próbki szumu nie były ze sobą skorelowane, predykcja mogła się „udać” tylko w przypadku
składowej użytecznej s(n) sygnału d(n) (sygnał z liniową modulacją częstotliwości). Sygnał
y(n) powinien więc stanowić estymatę składowej s(n) tegoż sygnału. Otrzymane wyniki są
przedstawione na rysunku 14.7. Rzeczywiście w wyniku filtracji sygnału x(n) uzyskano „od-
szumiony” sygnał y(n), estymatę składowej s(n). Filtr z wolniejszą adaptacją (µ = 0,01) ada-
ptuje się wolniej, ale odszumia skuteczniej niż filtr szybszy (µ = 0,05).
15
Liniowa estymacja rekursywna
Niniejszy rozdział stanowi wprowadzenie do teorii tzw. obserwatorów, czyli układów śledzą-
cych zmienność stanu obiektów dynamicznych. Omówione w nim zostaną liniowe, rekursywne
„obserwatory” (filtry): RLS, WRLS oraz Kalmana, na podstawie [Host87] i [Cand86]. Stano-
wią one przykład bardzo ważnej gałęzi przetwarzania sygnałów, opartej na modelowaniu mate-
matycznym zachodzących, obserwowanych, dynamicznie zmiennych procesów. Nie możemy
o niej zapomnieć z racji powszechnego występowania takich procesów w naszym życiu
i świecie, w swej istocie dynamicznym a nie statycznym. Systemy radarowe są najstarszym
i powszechnym odbiorcą przedstawionych dalej metod.
gdzie macierz układu pomiarowego H ma wymiary M×N, a wektor v oznacza addytywny szum
pomiarowy, „zakłócający” pomiar. Powstaje pytanie w jaki sposób obliczyć najlepszą estymatę
wektora x, dysponując H i z. Oznaczmy tę estymatę przez x̂ . Odpowiada jej zawsze jakiś błąd
(szum) v̂ :
z = Hxˆ + vˆ (15.2)
Estymata x̂ będzie tym lepsza, im mniejszy będzie błąd sumy kwadratów (ang. LS − Least
Squares), związany z v̂ , czyli kiedy funkcja „jakości” estymacji (oszacowania) postaci:
M
J = vˆ T vˆ = vˆ12 + vˆ22 + ... + vˆ M
2
= ∑ vi2 (15.3)
i =1
400 Liniowa estymacja rekursywna
J = (z − Hxˆ )T (z − H xˆ ) (15.4)
Aby wyznaczyć wartość x̂ , dla której błąd J osiąga minimum, należy wyznaczyć jego pochod-
ne cząstkowe względem x̂i i je przyrównać do zera:
∂J
= −H T (z − H xˆ ) = 0 (15.5)
∂ xˆ
skąd otrzymujemy:
H T H xˆ = H T z
(
xˆ = H T H )−1 HT z (15.6)
Przykład. Przykładem takiej rekursywnej estymacji może być rekursywne szacowanie wartości
średniej. Załóżmy, że obliczamy wartość średnią sygnału z N próbek. Jest ona wówczas równa:
N
1
xˆ N =
N
∑ x(n )
n =1
czyli przedstawić nową estymatę wartości średniej z N punktów jako sumę starej estymaty,
obliczonej na podstawie N−1 punktów oraz jej korekty po uwzględnieniu nowej, N-tej próbki
x(N). Korekta jest wyliczana jako wagowa (mnożnik 1/N) wartość błędu pomiędzy wartością
nowej próbki a starą estymatą wartości średniej. Schemat ten, jak się wkrótce przekonamy, jest
obowiązującym standardem w rekursywnej, adaptacyjnej estymacji parametrów:
nowa estymata = jej prognoza + korekta
korekta = wzmocnienie * (pomiar − prognoza pomiaru)
gdzie mierzy się jedną wielkość, a estymuje inną, z nią związaną.
1
c (k + 1) = (15.15)
T
1 + h (k + 1)P(k )h(k + 1)
Ponieważ wartość w mianowniku (15.15) jest skalarem, dlatego współczynnik c(k+1) jest także
skalarem.
Obecnie zapiszemy w zmienionej postaci wyrażenie (15.8), stosując dekompozycję macierzy
H(k+1) i wektora pomiarów z(k+1):
z( k )
xˆ (k + 1) = P( k + 1)HT ( k + 1) z ( k + 1) = P( k + 1) HT ( k ) h( k + 1) (15.16)
zk +1
Po wymnożeniu otrzymujemy z (15.16):
xˆ (k + 1) = P(k + 1) HT ( k )z ( k ) + h( k + 1) zk +1 (15.17)
xˆ ( k + 1) = P (k )HT ( k ) z ( k ) + P( k )h( k + 1) zk +1 +
xˆ ( k + 1) = xˆ (k ) + K (k ) zk +1 − hT (k + 1) xˆ ( k ) = (15.24a)
= xˆ ( k ) + K (k ) [ zk +1 − zˆk +1 ] (15.24b)
Liniowa estymacja rekursywna 403
( )
−1
xˆ ( N ) = HT ( N )H( N ) HT ( N ) z ( N ) (15.26)
( )
−1
xˆ ( M ) = HT ( M )H( M ) HT ( M ) z( M ) (15.27)
( ) ⋅ HT ( N ) ⋅ W ⋅ z ( N ) ,
−1
xˆ ( N ) = HT ( N ) ⋅ W ⋅ H( N )
P ( N ) = ( HT ( N ) ⋅ W ⋅ H ( N ) ) ,
−1
k = N;
2. Nowy pomiar zk+1 (nowe h( k + 1) i nowy szum vk+1):
z k +1 = h T ( k + 1) ⋅ x ( k + 1) + v k +1
3. Modyfikacja parametrów wzmocnienia:
( )
−1
c( k + 1) = λ + hT ( k + 1) ⋅ P( k ) ⋅ h(k + 1)
K ( k + 1) = P( k ) ⋅ h( k + 1) ⋅ c( k + 1)
4. Predykcja pomiaru − korekta estymaty wielkości szukanej:
(
xˆ ( k + 1) = xˆ ( k ) + K ( k + 1) ⋅ z k +1 − h T ( k + 1) ⋅ xˆ ( k ) )
5. Modyfikacja macierzy P:
1
( )
P( k + 1) = I − K ( k + 1) ⋅ hT ( k + 1) ⋅ P( k ) , gdzie I to macierz identycznościowa
λ
6. Następna iteracja: k = k + 1 ; skok do punktu 2.
404 Liniowa estymacja rekursywna
zˆk +1
zk+1 Opóźnienie
K(k+1) jednostkowe hT(k+1)
xˆ (k ) zˆk +1
xˆ (k + 1)
tylko liczony iteracyjnie. Wynika stąd, że po każdym k-tym pomiarze obliczona, „najlepsza”
(lub „najbardziej prawdopodobna”) estymata uwzględnia całą historię procesu obserwacji
obiektu. Jest więc w jakimś sensie estymatą „średnią”. Kiedy jednak estymowane wartości
wektora x nie są stałe, a na przykład się zmieniają, wówczas ich estymata będzie równa „śred-
niej” wartości tych parametrów za cały czas obserwacji. Nie zawsze nam to jednak odpowiada.
Czasem jest korzystniej śledzić zmienność obserwowanych parametrów i wnioskować na ich
podstawie o zmianie stanu obiektu. „Lekarstwem” na zaistniałą sytuację może być spowo-
dowanie, aby najbardziej odległe („najstarsze”) pomiary były zapominane w procesie estyma-
cji, tzn. żeby estymata opierała się na określonej liczbie ostatnich („najświeższych”) pomiarów.
Wprowadzając te idee w życie uzyskuje się ważony, rekursywny algorytm najmniejszych
kwadratów WRLS (ang. Weighted Recursive Least Squares), mający zdolność „zapominania
przeszłości” i w konsekwencji adaptacyjnego śledzenia „dynamicznych” zmian wartości
wektora x. Jest to jednak okupione pogorszeniem jakości estymacji stanów „statycznych”
wektora x, gdyż estymata jest teraz wyznaczana na podstawie mniejszej liczby pomiarów
(kilku, kilkunastu,...), w związku z czym jej statystyczne parametry są gorsze (większa
wariancja, czyli rozrzut jej wartości). Zawsze jest przy tym prawdziwa prawidłowość, że im
estymator szybciej „zapomina” przeszłość, to lepiej nadąża za dynamicznymi zmianami
wartości estymowanych, ale równocześnie jest bardziej „zaszumiony”, gdyż zaczyna „nadążać”
także za szumem. I odwrotnie, estymator z wolnym „zapominaniem” nie jest w stanie wiernie
oddać dynamiki zmian obiektu, ale za to dobrze odszumia.
Jak się wprowadza do wyżej wyprowadzonego algorytmu właściwość „zapominania” prze-
szłości? Definiując minimalizowane kryterium jakości estymacji w postaci:
gdzie macierz diagonalna W ma na głównej przekątnej wagi wi, nadające różne znaczenie
błędom estymacji w poszczególnych chwilach czasowych. Stosując powyższą funkcję jakości
otrzymuje się, analogicznie jak poprzednio, optymalne rozwiązanie problemu estymacji posta-
ci:
( )
−1
xˆ = HT WH HT Wz (15.29)
które odpowiada (15.6). Jeśli szum v ma zerową wartość średnią oraz znaną macierz kowa-
riancji R:
E[ v ] = 0 , E[ vv T ] = R (15.30)
Liniowa estymacja rekursywna 405
to wówczas można przyjąć W = R−1. Najczęściej przyjmuje się jednak diagonalną macierz
W, mającą na głównej przekątnej współczynniki wagowe, zdefiniowane zależnością (λ ≤ 1):
wi = λM − i , i = 1, 2, ..., M (15.31)
czyli zakłada się zapominanie eksponencjalne (wykładnicze). Dla niego błąd pomiaru w a k t u -
a l n e j , M-tej chwili czasowej ma wagę równą 1, błąd zaś najstarszego pomiaru w pierwszej
chwili czasowej ma wagę równą λM−1. Im parametr „zapominania” λ ma mniejszą wartość, tym
estymator szybciej zapomina poprzednie pomiary, natomiast dla λ = 1, pamięta „wszystko”.
Równanie (15.29) dla wag postaci (15.31) może być w prosty sposób wyznaczane rekursywnie.
Algorytm ważonej estymacji RLS jest przedstawiony w tabeli 15-1. Na rysunku 15.2 pokazano
przykładowe wyniki estymacji parametrów obiektu, o wartościach x = [− 0,987; 2,345]
metodami RLS i WRLS (λ = 0,95). W tym przypadku parametry obiektu są niezmienne
w czasie. W przypadku algorytmu RLS wraz ze wzrostem numeru iteracji estymata charakte-
ryzuje się coraz mniejszą wariancją, ponieważ algorytm wyznacza „średnią” ze wszystkich
pomiarów. Dla algorytmu WRLS wariancja estymaty „ustala” się natomiast na wyższym
poziomie, ponieważ wynikiem działania algorytmu jest w tym przypadku „średnia” ważona,
bardziej „wrażliwa” na ostatnie pomiary. Jednak w przypadku kiedy stan obiektu zmienia się
skokowo (rysunek 15.3), algorytm WRLS jest w stanie śledzić te zmiany, algorytm zaś RLS
staje się wówczas mniej użyteczny, ponieważ wyznacza estymatę „średniego” stanu obiektu od
początku obserwacji. Im parametr λ ma mniejszą wartość, tym szybciej procedura WRLS
zapomina o przeszłości i szybciej reaguje na zmianę parametrów obiektu, ale kosztem większej
wariancji estymaty tych parametrów. Aby należycie ocenić uzyskane wyniki estymacji, po-
kazane na rysunkach 15.2 i 15.3, na rysunku 15.4 przedstawiono wartości kolejnych pomiarów
zk, które stanowiły punkt startowy do dalszych obliczeń. W tabeli 15-2 przedstawiono program,
napisany w języku Matlab, w którym Czytelnik może znaleźć dalsze szczegóły dotyczące
opisanego powyżej eksperymentu symulacyjnego.
Przykład
Odpowiedź impulsowa tego filtra h(n) ma N współczynników. Znając sygnał wejściowy x(n)
oraz zbierając M próbek wyjściowych z filtra y(n), otrzymujemy następujący układ równań:
a) -0.7 2.8
2.7
-0.8
2.6
x1e(k)
x2e(k)
2.5
-0.9
2.4
-1 2.3
0 500 1000 1500 2000 0 500 1000 1500 2000
k k
b) -0.6 2.8
-0.7 2.7
-0.8 2.6
x1e(k)
x2e(k)
-0.9 2.5
-1 2.4
-1.1 2.3
-1.2 2.2
0 500 1000 1500 2000 0 500 1000 1500 2000
k k
Rys. 15.2. Przykładowe wyniki estymacji parametrów obiektu, o wartościach parametrów x = [− 0,987;
2,345], metodami rekursywnymi: a) RLS, b) WRLS (λ = 0,95). Liniami przerywanymi zaznaczono rzeczy-
wiste wartości parametrów obiektu
a) 1 3
2
0.5
1
x1e(k)
x2e(k)
0 0
-1
-0.5
-2
-1 -3
0 500 1000 1500 2000 0 500 1000 1500 2000
k k
b) 1 3
2
0.5
1
x1e(k)
x2e(k)
0 0
-1
-0.5
-2
-1 -3
0 500 1000 1500 2000 0 500 1000 1500 2000
k k
Rys. 15.3. Przykładowe wyniki estymacji wartości skokowo zmiennych (x = [±0,987; ±2,345]) parametrów
obiektu metodami: a) RLS, b) WRLS (λ = 0,95). Liniami przerywanymi zaznaczono rzeczywiste wartości
parametrów obiektu, zmieniające się skokowo w czasie
Liniowa estymacja rekursywna 407
10 10
5 5
0 0
zk
zk
-5 -5
-10 -10
0 500 1000 1500 2000 0 500 1000 1500 2000
k k
Rys. 15.4. Wartości pomiaru w kolejnych chwilach czasowych dla przypadków estymacji przedstawionych
na rysunkach 15.2 (stałe wartości parametrów obiektu) i 15.3 (zmienne wartości parametrów obiektu)
Tab. 15-2. Program napisany w języku Matlab do rekursywnej estymacji parametrów obiektu metodą RLS
(λ = 1) i WRLS (λ < 1)
clear all;
% PARAMETRY
iter=2000; % liczba iteracji
M=2; % liczba niewiadomych
dwe=1.0; % odchylenie standardowe wejścia (szum normalny)
dsz=0.5; % odchylenie standardowe szumu pomiarowego
lambda=0.95; % parametr „zapominania” ( 0 < lambda <= 1 ); dla RLS = 1
x=[-0.987 2.345]'; % rzeczywisty stan obiektu
% INICJALIZACJA
I=eye(M); % macierz jednostkowa
randn('seed',54321); % ustawienie parametru startu generatora: seed = 54321
h=dwe*randn(1,M); % inicjalizacja wektora wejścia
H=h; %
for k=2:M % # generacja macierzy
h=h(1:(M-1)); % # współczynników „H”
h=[dwe*randn(1,1) h]; %#
H=[H; h]; %#
end %#
z=H*x+dsz*randn(M,1); % generacja wektora wyjścia „z”
w=lambda.^(M-1:-1:0); w=w'; %
W = diag(w,0); % inicjalizacja macierzy wag
P=inv(H'*W*H); % obliczenie pierwszej estymaty macierzy „P”
xe=P*H'*W*z; % obliczenie pierwszej estymaty stanu obiektu „xe”
Z=[]; % wektor historii pomiarów
XE=[]; % macierz historii estymacji
XR=[]; % macierz referencyjna
h=h'; % h − zamiana na wektor „pionowy”
% PĘTLA GŁÓWNA
for k=1:iter
if (rem(k,500)==0) % ewentualna
x=-x; % zmiana stanu obiektu na przeciwny
end %
h=h(1:(M-1)); h=[dwe*randn(1,1); h]; % nowy wektor wejścia „h” # ZNANE !!!
z=h'*x+dsz*rand; % nowy pomiar # ZNANE !!!
K=P*h/(h'*P*h+lambda); % nowe wzmocnienie „K” # Metoda
P=(I-K*h')*P/lambda; % nowa macierz „P” # kowariancyjna
xe=xe+K*(z-h'*xe); % nowa estymata stanu obiektu
XR=[XR; x']; % odniesienie
XE=[XE; xe']; % historia estymacji
408 Liniowa estymacja rekursywna
czyli:
y = Xh + s (15.34)
Równanie (15.34) ma identyczną postać jak (15.1), dlatego optymalna estymata ĥ jest równa:
( )
−1
hˆ = XT X XT y (15.35)
i może być także wyznaczana metodą rekursywną. W przypadku zastosowania algorytmu re-
kursywnego z zapominaniem można także w sposób „optymalny” śledzić zmienność współ-
czynników filtra. Sprawdzenie skuteczności działania takiego algorytmu, drogą jego symulacji
komputerowej, pozostawiamy Czytelnikowi.
J = E ( x − xˆ ) ⋅ ( x − xˆ )
T
(15.36)
gdzie E[.] oznacza wartość oczekiwaną (najbardziej prawdopodobną) w sensie statystycznym.
Nie jest to więc tak jak w przypadku poprzednim suma kwadratów szumów pomiaru ∑vi2.
Także matematyczny „model” rozważanej sytuacji pomiarowej jest inny:
Model ten składa się z dwóch równań, opisujących obserwowany proces (obiekt) oraz przepro-
wadzany na nim pomiar. W przypadku estymacji RLS dysponowaliśmy tylko równaniem po-
miaru, milcząco bowiem zakładaliśmy niezmienność procesu, czyli stałość związanego z nim
wektora x. Teraz jednak przyjmujemy, że obserwowany proces ma charakter dynamiczny,
w związku z czym wektor x zmienia się z próbki na próbkę. Wartość wektora x(k + 1) w na-
stępnej chwili czasowej zależy od: 1) wartości tego wektora w chwili obecnej x(k), 2) macierzy
F(k), związanej z procesem, która także może się zmieniać w czasie, oraz 3) od aktualnej
wartości szumu procesu w(k). Podobnie jak poprzednio, nie mamy bezpośredniego „dostępu”
do zmiennych procesu x, możemy tylko mierzyć liniową kombinację z, określoną przez
macierz pomiaru H(k + 1), która także może się zmieniać. Oczywiście, zakłada się występowa-
nie szumu pomiaru v. Wektor zmiennych obiektu x ma N elementów, natomiast wektor pomia-
rów z składa się z M wartości, które w każdej chwili czasowej (k + 1)-szej są „odczytywane”
równocześnie. W zapisie szczegółowym równania (15.37) przyjmują następującą postać:
Liniowa estymacja rekursywna 409
Jak widać rozpatrywany „przypadek” nie należy do najprostszych. Aby go rozwiązać, należy
poczynić pewne z a ł o ż e n i a :
• w(k) − szum procesu ma zerową wartość średnią i jest nieskorelowany:
E[ w( k ) ] = 0, E[ w( k ) w T ( l ) ] = 0, k ≠ l (15.40)
• macierz autokowariancji szumu procesu Q(k) = E[w(k)⋅wT(k)] jest dodatnio określona i sy-
metryczna,
• v(k) − szum pomiaru ma zerową wartość średnią oraz jest nieskorelowany „sam ze sobą”
i z szumem procesu w(k):
E [ v ( k ) ] = 0, E[ v ( k ) v T (l ) ] = 0, E[ v( k ) w T (l ) ] = 0, k ≠ l (15.41)
• macierz autokowariancji szumu pomiaru R(k) = E[v(k)⋅vT(k)] jest dodatnio określona i sy-
metryczna,
• wartość początkowa wektora zmiennych procesu powinna spełniać następujące warunki:
tzn. powinna być znana funkcja autokowariancji stanu początkowego oraz stan ten nie może
być skorelowany z szumem procesu i pomiaru.
Dla dociekliwych. Wyprowadzenie. Jest to przejście Orlą Percią, więc zapraszam na wspinacz-
kę tylko doświadczonych piechurów. Przypomnijmy, mamy znaleźć najlepszy liniowy estyma-
tor minimalno-średniokwadratowego wektora x(k) na podstawie wykonanych do tej pory
pomiarów z(i), i = 1, 2, 3, ..., k. Ponieważ szum w(k) nie jest skorelowany z pomiarami z(i),
i = 1, 2, 3, ..., k, stąd:
ˆ (k | k ) = 0
w (15.52)
zˆ (k + 1 | k ) zˆ (k + 1 | k )
xˆ (k + 1 | k )
z(k + 1) xˆ (k | k )
K(k + 1) z−1 G(k) H(k + 1)
xˆ (k + 1 | k + 1)
1. Inicjalizacja:
F(k) = const = F, Q( k) = const = Q , (proces)
H(k+1) = const = H, R ( k) = const = R , (pomiar)
k = 0, P(0 | 0) = P0 , xˆ (0 | 0) = 0
2. Macierz kowariancji błędu prognozy stanu obiektu:
P(k + 1 | k ) = F( k ) ⋅ P( k | k ) ⋅ FT ( k ) + Q( k )
3. Wzmocnienie Kalmana:
−1
K ( k + 1) = P(k + 1| k ) ⋅ HT ( k + 1) ⋅ H(k + 1)P( k + 1 | k )HT ( k + 1) + R ( k + 1)
4. Macierz kowariancji błędu estymaty stanu obiektu:
P(k + 1 | k + 1) = [I − K ( k + 1) ⋅ H( k + 1)]⋅ P( k + 1 | k ) , I − macierz diagonalna
5. Prognoza stanu obiektu:
xˆ ( k + 1 | k ) = F( k ) ⋅ xˆ ( k | k )
6. Prognoza pomiaru:
zˆ ( k + 1 | k ) = H( k + 1) ⋅ xˆ ( k + 1 | k )
6. Nowy pomiar: z( k + 1)
7. Błąd prognozy pomiaru:
∆z ( k + 1 | k ) = z ( k + 1) − zˆ ( k + 1 | k )
8. Nowa estymata stanu obiektu = korekta prognozy stanu obiektu:
xˆ ( k + 1 | k + 1) = xˆ ( k + 1 | k ) + K ( k + 1) ⋅ ∆z( k + 1 | k )
9. k = k + 1; skok do punktu 2.
xˆ ( k + 1 | k ) = F( k ) ⋅ xˆ ( k | k ) + w
ˆ ( k | k ) = F( k ) ⋅ xˆ ( k | k ) (15.53)
Analogicznie, ponieważ szum v(k) nie jest skorelowany z pomiarami z(l) dla k ≠ l, stąd:
vˆ ( k + 1 | k ) = 0 (15.54)
zˆ ( k + 1 | k ) = H( k + 1) ⋅ xˆ ( k + 1 | k ) + vˆ ( k + 1 | k ) = H( k + 1) ⋅ xˆ ( k + 1 | k ) (15.55)
412 Liniowa estymacja rekursywna
W podanych równaniach xˆ (k + 1 | k ) oznacza estymatę (prognozę) MMS wektora x(k + 1), czyli
w chwili (k + 1)-szej, bazującą na k wektorach pomiarów z(i), i = 1, 2, 3, ..., k. Z kolei estymata
xˆ ( k + 1 | k + 1) powinna uwzględniać xˆ ( k + 1 | k ) , czyli całą wiedzą o obiekcie dostarczoną przez
pomiary z do chwili k-tej, oraz d o d a t k o wą informację wniesioną przez pomiar (k + 1)-szy
z(k + 1). W pomiarze tym jest zawarta część „przewidywalna” (związana z historią obserwacji
obiektu) oraz „nieprzewidywalna” („ortogonalna” do całej dotychczasowej wiedzy o obiekcie,
„nieskorelowana” z nią). Część „przewidywalna” potwierdza to, co już wiemy, część zaś „nie-
przewidywalna” − dodaje nowe szczegóły. Ta ostatnia „ortogonalna” składowa jest różnicą
pomiędzy pomiarem a jego predykcją, czyli polega na odjęciu od „całości” tego, co jest już
„znane”: ∆z(k + 1|k) = = z(k + 1) − zˆ (k + 1 | k ) . Wynika stąd, że nowa estymata xˆ (k + 1 | k + 1) po-
winna się składać z sumy dwóch niezależnych estymat:
xˆ ( k + 1 | k + 1) = xˆ ( k + 1 | k ) + xˆ (k + 1 | ∆z( k + 1 | k ) ) (15.56)
gdzie drugi składnik sumy oznacza składową estymaty xˆ (k + 1 | k + 1) bazującą tylko na błędzie
prognozy (k + 1)-szego pomiaru (przewidujemy x(k + 1) tylko z ∆z(k + 1|k)). Z kolei z zasady
ortogonalności wynika, że jeśli mamy dwa wektory losowe x (procesu) i z (pomiaru) o zero-
wych wartościach średnich, które są skorelowane, to najlepsza liniowa estymata MMS wektora
x na podstawie z jest równa:
{ }
−1
K (k + 1) = E x (k + 1) ∆zT ( k + 1| k ) ⋅ E ∆z( k + 1| k )∆zT ( k + 1| k ) (15.60)
[ ]
P(k | k ) = E ∆x( k | k )∆x T ( k | k ) , P(0 | 0) = P0 (15.62)
[ ]
P(k + 1 | k ) = E ∆x(k + 1 | k ) ∆x T (k + 1 | k ) = F(k )P(k | k )FT ( k ) + Q(k ) (15.63)
[ ]
P( k + 1 | k + 1) = E ∆x( k + 1 | k + 1) ∆x T (k + 1 | k + 1) = [ I − K (k + 1) H(k + 1)] ⋅ P( k + 1 | k )
(15.64)
W przekształceniach prowadzących z równania (15.60) do równania (15.61) uwzględnia się
definicje i równania (15.48), (15.49), (15.37), (15.53) i (15.55), właściwość „nieskorelowania”
(„ortogonalności”) par wektorów {∆x(k + 1|k), w(k + 1)} i {∆x(k +1|k), v(k + 1)} }:
Liniowa estymacja rekursywna 413
[ ] [
E ∆x( k + 1 | k ) w T (k + 1) = 0 , E ∆x( k + 1 | k ) v T (k + 1) = 0 ] (15.65)
E ∆z (k + 1 | k )∆z T (k + 1| k ) = E ( z ( k + 1) − zˆ (k + 1 | k ) )( z (k + 1) − zˆ ( k + 1 | k ) ) =
T
= E ( H (k + 1)x(k + 1) + v (k + 1) − H (k + 1) ⋅ xˆ (k + 1| k ) ) ⋅
⋅ ( H (k + 1)x(k + 1) + v(k + 1) − H (k + 1) ⋅ xˆ (k + 1 | k ) ) =
T
(
= E ( H ( k + 1)∆x(k + 1) + v ( k + 1) ) H ( k + 1)∆x( k + 1) + v( k + 1)T =
)
(
= E ( H (k + 1)∆x(k + 1) + v (k + 1) ) ∆xT (k + 1)HT (k + 1) + vT (k + 1) =
)
= H ( k + 1) E ∆x( k + 1)∆xT ( k + 1) HT ( k + 1) + E v( k + 1) vT ( k + 1) +
+ H (k + 1) E ∆x(k + 1) vT (k + 1) + E v (k + 1)∆xT (k + 1) HT (k + 1) =
= H( k + 1) P( k + 1 | k )H T ( k + 1) + R ( k + 1)
[ ] [ ] [
E x(k + 1)∆z T ( k + 1 | k ) , E ∆x(k + 1 | k )∆x T (k + 1 | k ) , E ∆x(k + 1 | k + 1)∆x T ( k + 1 | k + 1) ]
Przykład − analiza układu RLC
uR(t) uL(t)
i(t)
R+dR L+dL
u(t) C+dC uC(t)
Rys. 15.6. Schemat analizowanego układu. Źródło napięcia generuje przebieg prostokątny unipolarny
414 Liniowa estymacja rekursywna
duC (t ) d 2 uC ( t ) 1
RC + LC + uc (t ) = u(t ) (15.69)
dt dt 2 C
d 2 uC ( t ) R duC (t ) 1 1
+ + uc (t ) = u (t ) (15.70)
dt 2 L dt LC LC
Stosując podstawienia:
x1 (t ) = uc (t ) (15.71a)
duC (t ) dx1 (t )
x2 (t ) = = (15.71b)
dt dt
równanie różniczkowe drugiego rzędu (15.70) zastępujemy następującym układem równań
pierwszego rzędu:
dx1
dt = x 2 (t )
dx (t ) 1 R 1
2 =− x1 (t ) − x 2 (t ) + u(t )
dt LC L LC
x1 (t ) 0 1 x1 ( t ) 1 1
x ( t ) = −1/ LC +
− R / L x2 (t ) 1/ LC
u (t ) + w( t )
2 1/ LC
x1 (t ) 0 1 x1 (t )
1 1
x (t ) = 6
+
3 x (t ) 6
u(t ) + 6
w(t ) (15.72)
2 −4 ⋅ 10 −2 ⋅ 10 2 4 ⋅ 10 4 ⋅ 10
gdzie w(t) jest szumem związanym ze zmiennością wartości elementów (szum normalny, zero-
wa wartość średnia, znana wariancja), wynikającej m.in. z fluktuacji temperaturowych.
Dysponujemy obecnie opisem układu za pomocą macierzowego równania różniczkowego:
x (t ) = A x(t ) + Bu(t ) + Bw( t ) (15.73)
Aby jednak zastosować filtr Kalmana należy przekształcić równanie różniczkowe (15.73) do
odpowiadającego mu macierzowego równania różnicowego (dyskretny odpowiednik):
x (k + 1) = A d x( k ) + B d u(k ) + B d w( k ) (15.74)
W tym celu, przy założeniu stacjonarnych równań stanu i wymuszenia u(t) odcinkami stałego,
stosuje się podstawienia:
A d = e AT , B d = ( e AT − I )A −1B (15.75)
Tab. 15-5. Program napisany w języku Matlab do rekursywnej estymacji parametrów obiektu metodą filtra
Kalmana (przykład analizy sygnałów z układu RLC)
1.5
1.25
1
x1(k), z1(k)
0.75
0.5
0.25
0
-0.25
-0.5
0 50 100 150 200 250 300
k
1.25
1
x1(k), x1e(k)
0.75
0.5
0.25
0
-0.25
0 50 100 150 200 250 300
k
0.2
0.16
K1(k)
0.12
0.08
0.04
0 50 100 150 200 250 300
k
Rys. 15.7. Wyniki symulacji komputerowej układu, opisanego parą równań (15.76), (15.77): zmienna stanu
x1(k) (linia przerywana), jej pomiar z1(k) oraz jej estymata x1e(k) (linie ciągłe), wzmocnienie Kalmana K1(k)
0.6
0.4
0.2
z2(k)
0
-0.2
-0.4
-0.6
0 50 100 150 200 250 300
k
1500
1000
x2(k), x2e(k)
500
0
-500
-1000
-1500
0 50 100 150 200 250 300
k
50
0
K2(k)
-50
-100
0 50 100 150 200 250 300
k
Rys. 15.8. Wyniki symulacji komputerowej układu, opisanego parą równań (15.76), (15.77): zmienna stanu
x2(k) (linia przerywana), jej pomiar z2(k) oraz jej estymata x2e(k) (linie ciągłe), wzmocnienie Kalmana K2(k)
% HISTORIA ESTYMACJI
XP=[XP; x1'];
XE=[XE; xe'];
XX=[XX; x'];
ZZ=[ZZ; z'];
KK=[KK; (KA(:,1))'];
end
% WIZUALIZACJA WYNIKÓW
X1=XX(:,1); X2=XX(:,2); Z1=ZZ(:,1); Z2=ZZ(:,2);
X1E=XE(:,1); X2E=XE(:,2); K1=KK(:,1); K2=KK(:,2);
t=1:1:iter;
subplot(211); plot(t,X1,'r',t,Z1,'b'); grid;
title('X1(K) (CZERW) I JEGO POMIAR Z1(K) (NIEB)'); xlabel('NUMER ITERACJI')
subplot(212); plot(t,X1,'r',t,X1E,'b'); grid;
title('X1(K) (CZERW) I JEGO ESTYMATA X1E(K/K)(NIEB)'); xlabel('NUMER ITERACJI');
pause
418 Liniowa estymacja rekursywna
gdzie Ω(n) oznacza pulsację chwilową, a α(n) jest współczynnikiem modulacji liniowej:
Ω( n ) = [Φ ( n + 1) − Φ ( n − 1)]/ 2
α( n ) = [Φ ( n + 1) − Φ ( n )] − [Φ ( n ) − Φ ( n − 1)] = Φ ( n + 1) − 2Φ ( n ) + Φ ( n − 1)
Następnie definiuje się wektor stanu procesu jako (kąt całkowity, pulsacja unormowana, zmia-
na tej pulsacji z próbki na próbkę sygnału):
Φ ( n + 1) = Φ ( 0 ) + (n + 1)Ω ( 0 ) + (n + 1)2 α ( 0 ) / 2 =
= Φ ( 0 ) + nΩ ( 0 ) + Ω ( 0 ) + n 2 α ( 0 ) / 2 + nα ( 0 ) + α ( 0 ) / 2 =
{ }
= Φ ( 0 ) + nΩ ( 0 ) + n 2 α ( 0 ) / 2 + { Ω ( 0 ) + nα ( 0 ) } + α ( 0 ) / 2 =
= Φ ( n ) + Ω( n ) + 0,5α(n ) (15.81a)
Ω(n + 1) = Ω(0) + ( n + 1)α(0) = { Ω(0 ) + nα(0) } + α(0) = Ω( n ) + α( n ) (15.81b)
α(n + 1) = α(0) = α( n ) (15.81c)
Z (15.81) znajduje się zależność wiążąca x(n + 1) i x(n) i otrzymuje macierz modelu procesu F:
Liniowa estymacja rekursywna 419
1 1 0, 5
F = 0 1 1 (15.82)
0 0 1
Ponieważ jest możliwy tylko pomiar kąta Φ(n) na podstawie równania:
Im( y ( n ))
Φ (n ) = arctg (15.83)
Re( y (n ))
wynika stąd, że macierz pomiaru jest równa:
H = [1 0 0] (15.84)
Wartość chwilową amplitudy a(n) sygnału, równą lub większą od zera, można śledzić „obser-
wując” wartość bezwzględną z y(n):
a (n ) = y (n ) (15.85)
Algorytm estymacji wymaga „uciąglenia” kąta Φ(n) otrzymanego ze wzoru (15.83) (w progra-
mie Matlab należy zastosować funkcję unwrap() po funkcji atan2()). Więcej szczegółów
dotyczących tego przykładu, także implementacyjnych, można znaleźć w [Carp94], [Gajd00].
W rozdziale 24 w tabeli 24-2 jest zaprezentowany algorytm filtra Kalmana, wykorzystywanego
w podobnym przypadku, w którym nie jest mierzony kąt fazowy (15.83) sygnału zespolonego
(15.78) tylko kąt przesunięcia fazowego (24.1) pomiędzy dwoma sygnałami rzeczywistymi
(24.2). Po przyjęciu macierzy F i H zgodnie z równaniami (15.82), (15.84), algorytm ten może
być z powodzeniem zastosowany przez Czytelnika do estymacji parametrów Ω(n) i α(n)
sygnału (15.78) na podstawie znajomości jego kąta fazowego Φ(n).
jest wyznaczenie współczynników układu {a1, a2, ..., aN, b0, b1,...,bM} na podstawie znajomości
próbek sygnału wejściowego u(n) oraz próbek sygnału wyjściowego z(n). W powyższym rów-
naniu s(n) oznacza „biały” szum wejściowy, czyli mający „płaskie” widmo częstotliwościowe.
Aby rozwiązać powyższe zadanie identyfikacji za pomocą metodologii filtra Kalmana, należy
omawiane równanie przekształcić do postaci (15.37). Po wprowadzeniu oznaczeń:
x (n ) = [a1 , a2 ,..., a N , b0 , b1 ,..., bM ] T (15.87)
H( n ) = [− z ( n − 1),..., − z ( n − N )), u( n ), u ( n − 1),..., u( n − M )] (15.88)
16.1. Wprowadzenie
Na początek zróbmy „bilans otwarcia”: jakimi narzędziami obliczeniowymi, służącymi do es-
tymacji funkcji gęstości widmowej mocy sygnałów, dysponujemy do tej chwili i jakie są ich
właściwości? Przypomnijmy sobie poznane do tej pory (w rozdziale pierwszym i ósmym) kla-
syczne metody estymacji widmowej:
1) periodogram, czyli kwadrat modułu dyskretnej transformaty Fouriera DFT N próbek anali-
zowanego sygnału x(n), podzielony przez N:
N −1 2
1 f
PˆxPer ( e jΩ ) =
N
∑ x (n)e − j Ωn
, Ω = 2π
f pr
(16.1)
n =0
n =0
K −1 L −1 2
1 1 f
PˆxBartlett (e jΩ ) =
K
∑ L ∑ x ( n + kL ) e − j Ωn
, Ω = 2π
f
(16.3)
k =0 n =0 pr
Zaawansowane metody analizy częstotliwościowej sygnałów 421
L −1 2
1 K −1
∑ x(n + kD)w(n)e− jΩn
f
ˆ
PxWelch
(e ) = ∑
jΩ n =0
L −1 , Ω = (16.4)
K k =0 f pr
∑ | w(n) |2
n=0
Oczywiście, w tym momencie nasuwa się podstawowe pytanie: która z klasycznych metod es-
tymacji funkcji gęstości widmowej mocy jest najlepsza? Aby na nie odpowiedzieć, należy po-
dać parametry (kryteria), które powinny być wzięte pod uwagę podczas ich porównywania.
Należą do nich: 1) unormowana rozdzielczość częstotliwościowa ∆f/fpr (unormowana szero-
kość listka głównego widma okna wypadkowego powinna być jak najmniejsza), 2) wartość
oczekiwana estymaty (powinna być zgodna z teoretyczną, czyli nieobciążona), 3) jej wariancja
(powinna być jak najmniejsza), 4) zmienność estymaty ∆P (czyli wariancja estymaty podzie-
lona przez kwadrat jej wartości oczekiwanej, powinna być jak najmniejsza) oraz 5) iloczyn
rozdzielczości częstotliwościowej i zmienności estymaty jako wskaźnik łączny (powinien być
jak najmniejszy). W tabeli 16-1 porównano właściwości klasycznych metod estymacji widmo-
wej, stosowanych w obecności szumu gaussowskiego, natomiast w tabeli 16-2 przedstawiono
wartości ich wskaźników jakości. Jakie najważniejsze wnioski wynikają z zaprezentowanych
tabel? P o p ier wsze, metody te są efektywne tylko wtedy, kiedy dysponuje się dużą liczbą
próbek analizowanego sygnału. P o d r ugie, najlepszym łącznym wskaźnikiem jakości chara-
kteryzuje się metoda Blackmana-Tukeya. Jednak i w jej przypadku zwiększenie wartości para-
metru M powoduje nie tylko wzrost rozdzielczości analizy, ale także wzrost wariancji (zmien-
ności) estymaty widmowej, czemu można przeciwdziałać tylko zwiększając liczbę analizowa-
nych próbek N.
Nie należy jednak zapominać, że wyznaczanie dyskretnej transformaty Fouriera z iloczynu fra-
gmentu analizowanego sygnału (lub estymaty jego funkcji autokorelacji) z opcjonalnym oknem
czasowym nie jest jedyną metodą analizy częstotliwościowej sygnałów cyfrowych. Od wielu
422 Zaawansowane metody analizy częstotliwościowej sygnałów
Tab. 16-1. Porównanie właściwości wybranych klasycznych metod estymacji widmowej w obecności szumu
gaussowskiego. Oznaczenia: Px(ejΩ) − poprawna wartość funkcji gęstości widmowej mocy sygnału,
WB(ejΩ) = [sin(NΩ/2)/sin(Ω/2)]2/N − transformata Fouriera N-punktowego okna trójkątnego (Bartletta),
W(ejΩ) − transformata Fouriera N-punktowego okna w(n), ⊗ − operacja splotu, ( ∆f / f pr )(3dB
w)
− 3-decybelowa
szerokość widma Fouriera użytego okna (uwaga: w tabeli 8-1 jest podana nie szerokość 3-decybelowa tylko
całkowita, związana z miejscami zerowania się widma okna)
Rozdzielczość
Metoda Wartość oczekiwana Wariancja
∆f/fpr
Periodogram 1 ≈ Px2 ( e jΩ )
Px ( e jΩ ) ⊗ WB ( e jΩ ) 0,89/N
(16.1) 2π
1
Periodogram Px (e jΩ )⊗ | W (e jΩ ) |2
≈ Px2 ( e jΩ ) ( ∆f / f pr )(3dB
N −1 w)
z oknem (16.2) 2π ⋅ ∑ | w( n ) | 2
n =0
Metoda Bartletta 1
Px ( e jΩ ) ⊗ WB ( e jΩ )
(16.3) 2π ≈ Px2 ( e jΩ ) / K 0,89K/N
1
Metoda Welcha (#) Px ( e jΩ )⊗ | W ( e jΩ ) |2
≈ (9 L /16 N ) ⋅ Px2 ( e jΩ ) ( ∆f / f pr )(3dB
L −1 w)
(16.4) 2π ⋅ ∑ | w(n ) | 2
n =0
Tab. 16-2. Porównanie wartości wskaźników jakości wybranych, klasycznych metod estymacji widmowej
lat z dużym powodzeniem są stosowane inne, alternatywne metody, przedmiot naszego zainte-
resowania w niniejszym rozdziale, które są szczególnie efektywne w przypadku analizy krót-
kich zapisów sygnałów − krótkich wektorów danych. Zaliczamy do nich metody modelowania,
zwłaszcza parametrycznego (transmitancyjnego) AR, MA i ARMA, oraz metody dekompo-
zycji macierzowych, tzw. metody podprzestrzeni.
W p ier wszej gr up ie meto d wyznacza się transmitancję układu liniowego (10.50), związa-
nego z sygnałem: tak dobiera się współczynniki wielomianów licznika i mianownika tej trans-
mitancji, aby po pobudzeniu układu białym szumem otrzymać na jego wyjściu analizowany
sygnał. Ponieważ w szumie białym występują wszystkie częstotliwości z jednakowym natęże-
niem i jego widmo jest stałe w funkcji częstotliwości, układ powinien przepuścić tylko te
z nich, które występują w sygnale. Aby tak się stało, częstotliwościowa funkcja przejścia ukła-
du musi odpowiadać widmu sygnału. W zależności od tego, czy transmitancja układu ma tylko
Zaawansowane metody analizy częstotliwościowej sygnałów 423
wielomian mianownika, tylko wielomian licznika czy też oba wielomiany równocześnie, roz-
różnia się metody modelowania: AR (Autoregressive), MA (Moving Average) oraz ARMA
(czyli obie metody jednocześnie). Model MA (tylko licznik) dobrze nadaje się do modelowa-
nia widm ciągłych, na przykład kolorowego szumu, model AR (tylko mianownik) jest efektyw-
ny w przypadku modelowania widm prążkowych, np. złożonych sygnałów sinusoidalnych, mo-
del zaś ARMA (licznik i mianownik) − widm ciągłych z wybijającymi się prążkami, np. kilka
składowych sinusoidalnych „zanurzonych” w kolorowym szumie. Jeśli model jest dobrze do-
brany, to stopień wielomianów transmitancji nie jest wysoki. Podstawowym problem w tej
grupie metod jest więc wybór odpowiedniego modelu i poprawne przyjęcie jego rzędu. Współ-
czynniki transmitancji znajduje się rozwiązując odpowiednie układy równań, wynikające z wy-
żej zdefiniowanego problemu optymalizacji. Do grupy metod modelowania transmitancyjnego
należy również metoda Prony’ego, w której poszukuje się transmitancji układu mającej odpo-
wiedź impulsową równą analizowanemu sygnałowi. Metody parametryczne będą dalej oma-
wiane w projektowej części książki (rozdziały 19 i 20) na przykładzie modelowania AR chwi-
lowej charakterystyki częstotliwościowej traktu głosowego człowieka, wykorzystującego kolej-
ne fragmenty sygnału mowy.
W bardzo dużym uproszczeniu można powiedzieć, że metody z grupy modelowania transmi-
tancyjnego sprowadzają do projektowania filtrów cyfrowych metodą „zer i biegunów”, którą
poznaliśmy w rozdziale 10: zero transmitancji, umieszczone w określonym punkcie na okręgu
jednostkowych w płaszczyźnie zmiennej zespolonej z, powoduje wyzerowanie charakterystyki
częstotliwościowej filtra (widma sygnału) dla wybranej częstotliwości, natomiast jej biegun
umieszczony w określonym punkcie blisko tego okręgu (lecz w jego wnętrzu) − wzmacnianie
wybranej częstotliwości (widma sygnału). Ponieważ współczynniki wielomianów transmitancji
są rzeczywiste, miejsca zerowe wielomianów są liczbami zespolonymi, parami sprzężonymi.
W d r ugiej gr up ie meto d , buduje się macierze z próbek sygnału lub jego funkcji autokore-
lacji, a następnie dokonuje się ich dekompozycji macierzowych, np. względem wartości wła-
snych EVD (Eigen Value Decomposition) lub osobliwych SVD (Singular Value Decomposi-
tion). Estymatę widma wyznacza się na podstawie wartości wektorów własnych, będących wy-
nikiem ww. dekompozycji. Zazwyczaj jest to wektor związany z największą lub najmniejszą
wartością własną (osobliwą). Do tej grupy metod należą metody: Pisarenki, MUSIC (Multiple
Signal Classification), EV (EigenVector), MN (Minimum Norm), ESPRIT (Estimation of Sig-
nal Parameters via Rotational Invariance Techniques) i wiele innych.
Obecnie przedstawimy metody obu grup bardziej szczegółowo. Nie ma co ukrywać: w tym
rozdziale po raz kolejny wypuszczamy się na „głęboką wodę”. Na pocieszenie powiedzmy, że
jest to „głębina” bardzo dobrze znana i opisana w bardzo wielu pozycjach literatury [Cand86,
Cand88, Haye96, Hayk90, Kalo93, Kay88, Kay93, Mano00, Marp87, Marp95, Orfa88,
Pora94, Proa92, Stoi97, Ther92] , które będą nam służyć za przewodnika.
16.2.1. Podstawy
podaje się dyskretny, biały szum s(n) o wariancji σs2 równej 1. Modelowanie sprowadza się do
takiego doboru parametrów transmitancji H(z), aby sygnał y(n) po filtrze był jak najbardziej
podobny do sygnału modelowanego x(n) w sensie średniokwadratowym (błąd średniokwadra-
towy pomiędzy tymi sygnałami powinien być minimalny). Równanie czasowe filtra jest zde-
finiowane następująco:
p q
y(n) + ∑ ak y(n − k ) = ∑ bk s(n − k ) (16.6)
k =1 k =0
gdzie ak i bk oznaczają nieznane, poszukiwane współczynniki modelu (a0 = 1), a jego transmi-
tancja Z jest dana wzorem:
q
Y ( z)
∑ bk z − k B( z )
H ( z) = = k =0 = (16.7)
S ( z) p A( z )
1 + ∑ ak z −k
k =1
Model filtra może być typu: MA (Moving Average) − w (16.7) występuje tylko wielomian
licznika, AR (Autoregressive) − w (16.7) występuje tylko wielomian mianownika, a licznik jest
równy 1, lub ARMA − AR i MA równocześnie, czyli występują oba wielomiany, licznika
i mianownika. Zakłada się, że funkcja gęstości widmowej mocy Pxx(ejΩ) sygnału x(n) jest rów-
na (z = ejΩ, Ω = 2πf/fpr)
2
jΩ jΩ 2 jΩ
B ( e jΩ )
Pxx ( e ) = H (e ) Pss ( e ) = 2
σ 2s (16.8)
jΩ
A(e )
Jeśli widmowe właściwości sygnału x(n) zmieniają się w czasie, to współczynniki ak i bk mogą
być wyznaczane metodami adaptacyjnymi (patrz rysunek 14.4 z rozdziału 14, dotyczącego fil-
tracji adaptacyjnej sygnałów).
Oczywiście podstawowe znaczenie ma właściwy wybór rodzaju modelu (AR, MA lub ARMA)
oraz jego rzędu (stopień wielomianu licznika i mianownika transmitancji). Aby zrozumieć isto-
tę zagadnienia załóżmy, że chcemy zapisać model ARMA (p = 1, q = 1) w równoważnych mu
postaciach AR i MA:
1 + b1 z −1 1
H ( z) = = = 1 + d1 z −1 + d 2 z − 2 + d 3 z − 3 + ... (16.9)
1 + a1 z −1 1 + c1 z −1 + c 2 z − 2 + c3 z − 3 + ...
Po pomnożeniu obu stron powyższego równania przez x(n − m) i obliczeniu wartości oczekiwa-
nej otrzymujemy:
p q
E [ x (n ) x (n − m )] = − ∑ ak E [ x(n − k ) x( n − m )] + ∑ bk E [ s(n − k ) x( n − m )]
k =1 k =0
Ponieważ szum s(n) jest biały i nieskorelowany (czyli Rss(0) = σ2 oraz Rss(m) = 0 dla m ≠ 0),
stąd dla funkcji korelacji wzajemnej Rsx(m) jest prawdziwa następująca zależność:
∞
Rsx (m) = E [s( n + m) x ( n )] = E s( n + m) ∑ h(k ) s( n − k ) =
k =0
∞ ∞
= ∑ h( k ) E [ s (n − k ) s(n + m )] = ∑ h(k ) Rss ( k + m) = σ2s h ( − m ) (16.13)
k =0 k =0
gdzie h(k) oznacza odpowiedź impulsową układu o transmitancji (16.7). Zakładając dodatko-
wo przyczynowość tego układu:
h (k ) = 0 dla k < 0 (16.14)
otrzymujemy:
0, m > 0
Rsx (m ) = 2 (16.15)
σ
s h ( − m ), m ≤ 0
426 Zaawansowane metody analizy częstotliwościowej sygnałów
p
− ∑ ak Rxx ( m − k ), m>q
k =1
Rxx (m) = (16.17)
p q−m
− a R ( m − k ) + σ2
∑ k xx s ∑ bl + m h (l ), 0 ≤ m ≤ q
k =1 l =0
Natomiast dla m < 0 mamy Rxx(m) = Rxx(−m). Rozpatrzmy obecnie po kolei przypadki wszystki
możliwych modeli transmitancji (16.7): AR (q = 0, tylko mianownik transmitancji), MA (p = 0,
tylko licznik) i ARMA (q ≠ 0 i p ≠ 0, licznik i mianownik).
16.2.2. Model AR
Przypomnijmy, model AR jest odpowiedni dla widm „prążkowych”, na przykład sumy kilku
sinusoid. W przypadku kiedy zakładamy występowanie tylko mianownika transmitancji (16.7),
to równanie (16.17) upraszcza się do następującej zależności (q = 0, b0 = 1, h(0) = 1):
p
− ∑ a k R xx ( m − k ), m>0
R xx (m) = k p=1 (16.18)
− a R ( m − k ) + σ 2 , m = 0
∑ k xx s
k =1
którą można zapisać w sposób macierzowy (po uwzględnieniu symetrii funkcji autokorelacji
Rxx(−m) = Rxx(m)):
Powyższą zależność można przedstawić jako parę dwóch oddzielnych równań (osobno zapisu-
jemy p ostatnich równań (16.19) oraz równanie pierwsze):
(16.19) nosi nazwę równania Yule’a-Walkera. Jeśli dysponujemy estymatą funkcji autokorela-
cji Rxx(m) sygnału x(n), to możemy na początku wyznaczyć z (16.20) wartości współczynników
ak odpowiadającego mu modelu AR (a = −R−1r), następnie z (16.21) obliczyć wariancję σs2
szumu wejściowego, a na końcu znaleźć „widmo” sygnału ze wzoru (16.8) (Ω = 2πf / fpr):
1 1
PxxAR (e jΩ ) = 2
σ2s = 2
σ2s (16.22)
jΩ p
A( e )
1+ ∑ a k e − jΩ k
k =1
Rząd modelu p powinien być równy podwojonej liczbie sinusoidalnych sygnałów składowych,
występujących w analizowanym sygnale, czyli każda częstotliwość powinna mieć w transmi-
tancji (16.7) jeden, związany z nią, biegun zespolony oraz jego sprzężenie.
Podczas modelowania AR bardzo ważny jest właściwy wybór rzędu modelu p, czyli stopnia
wielomianu mianownika transmitancji. Do tego celu można wykorzystać następujące kryteria,
w których tak dobiera się wartość parametru p, aby zminimalizować wartość określonej funkcji
celu:
N + ( p + 1) 2
1) FPE (Final Prediction Error): FPE ( p ) = σˆ sp
N − ( p + 1)
2) AIC (Akaike Information Criterion): AIC( p ) = N ln σˆ 2sp + 2 p (16.23)
gdzie N jest liczbą próbek analizowanego sygnału x(n), a σˆ 2sp oznacza estymowaną ekspery-
mentalnie wariancję błędu predykcji (szumu białego) dla konkretnej wartości rzędu modelu p.
Modelowanie AR omówiono bardziej szczegółowo w rozdziałach 19 i 20, poświęconych kom-
presji sygnału mowy metodą LPC-10.
Dla dociekliwych. W literaturze specjalistycznej dotyczącej analizy widmowej sygnałów znana
i popularna jest metoda maksymalnej entropii. Bierze ona swoją genezę w zauważeniu konie-
czności takiej ekstrapolacji dla |m| > p obliczonego wektora próbek estymaty funkcji autokore-
lacji Rxx(m), |m| ≤ p, aby po tej operacji funkcja ta odpowiadała sygnałowi x(n) o maksymalnej
entropii, czyli maksymalnie losowemu. Wówczas estymata funkcji gęstości widmowej mocy
sygnału, oparta na odpowiednio ekstrapolowanym Rxx(m), jest maksymalnie płaska i również
ma maksymalną entropię. Co ciekawe, rozwiązaniem tak postawionego problemu jest estymata
widma, zdefiniowana przez (16.22) z wartościami parametrów ak oraz σs2, wyznaczonymi
z (16.19) lub pary równań (16.20) i (16.21).
16.2.3. Model MA
0, m>q
Rxx (m ) = 2 q −m (16.24)
σ s ∑ bl + m h (l ), 0 ≤ m ≤ q
l =0
428 Zaawansowane metody analizy częstotliwościowej sygnałów
w którym Rbb(m) oznacza funkcję autokorelacji współczynników bk modelu MA. Z (16.8) oraz
(16.25) wynika, że estymata widmowa modelu MA jest równa:
(4.15) (16.25)
PxxMA (e jΩ ) = B (e jΩ ) B* (e jΩ ) σ2s = FT ( Rbb ( m) ) σ2s = FT( Rxx ( m)) = (16.26a)
q
f
= ∑ Rxx ( m)e − jΩm , Ω = 2π (16.26b)
m =− q f pr
gdzie FT oznacza transformację Fouriera, która jest zastosowana w stosunku do funkcji auto-
korelacji sygnału analogicznie jak w równaniu (1.49a) (z podstawieniami: N = q + 1, Ω =
= 2πf / fpr). W (16.26a) wykorzystaliśmy właściwość (4.15), obowiązującą także dla sygnałów
dyskretnych, zgodnie z którą transformata Fouriera funkcji autokorelacji sygnału jest równa
iloczynowi widma Fouriera tego sygnału i jego sprzężenia zespolonego. Z równania (16.26b)
wynika, że w celu wyznaczenia estymaty widmowej, opartej na modelu MA, wcale nie ma po-
trzeby obliczania wartości współczynników bk tego modelu (16.7), natomiast należy znać jego
rząd q. Optymalna wartość parametru q minimalizuje kryterium Akaike AIC, mające identycz-
ną postać (16.23) jak w przypadku modelu AR, w którym teraz parametr q zastępuje p.
Jeśli jest to wymagane, to wartości współczynników bk transmitancji (16.7) oblicza się, wyko-
rzystując fakt, że ta sama charakterystyka częstotliwościowa może być modelowana zarówno
układem MA jak i AR (16.9). Dlatego w tym przypadku na początku estymuje się wartości
modelu AR, przyjmując wartość p wielokrotnie większą od q (minimum 4 razy, często 8 razy),
a potem wyznacza się współczynniki odpowiadającego mu modelu MA: B(z) ≈ 1/A(z) (patrz
(16.10)). Wówczas A(z)B(z) ≈ 1, czyli splot współczynników ak i bk jest w przybliżeniu impul-
sem (deltą) Kroneckera. Znając wartości współczynników ak zapisuje się równania splotu dla
kolejnych chwil czasowych, a następnie rozwiązuje się otrzymany w ten sposób układ równań
w sensie średniokwadratowym:
A ⋅ b = δ ⇒ b = ( AT A ) −1 A ⋅ δ (w Matlabie : b =A \ δ ) (16.27)
1 0 0 1
a 1 0 0
1 b0
a2 a1 1 0
A= , b = b1 , δ=
a3 a2 a1 b2 0
0 a a 0
3 2
0 0 a3 0
1 0 a1
a 1 a
1 b 2
A = a2 a1 , b = 1 , δ = − a3
b2
a3 a 2 0
0 a3 0
1 p −|i − j|
Raa (i, j ) = ∑ ak ak +|i − j| , i, j = 1, 2, 3,..., q
p + 1 k =0
(16.28a)
1 p −i
raa (i ) = ∑ ak ak +i , i = 1, 2, 3,..., q
p + 1 k =0
(16.28b)
16.2.5. Podsumowanie
16.3.1. Podstawy
Jak wiemy estymatory funkcji gęstości widmowej mocy sygnału w większości operają się na
estymacie funkcji autokorelacji Rxx(m) analizowanego sygnału x(n), czego przykładem są rów-
nania (8.60) i (16.20). W wielu metodach analizy częstotliwościowej jako krok pośredni two-
rzy się macierz Rxx (16.20), której elementami są wartości próbek wyżej wymienionej estyma-
ty. Jest ona symetryczna dla sygnałów rzeczywistych (Rxx(i,j) = Rxx(j,i)) oraz symetryczna-
-sprzężona dla sygnałów zespolonych (Rxx(i,j) = Rxx*(j,i)). Dla tej macierzy można obliczyć
wartości własne λk i wektory własne vk, oraz przedstawić ją jako sumę (2.89) macierzy elemen-
tarnych vkvkT wziętych z wagami λk. W sytuacji, kiedy sygnał jest sumą kilku składowych sinu-
soidalnych i szerokopasmowego szumu białego, część wektorów własnych zależy przede
wszystkim od składowych harmonicznych sygnału (składowe główne − principal components),
a pozostałe − wyłącznie od szumu. Wektory własne są ortogonalne i rozpinają dwie dopełnia-
jące się przestrzenie: sygnału i szumu. Jeśli jesteśmy w stanie wyznaczyć na podstawie Rxx ba-
danego sygnału jakikolwiek wektor leżący w przestrzeni szumu, to możemy skorzystać z faktu
Zaawansowane metody analizy częstotliwościowej sygnałów 431
Funkcja autokorelacji tego Ryy(m) sygnału oraz związana z nią macierz Ryy = Rxx + Rss są dane
następującymi wzorami:
więc wektor e1 jest wektorem własnym v1 macierzy, związanym z wartością własną λ1 = M|A1|2.
Ponieważ macierz Rxx jest hermitowska (sprzężona symetria), to wektor ten jest ortogonalny do
pozostałych jej wektorów własnych v2, v3, ..., vM, związanych z pozostałymi, innymi wartoś-
ciami własnymi: λ2, λ3, ..., λM. Ponieważ Rxx jest macierzą pierwszego rzędu, to wartości te są
równe zero. W związku z tym otrzymujemy (k = 1, 2, 3, ..., M − 1):
i tym przypadku dekompozycja macierzy Ryy względem wartości własnych jest następująca:
p M
R yy = ∑ (λ k + σ2s ) v k v kH + ∑ σ2s v k v kH (16.40)
k =1 k = p +1
W związku z tym, podobnie jak poprzednio, możemy wykorzystać jeden z wektorów należą-
cych do podprzestrzeni szumu (k > p) do znalezienia ortogonalnych do niego sygnałów harmo-
nicznych (baz Fouriera). Rozdział 16.3.3 stanowi kontynuację rozważań, zapoczątkowanych
powyższymi rozważaniami, dotyczącymi sygnałów zespolonych.
Teraz natomiast zajmijmy się metodą Pisarenki, była ona prekursorem metod podprzestrzeni
analizy widmowej, a dotyczyła sygnałów rzeczywistych.
p p p f
x (n) = ∑ xk (n) = ∑ Ak sin(Ω k n ) = ∑ Ak sin 2π f k n
(16.41)
k =1 k =1 k =1 pr
czyli że składa się z sumy sygnałów sinusoidalnych o różnych parametrach. Każdy z sygnałów
xk(n) = Aksin(Ωkn) można uzyskać za pomocą rekursywnej zależności:
x k ( n ) = −a k(1) xk (n − 1) − a k( 2) x k ( n − 2) (16.42)
gdzie
a k(1) = −2 cos Ω k , a k( 2) = 1, xk ( −1) = 0, xk ( −2) = − Ak sin Ω k (16.43)
Z (16.42) i (16.43) wynika, że w przypadku sinusoid można „generować” ich kolejną próbkę
na podstawie dwóch próbek poprzednich. Uogólniając wykazuje się, że sygnał postaci (16.41)
da się przedstawić za pomocą zależności rekurencyjnej:
2p
x (n ) = − ∑ a m x( n − m) (16.44)
m =1
1 1
H ( z) = 2p
= (16.45)
A( z )
1+ ∑ am z −m
m =1
Układ (16.45) jest wstępnie wprowadzany w stan początkowy (16.43), a później pobudzany
sygnałem zerowym. Załóżmy, że nie dysponujemy „czystym” sygnałem x(n) tylko jego „zaszu-
mioną” wersją y(n), stanowiącą odstępstwo od założonego modelu (16.41):
y ( n ) = x (n ) + s( n ) (16.46)
lub (a0 = 1)
2p 2p
∑ a m y (n − m) = ∑ a m s(n − m) (16.48)
m=0 m =0
y T a = sT a (16.49)
gdzie
y = [ y ( n ), y ( n − 1), ..., y (n − 2 p )] T
a = [a0 , a1 , a2 ,..., a2 p ] T
E[ yy T ] a = E [ ysT ] a (16.50)
czyli:
R yy a = E [( x + s)sT ] a = E[xsT ]E[ssT ] a = E[ssT ] a = σ 2s a (16.51)
R yy a = σ 2s a (16.52)
Tab. 16-3. Algorytm metody Pisarenki estymacji funkcji gęstości widmowej mocy sygnału, składającego się
z kilku sinusoid
1) Wyznaczamy eksperymentalnie wartości funkcji autokorelacji Ryy(m), m = 0, 1, 2, ..., 2p, sygnału y(n).
2) Konstruujemy macierz Ryy o wymiarach (2p + 1)×(2p + 1), identyczną jak ta w równaniu (16.20) tylko
zbudowaną z wartości funkcji autokorelacji Ryy(m):
3) Dokonujemy dekompozycji tej macierzy względem wartości własnych, wykorzystując jedną z istnieją-
cych metod numerycznych, np. metodę Jacobiego lub QR (funkcje eig() i eigs() w programie Mat-
lab):
2 p +1
R yy = ∑ λ k v k vT , λ1 ≥ λ 2 ≥ λ 3 ≥ ... ≥ λ 2 p +1 (16.54)
k =1
4) Najmniejsza wartość własna λ2p+1 jest równa wariancji szumu σs2, a związany z nią wektor v2p+1 jest
równy wektorowi a; elementy tego wektora stanowią współczynniki wielomianu A(z) w równaniu
(16.45).
5) Wyznaczamy 2p zespolone zera wielomianu A(z) (czyli bieguny transmitancji H(z)), które występują
w parach sprzężonych:
ˆ ˆ
{ zk , zk* , k = 1, 2, 3, ..., p } ⇒ { rk e jΩk , rk e− jΩk , k = 1, 2, 3, ..., p } (16.55)
W ten sposób zostają obliczone estymaty Ω̂ k unormowanych pulsacji Ωk = 2πfk/fpr poszczególnych skła-
dowych sygnału x(n) (16.41).
6) Aby pójść krok dalej i wyznaczyć estymaty Âk amplitud Ak tych składowych, należy skorzystać z za-
leżności (1.20b):
p p
R yy (0) = ∑ ( Ak2 / 2) + σ 2s = ∑ Pk + σ 2s (16.56)
k =1 k =1
p
R yy (m ) = ∑ Pk cos(mΩ k ), m = 1, 2, 3, ..., p (16.57)
k =1
i zaszumionego:
gdzie I(M) jest macierzą diagonalną o wymiarach M×M, mającą jedynki na głównej przekątnej,
a zespolone macierze Ryy(M) i Rxx(M) są zdefiniowane w sposób następujący (zz = xx lub yy):
gdzie „H” oznacza równoczesne sprzężenie zespolone oraz transpozycję. Wektory własne de-
kompozycji vk są ortonormalne (ortogonalne i unormowane). Pierwszych p z nich leży w prze-
strzeni sygnału, a następne, od p + 1 do M, leżą w przestrzeni szumu. Wektory zespolone zwią-
zane z poszczególnymi częstotliwościami sygnałów składowych sygnału x(n):
[
e k = 1, e jΩ k , e j 2Ω k , e j 3Ω k ,..., e j ( M −1)Ω k ] T
, k = 0, 1, 2, ..., p (16.64)
vp+1, należącego do przestrzeni szumu, do każdego wektora sygnału ek, leżącego w przestrzeni
sygnału:
e kH v p +1 = 0, k = 1, 2, 3, ..., p (16.66)
Jak wiemy z wyprowadzenia metody Pisarenki, zamiast rozwiązywać powyższy układ równań
ze względu na Ωk, k = 1, 2, 3,..., p, wystarczy znaleźć miejsca zerowe następującego wielomia-
nu (patrz (16.45)):
p
V p +1 ( z ) = ∑ v p+1 (k ) z −k (16.67)
k =0
i „odczytać” kąty (pulsacje Ωk) tych zer. Alternatywnie estymator częstotliwościowy Pisarenki
dla sygnału zespolonego (16.59) można zapisać jako
1 T
PPIS (e jΩ ) = , e = 1, e jΩ , e j 2Ω , e j 3Ω ,..., e j ( M −1)Ω , Ω ∈ [0,2 π) (16.68)
2
e H v p +1
1 T
PMU, EV (e jΩ ) = , e = 1, e jΩ , e j 2Ω , e j 3Ω ,..., e j ( M −1)Ω (16.69)
M 2
∑ H
αk e v k
k = p +1
Kiedy wszystkie wagi αk w (16.69) są równe 1, otrzymujemy metodę MUSIC (Multiple Signal
Classification), natomiast przyjmując αk = 1/λk − metodę EV (EigenVector). Jeśli szum s(n)
w (16.60) jest biały, to wartości własne λk, k = p+1, ..., M, są takie same i równe wariancji
szumu. Wówczas metoda EV sprowadza się do metody MUSIC, w przeciwnym przypadku
widmo otrzymywane z metody EV ma mniej fałszywych maksimów (tzw. maksimów „du-
chów”).
1 T
PMN (e jΩ ) = , e = 1, e jΩ , e j 2Ω , e j 3Ω ,..., e j ( M −1)Ω (16.70)
2
eH a
M −1 M −1
∏ (1 − e jΩk z −1 ) ⋅ ∏
p
A( z ) = ∑
k =0
ak z − k =
k =0 k = p +1
(1 − zk z −1 ) (16.71)
Zaawansowane metody analizy częstotliwościowej sygnałów 437
miała p miejsc zerowych exp(jΩk), leżących na okręgu jednostkowym, gdyż wówczas wyraże-
nie (16.71) zeruje się dla nich, a jego odwrotność dąży do nieskończoności, czyli funkcja
PMN(ejΩ) ma maksima dla częstotliwości harmonicznych sygnałów składowych w (16.69).
Równocześnie jednak jesteśmy zainteresowani, aby pozostałe miejsca zerowe zk były położone
poza okręgiem i nie powodowały maksimów funkcji (16.71). Pomocniczo zakłada się także, że
kwadrat normy wektora a ma być najmniejszy (suma kwadratów współczynników) oraz że
a0 = 1.
Oto warunki gwarantujące spełnienia dwóch z trzech założeń, dotyczących wektora a.
1) Wektor a należy do przestrzeni szumu. Ponieważ macierz Ts = VsVsH, Vs = [vp+1, ..., vM−1]
rzutuje dowolny wektor b do przestrzeni szumu, załóżmy, że poszukiwany przez nas wektor a
jest właśnie wynikiem takiego rzutu: a = Ts⋅b.
2) Pierwszy element wektora a jest równy jeden, jeśli aHu = 1 dla u = [1, 0, ..., 0].
Łącząc oba warunki w jeden otrzymujemy (podstawiając 1) do 2)): bH(TsHu) = 1. Ponieważ
kwadrat normy poszukiwanego wektora jest równy ||a||2 = || Ts⋅b ||2 = bH(TsHTs) b, a macierz
T jest idempotentna (TsHTs = Ts), to metoda MN sprowadza się do znalezienia rozwiązania
poniższego problemu minimalizacyjnego ze względu na wektor b:
( )
min b H Ts b , z ograniczeniem bH(TsHu) = 1 (16.72)
ponieważ macierz Ts jest hermitowska (TsH = Ts), skąd otrzymujemy Ts−1TsH = I, czyli macierz
identycznościową). Wektor a dany równaniem (16.73) wykorzystujemy następnie w estymacie
widmowej (16.70).
Zajmiemy się teraz metodą ESPRIT (Estimation of Signal Parameters via Rotational Inva-
riance Techniques). Podobnie zakłada się w niej, że problem dotyczy estymacji częstotliwości
fk (Ωk = 2πfk/fpr) składowych sygnału wieloharmonicznego (16.59) w obecności szumu białego
(16.60), tym razem jednak na podstawie M + 1 kolejnych próbek sygnału y(n) (16.60), dla któ-
rych formułuje się następujące, dwa równania:
(16.74)
438 Zaawansowane metody analizy częstotliwościowej sygnałów
jφ
y ( n + 1) e jΩ1 0 " 0 A1e 1 s( n + 1)
y ( n + 2) jφ
= W 0 e jΩ 2 " 0 A2 e 2 s ( n + 2)
y1 = # + = W ⋅ Φ ⋅ a + s1 (16.75)
# #
# # % #
0 jΩ jφ
y(n + M ) 0 " e p Ap e p s( n + M )
Jak widać grupuje się wartości próbek sygnału y(n) w dwa M-elementowe wektory, zaczynają-
ce się od n-tej oraz (n + 1)-ej próbki. Następnie w sprytny sposób wykorzystuje się fakt, że
w obu wektorach y0 i y1 występuje dokładnie ten sam sygnał wieloharmoniczny tylko opóźnio-
ny o jedną próbkę, czyli przesunięty w fazie (poprzez macierz Φ). W tym celu wyprowadza się
wzór na macierz kowariancji własnej wektora y0 = y(n):
gdzie
Jeśli założymy dodatkowo, że Ry0(m) = E[y*(n)y(n + m)] oznacza funkcję autokorelacji sygnału
y(n), to wówczas macierze Ry0,y0 oraz Ry0,y1 są równe:
I w tym momencie Sezam się otwiera. Zauważamy mianowicie, że prawdziwa jest następująca
zależność:
C y 0, y 0 − λC y 0, y1 = W ⋅ P ⋅ W H − λW ⋅ P ⋅ ΦH ⋅ W H = W ⋅ P ⋅ ( I − λΦ H ) ⋅ W H (16.81)
Zaawansowane metody analizy częstotliwościowej sygnałów 439
(
C y 0, y 0 v = λC y 0, y1v ⇒ (C y 0, y 0 − λC y 0, y1 ) v = 0 ⇒ det C y 0, y 0 − λ C y 0, y1 = 0 ) (16.82)
Kończąc niniejszy rozdział wypada jeszcze dwa słowa powiedzieć na temat możliwości wyko-
rzystania dekompozycji macierzy autokorelacji sygnału względem wartości własnych w innych
metodach estymacji widmowej. Jest to możliwe wszędzie tam, gdzie na dowolnym etapie prze-
twarzania danych jest wykorzystywana macierz autokorelacji lub jej odwrotność. Jeśli wiemy,
że sygnał zawiera p/2 składowych sinusoidalnych (sygnał rzeczywisty) lub p harmonicznych
(sygnał zespolony), to należy dokonać ww. dekompozycji macierzy Rxx lub Rxx−1:
p M p M
1 1
R xx = ∑ λ k v k v kH + ∑ λ k v k v kH , R −xx1 = ∑ v k v kH + ∑ v k v kH (16.83)
k =1 k = p +1 λ
k =1 k λ
k = p +1 k
i w konkretnej metodzie wykorzystać tylko estymaty obu macierzy, reprezentowane przez pier-
wsze składniki powyższych sum, uwzględniające tylko główne wektory własne (principal com-
ponents) z przestrzeni sygnału:
p p
ˆ = ∑λ v vH ,
R ˆ −1 = ∑ 1 v v H
R (16.84)
xx k k k xx k k
k =1 k =1 λ k
p
1 ˆ e= 1
PˆxPC − BT ( e jΩ ) = e H R
M
x
M
∑ λ k | e H v k |2 (16.85b)
k =1
f π f π
x ( n ) = sin 2π 1 n − + sin 2π 2 n + + s( n )
f pr
5 f pr 7
Tab. 16-4. Przykład programu do testowania wybranych niefourierowskich metod estymacji częstotliwo-
ściowej
clear all;
a) 2
1.5
1
0.5
x(n)
0
-0.5
-1
-1.5
-2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
n
b) 50
Pisarenko
40
30
20
Px(f) [dB]
periodogram
10
0
-10
MUSIC
-20
AR
-30
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
f [Hz]
Rys. 16.2. Sygnał x(n) oraz przykładowe estymaty jego funkcji gęstości widmowej mocy Px(f), otrzymane za
pomocą różnych metod: x(n) = sin(2π(f1/fpr)n − π/5) + sin(2π(f2/fpr)n + π/7) + s(n), s(n) − szum normalny
(0, 0,1), f1 = 5 Hz, f2 = 12 Hz, fpr = 32 Hz, N = 16, n = 0, 1, 2, ..., N−1
p = 2; % liczba sinusoid
pp = 2*p; % liczba potrzebnych biegunów transmitancji
M = pp+4; % wybór metody: M=pp metoda AR, M=pp+1 metoda Pisarenki i ESPRIT, M>pp+1 metoda MUSIC
% Generacja sygnału
dt=1/fpr; n=0:N-1; t=n*dt; randn('state',1);
x = sin(2*pi*f1*t-pi/5) + sin(2*pi*f2*t+pi/7) + 0.1*randn(1,N); x = x - sum(x)/N;
stem(x); title('suma dwóch sinusoid'); xlabel('numer próbki'); pause
% Metody AR, Pisarenko, MUSIC - oblicz funkcję autokorelacji, zbuduj macierz autokorelacji
for k=0:M
r(k+1)=sum( x(1:N-k) .* x(1+k:N) )/(N-k); % oblicz estymatę funkcji autokorelacji:
end % r(0), r(1), r(2),..., r(M)
for k=1:M
R(k,1:M)=[r(k:-1:2) r(1:1:M-(k-1))]; % zbuduj macierz autokorelacji R
end
442 Zaawansowane metody analizy częstotliwościowej sygnałów
if (M==2*p) % metoda AR
rr(1:pp,1)=(r(2:pp+1))'; % utwórz wektor r(1), r(2),..., r(2*p)
a=-inv(R)*rr; % oblicz współczynniki transmitancji; inaczej a = −R\rr
sigma=r(1)+r(2:pp+1)*a; % oblicz wariancję szumu sigma
a = [ 1; a ]; % dodaj na początku współczynnik równy 1
X2=abs(fft(a,NF)).^2; Px2=-10*log10(X2) + 10*log10(sigma);
plot(f(m),Px2(m)); title('Widmo AR'); xlabel('f[Hz]'); grid; pause
end
x ( t ) = ∑ a k g k (t ) (17.1)
k
gdzie
ak = ∫ x (t ) γ*k ( t ) dt (17.2)
i γk(t) jest sygnałem dualnym do gk(t), a znak „*” oznacza sprzężenie zespolone. Każdy z sy-
gnałów bazowych ma inną częstotliwość. Wartości współczynników ak określają jakie często-
tliwości występują w sygnale, a jakie nie. Sygnały bazowe gk(t) mogą być rzeczywiste lub zes-
polone. W zależności od pasma częstotliwościowego sygnałów x(t) oraz gk(t) suma (17.1)
może być skończona lub nieskończona. Jako sygnały bazowe stosuje się funkcje Fouriera,
Bessela, Czebyszewa i Haara oraz wielomiany Czebyszewa, Hermite’a, Legendre’a i La-
guerre’a. Im kształt funkcji bazowych i ich przesunięcie są lepiej dopasowane do rodzaju
rzeczywistych sygnałów składowych obecnych w x(t), tym mniej współczynników ak ma
wartości niezerowe i tym bardziej jest skupione (selektywne) widmo amplitudowe sygnału
Sx(k), zdefiniowane jako:
S x (k ) = a k
2
(17.3)
Funkcje bazowe gk(t) muszą rozpinać całą przestrzeń sygnałów określonego typu, wówczas
każdy sygnał pomiarowy należący do tej przestrzeni może być przedstawiony za pomocą
(17.1). Ze względu na rodzaj funkcji bazowych gk(t) rozróżnić można trzy przypadki.
1) Jeśli funkcje bazowe są o r t o n o r m a l n e , tzn.
1 dla k = l
∫ g k (t )g l (t )dt = 0
*
(17.4)
dla k ≠ l
wówczas bazowe sygnały analizujące są takie same jak bazowe sygnały syntezujące:
Metody czasowo-częstotliwościowej analizy sygnałów 445
γ k (t ) = g k (t ) (17.5)
i każdy analizowany sygnał x(t) ma unikalne rozwinięcie w tej przestrzeni (reprezentuje go tyl-
ko jeden zestaw współczynników {ak}).
2) Kiedy funkcje bazowe gk(t) są l i n i o w o n i e z a l e ż n e , tzn. żadna z nich nie może być
przedstawiona jako liniowa kombinacja pozostałych, wówczas funkcje analizujące γk(t) są inne
niż funkcje syntezujące gk(t) i wyznacza się je z warunku biortonormalności:
1 dla k = l
∫ gk ( t ) γ l ( t ) dt = 0
*
(17.6)
dla k ≠ l
Istnieje tylko jeden zbiór {γk(t)}. Przyporządkowanie x(t) ↔ {ak} jest dalej wzajemnie jedno-
znaczne.
3) Kiedy funkcje bazowe gk(t) są l i n i o w o z a l e ż n e , ale rozpinają przestrzeń sygnałów,
wówczas istnieje wiele zbiorów funkcji γk(t) spełniających (17.6). Zazwyczaj wybiera się ten,
w którym funkcje analizujące są najbardziej zbliżone do funkcji syntezujących. Przyporządko-
wanie x(t) ↔ {ak } nie jest już wzajemnie jednoznaczne i zależy od wyboru zbioru {γk(t)}.
Teoria wyboru zbiorów {gk(t)} i projektowania zbiorów {γk(t)} jest nazywana teorią rozpięć
(ang. frames).
Funkcje gk(t) i γk(t) mogą mieć różny charakter w zależności od rodzaju analizowanego sygna-
łu. W przypadku sygnałów s t a c j o n a r n y c h (niezmiennych w czasie) one także powinny być
s t a c j o n a r n y m i drganiami (oscylacjami) o nieskończonym nośniku, takimi np. jak sygnały
(ko)sinusoidalne w bazie fourierowskiej (rysunek 17.1a). Dla sygnałów n i e s t a c j o n a r n y c h
(zmiennych w czasie, impulsowych) funkcje bazowe powinny zaś mieć postać n i e -
s t a c j o n a r n y c h oscylacji impulsowych o skończonym nośniku, takich np. jak w trans-
formacie Haara, Gabora lub transformacie falkowej (rysunek 17.1b). W pierwszym przypadku
sygnał aproksymowany jest sumą nieskończonych w czasie drgań o różnych częstotliwościach,
w przypadku zaś drugim − sumą ograniczonych w czasie przebiegów impulsowych, występu-
jących w różnych chwilach czasowych i mających różne pasmo częstotliwościowe. Im kształt
funkcji bazowych będzie bardziej dopasowany do analizowanego sygnału, tym mniejsza liczba
tych funkcji wystarczy do jego aproksymacji. Na rysunku 17.2 przedstawiono przykładowy
zestaw funkcji bazowych, który może być stosowany do czasowo-częstotliwościowej dekom-
pozycji sygnałów niestacjonarnych. Ponieważ każdy z przebiegów impulsowych „pokrywa”
określony przedział czasowy i częstotliwościowy, w wyniku (17.2) wyznacza się ilość sygnału,
przypadającą na określoną komórkę czasowo-częstotliwościową. Pola wszystkich takich komó-
rek nie powinny się nakładać i dać po zsumowaniu całą przestrzeń czasowo-częstotliwością.
Dwie podstawowe strategie podziału tej przestrzeni i związane z nimi szachownice czaso-
wo-częstotliwościowe są przedstawione na rysunku 17.3. Pierwsza z nich dotyczy krótko-
czasowej transformacji Fouriera, a druga transformacji falkowej. W przypadku pierwszym ko-
mórki szachownicy mają zawsze taką samą wielkość i kształt, w przypadku zaś drugim − taką
samą wielkość, lecz różny kształt: dla niskich częstotliwości mają lepszą rozdzielczość często-
tliwościową a gorszą czasową, natomiast dla wysokich częstotliwości odwrotnie − gorszą
rozdzielczość częstotliwościową a lepszą czasową. Oczywiście sposób dekompozycji powinien
być odpowiednio wybrany w zależności od rodzaju sygnału i celu analizy. Najlepiej żeby
struktura szachownicy czasowo-częstotliwościowej była adaptacyjnie dopasowywana do
lokalnych cech analizowanego sygnału. Kryterium jej doboru powinna być minimalizacja nie-
zerowych współczynników dekompozycji sygnału, czyli bardzo dobre dopasowanie kształtu
funkcji bazowych do kształtu sygnału oraz chwil ich występowania. Przykładowo, na rysunku
446 Metody czasowo-częstotliwościowej analizy sygnałów
1.0
1.0
0.5 0.5
0.0 0.0
-0.5 -0.5
-1.0 -1.0
0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
czas [s] czas [s]
Rys. 17.1. Przykładowy kształt funkcji analizujących w transformacji Fouriera (po lewej) i transformacji
falkowej (po prawej). Różnica pomiędzy globalną falą a lokalną falką (falka Daubechies ψD20)
4.00
poziom dekompozycji j
3.00
2.00
1.00
0.00
0 5 10 15 20 25 30
czas [s]
Rys. 17.2. Ilustracja dekompozycji sygnału względem falek Daubechies ψD16. W celu większej czytelności
rysunku jest pokazana co szesnasta falka
a) b)
f f
t t
Rys. 17.3. Podstawowe szachownice dekompozycji czasowo-częstotliwościowej sygnałów: transformacja
Gabora − krótkoczasowa transformacja Fouriera (a) oraz transformacja falkowa (b). Ciemnym kolorem
zostały zaznaczone niezerowe współczynniki przykładowej dekompozycji czasowo-częstotliwościowej syg-
nału z liniowo narastającą częstotliwoscią
Metody czasowo-częstotliwościowej analizy sygnałów 447
f f
t t
Rys. 17.4. Przykłady innych schematów dekompozycji sygnału w dziedzinie czas-częstotliwość
g ( t ) = ( 2α )
1/ 4
(
exp − απt 2 ) (17.9)
a) b)
1 1
g(t) 0 .5 0 .5
g(t)
0 0
-0 .5 -0 .5
-1 -1
0 0 .0 5 0 .1 0 .1 5 0 .2 0 0 .0 5 0 .1 0 .1 5 0 .2
t [s ] t [s ]
c) d)
0 .2 0 .2
0 .1 5 0 .1 5
0 .1 0 .1
0 .0 5 0 .0 5
0 0
0 20 40 60 80 100 0 20 40 60 80 100
f [H z] f [H z]
e) f)
100
10 80
5
60
f [Hz]
0
100
40
80
0.15
60
20
40 0.1
f [Hz]
20 0.05
t [s]
0 0
0 0 0.05 0.1 0.15
t [s]
Rys. 17.5. Przykład przesuwania w częstotliwości (modulacji) (4.11) funkcji Gaussa (17.9): a), b) sygnały
zmodulowane, czyli falki, dla dwóch częstotliwości modulujących, mniejszej i większej (pokazana tylko
część rzeczywista), c), d) ich widma Fouriera, e), f) widmo czasowo-częstotliwościowe TF falki z rysunku
b) przedstawione jako wykres 3D oraz mapa konturowa z izoliniami
Metody czasowo-częstotliwościowej analizy sygnałów 449
a) α1 b) α2 c) α3
f f f
t t t
Rys. 17.6. Czasowo-częstotliwościowe widma Wignera-Ville’a (17.66a) dla okna Gaussa (17.9), zakłada-
jąc: α1 < α2 < α3
f f
α = 1/2
4 4
3 3 α=1
2 2 α=2
1 1
0 1 2 3 4 t 0 1 2 3 4 t
Rys. 17.7. Konsekwencje czasowo-częstotliwościowe operacji wykonywanych na oknie Gaussa: a) przesu-
nięcie w czasie i w częstotliwości (opóźnienie czasowe, modulacja częstotliwościowa), b) przeskalowanie
w osi czasu dla współczynników α = 1/2 i α = 2 (17.9), prowadzące do odwrotnego przeskalowania w osi
częstotliwości (zawężenie w jednej dziedzinie prowadzi do rozszerzenia w drugiej dziedzinie i odwrotnie)
Tradycyjne metody analizy częstotliwościowej, w tym analiza fourierowska, nie nadają się do
analizy sygnałów zmiennych w czasie. Rysunek 17.8 stanowi ilustrację powyższego stwier-
dzenia. Przedstawiono na nim wyniki analizy częstotliwościowej sygnału z liniową modulacją
częstotliwości. Moduł widma Fouriera informuje nas o szerokim paśmie częstotliwościowym
wejściowego sygnału, ale nie daje nam żadnej informacji o rodzaju zmienności częstotliwości
w czasie. Śledzenie zmienności widma chwilowego umożliwiają natomiast reprezentacje
czasowo-częstotliwościowe, które zwykle są przedstawiane jako wykresy 3D lub mapy kontu-
rowe z zaznaczonymi izoliniami. W tym przypadku także zastosowano czasowo-częstotliwoś-
ciową transformację Wignera-Ville’a (podrozdział 17.5). Wyznaczona numerycznie reprezen-
tacja TF sygnału LFM wyraźnie pokazuje narastanie częstotliwości chwilowej sygnału w fun-
kcji czasu (rysunki 17.8c i 17.8d).
Podsumowując, problem analizy czasowo-częstotliwościowej sygnałów niestacjonarnych spro-
wadza się do wyboru odpowiedniego schematu (szachownicy) dekompozycji przestrzeni TF,
jej najlepszej synchronizacji z analizowanym sygnałem oraz wyboru właściwych funkcji bazo-
wych rozwinięcia: g(t) i γ(t) (17.1), (17.2), których kształt odpowiada naturze tego sygnału.
Jest wskazane stosowanie lokalnego dopasowania ww. dekompozycji do lokalnych cech syg-
nału, czyli jej adaptacja. Efektywna dekompozycja charakteryzuje się małą liczbą niezerowych
współczynników rozwinięcia. Jest to szczególnie korzystne w zastosowaniach kompresji i od-
szumiania sygnałów w dziedzinie TF.
450 Metody czasowo-częstotliwościowej analizy sygnałów
a) b)
1 0.05
0.04
0.5
0.03
x(t)
0
0.02
-0.5
0.01
-1 0
0 0.2 0.4 0.6 0.8 1 0 100 200 300 400 500
t [s] f [Hz]
c) d)
200
60
150
40
f [H z]
20
100
0
200
150 0.8 50
100 0.6
50 0.4
0 0.2
0.2 0.4 0.6 0.8
t [s]
Rys. 17.8. Analiza częstotliwościowa sygnału sinusoidalnego z częstotliwością narastającą w sposób linio-
wy: a) sygnał czasowy, b) jego widmo Fouriera, c), d) reprezentacje czasowo-częstotliwościowe sygnału:
wykres 3D i kontur
gdzie gm,n(t) oznacza przesuniętą w czasie o m⋅∆t oraz w częstotliwości o n⋅∆f dowolną fun-
kcję bazową (prototypową) g(t) o energii równej jedności (∆t, ∆f − zadane przesunięcie w cza-
sie i częstotliwości):
W równaniu (17.12) γ(t) oznacza funkcję prototypową (okno) analizy, która musi być biorto-
gonalna do funkcji prototypowej (okna) syntezy g(t) (17.11). Przy zadanym g(t) okno γ(t) jest
obliczane na podstawie zależności:
Ponieważ funkcja bazowa g(t) powinna charakteryzować się równoczesną dużą koncentracją
energii w dziedzinie czasu i częstotliwości, najczęściej jest stosowane okno gaussowskie.
Równanie (17.12) jest równaniem analizy (sygnał x(t) → współczynniki dekompozycji cm,n),
a (17.10) − równaniem syntezy (współczynniki dekompozycji cm,n → sygnał x(t)).
Na rysunkach 17.5a i 17.5b przedstawiono przykładowe kształty funkcji bazowych gm,n(t).
W związku z tym, że stosujemy ciągle to samo okno g(t), pole i kształt atomu TF związanego
z funkcjami gm,n(t) są stałe (rysunek 17.5f). W wyniku przesuwania okna w czasie i w często-
tliwości uzyskuje się szachownicę dekompozycji, przedstawioną na rysunku 17.3a. Przeska-
lowując okno g(t) w funkcji czasu (np. zmieniając parametr α w oknie gaussowskim), można
zmieniać kształt elementarnej komórki TF (rysunki 17.6 i 17.7b) i modyfikować realizowaną
w praktyce strategię podziału przestrzeni czas-częstotliwość (rysunek 17.9). Strategię tę należy
dopasować do rodzaju analizowanego sygnału.
Wynikowa czasowo-częstotliwościowa reprezentacja Gabora ciągłego sygnału x(t) jest definio-
wana jako
2
S x ( mT , nF ) = cm,n (17.14)
a) b)
f f
t t
Rys. 17.9. Przykłady możliwych dekompozycji sygnału w przestrzeni TF w transformacji Gabora dla:
a) długiego okna g(k), b) krótkiego okna g(k)
M −1 N −1
x (k ) = ∑ ∑ cm,n g ( k − m ⋅ ∆M ) WL( n⋅∆N )⋅k (17.15)
m =0 n =0
L −1
cm,n = ∑ x ( k ) γ* ( k − m ⋅ ∆M ) WL−(n⋅∆N )⋅k (17.16)
k =0
M −1 N −1
∑ ∑ γ* ( k '− m ⋅ ∆M ) g ( k − m ⋅ ∆M ) WL(n⋅∆N )(k −k ') = δ ( k − k ' ) (17.17)
m =0 n =0
gdzie
MN
WL = e j⋅2 π / L , L = ( ∆M ) M = ( ∆ N ) N , η= ≥1 (17.18)
L
Zakłada się w nich, że x(k), g(k) i γ(k) są funkcjami (sygnałami) okresowymi (cyklicznymi)
o okresie L (podobnie jak sygnały z rysunku 13.11), a ∆M i ∆N oznaczają krok w czasie
i w częstotliwości. Okno czasowe syntezy g(k) wybiera się arbitralnie, natomiast okno analizy
γ(k) oblicza się z równania (17.17), po przekształceniu go do następującej postaci (0 ≤ q ≤
≤ ∆N − 1, 0 ≤ p ≤ ∆M − 1):
L −1 T
∆M ∆M
∑ g (k + qN ) W∆−Mpk γ * (k ) = N
δ( p )δ(q ) ↔ G γ * = µ, µ =
N
,0,0,...,0
(17.19)
k =0
skąd:
( )
−1
γ* = G −1µ lub γ*optim = G T GGT µ (17.20a, b)
wówczas jednoznaczne. Jeśli macierz G jest pełnego rzędu, to z (17.20b) otrzymuje się w ta-
kim przypadku dualne okno analizy γ(k) o najmniejszej energii. Zadaniem projektowym jest
wówczas optymalne wyznaczenie macierzy pseudoodwrotnej. Problem wyznaczania okien
dualnych (biortogonalnych lub quasi-biortogonalnych) jest bardzo szeroko dyskutowany w li-
teraturze. My jednak z powodu braku miejsca nie poświęcimy mu więcej uwagi.
Dyskretną transformację Gabora (17.15)(17.16) wyznacza się efektywnie za pomocą szybkiej
transformacji Fouriera lub transformacji Zaka. W prosty sposób można rozszerzyć powyższą
definicję transformacji Gabora dla sygnałów o nieskończonej długości.
Na rysunku 17.10 przedstawiono trzy dyskretne okna analizy γ(k), biortogonalne do gausso-
wskiego okna syntezy g(k) i obliczone z (17.20) dla różnych wartości przesunięć ∆M i ∆N,
oraz wynikowe reprezentacje Gabora, uzyskane z pomocą γ(k), dla sygnału z liniowo narasta-
jącą częstotliwością. Jak widać kształt okna γ(k) bardzo zależy od rodzaju próbkowania prze-
strzeni TF. Dla próbkowania krytycznego jest ono silnie oscylacyjne i nie ma zwartego noś-
nika (ma bardzo złą lokalizacją czasową). Wraz ze wzrostem nadpróbkowania oscylacje zani-
kają, okno staje się coraz węższe i coraz bardziej upodabnia się do g(k), a wynikowe widma
stają się coraz bardziej czytelne. Wynika stąd, że nadpróbkowanie reprezentacji Gabora jest
w praktyce konieczne. Co prawda podnosi ono znacznie liczbę wykonywanych obliczeń
arytmetycznych, ale zapewnia dekompozycję sygnału o zdecydowanie lepszej jakości.
a) η = 1, ∆M = 8, ∆N = 8 b) η = 2, ∆M = 4, ∆N = 8 c) η = 64, ∆M = 1, ∆N = 1
0.09 0.025 8E-4
γ (k) γ (k) γ (k)
0.07 7E-4
0.020
0.05 6E-4
0.015
0.03 5E-4
0.01 0.010 4E-4
-0.01 3E-4
0.005
-0.03 2E-4
0.000
-0.05 1E-4
k k k
-0.07 -0.005 0E+0
0 10 20 30 40 50 60 0 10 20 30 40 50 60 0 10 20 30 40 50 60
d) η = 1, ∆M = 8, ∆N = 8 e) η = 2, ∆M = 4, ∆N = 8 f) η = 64, ∆M = 1, ∆N = 1
f f f
t t t
Rys. 17.10. Dualne okna analizy γ(k) dla gaussowskiego okna syntezy g(k) dla próbkowania krytycznego
(η = 1), dwukrotnego nadpróbkowania (η = 2) i maksymalnego nadpróbkowania (η = 64) oraz uzyskane dla
nich widma TF Gabora sygnału z linową modulacją częstotliwości i skokową zmianą amplitudy o długości
L = 64 próbki
454 Metody czasowo-częstotliwościowej analizy sygnałów
clear all;
% Parametry wejściowe
nw = 64; % długość okna
L = 128; % długość okna po uzupełnieniu zerami po obu stronach
dM = 4; % krok w czasie ### UWAGA !!!
dN = 4; % krok w częstotliwości ### dM*dN<=L
% Wybór okna czasowego syntezy i uzupełnienie go zerami po obu stronach do długości L
w = blackman( nw ); w = w';
w = [ zeros(1, (L-nw)/2 ) w zeros( 1, (L-nw)/2 ) ];
plot( real(w) ); title(' Okno z zerami '); grid; pause
% Generacja odwrotnego (dualnego) okna analizy
M=L/dM; % ile punktów czasowych
N=L/dN; % ile prążków częstotliwościowych
ww = [w w] ; % okresowe rozwinięcie okna syntezy
H = []; k = 0 : L-1;
for p = 0 : dM-1
for q = 0 : dN-1
h = ww( k+q*N+1 ) .* exp( -i*2*pi*p*k/dM );
H = [ H ; h ];
end
end
mi = zeros( dM*dN, 1); mi(1,1)=dM/N;
dw = pinv( H ) * mi; dw=dw';
plot( real(dw) ); title(' Okno dualne '); grid; pause
% Generacja sygnału testowego z liniową modulacją częstotliwości
fpr=128; f0=0; df=24; dt=1/fpr; n=0:L-1; t=n*dt;
x=sin(2*pi*(f0*t+0.5*df*t.^2));
plot(x); title('Sygnał we'); grid; pause
% Analiza: L/dM - punkty czasu, L/dN - prążki widma
dwz = [ dw zeros(1,2*L) ]; % okno analizy z zerami
for k = 0:2*L/dM-1 % dla wybranych chwil czasowych
okno = dwz( L+1:L+L ); % wytnij środek okna analizy
widmo = fft( x.*okno ); % fft
Metody czasowo-częstotliwościowej analizy sygnałów 455
Z powodu braku dyskretyzacji syntezę sygnału przeprowadza się w STFT na podstawie nastę-
pującej zależności, zdecydowanie prostszej niż w przypadku transformacji Gabora:
1 +∞
x (t ) = ∫ STFTx ( t, f ) e df
j 2 πft
(17.22)
γ (0) −∞
Funkcja γ(t) oznacza czasowe okno obserwacji, Γ(f) jest zaś jej widmem Fouriera. Równanie
(17.21) nosi także metody „przesuwającego się okna” MWM (ang. Moving Window Method)
456 Metody czasowo-częstotliwościowej analizy sygnałów
Dla dociekliwych. W jaki sposób należy dobierać długość okna analizy γ(t)? Niech podobnie
jak w (17.8) A oznacza średniokwadratową długość czasu trwania okna, B zaś − średniokwa-
dratową szerokość jego widma Fouriera. Podczas analizy sygnałów zmodulowanych liniowo
w częstotliwości (LFM) długość okna powinna być taka, aby stosunek szerokości częstotliwoś-
ciowej B do czasowej A okna był równy stosunkowi przyrostu częstotliwości do czasu, w któ-
rym on wystąpił (warunek równości kątów nachylenia):
( B A)optim1 ≅ ∆f ∆t
Jeśli dodatkowo analizowany sygnał jest zmodulowany w amplitudzie za pomocą okna czaso-
wego, które ma średniokwadratową szerokość czasową Aokna i częstotliwościową Bokna (patrz
(17.8)), to optymalne parametry o k n a a n a l i z y γ(t) są określone równaniem:
Na rysunku 17.11 pokazano przykładowe spektrogramy (17.23) dla trzech długości okien: op-
tymalnej, za krótkiej i za długiej. Jak widać różnica jest niebagatelna.
+∞ 2π
− j k m
STFT ( n, k ) = ∑ x ( m ) γ* ( n − m ) e N , k = 0,1, 2, ..., N − 1 (17.24)
m =−∞
Parametr N, związany z dyskretyzacją częstotliwości, powinien być równy lub większy od licz-
by próbek M okna γ(m). Kiedy okno to przyjmuje wartości niezerowe tylko dla m = 0, 1, 2, ...,
M − 1, można je uzupełnić zerami do długości N = 2p oraz wyznaczać (17.24) według:
Metody czasowo-częstotliwościowej analizy sygnałów 457
N −1 2π
− j k m
STFT (n, k ) = ∑ γ* ( m ) x ( n − m ) e N , k = 0, 1, 2, ..., N − 1 (17.25)
m =0
clear all;
% Parametry wejściowe
M=32; % połowa długości okna (całe okno N=2M-1)
Nx=128; % długość sygnału testowego
% Rysunek widma TF
t=t(M:Nx-M+1); f=fpr/(2*M)*(-M:M-1);
mesh(t,f,X); view(-40,70); axis tight;
xlabel('czas [s]'); ylabel('częstotliwość [Hz]'); pause
imagesc(t,f,X); xlabel('czas [s]'); ylabel('częstotliwość [Hz]'); pause
458 Metody czasowo-częstotliwościowej analizy sygnałów
a) 4 4
3.5 3.5
3 3
2.5 2.5
f [Hz]
f [Hz]
2 2
1.5 1.5
1 1
0.5 0.5
0 0
10 15 20 10 15 20
t [s] t [s]
b) 4 4
3.5 3.5
3 3
2.5 2.5
f [Hz]
f [Hz]
2 2
1.5 1.5
1 1
0.5 0.5
0 0
10 15 20 10 15 20
t [s] t [s]
c) 4 4
3.5 3.5
3 3
2.5 2.5
f [Hz]
f [Hz]
2 2
1.5 1.5
1 1
0.5 0.5
0 0
10 15 20 10 15 20
t [s] t [s]
Rys. 17.11. Przykład wpływu wyboru długości okna analizy γ(k) w krótkoczasowej transformacji Fouriera:
po lewej − suma dwóch sygnałów z liniową modulacją częstotliwości LFM, po prawej − suma tych samych
sygnałów LFM po ich dodatkowej modulacji w amplitudzie za pomocą funkcji okna czasowego, a) okno
o optymalnej długości, b) okno za krótkie, c) okno za długie
Metody czasowo-częstotliwościowej analizy sygnałów 459
Ciągła transformacja falkowa sygnału x(t) jest zdefiniowana w następujący sposób w dziedzi-
nie czasu i częstotliwości:
+∞
1 * τ − t
CWTxT (t , a ) =
a
∫ x ( τ )γ dτ
a
(17.27a)
−∞
+∞
CWTxF (t, a ) = a ∫ X ( f )Γ* ( af ) e j 2 πf t df (17.27b)
−∞
Funkcja g(t) oznacza falkę syntezującą, γ(t) − dualną do niej falkę analizująca, a G(f) i Γ(f) są
ich widmami Fouriera. Dzielenie i mnożenie przez | a | , występujące w (17.27), ma zapewnić
niezmienność energii falek i ich widm po przeskalowaniu.
Skalogram, związany z transformacją falkową, jest zdefiniowany jako:
2
S xSCAL (t , a ) = CWTx ( t , a ) (17.30)
Tak jak spektrogram (17.23) był kwadratem modułu krótkoczasowej transformacji Fouriera
STFT, tak skalogram jest kwadratem modułu transformacji falkowej, czyli reprezentacji typu
czas-skala.
460 Metody czasowo-częstotliwościowej analizy sygnałów
Równanie (17.27a) reprezentuje filtrację sygnału analizowanego x(t) przez sygnał analizujący
γ(t), przeskalowywany w dziedzinie czasu współczynnikiem a („rozciągany” dla a > 1 oraz
„ściskany” dla a < 1) w sposób przedstawiony na rysunku 17.2. Równoważne mu równanie
(17.27b) przedstawia natomiast odwrotne przekształcenie Fouriera iloczynu widma sygnału
i przeskalowanego widma falki γ(t). Ponieważ sygnał analizujący γ(t), spełniający rolę funkcji
bazowej tak określonej dekompozycji, jest sygnałem impulsowym zlokalizowanym w osi czasu
wokół t = 0 oraz mającym ograniczone, pasmowe widmo częstotliwościowe (f0 ± ∆f/2), zapis
SxSCAL(t, a) w dziedzinie czas-skala jest równoważny zapisowi SxSCAL(t, (f0 ± ∆f/2)/a) w dzie-
dzinie czas-częstotliwość. Oznacza to, że możemy interpretować skalogram jako reprezentację
czasowo-częstotliwościową SxSCAL(t, f). W praktycznej analizie czasowo-częstotliwościowej sy-
gnałów akustycznych, kiedy odwracalność transformaty nie jest wymagana, często jako γ(t)
przyjmuje się zespolony sygnał harmoniczny z obwiednią gaussowską, czyli tzw. „falkę”
Morleta:
2
γ (t ) = e−0,5( α t ) e j 2 π fo t (17.31)
uzyskuje się diadyczny szereg falkowy. Jest on obecnie najczęściej stosowany. Sygnał jest
przedstawiany z jego pomocą jako suma:
+∞ +∞ +∞
x (t ) = ∑ ∑ d m,n g m,n ( t ), d m ,n = ∫ x (t ) γ*m,n ( t ) dt (17.35a)
m =−∞ n =−∞ −∞
(
g m ,n ( t ) = 2 m / 2 g 2 m t − n , ) (
γ m ,n ( t ) = 2m / 2 γ 2m t − n ) (17.35b)
gdzie γ(t) jest funkcją dualną do g(t). Mnożenie przez 2m/2 ma zapewnić jednakową energię
(unormowanie) wszystkich sygnałów bazowych gm,n(t) i γm,n(t). W celu uproszczenia dalszych
rozważań załóżmy, że γ(t) = g(t) (ortogonalny system falek). Kiedy m zwiększa się o 1, falki
stają się dwa razy krótsze, ich widmo częstotliwościowe jest dwa razy szersze (zgodnie
z (4.9)), pole atomu TF pozostaje niezmienne, a widmo TF jest próbkowane dwa razy częściej.
W wyniku tego w diadycznej transformacie falkowej realizuje się schemat dekompozycji TF
Metody czasowo-częstotliwościowej analizy sygnałów 461
sygnału przedstawiony na rysunku 17.3b. Oczywiście należy starać się dobrać rodzaj falki
odpowiednio do analizowanego sygnału oraz zsynchronizować z nim szachownicę próbkowa-
nia TF. Szachownicę falkową można modyfikować wykorzystując koncepcję multifalek oraz
pakietów falkowych. Możliwa jest jej adaptacja na podstawie lokalnych właściwości sygnału.
Co ciekawe, w praktycznej realizacji numerycznej diadycznej transformacji falkowej w ogóle
nie wykorzystuje się falek tylko związane z nimi filtry. Zależność pomiędzy falkami i filtrami
jest wzajemnie jednoznaczna. Wyjaśnia ją teoria wielorozdzielczej aproksymacji sygnału,
związana z transformacją falkową.
Załóżmy, że sygnał x(t) może być przedstawiony na zerowym poziomie aproksymacji za po-
mocą sumy poprzesuwanych funkcji bazowych φ(t), wzajemnie ortonormalnych:
+∞
n
( )
x ( t ) ≈ ∑ c0,n φ 20 t − n = ∑ c0,n φ ( t − n ) ,
n
c0,n = ∫ x (t )φ* ( t − n ) dt (17.36)
−∞
Π2
Π1
Π0
Ω0 Ω1 Ω 2 Ω3 Ω0 Ω1 Ω 2 Ω3
Rys. 17.13. Widma częstotliwościowe kilku kolejno przeskalowanych falek 2m/2ψ(2m⋅t), m = 0, 1, 2, oraz
widmo częstotliwościowe funkcji skalującej ϕ(t)= ϕ0(t)
n
( )
x ( t ) ≈ ∑ c1,n 2φ 21 t − n = ∑ c1,n 2φ ( 2t − n ) , c1,n =
n
∫ x (t ) 2φ* ( 2t − n ) dt (17.37)
−∞
funkcje bazowe są także ortonormalne oraz dwa razy krótsze, czyli ich widmo jest dwa razy
szersze i aproksymacja dwa razy lepsza (bardziej szczegółowa). Jeśli przestrzeń rozpinaną
przez funkcje φ(20t) i 2 φ(21t) oznaczymy odpowiednio Ω0 i Ω1, a dopełnienie Ω0 do Ω1
przez Π0, to:
Ω1 = Ω0 + Π 0 , Ω1 ⊃ Ω0 (17.38)
462 Metody czasowo-częstotliwościowej analizy sygnałów
gdzie:
+∞ +∞
cm,n = ∫ (
x (t )2m / 2 φ* 2m t − n dt , ) d m ,n = ∫ ( )
x (t )2m / 2 ψ* 2m t − n dt (17.40a, b)
−∞ −∞
tylko tym razem współczynniki h1(n) reprezentują filtr górnoprzepustowy, czyli „przepusz-
czają” szczegóły.
Zastępując w (17.41) zmienną t przez 2mt − n oraz stosując podstawienie l=2n + k, otrzymuje-
my:
( ) ( )
φ 2 m t − n = ∑ h0 (k ) 2 φ 2(2 m t − n ) − k = ∑ h0 (l − 2n ) 2φ 2 m +1 t − l ( ) (17.43)
k l
+∞
l −∞
( )
= ∑ h0 (l − 2n ) ∫ x (t )2( m +1) / 2 φ* 2m +1 t − l dt = ∑ h0 (l − 2n )cm +1 (l )
l
(17.44a)
d m (n ) = ∑ h1 (l − 2n ) c m +1 (l ) (17.44b)
l
Metody czasowo-częstotliwościowej analizy sygnałów 463
h1(−k) 2 Π2
Ω3 h1(−k) 2 Π1
h0(−k) 2 Ω2 h1(−k) 2 Π0
h0(−k) 2 Ω1
h0(−k) 2 Ω0
Π2 h1(k) 2
Π1 h1(k) 2 Ω3
Ω2
Π0 2 h1(k) h0(k) 2
Ω1
h0(k) 2
Ω0 2 h0(k)
Tab. 17-3. Program do wygenerowanie funkcji skalujących i falek dla różnych znanych systemów
falkowych
W jaki sposób należy dobierać filtry h0(n) i h1(n), aby „generowały” one transformatę falkową?
Muszą one spełniać równania wynikające z założonych wcześniej właściwości dekompozycji.
Metody czasowo-częstotliwościowej analizy sygnałów 465
∑ h0 (n) = 2 (17.47)
n
czyli filtr h0(n) musi przenosić składową stałą. Jeśli dodatkowo chcemy, żeby nie przenosił on
składowej o pulsacji π radianów, to powinna być także spełniona zależność:
∑ (−1)n h0 (n ) = 0 (17.48)
n
czyli filtr, który powstaje w wyniku modulacji h0(n) sygnałem (−1)n = exp(jπn), powinien być
filtrem górnoprzepustowym (modulacja przesuwa pulsację środkową widma Fouriera filtra
h0(n) z zera do π). Po uwzględnieniu (17.47), z (17.48) wynika, że suma parzystych i nie-
parzystych próbek filtra h0(n) powinna być taka sama i równa:
2
∑ h0 (2n) = ∑ h0 (2n + 1) = 2
(17.49)
n n
+∞
= 2∑ h0 ( m ) ∑ h0 ( k ) ∫ φ ( 2t − m ) φ ( 2(t − n) − k ) dt =
m k −∞
+∞
= ∑ h0 ( m ) ∑ h0 ( k ) ∫ φ ( τ ) φ ( τ + m − 2n − k ) d τ =
m k −∞
= ∑ h0 ( m ) ∑ h0 ( k ) δ( −m + 2n + k ) = ∑ h0 ( m ) h0 ( m − 2n )
m k m
466 Metody czasowo-częstotliwościowej analizy sygnałów
i otrzymujemy:
n = 0: ∑ h02 (m ) = 1 (17.52a)
m
n ≠ 0: ∑ h0 (m )h0 (m − 2n ) = 0 (17.52b)
m
Załóżmy obecnie, że filtr h0(n) składa się ze skończonej, nieparzystej liczby próbek N = 2p + 1
próbek: h0(0), h0(1), ..., h0(2p), wówczas z (17.52b) mamy:
2p
∑ h0 (m )h0 (m − 2n ) = 0 (17.53)
m=0
Podobnie z warunków na falkę ψ(t) wyprowadza się zależności na filtr h1(n). Ponieważ chce-
my, aby falka ψ(t) była „górnoprzepustowa”, wymagamy aby:
+∞
∑ h1(n ) = 0 (17.55)
n
czyli widzimy, że filtr h1(n) musi być filtrem górnoprzepustowym. Dodatkowo, chcemy aby
funkcja skalująca φ(t) była ortogonalna do falki ψ(t) i jej całkowitych przesunięć:
+∞
∑ h0 (m )h1 (m − 2n ) = 0 (17.56b)
m
Metody czasowo-częstotliwościowej analizy sygnałów 467
Jeśli filtr h0(n) spełnia warunki (17.47) i (17.51), to warunki (17.55) i (17.56b), dotyczące filtra
h1(n), są także zawsze spełnione, jeśli filtr ten powstaje w wyniku odwrócenia kolejności pró-
bek i modulacji filtra h0(n), n = 0, 1, 2, ..., N−1:
h1 (n ) = ± (− 1)n h0 ( N − 1 − n ) (17.57)
Modulacja sygnałem (−1)n = exp(jπn) przesuwa pulsację środkową widma Fouriera filtra dol-
noprzepustowego z zera do π, czyli czyni go filtrem górnoprzepustowym.
N −1
∑ h0 (n ) = 2
n =0
N −1 (17.58)
h (n )h (n − 2k ) = δ(k ) dla
n∑ 0 0 k = 0, 1, 2, ..., N / 2 − 1
=0
który powstaje z równań (17.47), (17.51). Jest to układ N/2 + 1 równań z N niewiadomymi.
Przykładowo dla N = 2 mamy:
1 1
hD 2 = {h0 (0), h0 (1) } = , (17.60)
2 2
generujący prostokątne falki Haara, inaczej zwane także falkami Daubechies [Daub92] dru-
giego rzędu (w języku Matlab wywoływane parametrem db1). Z kolei dla N = 4 z (17.58)
otrzymuje się:
1 + 3 3 + 3 3 − 3 1 − 3
hD 4 = , , , (17.62)
4 2 4 2 4 2 4 2
W sposób analogiczny projektuje się filtry wyższych rzędów. W różnych metodach w inny
sposób wykorzystuje się istniejące stopnie swobody. Najczęściej „zagospodarowuje” się je do-
dając dodatkowe warunki, mające zapewnić maksymalną gładkość falki ψ(t) [Daub92]. Są to
równania zerowania się kilku pierwszych (załóżmy, że M) momentów falki:
+∞
∫t
k
mk = ψ(t )dt , k = 0, 1, 2, ..., M − 1 (17.63)
−∞
d k Ψ (ω)
mk = ( − j ) − k ω= 0 , k = 0, 1, 2, ..., M − 1 (17.64)
dωk
więc widmo Fouriera falki ma M-krotne zero dla ω = 0, kiedy jest spełnione równanie (17.63).
Oba powyższe warunki są równoważne następującemu układowi M równań (po uwzględnieniu
(17.57)):
∞ ∞
∑ n k h1 (n ) = ∑ n k ( −1)n h0 ( N − 1 − n ) = 0, k = 0, 1, 2, ..., M − 1 (17.65)
n =−∞ n =−∞
jest równy zeru. W konsekwencji współczynniki górnopasmowe dm,n rozwinięcia są równe ze-
ru, czyli wielomiany rzędu M − 1 są wyłącznie reprezentowane przez współczynniki dolnopas-
mowe cm,n.
Przykładowe kształty funkcji skalujących i falek Daubechies, zaprojektowane na „maksymalną
gładkość” funkcji falek, są przedstawione na rysunkach 17.16 i 17.17.
W tabeli 17-4 jest przedstawiony program, napisany w języku Matlab, służący do czaso-
wo-częstotliwościowej analizy/syntezy dowolnego sygnału metodą transformacji falkowej.
clear all;
% Parametry programu
niter = 3; % liczba iteracji
nx = 2^niter*32; % długość sygnału
% Definicja współczynników filtra LP syntezy h0s, np. Db4
h0s = [ (1+sqrt(3))/(4*sqrt(2)) (3+sqrt(3))/(4*sqrt(2)) ...
(3-sqrt(3))/(4*sqrt(2)) (1-sqrt(3))/(4*sqrt(2)) ];
% Oblicz pozostałe filtry
N = length(h0s); n = 0:N-1;
h1s = (-1).^n .* h0s(N:-1:1); % filtr HP syntezy
h0a = h0s(N:-1:1); h1a=h1s(N:-1:1); % filtry LP i HP analizy
% Sygnał testowy
% x=sin(2*pi*(1:nx)/32);
x=rand(1,nx);
% Analiza
cc = x;
for m=1:niter
c0 = conv(cc,h0a); % filtracja LP
d0 = conv(cc,h1a); % filtracja HP
k=N:2:length(d0)-(N-1); kp=1:length(k); ord(m)=length(kp); dd(m,kp) = d0( k );
k=N:2:length(c0)-(N-1); cc=c0( k );
end
% Synteza
c=cc;
for m=niter:-1:1
c0=[]; d0=[];
for k = 1:length(c)
c0(2*k-1)=c(k); c0(2*k)=0;
end
c = conv(c0,h0s); nc=length(c);
for k = 1:ord(m)
d0(2*k-1) = dd(m,k); d0(2*k) = 0;
end
d = conv(d0,h1s); nd=length(d);
c = c(1:nd);
c = c + d;
end
% Rysunki końcowe
n = 2*(N-1)*niter : length(c)-2*(N-1)*niter+1;
plot(x); title('WE'); pause; plot(n,x(n)-c(n)); title('WE-WY'); pause
K 1
Φ (ω) = ∏ H 0 ( e jω / 2 k ) Φ ( ω / 2 k ) (17.d3)
k =1 2
Kiedy K → ∞ , mamy:
∞
1
Φ (ω) = ∏ H 0 ( e jω / 2 k ) (17.d4)
k =1 2
∞
gdyż Φ (0) = ∫ ϕ(t )dt = 1 .
−∞
Uwzględniając (17.d4) w (17.d2), otrzymujemy:
∞
1 1
Ψ (ω) = H1 (e jω / 2 ) ∏ H 0 ( e jω / 2 k ) (17.d5)
2 k =2 2
470 Metody czasowo-częstotliwościowej analizy sygnałów
1.5 1.5
1.0 1.0
0.5 0.5
0.0 0.0
-0.5 -0.5
0.0 0.5 1.0 1.5 2.0 2.5 3.0 0 1 2 3 4 5
t [s] t [s]
1.2 1.2
0.8 0.8
0.4 0.4
0.0 0.0
-0.4 -0.4
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9
t [s] t [s]
1.0 1.0
0.5 0.5
0.0 0.0
-0.5 -0.5
0 2 4 6 8 10 12 14 16 18 0 5 10 15 20 25 30 35
t [s] t [s]
Rys. 17.16. Funkcje skalujące Daubechies: ϕ D4, ϕ D6, ϕ D8, ϕ D10, ϕ D20, ϕ D40 (kolejno poziomo). W języku
Matlab oznaczane jako ϕ db2, ϕ db3, ϕ db4, ϕ db5, ϕ db10 , ϕ db20
d k H1 (e jω )
= 0, k = 0, 1, 2, ..., M − 1 (17.d6)
dωk ω= 0
2.0
1.5
1.5
1.0 1.0
0.5 0.5
0.0 0.0
-0.5 -0.5
-1.0
-1.0
-1.5
0.0 0.5 1.0 1.5 2.0 2.5 3.0 0 1 2 3 4 5
t [s] t [s]
1.2
1.0 0.8
0.5 0.4
0.0 0.0
-0.4
-0.5
-0.8
-1.0
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9
t [s] t [s]
1.0 0.8
0.5 0.4
0.0 0.0
-0.5 -0.4
-1.0
-0.8
0 2 4 6 8 10 12 14 16 18 0 5 10 15 20 25 30 35
t [s] t [s]
Rys. 17.17. Falki Daubechies: ψ D4, ψ D6, ψ D8, ψ D10, ψ D20, ψ D40 (kolejno poziomo). W języku Matlab
oznaczane jako ψ db2, ψ db3, ψ db4, ψ db5, ψ db10, ψ db20
stąd:
d k H1 ( e jω ) ∞
dωk
= ∑ (− jn )k h1 (n)e − jωn (17.d8)
n = −∞
czyli
∞
∑ n k h1 (n ) = 0, k = 0, 1, 2, ..., M − 1 (17.d10)
n =−∞
472 Metody czasowo-częstotliwościowej analizy sygnałów
gdzie x(t) oznacza sygnał rzeczywisty (definicja Wignera) lub analityczny (definicja Ville’a).
Sygnał analityczny (12.70), związany z sygnałem rzeczywistym s(t), jest sygnałem zespolo-
nym, którego część rzeczywistą stanowi s(t), natomiast część urojona to wynik transformaty
Hilberta (12.63) z s(t). Jak widać reprezentacja WV jest t r a n s f o r ma c j ą F o u r i e r a (prostą
lub odwrotną) t z w. j ą d r a W V :
xx (t , τ ) = x (t + τ / 2 )x * (t − τ / 2 ) , XX ( f , v ) = X ( f + v / 2 ) X * ( f − v / 2 ) (17.67)
wz g l ę d e m z mi e n n e j τ l u b v .
Reprezentacja WV charakteryzuje się największą koncentracją energii w przestrzeni czaso-
wo-częstotliwościowej, czyli ma najlepszą łączną zdolność rozdzielczą. Dodatkowo idealnie
„odwzorowuje” liniową modulację częstotliwości sygnału, gdyż dla sygnału LFM jądro
Wignera-Ville’a (17.67) jest względem zmiennej τ zespoloną sinusoidą o pulsacji
ω0 + αt (wyprowadzenie pozostawiamy Czytelnikowi):
2
x (t ) = e j ( ω0t + 0,5αt )
⇒ xx ( t , τ ) = x ( t + τ / 2 ) x* ( t − τ / 2 ) = e j ( ω0 +αt ) τ
w wyniku czego z transformacji Fouriera (17.66a) otrzymujemy SxW(V)(t, f) = δ(ω − (ω0 + αt)).
W przypadku sygnałów o innym rodzaju modulacji lub sygnałów złożonych w reprezentacji TF
Wignera-Ville’a występują pasożytnicze interferencje wzajemne o charakterze oscylacyjnym
pomiędzy różnymi składowymi własnymi widma, które znacznie utrudniają jej interpretację.
Konieczna jest wówczas redukcja elementów pasożytniczych metodą lokalnego wygładzania
widma SxW(V)(t, f). Jednym z głównych powodów zastosowania sygnału analitycznego jest
wyzerowanie widma TF dla częstotliwości ujemnych i całkowite usunięcie pasożytniczych
interferencji pomiędzy składowymi o ujemnych i dodatnich częstotliwościach.
Po dyskretyzacji równanie (17.66a) przyjmuje postać:
Metody czasowo-częstotliwościowej analizy sygnałów 473
4π
+∞ − j k m
SW
x
(V )
( n, k ) = ∑ x ( n + m ) x* ( n − m ) e N , k = 0, 1, 2, ..., N / 2 − 1 (17.68)
m =−∞
Aby uniknąć zjawiska aliasingu, czyli pokrywania się widm, maksymalna częstotliwość wystę-
pująca w sygnale powinna być dwukrotnie mniejsza od częstotliwości próbkowania dla sygna-
łów analitycznych, a czterokrotnie dla rzeczywistych. W praktyce najczęściej stosuje się zmo-
dyfikowane wersje równania (17.68), czyli tzw. dyskretną pseudoreprezentację WV oraz jej
wersję wygładzoną. Są one ”zdefiniowane w sposób następujący (k = 0, 1, 2, ..., N − 1):
N −1 j k m
2π
N
S xP −W (V ) ( n, „k / 2” ) = 2 ⋅ Real ∑ hN ( m) z ( n, m ) e
2
(17.69)
m =0
N −1 2π
2 j
( M −1) km
N
S WP
x
−W (V )
( n , „ k / 2” ) = 2 ⋅ Real ∑ hN ( m ) ∑ g M (l )
2
z ( n + l , m ) e (17.70)
m =0 l =−( M −1)
gdzie:
xx (n, m ) dla m ≠ 0
z (n, m ) = (17.71)
xx (n , m ) / 2 dla m = 0
xx (n, m ) = x (n + m )x * (n − m ) (17.72)
Jak widać obie reprezentacje (17.69), (17.70) można wyznaczyć za pomocą algorytmu szybkiej
transformacji Fouriera, jeśli N jest potęgą liczby 2. Zapis „k/2” oznacza, że otrzymane wartości
częstotliwości należy podzielić przez 2, gdyż są one dwukrotnie zawyżone. Jest to związane
z faktem, iż w (17.68) występuje 4π, natomiast w (17.69), (17.70) − 2π. Funkcje hN(m) i gM(l)
są dowolnymi oknami czasowymi, odpowiednio o długości 2N − 1 i 2M − 1, o środkach w pun-
kcie m = l = 0. Szczegółową interpretację równań (17.69) − (17.72) przedstawiono w następ-
nym rozdziale wraz z przykładami ich zastosowań.
Synteza sygnału z dyskretnej reprezentacji WV jest zagadnieniem złożonym, szczegółowo wy-
tłumaczonym w literaturze (np. w [Ziel94c]).
Kończąc to z konieczności krótkie przedstawianie reprezentacji Wignera, należy jeszcze po-
wiedzieć dwa słowa na temat podstawowej wady tej metody analizy, związanej ze zjawiskiem
występowania szkodliwych, pasożytniczych interferencji w otrzymywanych czasowo-często-
tliwościowych macierzach widmowych. Operacja mnożenia sygnału przez ten sam sygnał od-
wrócony w czasie, występująca w definicji reprezentacji Wignera (17.66a), powoduje, że re-
prezentacja ta nie jest liniowa, tzn. widmo TF sumy dwóch sygnałów nie jest równe sumie
widm TF każdego tych sygnałów z osobna, ale występuje w nim także widmo wzajemne
(skrośne) WV tych sygnałów:
SW (V ) W (V )
x1+ x 2 (t , f ) = S x1 (t , f ) + SW
x2
(V )
(t , f ) + S W (V )
x1, x 2 (t , f )
Wzajemne widmo WV dwóch sygnałów x(.) i y(.) otrzymuje się podstawiając y*(.) lub
Y*(.) za x*(.) lub X*(.) we wszystkich powyższych definicjach. Jeśli zrobimy to dla przykładu
w (17.66a), to otrzymamy:
+∞
τ τ
SW (V )
x , y (t , f ) = ∫x t + y * t − e− j2π f τd τ
−∞ 2 2
474 Metody czasowo-częstotliwościowej analizy sygnałów
a) f f
t t
b) f f
t t
c)
f f
t t
d) f
f
t t
e) f f
t t
Rys. 17.18. Przykładowe pseudoreprezentacje Wigera-Ville’a (17.69) (po lewej) oraz wygładzone
pseudoreprezentacje WV (po prawej) dla wybranych sygnałów: a) jedna składowa LFM z obwiednią
gaussowską, b) dwie składowe LFM z obwiedniami gaussowskimi, c) trzy sinusoidy z obwiedniami
gaussowskimi, d) sygnał monoharmoniczny ze skokiem częstotliwości, e) sygnał z sinusoidalną modulacją
częstotliwości SFM
Metody czasowo-częstotliwościowej analizy sygnałów 475
Widmo skrośne ma postać oscylacji leżących pomiędzy składowymi własnymi widm poszcze-
gólnych sygnałów. Oscylacje występują pomiędzy każdą parą sygnałów składowych, a ich czę-
stotliwość jest odwrotnie proporcjonalna do odległości pomiędzy tymi składowymi w prze-
strzeni TF, tzn. im ta odległość jest mniejsza, tym oscylacje mają mniejszą częstotliwość. Na
rysunku 17.18 zilustrowano graficznie to zjawisko: w interferencje wchodzą pomiędzy sobą sy-
gnały elementarne na zasadzie „każdy z każdym” (rys. 17.18c). Co prawda stosowanie do-
datkowego wygładzania (17.70) w pseudoreprezentacji Wignera częściowo eliminuje efekty
pasożytnicze, ale prowadzi do poszerzania („rozmywania”) widma. Oscylacje są także gene-
rowane tylko przez jeden sygnał, jeśli interferuje on sam ze sobą. Przykładem mogą być sygna-
ły ze skokiem częstotliwości (rys. 17.18d) oraz z sinusoidalną modulacją częstotliwości (rys.
17.18e).
W tabeli 17-5 przedstawiono przykład zastosowania transformacji Wignera do czasowo-czę-
stotliwościowej analizy sygnałów z liniową LFM i sinusoidalną SFM modulacją częstotliwości.
Zaprezentowany program oraz uzyskane wyniki analizy należy porównać z alternatywnym
zastosowaniem krótkoczasowej transformacji Fouriera STFT z tabeli 17-2. W przeciwieństwie
do STFT transformacja Wignera poprawnie „odtwarza” zmienność częstotliwości chwilowej
sygnału SFM.
clear all;
% Parametry wejściowe
M=32; % połowa długości okna (całe okno N=2M−1)
Nx=128; % długość sygnału testowego
% Sygnał testowy z modulacją częstotliwości typu LFM i SFM
fpr=128; f0=0; df=32; fn=16; fm=3; dfm=12; dt=1/fpr; n=0:Nx-1; t=n*dt;
% x=sin(2*pi*(f0*t+0.5*df*t.^2));
x=sin( 2*pi* (fn*t + (dfm/(2*pi*fm))*sin(2*pi*fm*t)) );
plot(x); title('Sygnał we'); grid; pause
% Analiza TF − reprezentacja Wignera
x = hilbert(x);
w = hanning(2*M-1)';
for n = M:Nx-M+1
xx = x(n-(M-1): 1 :n+(M-1)) .* conj(x(n+(M-1):-1:n-(M-1)));
xx = xx .* w.^2;
xx = [ xx(M:2*M-1) 0 xx(1:M-1) ];
X(:,n-M+1) = fftshift(real(fft(xx))');
end
% Rysunek widma TF
t=t(M:Nx-M+1); f=0.5*fpr/(2*M)*(-M:M-1);
mesh(t,f,X); view(-40,70); axis tight;
xlabel('czas [s]'); ylabel('częstotliwość [Hz]'); pause
imagesc(t,f,X); xlabel('czas [s]'); ylabel('częstotliwość [Hz]'); pause
Dla dociekliwych. Kluczem do sukcesu transformacji Wignera-Ville’a jest fakt, że dla sygnału
LFM wynikiem jądra WV (17.67)(17.72) jest zespolony sygnał monoharmoniczny o częstotli-
wości równej częstotliwości chwilowej analizowanego sygnału w chwili t. Pomimo tego, że
częstotliwość sygnału zmienia się liniowo w czasie, to przekształcenie Fouriera dla różnych
wartości czasu ciągłego t (lub dyskretnego n) „widzi” więc w funkcji τ (lub m) tylko jedną
częstotliwość i wspaniale ją detektuje. W tym miejscu rodzi się pytanie, czy nie można zbudo-
wać „idealnych” jąder zwracających sygnał monoharmoniczny tylko o jednej częstotliwości,
476 Metody czasowo-częstotliwościowej analizy sygnałów
ale dostosowanych do innych zmian częstotliwości chwilowej sygnału niż liniowa. Na przykład
hiperbolicznej, czyli liniowej modulacji okresu, stosowanej w systemach radarowych, oraz
innych rodzajów modulacji. Jest to możliwe z wykorzystaniem wielomianowej [Boas94]:
+∞ − b− k
− j 2πfτ
∫ ∏ k =0 [ x (t + ck τ)] k x (t + c−k τ)
b
S xPoly −W (V ) (t , f ) = q/2 *
e dτ
−∞
−∞
τ τ
S xC (t , f ; φ) = ∫∫∫ e j 2 π( ξt − τ f −ξu) φ( ξ, τ; t , f ) x u + x * u − du dτ dξ (17.73)
2 2
Równanie (17.73) może być interpretowane jako transformacja Fouriera jądra Wignera
(17.67), zmodyfikowanego przez jądro przekształcenia całkowego φ(ξ, τ; t, f). Modyfikacja ta
powoduje znaczną redukcję pasożytniczych interferencji o charakterze oscylacyjnym, występu-
jących w wynikowym widmie TF. W zależności od postaci jądra φ(ξ, τ; t, f) są generowane re-
prezentacje o różnych właściwościach. Przykładowo dla φ(ξ, τ; t, f) = 1 (17.78) sprowadza się
do (17.66a), czyli jest równoważne reprezentacji Wignera. Istnieje wiele różnych definicji
funkcji φ, atrakcyjnych z punktu widzenia właściwości generowanej reprezentacji i wynikają-
cych z nich możliwości analizy sygnałów niestacjonarnych. Własności jądra decydują o wła-
ściwościach użytkowych generowanej przez niego reprezentacji TF. Ostatnio prace badawcze
koncentrują się na porównaniu właściwości użytkowych poszczególnych jąder, na ich opty-
malnym projektowaniu, oraz na adaptacyjnym dopasowywaniu się jądra do zmienności sygna-
łu. W przypadku braku adaptacji mamy φ(ξ, τ) = φ(ξ, τ; t, f). Interesujące jest, że stosując od-
powiednie jądra φ można z zależności (17.73) także wygenerować spektrogram (17.21a)
będący klasyczną reprezentacją liniową oraz wiele innych reprezentacji czasowo-często-
tliwościowych, mających zupełnie odmienne definicje, przez nas nie przytaczanych (na przy-
kład reprezentacje Rihaczka i Margenau-Hilla). W tabeli 17-6 zaprezentowano przykładowe
jądra φ(ξ, τ).
Wszystkie reprezentacje należące do klasy Cohena zachowują przesunięcie czasowe i często-
tliwościowe. Mogą być one wyznaczane z (17.73) tak dla sygnału rzeczywistego x(t), jak i dla
związanego z nim sygnału analitycznego. Definiowane są także alternatywnie w dziedzinie
częstotliwościowej (podobieństwo do związku pomiędzy (17.21a) i (17.21b) oraz (17.66a)
i (17.66b)).
Definicja (17.73) może być przedstawiona w trzech interesujących postaciach alternatywnych.
M e t o d a 1 − jako przekształcenie Fouriera wygładzonej, chwilowej, symetrycznej funkcji
autokorelacji Rxav (t, τ) sygnału (Rx(t, τ) to analogiczna, niewygładzona funkcja autokorelacji):
+∞
S xC (t , f ) = ∫ Rx
av
(t , τ)e − j 2 π f τ dτ (17.74)
−∞
gdzie:
+∞
Rxav (t , τ) = ∫ Rx ( u, τ ) w(t − u, τ) du (17.75)
−∞
478 Metody czasowo-częstotliwościowej analizy sygnałów
Tab. 17-6. Jądra φ(ξ, τ) (17.73) oraz związane z nimi funkcje w(t, τ) (17.77)
Levin (LEV)
e
j πξ τ δ(t + τ / 2 )
Page (PAG) e
− j πξ τ δ(t − τ / 2 )
Rihaczek (RIH) e jπξτ δ(t − τ / 2 )
+∞
Spektrogram (SPEC)
∫ h (t + τ / 2) h (t − τ / 2 ) e h (− t − τ / 2 )h* (− t + τ / 2 )
* − j 2 πξt
(klasyczny) dt
−∞
τ τ
R x ( t , τ) = x t + x * t − (17.76)
2 2
+∞ ,
w( t , , τ ) = ∫ φ(ξ, τ)e j 2 πξ t d ξ (17.77)
−∞
i funkcja wygładzająca w(t, τ) jest wynikiem odwrotnego przekształcenia Fouriera jądra φ(ξ, τ)
względem zmiennej ξ. Przykładowe funkcje w(t, τ) są zaprezentowane w tabeli 17-6.
M e t o d a 2 − jako wynik dwuwymiarowego przekształcenia Fouriera iloczynu jądra φ(ξ, τ)
oraz wąskopasmowej, symetrycznej funkcji nieoznaczoności sygnału WFNx(ξ, τ):
+∞ +∞
j 2 π( ξ t − τ f )
S xC (t , f ) = ∫ ∫ WFN x (ξ, τ)φ(ξ, τ)e
s
dτdξ (17.78)
−∞ −∞
gdzie:
+∞
τ τ
WFN xs , y ( ξ, τ) = ∫x t + y * t − e − j 2 πξ t dt (17.79)
−∞
2 2
Tab. 17-7. Równania dyskretnych funkcji wygładzających w(m,k) dla wybranych reprezentacji czasowo-
-częstotliwościowych z klasy Cohena (hN (k), gM (m) − standardowe symetryczne okna widmowe, unormo-
wane lub nie, o długości 2N−1 i 2M−1)
Rxav(n, k) może być interpretowane jako estymata „lokalnej” funkcji autokorelacji. Macierz
w(m, k) jest dyskretną wersją ciągłej funkcji w(t, τ), związanej z jądrem φ(ξ, τ) odwrotnym
przekształceniem Fouriera (17.77). Jest ona dana lub wyznaczana tylko raz na początku, a na-
stępnie stała podczas obliczeń. Parametry N i M oznaczają odpowiednio rząd widma oraz rząd
wygładzania, a n jest dyskretnym czasem. Sygnał dyskretny x(n) o wartościach rzeczywistych
jest uzyskiwany drogą spróbkowania sygnału ciągłego x(t) z częstotliwością fpr. Częstotliwość
ta powinna być co najmniej czterokrotnie większa od maksymalnej częstotliwości fmax, wystę-
pującej w sygnale (fpr > 4fmax; fpr ↔ 2π).
Z zależności (17.82) − (17.84) można wyznaczyć dowolną dyskretną reprezentację czaso-
wo-częstotliwościową sygnału x(n), należącą do klasy Cohena. Należy jedynie dysponować
dyskretnymi postaciami w(m, k) ciągłych funkcji wygładzających w(t, τ) poszczególnych re-
prezentacji. W praktyce macierz w(m, k) jest uzyskiwana albo metodą dyskretyzacji ciągłej
funkcji w(t, τ), albo w wyniku odwrotnej dyskretnej transformaty Fouriera dyskretnej wersji
Reprezentacje czasowo-częstotliwościowe z klasy Cohena 481
a) b)
c) d)
e) f)
k n
Rys. 17.19. Przykładowe dyskretne funkcje wygładzające w(m, k) dla prostokątnych funkcji okien widmo-
wych hN(k) i gM(m) z tablicy 17.7 (N = 16): a) pseudoreprezentacja Wignera, b) wygładzona pseudorepre-
zentacja Wignera (M = 8), c) Zhao-Atlas-Marks II, d) klasyczny spektrogram, e) Born-Jordan, f) Choi-Wil-
liams
Reprezentacje czasowo-częstotliwościowe z klasy Cohena 483
y*( j )
1 2 3 4 5 6 7 8 9 10 11 12 13 j
1 o x o x o x o x o x o x o
2
2 x o x o x o x o x o x o x
3
3 o x o x o x o x o x o x o
4
4 x o x o x o x o x o x o x
5 i=n+k
x(i)
5 o x o x o x o x o x o x o
6 j=n-k
6 x o x o x o x o x o x o x
7
7 o x o x o x o x o x o x o
8
8 x o x o x o x o x o x o x
9
9 o x o x o x o x o x o x o
10
10 x o x o x o x o x o x o x x ( 10 ) y* ( 13 )
11
11 o x o x o x o x o x o x o
12
12 x o x o x o x o x o x o x
13
13 o x o x o x o x o x o x o
k
i
n
Wignera, na którym wykonuje się dopiero właściwą serię właściwych transformacji Fouriera
(wzdłuż grubej linii z rysunku 17.21b oraz linii do niej równoległych). Metoda ta pozwala na
skuteczne usunięcie składowych interferencyjnych z widma TF oraz poprawę jego czytelności.
W zaawansowanych metodach maska modyfikująca funkcję nieoznaczoności sygnału jest
dobierana w sposób adaptacyjny.
1 2 3 4 5 6 7 8 9 10 11 12 13 y*( j ) 1 2 3 4 5 6 7 8 9 10 11 12 13 y*( j )
1 o x o x o x o x o x o x o 1 o x o x o x o x o x o x o
2 x o x o x o x o x o x o x 2 x o x o x o x o x o x o x
3 o x o x o x o x o x o x o 3 o x o x o x o x o x o x o
4 x o x o x o x o x o x o x 4 x o x o x o x o x o x o x
5 o x o x o x o x o x o x o 5 o x o x o x o x o x o x o
6 x o x o x o x o x o x o x 6 x o x o x o x o x o x o x
7 o x o x o x o x o x o x o 7 o x o x o x o x o x o x o
8 x o x o x o x o x o x o x 8 x o x o x o x o x o x o x
9 o x o x o x o x o x o x o 9 o x o x o x o x o x o x o
10 x o x o x o x o x o x o x 10 x o x o x o x o x o x o x
11 o x o x o x o x o x o x o 11 o x o x o x o x o x o x o
12 x o x o x o x o x o x o x 12 x o x o x o x o x o x o x
13 o x o x o x o x o x o x o 13 o x o x o x o x o x o x o
x(i) x(i)
a/ b/
1 2 3 4 5 6 7 8 9 10 11 12 13 y*( j ) 1 2 3 4 5 6 7 8 9 10 11 12 13 y*( j )
1 o x o x o x o x o x o x o 1 o x o x o x o x o x o x o
2 x o x o x o x o x o x o x 2 x o x o x o x o x o x o x
3 o x o x o x o x o x o x o 3 o x o x o x o x o x o x o
4 x o x o x o x o x o x o x 4 x o x o x o x o x o x o x
5 o x o x o x o x o x o x o 5 o x o x o x o x o x o x o
6 x o x o x o x o x o x o x 6 x o x o x o x o x o x o x
7 o x o x o x o x o x o x o 7 o x o x o x o x o x o x o
8 x o x o x o x o x o x o x 8 x o x o x o x o x o x o x
9 o x o x o x o x o x o x o 9 o x o x o x o x o x o x o
10 x o x o x o x o x o x o x 10 x o x o x o x o x o x o x
11 o x o x o x o x o x o x o 11 o x o x o x o x o x o x o
12 x o x o x o x o x o x o x 12 x o x o x o x o x o x o x
13 o x o x o x o x o x o x o 13 o x o x o x o x o x o x o
x(i) x(i)
c/ d/
Rys. 17.21. Interpretacja graficzna wyznaczania różnych w z a j e m n y c h reprezentacji czasowo-często-
tliwościowych należących do klasy Cohena w przestrzeni iloczynu wektorowego sygnałów x(i) i y*(j) dla
n = 7, N = 4, M = 4: a) pseudoreprezentacja Wignera, b) wygładzona pseudoreprezentacja Wignera, c)
spektrogram, d) Born-Jordan, Zhao-Atlas-Marks II i Jeong-Williams. Dla w ł a s n y c h reprezentacji TF:
y(j) = x(j)
L L
K K
L L
K K
L L
K K
f
t
Rys. 17.22. Przykładowe reprezentacje czasowo-częstotliwościowe sygnału złożonego (dwa sygnały skła-
dowe o liniowej modulacji częstotliwości i gaussowskiej obwiedni czasowej). WV− Wigner-Ville
486 Metody czasowo-częstotliwościowej analizy sygnałów
0.75
0.50
0.25
sygnał x(t)
0.00
-0.25
-0.50
-0.75
-1.00
0.04
0.03
0.03
widmo |X(f)|
0.02
0.02
0.01
0.01
0.00
c) klasyczny skalogram sygnału (17.30), czyli kwadrat modułu jego transformaty falkowej
(10 oktaw, 12 „głosów” na oktawę)
2400 f [Hz]
1200
600
300
150
75
37.5
t [s]
0
0.0 0.3 0.6 0.9 1.2 1.5
Rys. 17.23. Przykład analizy czasowo-częstotliwościowej sygnału mowy ludzkiej z wykorzystaniem wy-
branych metod
Metody czasowo-częstotliwościowej analizy sygnałów 489
e) klasyczny spektrogram sygnału (17.23), czyli kwadrat modułu jego krótkoczasowej transformaty
Fouriera lub transformaty chirp-Z (N = M = 128, okno Hamminga, zakres częstotliwości 0 − 2000 Hz)
f) klasyczny spektrogram sygnału czyli kwadrat modułu jego krótkoczasowej transformaty Fouriera lub
chirp-Z (N = M = 128, okno Hamminga, zakres częstotliwości 0 − 4000 Hz)
1 3500
0.5 3000
0 2500
f [Hz]
u [V]
-0.5 2000
-1 1500
-1.5 1000
-2 500
-2.5 0
0 0.01 0.02 0.03 0.04 0.05 0 0.5 1 1.5
t [s] t [s]
3500
1
3000
0.5
f [H z] 2500
u [V]
0 2000
1500
-0.5
1000
-1
500
-1.5 0
0 0.01 0.02 0.03 0.04 0.05 0 0.5 1 1.5
t [s] t [s]
2 3500
1.5 3000
1 2500
f [Hz]
u [V]
0.5 2000
0 1500
-0.5 1000
-1 500
-1.5 0
0 0.01 0.02 0.03 0.04 0.05 0 0.2 0.4 0.6 0.8
t [s] t [s]
Rys. 17.24. Przykładowe przebiegi czasowe głoski dźwięcznej „a” i ich spektrogramy (17.23) (moduł
krótkoczasowej transformacji Fouriera − STFT) dla głosu normalnego i patologicznego
Metody czasowo-częstotliwościowej analizy sygnałów 491
a) b)
1 0.35
0.5 0.3
0.25
0
0.2
u [V]
-0.5
0.15
-1
0.1
-1.5 0.05
-2 0
0 2 4 6 8 10 0 5 10 15 20 25
t [s] f [Hz]
c) d)
25 20
20
15
15
f [H z]
f [H z]
10
10
5
5
0 0
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5
t [s] t [s]
Rys. 17.25. Fonokardigram serca: a) analizowany sygnał wejściowy, b) jego widmo Fouriera liczone za
pomocą DFT, c) krótkoczasowa reprezentacja Fouriera (STFT), d) reprezentacja TF Wignera
492 Metody czasowo-częstotliwościowej analizy sygnałów
0 0
-0.2 -0.2
u [V]
u [V]
-0.4 -0.4
-0.6 -0.6
-0.8 -0.8
0 1 2 3 4 5 6 0.5 1 1.5 2 2.5
t [s] t [s]
b) widmo Fouriera całego sygnału: wynik DFT (po lewej), wynik transformacji chirp-Z (po prawej)
0.1 0.1
0.08 0.08
0.06 0.06
0.04 0.04
0.02 0.02
0 10 20 30 40 0 5 10 15 20 25
f [Hz] f [Hz]
20
15
f [H z]
10
0
0.5 1 1.5 2 2.5
t [s]
if (sygnal==1)
fx = 100; % częstotliwość sinusoidy [Hz]
fmin = 50; fmax = 150; df=1; % zakres częstotliwości pokazywanych w widmie Fouriera
x = sin( 2*pi*fx*t ); % sinusoida
end
if (sygnal==2)
fx1 = 100; % częstotliwość sinusoidy 1 [Hz]
fx2 = 200; % częstotliwość sinusoidy 2 [Hz]
fmin = 50; fmax = 250; df=1; % zakres częstotliwości w widmie Fouriera
x1 = sin(2*pi*fx1*t); % sinusoida 1
x2 = sin(2*pi*fx2*t); % sinusoida 2
x = x1 + x2; % suma
end
if (sygnal==3)
fx = 100; % częstotliwość początkowa sygnału LFM
dfx = 300; % przyrost częstotliwości Hz/sek
fmin = 0; fmax = 500; df = 2; % zakres częstotliwości widma Fouriera
494 Metody czasowo-częstotliwościowej analizy sygnałów
y = x .* w; % sygnał z obwiednią
subplot(311); plot(t,x); grid; title('Sygnał analizowany bez obwiedni');
subplot(312); plot(t,w); grid; title('Obwiednia czasowa');
subplot(313); plot(t,y); grid; title('Sygnał z obwiednią'); xlabel('czas [s]'); pause
if (sygnal==1 | sygnal==2)
subplot(311); stem(f1,abs(X)); grid; title('WIDMO Sygnał');
subplot(312); stem(f2,abs(W)); grid; title('WIDMO Obwiednia');
subplot(313); stem(f1,abs(Y)); grid; title('WIDMO Sygnał+Obwiednia'); xlabel('f[Hz]');
pause
end
if (sygnal==3 | sygnal==4)
subplot(311); plot(f1,abs(X)); grid; title('WIDMO Sygnał');
subplot(312); plot(f2,abs(W)); grid; title('WIDMO Obwiednia');
subplot(313); plot(f1,abs(Y)); grid; title('WIDMO Sygnał+Obwiednia'); xlabel('f[Hz]');
pause
end
% STFT
% Wigner
% STFT
t0=(MF/2)*dt; t = t0 : (dM*dt) : t0+(nMF-1)*(dM*dt); nt=length(t);
df=1/(MF*dt); f = 0 : df : (MF/2)*df; f=f'; nf=length(f);
XF=ones(nf,1)*t; YF=f*ones(1,nt);
% Wigner
M2=(MW+1)/2;
t0=M2*dt; t = t0 : (dM*dt) : t0+(nMW-1)*(dM*dt); nt=length(t);
% df=1/((MW+1)*dt); f = 0 : df : MW*df; f=f'/2; nf=length(f); % ver.1 Wignera − WOLNA
df=1/(M2*dt); f = 0 : df : (M2-1)*df; f=f'/2; nf=length(f); % ver.2 Wignera − SZYBKA
XW=ones(nf,1)*t; YW=f*ones(1,nt);
% 3D
subplot(121);
hidden; waterfall(XF,YF,STFT); title('STFT'); xlabel('t [s]'); ylabel('f [Hz]')
colormap([0 0 0]); axis tight; rotacja=[-35 50]; view(rotacja);
subplot(122);
hidden; waterfall(XW,YW,WD); title('Wigner'); xlabel('t [s]'); ylabel('f [Hz]')
colormap([0 0 0]); axis tight; rotacja=[-35 50]; view(rotacja);
pause
clf;
% Kontury
subplot(121);
contour(XF,YF,STFT,10,'-k'); title('STFT'); xlabel('t [s]'); ylabel('f [Hz]'); grid;
subplot(122);
contour(XW,YW,WD,10,'-k'); title('Wigner'); xlabel('t [s]'); ylabel('f [Hz]'); grid;
pause
clf;
18
Zespoły filtrów
18.1. Wprowadzenie
Przetwarzanie sygnałów w podpasmach częstotliwościowych jest wskazane w wielu praktycz-
nych zastosowaniach. Najlepszym tego przykładem mogą być istniejące algorytmy kompresji
sygnałów audio (standardy MPEG-1 i MPEG-2 z poziomami mp1, mp2 i mp3 oraz standard
MPEG-4) i obrazów (standard JPEG 2000) oraz nowoczesne modulacje cyfrowe (szerokopas-
mowe transmultipleksery częstotliwościowe xDSL) stosowane we współczesnych systemach
telekomunikacyjnych. W praktyce inżynierskiej czasowo-częstotliwościowa analiza (rozłoże-
nie) i synteza (złożenie) sygnałów jest dokonywana zazwyczaj metodą reprezentacji czasowo-
-częstotliwościowych lub metodą zespołów filtrów. Obie grupy metod były rozwijane od lat
niezależnie od siebie, chociaż w dużej części stanowią inną formę zapisu tych samych „nakła-
dających się” transformacji ortogonalnych LOT (ang. Lapped Orthogonal Transforms). Roz-
dział w całości będzie poświęcony zespołom filtrów.
Zespoły filtrów składają się z części analizującej i syntezującej. W bloku analizującym cyfro-
wy sygnał wejściowy jest dzielony na M sygnałów pasmowych przez zespół cyfrowych filtrów
pasmowoprzepustowych, pokrywających cały zakres widma sygnału. Sygnały pasmowe są na-
stępnie decymowane (jest pozostawiana co N-ta próbka) i przesyłane (zapisywane), mogą być
dodatkowo poddane kwantyzacji. W części syntezującej sygnały pasmowe są interpolowane
(dodanie N−1 zer w miejsce usuniętych próbek), następnie ponownie filtrowane przez dualne
filtry pasmowoprzepustowe oraz dodawane. W przypadku kiedy zespół filtrów analizujących
i syntezujących spełnia określone wymagania, sygnał zsyntezowany jest równy sygnałowi
wejściowemu (z dokładnością prowadzonych obliczeń numerycznych), czyli zespół ten jako
całość charakteryzuje się właściwością perfekcyjnej rekonstrukcji (PR). Uproszczony schemat
zespołu filtrów jest przedstawiony na rysunku 18.1. Zespół składa się z M podpasm, czyli
z M filtrów analizujących Hm(z) oraz z M filtrów syntezujących Gm(z), m = 0, 1, ..., M−1. Bloki
"↓N" i "↑N" oznaczają operacje decymacji i interpolacji. Kiedy N = M, mamy doczynienia
z próbkowaniem krytycznym sygnałów podpasmowych, dla N > M występuje podpróbkowanie,
a dla N < M − nadpróbkowanie. W ogólnym przypadku należy zaprojektować odpowiedzi
impulsowe wszystkich filtrów. Wymagana charakterystyka amplitudowo-częstotliwościowa
zespołu filtrów analizujących jest przedstawiona na rysunku 18.2a.
Zespoły filtrów 497
0 1 2 3 4 M-1
M-1 1 0 0 1 M-1
Rys. 18.2. Idealna charakterystyka częstotliwościowa M-kanałowego zespołu filtrów z modulacją: a) zes-
poloną i b) kosinusową
interpolacja
decymacja synteza analiza decymacja
y0(m) v0(n) x0(n) u0(n) yˆ 0 ( m)
↑N G0(z) H0(z) ↓N
yk (n / N ) Ωk
yM −1 ΩM −1
y2 ..... Ω2 .....
y1 Ω1
n n
0 N 2N 3N ..... 0 N 2N 3N .....
Rys. 18.4. Interpretacja próbek podpasmowych yk(n/N) w zespołach filtrów z rysunku 18.1 jako współ-
czynników wyznaczanej transformacji (dekompozycji) czasowo-częstotliwościowej sygnału x(n). Pulsacje
unormowane Ωk = 2πfk / fpróbkowania są pulsacjami środkowymi filtrów pasmowoprzepustowych, o odpowie-
dziach impulsowych hk(n) i transmitancjach Hk(z)
h0 ( n )
0
7 6 5 4 3 2 1 0 h1 ( n )
h2 ( n )
y H x
Rys. 18.5. Przedstawienie zespołu filtrów jako sekwencji „nakładających się” transformacji ortogonalnych
LOT (ang. Lapped Orthogonal Transforms). Zakładamy, że przesuwane w czasie odpowiedzi impulsowe
poszczególnych filtrów są ortogonalne
reduktor ekspander
Rys. 18.6. Oznaczenie reduktora i ekspandera cyfrowego: odpowiednioK-tego i L-tego rzędu
500 Zespoły filtrów
W zespołach („grzebieniach”) filtrów sygnał wejściowy jest filtrowany przez kilka równolegle
pracujących filtrów pasmowoprzepustowych, jest więc oczywiste, że wynikowe sygnały pod-
pasmowe zajmują węższe pasmo częstotliwościowe niż sygnał oryginalny. W związku z tym
sygnały po filtrach są więc nadpróbkowane, ponieważ ich częstotliwość próbkowania nie
uległa zmianie, natomiast pasmo częstotliwościowe zostało zawężone. Jak widać, możliwe jest
w tym przypadku odpowiednie zmniejszenie częstotliwości próbkowania sygnałów podpas-
mowych, proporcjonalnie do zmniejszenia szerokości ich pasma częstotliwościowego. Opera-
cja ta jest nazywana podpróbkowaniem (ang. down-sampling) lub decymacją sygnału, operacja
zaś do niej odwrotna, czyli zwiększenie częstotliwości próbkowania, to nadpróbkowanie (ang.
up-sampling) lub interpolacja sygnału. W niniejszym podrozdziale dokładnie przedstawiono
konsekwencje częstotliwościowe obu operacji ze względu na ich podstawowe znaczenie
w teorii zespołów filtrów. Układ decymatora cyfrowego składa się z filtra pasmowoprzepusto-
wego ograniczającego K-krotnie pasmo częstotliwościowe sygnału, oraz z K-krotnego redukto-
ra, który pozostawia tylko co K-tą próbkę sygnału. Układ interpolatora cyfrowego składa się
natomiast z L-krotnego ekspandera, dodającego L−1 próbek o wartościach zerowych pomiędzy
każde dwie próbki sygnału, oraz z filtra pasmowoprzepustowego ograniczającego L-krotnie
pasmo częstotliwościowe sygnału. Oba układy są przedstawione na rysunku 18.6. Stosowany
w nich reduktor „↓K” i ekspander „↑L” są zdefiniowane w sposób następujący:
y d (n ) = x ( nK ) (18.1)
x (n / L ), n = 0, ± L, ± 2 L, ...
yi ( n ) = (18.2)
0, pozostałe wartości n
reduktor ekspander
x(n) x(n)
0 1 2 3 4 5 6 7 8 n 0 1 2 3 4 5 6 7 8 n
yd (n) yi (n)
0 1 2 3 4 5 6 7 8 9 n 0 1 2 3 4 5 6 7 8 9 n
Rys. 18.7. Ilustracja graficzna zasady pracy reduktora i ekspandera cyfrowego drugiego rzędu (K = L = 2)
Zespoły filtrów 501
∑ x0 (nK ) z −n = ∑ x0 (k ) z −k / K =X 0 (z1/ K )
∞ ∞ ∞
Yd ( z ) = ∑ x ( nK ) z −n = (18.3)
n = −∞ n = −∞ k = −∞
gdzie sygnał x0(n) jest to sygnał x(n), w którym jest pozostawiona co K-ta próbka, a pozostałe
próbki są wyzerowane:
x (n ), n = 0, ± K , ± 2 K ,...
x0 (n ) = (18.4)
0, pozostałe wartości n
stąd
∞ ∞ 1 K −1
X 0 ( z) = ∑ ( c(n) x(n) ) z −n = ∑ K ∑ WK− kn x(n) z −n =
n =−∞ n =−∞ k =0
∑ X (WKk z1 / K )
K −1
1
Yd ( z ) = (18.8)
K k =0
∑ x(kL / L) z − kL = ∑ x(k ) z − kL = X (z L )
∞ ∞
Yi ( z ) = (18.9)
k = −∞ k = −∞
( ) ∑ X (e j (Ω−2 πk )/ K )
K −1
1
Y d e jΩ = (18.10)
K k =0
( ) (
Yi e jΩ = X e jΩL ) (18.11)
W pierwszym przypadku widmo sygnału jest K-krotnie rozszerzane, K razy przesuwane co 2πk
radianów, 0 ≤ k ≤ K−1, oraz sumowane, a wynik końcowy jest przeskalowywany w amplitudzie
w wyniku mnożenia przez 1/K (szczegóły na rysunku 18.9). W drugim przypadku widmo jest
L-krotnie zawężane, tzn. powtarza się teraz okresowo co 2π/L radianów.
502 Zespoły filtrów
a) X(e j Ω)
−2π −π 0 π 2π Ω
b) Yd (e j Ω)
−2π −π 0 π 2π Ω
c) Yi (e j Ω)
Rys. 18.8. Przykładowe widma sygnałów cyfrowych po układzie dwukrotnego decymatora (K = 2) i trzy-
krotnego interpolatora (L = 3): a) X(e jΩ) − widmo sygnału wejściowego, b) Yd (e jΩ) − widmo sygnału po
dwukrotnym decymatorze, c) Yi (e jΩ) − widmo sygnału po trzykrotnym interpolatorze
a) X(e j Ω)
1
−4π −2π −π 0 π 2π 4π Ω
ω π
b)
X(e j Ω/2)
1
−4π −2π −π 0 π 2π 4π Ω
c)
X(e j(Ω−2π)/2)
1
−4π −2π −π 0 π 2π 4π Ω
ω
d)
2Yd (e j Ω)
1
−4π −2π −π 0 π 2π 4π Ω
Rys. 18.9. Konsekwencje częstotliwościowe decymacji rzędu drugiego K = 2 (18.10). Kolejno widma: a)
sygnału wejściowego X(e jΩ), b) X(e jΩ/2), c) X(e j(Ω − 2π )/2), d) sygnału zdecymowanego 2Yd (e jΩ) = X(e jΩ/2) +
+ X(e j(Ω − 2π )/2)
Jak widać układ z rysunku 18.10 stanowi jedną z gałęzi zespołu filtrów z rysunku 18.1. W pod-
rozdziale 18.3.1 szczegółowo omówiono właściwości takiego połączenia i ich konsekwencje
dla całego zespołu filtrów.
Obecnie podamy definicję dekompozycji polifazowej sygnałów i wynikające z niej możliwości
modyfikacji struktury układu z rysunku 18.10. Jak się później okaże prowadzą one do bardzo
ważnego, alternatywnego zapisu równań zespołu filtrów. Umożliwia on stosunkowo łatwe pro-
jektowanie filtrów, występujących w zespole, oraz jego szybką implementację obliczeniową.
Niech x(n) oznacza dowolny sygnał cyfrowy, czyli nieskończony ciąg próbek, wówczas
M podciągów xk(n) takich że:
x k (n ) = x ( nM + k ), 0 ≤ k ≤ M − 1 (18.12)
nazywamy składowymi polifazowymi sygnału x(n). M jest dowolną liczbą naturalną, czyli spo-
sób dekompozycji polifazowej sygnału jest arbitralny i zależny od jej konkretnego zastosowa-
504 Zespoły filtrów
b) |H2(e j Ω)|
1
c) |G0(e j Ω)|
|H0(e j Ω)|
Rys. 18.10. a) Kaskadowe połączenie decymatora i interpolatora, uzupełnionych o konieczne filtry. W jego
wyniku otrzymuje się jedną gałąź zespołu filtrów z rysunku 18.1; b) przykład charakterystyki amplitudo-
wo-częstotliwościowej filtra Hk(ejΩ) (drugie podpasmo w zespole filtrów: k = 2, M = N = 4). Identyczny
kształt ma charakterystyka filtra Gk(ejΩ); c) w szczególnym, najprostszym przypadku filtr pasmowy jest sy-
metrycznym filtrem dolnoprzepustowym: H0(ejΩ), G0(ejΩ)
nia. W każdym podciągu (18.12) występuje co M-ta próbka oryginalnego sygnału. Przykładem
dwupasmowej dekompozycji polifazowej dowolnego sygnału cyfrowego jest podział jego
próbek na te o indeksach parzystych i nieparzystych. W przypadku dekompozycji polifazowej
czwartego rzędu (czteropasmowej) otrzymujemy następujące cztery podciągi próbek sygnału:
x (0), x(4), x(8), x (12), x(16), x( 20), ...
x (1), x (5), x(9), x (13), x(17), x( 21), ...
x (2), x(6), x(10), x (14), x(18), x( 22), ...
x (3), x(7), x (11), x(15), x(19), x( 23), ...
x(n)
↓M x0(n) = x(nM+0)
-1
z
↓M x1(n) = x(nM+1)
z-1
↓M x2(n) = x(nM+2)
z-1
↓M xM−1(n) = x(nM+M−1)
Rys. 18.11. Schemat blokowy M-krotnej (M-pasmowej) dekompozycji polifazowej sygnału x(n)
X0(zM )
[ ]
M
X ( z ) = 1 z −1 " z − ( M −1) X 1( z ) (18.16)
#
M
X M −1 ( z )
Po wprowadzeniu oznaczeń XkI(z) = Xk(z) oraz XkII(z) = XM−1−k(z) równanie (18.15) można zapi-
sać w dwóch alternatywnych postaciach:
M −1 ∞
X ( z) = ∑
k =0
( )
z − k X kI z M , X kI ( z ) = ∑
n =−∞
x (nM + k ) z − n (18.17)
M −1 ∞
X ( z) = ∑
k =0
( )
z −( M −1−k ) X kII z M , X kII ( z ) = ∑
n =−∞
x (nM + M − 1 − k ) z − n (18.18)
Pierwsza z nich, omówiona powyżej, jest nazywana dekompozycją polifazową pierwszego ty-
pu, druga zaś − dekompozycją drugiego typu. Dekompozycje te różnią się tylko odwrotną nu-
meracją składowych polifazowych (w kolejności rosnących lub malejących indeksów). Składo-
we polifazowe pierwszego i drugiego typu będą w dalszej części rozdziału konsekwentnie
oznaczane za pomocą innych cyfr rzymskich (odpowiednio I i II).
Dekompozycję polifazową można z powodzeniem zastosować do alternatywnego, polifa-
zowego opisu filtracji cyfrowej tak nierekursywnej FIR, jak i rekursywnej IIR, przedstawiając
sygnały wejściowe, wyjściowe oraz odpowiedzi impulsowe filtrów w postaci polifazowej. Ta-
kie podejście jest szczególnie przydatne w przypadku układów decymatorów i interpolatorów
(tzn. reduktorów i ekspanderów z odpowiednimi filtrami pasmowoprzepustowymi), a w kon-
sekwencji także zespołów filtrów, ponieważ zdecydowanie upraszcza ich analizę, projekto-
wanie oraz implementację.
Przykład. Podamy teraz prosty przykład dekompozycji polifazowej transmitancji typu filtr
FIR. Wartości jej współczynników dobrano w celu lepszego zilustrowania samej dekompozycji
506 Zespoły filtrów
H ( z ) = 0,1 + z −1 + 2 z −2 + 3z −3 + 4 z −4 + 5z −5 + 6 z −6 + 7 z −7 + 8 z −8
( ) ( ) (
H ( z ) = 0,1 + 3z −3 + 6 z −6 + z −1 1 + 4 z −3 + 7 z −6 + z −2 2 + 5z −3 + 8 z −6 )
W związku z tym otrzymujemy:
H 0I ( z 3 ) = H 2II ( z 3 ) = 0,1 + 3z −3 + 6 z −6
H 1I ( z 3 ) = H 1II ( z 3 ) = 1 + 4 z −3 + 7 z −6
H 2I ( z 3 ) = H 0II ( z 3 ) = 2 + 5z −3 + 8 z −6
H 0I ( z ) = H 2II ( z ) = 0,1 + 3z −1 + 6 z −2
H 1I ( z ) = H 1II ( z ) = 1 + 4 z −1 + 7 z −2
H 2I ( z ) = H 0II ( z ) = 2 + 5z −1 + 8 z −2
Dekompozycja transmitancji typu filtr IIR H(z) = B(z)/A(z) jest także możliwa, ale już nie jest
taka prosta.
( ) ( )
Y4 ( z ) = H z N X z N = X 3 ( z ) (18.20)
∑ z − l H kI, l (z N )
N −1
H k ( z) = (18.21)
l =0
gdzie H Ik,l(z) oznacza transmitancję l-tej składowej polifazowej typu pierwszego k-tego filtra.
Analogicznie po zastosowaniu dekompozycji drugiego typu do filtra gk(n), występującego
w układzie interpolatora, mamy:
Zespoły filtrów 507
∑ z −( N −1−l ) GkII,l (z N )
N −1
Gk ( z ) = (18.22)
l =0
Przykładowa gałąź zespołu filtrów, przedstawiona na rysunku 18.10, składa się z pasmowo-
przepustowego filtra analizującego, reduktora „↓N”, ekspandera „↑N” oraz pasmowoprzepus-
towego filtra syntezującego. Uwzględniając zależności (18.8) i (18.9), transformaty Z sygna-
łów um(n), ym(n), vm(n) oraz xˆm (n) są dane wzorami (0 ≤ k ≤ M−1):
U m ( z) = H m ( z) X ( z) (18.23)
N −1
∑ U m ( WNk z1/ N )
1
Ym ( z ) = (18.24)
N k =0
Vm ( z ) = Ym ( z N ) (18.25)
Xˆ m ( z ) = Gm ( z )Vm ( z ) (18.26)
skąd:
N −1
∑ H m ( WNk z ) X ( WNk z )
1
Xˆ m ( z ) = Gm ( z ) (18.27)
N k =0
Rysunki 18.15 i 18.16 ilustrują widma poszczególnych sygnałów w torze przetwarzania dla
pierwszej i drugiej gałęzi w czterokanałowym (M = 4) zespole filtrów. Jak widać w obu przy-
padkach właściwa część widma sygnału wejściowego zostaje poprawnie odtworzona, czyli od-
powiednio podpasmo pierwsze i drugie. Jednak dla gałęzi pierwszej, widmo sygnału Y1(ejΩ)
508 Zespoły filtrów
a) b)
z−1 z−1
H kI ,1 ( z N ) ↓N H kI ,1 ( z )
z−1 z−1
H kI ,2 ( z N ) ↓N H kI ,2 ( z )
z−1 z−1
H kI , N −1 ( z N ) ↓N H kI , N −1 ( z )
Rys. 18.13. Modyfikacja układu decymatora z rysunku 18.10: zapisanie filtra hk(n) w postaci polifazowej
p i e r w s z e g o typu oraz przesunięcie układu „podpróbkowania” z prawej strony na lewą
a) b)
Rys. 18.14. Modyfikacja układu interpolatora z rysunku 18.10: zapisanie filtra gk(n) w postaci polifazowej
d r u g i e g o typu oraz przesunięcie układu „podpróbkowania” z lewej strony na prawą
Zespoły filtrów 509
X(e j Ω)
1
2 1 0 0 1 2
U(e j Ω)
1
1 1
Y(e j Ω)
1/4
V(e j Ω)
1/4
1 1
Xˆ (e j Ω )
1
1 1
Rys. 18.15. Przykład rekonstrukcji sygnału po operacji decymacji i interpolacji rzędu drugiego (K = L = 4)
dla pierwszego podpasma
510 Zespoły filtrów
X(e j Ω)
1
2 1 0 0 1 2
U(e j Ω)
1
2 2
Y(e j Ω)
1/4
V(e j Ω)
1/4
2 2
Xˆ (e j Ω )
1
2 2
Rys. 18.16. Przykład rekonstrukcji sygnału po operacji decymacji i interpolacji rzędu drugiego (K = L = 4)
dla drugiego podpasma
Zespoły filtrów 511
Sygnał wyjściowy z całego zespołu filtrów jest sumą wyjść z jego poszczególnych gałęzi,
czyli:
M −1 M −1 M −1
Xˆ ( z ) = ∑ Xˆ m ( z ) = ∑ Gm ( z )Vm ( z ) = ∑ Gm ( z ) Ym ( z N ) =
m =0 m=0 m =0
M −1 N −1
∑ Gm ( z ) N ∑ H m (WNk z ) X (WNk z ) =
1
=
m=0 k =0
∑ X (WNk z ) N ∑ H m (WNk z ) Gm ( z )
N −1 M −1
1
= (18.28)
k =0 m =0
Po wprowadzeniu oznaczenia:
∑ H m (WNk z )Gm ( z )
M −1
1
Ak (z ) = (18.29)
N m =0
∑ Ak (z )X (WNk z )
N −1
Xˆ (z ) = (18.30)
k =0
( ) (
X W Nk e jΩ = X e j (Ω−2πk / N ) ) (18.31)
widmo sygnału wyjściowego Xˆ (e jΩ ) z całego zespołu filtrów jest liniową kombinacją widma
sygnału wejściowego X (e jΩ ) oraz jego N − 1 poprzesuwanych (zmodulowanych) wersji („ob-
razów”, „odbić”). Jest więc oczywiste, że zespół będzie odtwarzał wejście tylko wtedy kiedy:
1 M −1
A0 ( z ) = ∑ H m ( z ) Gm ( z ) = cz − n0 (18.32a)
N m =0
∑ H m (WNk z )Gm ( z ) = 0,
M −1
1
Ak (z ) = 1 ≤ k ≤ N −1 (18.32b)
N m =0
Jak już było pokazane, transmitancje filtrów analizy Hk(z) z rysunku 18.1 można zapisać w po-
staci polifazowej pierwszego typu (18.21). W związku z tym transmitancje w s z y s t k i c h filt-
rów sekcji analizy można zapisać w następującej postaci macierzowej:
1 1
H 0 ( z ) H 0, 0 ( z ) H 0I,1 ( z N ) " H 0I, N −1 ( z N ) −1
I N
z z −1
# = # # % # = H I
( z )
I N I N I N # #
H M −1 ( z ) H M −1,0 ( z ) H M −1,1 ( z ) " H M −1, N −1 ( z ) z − ( N −1) − ( N −1)
z
(18.33)
I
gdzie H k,l (z) jest l-tym (0 ≤ l ≤ N−1) komponentem polifazowym k-tej transmitancji Hk(z)
(0 ≤ k ≤ M−1) typu I, N oznacza stopień decymacji, H I(z) jest zaś macierzą składowych polifa-
zowych typu I filtrów analizy o wymiarach M × N. Polifazowa reprezentacja bloku filtrów ana-
lizujących jest przedstawiona na rysunku 18.17.
x (n ) x (n )
H 0 ( z) u0 ( z ) u0 ( z )
z −1 x ( n − 1)
H1 ( z ) u1 ( z ) z −1 x ( n − 2) u1 ( z )
−1
H I (zN )
z
z −1 x ( n − N + 1)
H M −1 ( z ) u M −1 ( z ) u M −1 ( z )
Stosując w podobny sposób zapis polifazowy (18.22) drugiego typu do filtrów syntezy Gk(z),
0 ≤ k ≤ M−1, otrzymujemy następujące równanie macierzowe sekcji syntezy:
G0,0
II
(z N ) " G0,IIM −1 ( z N )
II N
G (z ) " G1,IIM −1 ( z N )
[G0 ( z ) " GM −1 ( z )] = z −( N −1) z − ( N − 2) " 1 1,0 =
# % #
G II N
" GNII−1,M −1 ( z N )
N −1,0 ( z )
[
= z − ( N −1) ]
z − ( N − 2 ) " 1 G II ( z ) (18.34)
gdzie G IIl, k (z) jest l-tym komponentem polifazowym typu II k-tego filtra Gk(z), N oznacza sto-
pień interpolacji, a G II(z) jest macierzą komponentów polifazowych filtrów syntezy. Na rysun-
ku 18.18 jest przedstawiona polifazowa reprezentacja bloku filtrów syntezujących.
Zespoły filtrów 513
v0 ( n ) xˆ 0 ( n )
G0 ( z )
z −1
v1 ( n ) xˆ1 (n )
G1 ( z ) z −1
G II ( z N )
z −1
vM −1 ( n ) xˆ M −1 ( n ) xˆ ( n ) z −1
GM −1 ( z )
Używając reprezentacji polifazowej zestawu filtrów analizy (rysunek 18.17) oraz zestawu
filtrów syntezy (rysunek 18.18), możemy przedstawić cały zespół filtrów z rysunku 18.1
w równoważnej formie, zaprezentowanej na rysunku 18.19. Jest ona nazywana polifazową
reprezentacją M-pasmowego zespołu filtrów. Stosując tożsamości z rysunku 18.12, możemy
przesunąć reduktory (układy „podpróbkowania”) przed macierz polifazową analizy, a ekspan-
dery (układy „nadpróbkujące”) za macierz polifazową syntezy, analogicznie do przekształceń
przedstawionych na rysunkach 18.13 i 18.14. W wyniku tych operacji uzyskujemy układ jak na
rysunku 18.20. Zaletą otrzymanego rozwiązania jest to, że pracujące w nim filtry działają na
N razy niższych częstotliwościach (gdyż nie wyznacza się wszystkich próbek sygnałów pod-
pasmowych, które się potem N-krotnie redukuje, tylko oblicza się te próbki, które mają pozo-
stać; inaczej mówiąc N-krotna redukcja danych następuje przed filtrami a nie po nich). Po
połączeniu macierzy polifazowych H I(z) i G II(z) w jedną macierz F(z) = G II(z)H I(z), otrzy-
mujemy układ przedstawiony na rysunku 18.21.
x (n ) y0 ( n )
↓N ↑N
z −1 x ( n − 1) z −1
y1 ( n )
z −1 x ( n − 2) ↓N ↑N z −1
H I (z N ) G II ( z N )
z −1 z −1
x ( n − N + 1) y M −1 ( n ) xˆ ( n )
↓N ↑N
Rys. 18.19. Polifazowa reprezentacja M-pasmowego zestawu filtrów z reduktorami „↓N” i ekspanderami
„↑N”
x ( n) x0 ( n ) y0 (n )
↓N ↑N
z −1 x1 (n )
y1 ( n ) z −1
↓N y2 ( n ) ↑N
−1 H I (z ) G II (z ) z −1
z
z −1 x N −1 ( n ) y M −1 ( n ) z −1 x (n)
↓N ↑N
Rys. 18.20. Polifazowa reprezentacja M-pasmowego zestawu filtrów po przesunięciu reduktorów „↓N”
i ekspanderów „↑N”, zgodnie z tożsamościami z rysunku 18.12. Sygnały xk(n) są komponentami polifazo-
wymi sygnału x(n), określonymi w następujący sposób: xk(n) = x(nN + k), 0 ≤ k ≤ M − 1,−∞ ≤ n ≤ +∞
514 Zespoły filtrów
x (n )
↓N ↑N
−1
z z −1
↓N ↑N
F (z )
z −1 z −1
z −1 z −1 xˆ ( n )
↓N ↑N
Rys. 18.21. Schemat zastępczy M-pasmowego zestawu filtrów z decymacją/interpolacją N-tego rzędu,
otrzymany w wyniku połączenia macierzy polifazowych H I(z) i G II(z) w F(z) = G II(z)H I(z)
x (n )
↓N ↑N
z −1 z −1
↓N ↑N
z −1 z −1
z −1 z −1 xˆ ( n )
↓N ↑N
Oczywiście użyteczność takiego zespołu filtrów jest w praktyce wątpliwa. Zależy nam bowiem
na tym, aby filtry wchodzące w skład zestawu charakteryzowały się określonymi właściwoś-
ciami częstotliwościowymi. W związku z tym załóżmy, że nasz trywialny system wzbogacimy
o dwie macierze H I(z) i G II(z) (teraz M ≠ N), uzyskując w ten sposób system przedstawiony na
rysunku 18.19. Jedynym ograniczeniem, jakie nakładamy na H I(z) i G II(z) jest, aby
F ( z ) = G II ( z ) H I ( z ) = cz − m 0 I (18.35)
Opóźnienie sygnału wyjściowego w takim zespole filtrów powiększa się teraz o m0N i wynosi
(N − 1) + m0N. Jest rzeczą oczywistą, że powyższy system nadal ma właściwość perfekcyjnej
rekonstrukcji i w dodatku nie jest trywialny. Korzystając z tego faktu możemy rozpocząć two-
rzenie systemu od zaprojektowania filtrów analizujących Hk(z), a następnie wyznaczyć związa-
ną z nimi macierz polifazową analizy H I(z) oraz znaleźć macierz syntezy G II(z), spełniającą
równanie (18.35). W ostatnim etapie obliczamy filtry syntezy Gk(z) na podstawie G II(z).
Zespoły filtrów 515
y ( m / N ), m = 0, ± N , ± 2 N ,..
vk (m) = k
0, pozostałe wartości n
∞ ∞ ∞ ∞
xˆk (l ) = ∑ vk ( m ) g k ( l − m ) = ∑ yk ( m) gk (l − mN ) = ∑ ∑ x( n ) hk ( mN − n ) g k (l − mN )
m =−∞ m =−∞ m =−∞ n =−∞
M −1 M −1 ∞ ∞
xˆ (l ) = ∑ xˆk (l ) = ∑ ∑ ∑ x ( n ) hk ( mN − n ) gk (l − mN )
k =0 k = 0 m =−∞ n =−∞
Zespół filtrów ma właściwość perfekcyjnej rekonstrukcji, kiedy sygnał wyjściowy jest równy
przeskalowanemu w amplitudzie i opóźnionemu w czasie sygnałowi wejściowemu, czyli kiedy
xˆ (l ) = cx (l − n0 ) . Powstaje pytanie, jakie warunki powinny spełniać filtry hk(n) i gk(n),
0 ≤ k ≤ M−1, aby generowany przez nie zespół filtrów był PR. Załóżmy, że sygnał wejściowy
jest opóźnioną deltą Kroneckera x (n ) = δ( n − n1 ) (jest to założenie ogólne, ponieważ analizu-
jemy układ liniowy, każdy zaś sygnał cyfrowy może być przedstawiony jako liniowa kombi-
nacja impulsów typu opóźniona delta Kroneckera). Sygnał wyjściowy powinien mieć wówczas
postać xˆ (l ) = cδ(l − n1 − n 0 ) . Z ostatniego równania oraz z założonej postaci sygnału wejścio-
wego i wyjściowego wynika, że jest to możliwe tylko wtedy kiedy
M −1 ∞
∑ ∑ h (mN − n )g (l − mN ) = cδ(l − n
k =0 m = −∞
k 1 k 1 − n0 )
Aby zapewnić właściwość PR, filtry analizujące i syntezujące powinny spełniać powyższą
zależność, narzucającą określone związki pomiędzy składowymi polifazowymi wszystkich
filtrów sekcji analizy i syntezy. Oczywiście jako części składowe zespołu filtrów, wszystkie
filtry powinny mieć także selektywne charakterystyki amplitudowo-częstotliwościowe − patrz
rysunek 18.2.
Wykażemy teraz, że prosta i odwrotna dyskretna transformacja Fouriera (algorytmy DFT oraz
IDFT), opisane w rozdziale 9, stanowią łącznie przykład najprostszego zespołu filtrów
z modulacją zespoloną. Aby otrzymać odpowiedzi impulsowe filtrów analizy postaci ejωt a nie
e−jωt oraz zgodność z innymi modulowanymi zespołami filtrów, które będą rozpatrywane
w dalszej kolejności, w przedstawionym przykładzie sekcja analizy będzie oparta na algoryt-
mie IDFT, sekcja syntezy zaś − na algorytmie DFT.
W algorytmie M-punktowego IDFT transformacji poddaje się M kolejnych próbek sygnału.
Oznaczmy te próbki jako
xi (n ) = x (n − i ), i = 0,1,..., M − 1 (18.36)
W związku z tym równanie IDFT ma postać (świadomie zaniedbujemy dzielenie przez 1/M):
M −1 M −1
uk (n) = ∑ xi (n )WM− ik = ∑ x(n − i )WM− ik , 0 ≤ k ≤ M − 1, WM = e − j 2 π / M (18.38)
i =0 i =0
hk ( n ) = WM− nk (18.39)
stąd wynika, że IDFT jest M-kanałowym zespołem filtrów. Filtry analizy hk(n) mają następu-
jące transformaty Z (ze wzoru na sumę szeregu potęgowego):
H k ( z) = ∑ hk (n) z − n = ∑ (zWM− k )
M −1 M −1 n
=
(
1 − zWM− k )M = 1 − (zWMk )− M , 0 ≤ k ≤ M − 1 (18.40)
n =0 n =0 1 − (zWM− k ) 1 − (zWMk )
−1
Transmitancję k-tego filtra można przedstawić jako zmodulowaną wersję filtra zerowego:
H k (z ) = H 0 zWMk ( ) (18.41)
Zespoły filtrów 517
gdzie
M −1
1 − z −M
H 0 ( z) = ∑ z −n = 1 + z −1 + .... + z −( M −1) = 1 − z −1 (18.42)
n =0
Z (18.39) i (18.42) wynika, że filtr zerowy jest oknem prostokątnym o długości równej M. Jego
charakterystyka amplitudowo-częstotliwościowa ma pierwszy listek boczny na poziomie −13,5
decybela (patrz rozdział 8). Wynika stąd, że IDFT jest zespołem filtrów, charakteryzujących
się bardzo słabym tłumieniem w paśmie zaporowym. Naturalną wydaje się więc jego modyfi-
kacja, opisana w następnym podrozdziale, polegająca na zastosowaniu okna innego niż prosto-
kątne.
Na rysunku 18.23 jest przedstawiony zespół filtrów, odpowiadający IDFT. Jak widać sygnał
wejściowy jest przechowywany w buforze przesuwnym. Po wejściu do niego następnej próbki
(i usunięciu ostatniej, najstarszej) są wykonywane kolejno po sobie algorytmy IDFT i DFT. Ze
względu na ich właściwości na wyjściu DFT pojawia się przeskalowany w amplitudzie wektor
wejściowy:
( )
Gk ( z ) = WM− k G0 zWMk , G0 ( z ) = H 0 ( z ) (18.45)
a) x (n ) y0 ( n )
z −1 x ( n − 1) y1 (n ) z −1
z −1 IDFT DFT z −1
x ( n − M + 1) y M −1 (n) xˆ ( n )
b) x (n ) y0 ( n )
↓M ↑M
z −1 y1 (n) z −1
↓M ↑M
z −1
IDFT DFT z −1
y M −1 ( n ) xˆ ( n )
↓M ↑M
Rys. 18.23. IDFT/DFT jako zespół filtrów: a) wersja niedecymowana, b) wersja maksymalnie decymowana
518 Zespoły filtrów
tzn. IDFT jest wykonywane na fragmencie sygnału wyciętym przez okno. Równanie (18.46)
można interpretować jako splot analizowanego sygnału z filtrami o odpowiedziach impulso-
wych postaci:
hk (n ) = p (n )WM− nk (18.47)
Zespoły filtrów 519
(
h0 ( n ) = p(n ), H 0 ( z ) = P( z ), H k ( z ) = P zWMk ) (18.48)
Analogicznie jak w przypadku zespołu filtrów IDFT/DFT, także dla STFT filtry syntezy mają
postać:
Gk (z ) = WM− k Q zWMk( ) (18.50)
hk (n ) = p (n )WM− kn
Zamiast realizować każdy filtr analizy oddzielnie możliwe jest zbudowanie bardziej efektywnej
obliczeniowo realizacji całego zespołu równocześnie. Załóżmy, że funkcja P(z) jest przed-
stawiona w postaci polifazowej pierwszego typu:
M −1
P( z ) = ∑ z − l PlI ( z M ) (18.52)
l =0
gdzie P Il(z) jest l-tym składnikiem polifazowym pierwszego typu. Podstawiając (18.52) do
(18.51) otrzymuje się:
gdzie wykorzystano równość WMkM = 1 . Równanie (18.53) można zapisać w postaci macie-
rzowej:
P0I ( z M )
−1 I M
z P1 ( z )
H k ( z ) = 1 WM− k WM−2 k " WM− ( M −1) k z −2 P I ( z M ) (18.54)
2
#
− ( M −1) I
z PM −1 ( z M )
Wszystkie M równań definiujących Hk(z), k = 0, 1, ..., M−1, można zebrać razem i zapisać
w następującej postaci macierzowej:
1 1 1 " 1 P0I ( z M )
H0 ( z)
H ( z ) 1 WM −1
WM−2 " WM− ( M −1) z −1P1I ( z M )
1
H 2 ( z ) = 1 WM−2 WM−4 " WM−2( M −1) −2 I M (18.55)
z P2 ( z )
# # # # % # #
2
H M −1 ( z ) 1 WM− ( M −1) WM−2( M −1) " WM− ( M −1) z − ( M −1) PMI −1 ( z M )
równoważnej zapisowi
P0I ( z M )
H0 ( z)
H ( z) z −1P1I ( z M )
1
H 2 ( z ) = W * z −2 P I ( z M ) (18.56)
2
# #
H M −1 ( z ) z − ( M −1) PMI −1 ( z M )
gdzie:
H kI , l ( z ) = WM− kl Pl I ( z ) (18.59)
Aby zespół filtrów miał właściwość perfekcyjnej rekonstrukcji PR, musi być spełniony waru-
nek (18.35). Określa on postać macierzy G II(z) w zależności od H I(z). W rozpatrywanym przy-
padku wynika z niego, między innymi, że transmitancje Gk(z), k = 0, 1, 2, ..., M − 1, filtrów sek-
cji syntezy powinny być postaci:
gdzie Q(z) oznacza transmitancję dolnoprzepustowego filtra prototypowego q(n) bloku synte-
zy, różnego od p(n). Obecnie wykażemy zasadność warunku (18.60) oraz wyprowadzimy wa-
runki pozostałe. Wszystkie przekształcenia są analogiczne jak dla bloku filtrów analizy, tylko
w tym przypadku jest stosowana dekompozycja polifazowa typu II:
g k ( n ) = W − k q( n )WM− kn
∞ ∞ ∞
( )
−n
Gk ( z ) = ∑ gk (n) z −n =W −k ∑ q( n )WM− kn z − n = W − k ∑ q( n ) WMk z = W − k Q ( zWMk ) (18.61)
n =−∞ n =−∞ n =−∞
M −1
Q( z) = ∑ z −( M −1−l )QiII ( z M ) (18.62)
l =0
M −1
Gk ( z ) = ∑ WMkl ( z − ( M −1−l )QlII ( z M ) ) (18.63)
l =0
T
T z − ( M −1)Q0II 1 1 1 " 1
G0 ( z ) − ( M −2) II
G ( z) z Q1 1 WM 1
WM2 " WM( M −1)
1 − ( M −3) II
G2 ( z ) = z WM2 WM4 " WM2( M −1) (18.64)
Q2 1
#
# # # # % #
GM −1 ( z ) − 2
QM II
−1
(
1 WM M 1)
WM M −1)
2(
" WM( M −1)
T
T z − ( M −1) 1 Q0II ( z M ) 0 0 " 0
G0 ( z )
G ( z) − ( M − 2) II M
z 0 Q1 ( z ) 0 " 0
1 W
G2 ( z ) = z − ( M −3) 0 0 II M
Q2 ( z ) " 0
(18.65)
# # # # % #
#
GM −1 ( z )
1 0 0 0 " II
QM M
−1 ( z )
Cały zespół filtrów będzie odwracalny, jeśli jest spełniony następujący warunek:
H 0 ( z)
H ( z)
[G0 ( z ) G1 ( z ) ... GM −1 ( z )] 1 = cz − m0 (18.66)
#
H M −1 ( z )
skąd wynika, że rozpatrywany zespół filtrów, w którym jest prawdziwe (18.60), ma właściwość
PR kiedy
Filtry prototypowe p(n) i q(n) sekcji analizy i syntezy muszą więc być zaprojektowane w taki
sposób, aby iloczyny wielomianów transmitancji Z ich wszystkich składowych polifazowych
spełniały warunek (18.68) (patrz przykład dekompozycji polifazowej w rozdziale 18.2.2).
Z kolei konsekwencją (18.69) jest wniosek, że oba filtry prototypowe muszą mieć długość rów-
ną M, gdyż wielomiany ich składowych polifazowych mają tylko jeden składnik z− k. Jak widać
krótkoczasowa, krytycznie próbkowana transformacja Fouriera z oknem o długości M speł-
nia warunki (18.69) i (18.70). Mamy bowiem dla niej: c = 1, m0 = 0, i = 0, j = 0, ak = p(k),
bk = q(k) = 1/p(k), 0 ≤ k ≤ M − 1, dla DFT zaś jako zespołu filtrów mamy dodatkowo: p(k) =
= q(k) = 1. Ograniczenie długości okna wpływa negatywnie na jego właściwości częstotli-
wościowe (mała selektywność).
Jeśli filtr prototypowy analizy P(z) jest filtrem dolnoprzepustowym w przedziale |ω| ≤ π/M,
mającym charakterystykę częstotliwościową P(ejΩ) symetryczną wokół Ω = 0, to wygenerowa-
ne z jego pomocą filtry Hk(z) są pasmowoprzepustowe i mają pulsacje środkowe Ωk = 2πk/M
(patrz rysunek 18.24). Zwykle filtr prototypowy jest filtrem o współczynnikach rzeczywistych,
ale filtry Hk(z) mają już współczynniki zespolone. Analogiczna sytuacja występuje dla filtrów
sekcji syntezy: prototypu Q(z) oraz filtrów Gk(z).
Na rysunku 18.25 przedstawiono postać polifazową zespołu filtrów z modulacją zespoloną.
Z równania (18.35) i jego graficznej interpretacji na rysunku 18.25 wynika, że operacja równo-
czesnej filtracji wielokanałowej sygnału wejściowego sprowadziła się do: wyznaczenia
wartości M komponentów polifazowych sygnału x(n) (filtracja polifazowa) oraz do wykonania
Zespoły filtrów 523
H0 = P H1 H2 H M −1
π 0 π 2π 4π
− 2π Ω
M M M M
x (n )
↓M P0I ( z ) Q0II ( z ) ↑ M
z −1 z −1
↓M P1I ( z ) IDFT DFT Q1II ( z ) ↑M
z −1 W* W z −1
xˆ (n )
z −1 II z −1
↓M PMI −1 ( z ) QM −1 ( z ) ↑ M
Pewnego komentarza wymaga jeszcze fakt położenia reduktorów „↓M” i ekspanderów „↑M”
na rysunku 18.25. W związku z tym, że w wyniku filtracji pasmowoprzepustowej pasmo czę-
stotliwościowe sygnałów w poszczególnych kanałach jest M razy węższe, można je próbkować
M razy rzadziej. Z właściwości filtrów polifazowych i DFT wynika, że reduktory występujące
na wyjściu poszczególnych kanałów można przesunąć na ich wejście i pracować na mniejszych
strumieniach danych. Przesunięcie decymatorów z wyjścia na wejście można także uzasadnić
w inny sposób, ponieważ redukcja „↓M” jest równoważna wzięciu tylko jednej próbki z każ-
dych M próbek, część wyliczonych próbek w ogóle nie jest wykorzystywana. Dlatego jest
zasadne pytanie jaki jest sens ich obliczania? Przesunięcie decymatorów do przodu likwiduje
ten problem. Wyznaczane są tylko potrzebne próbki.
Ponieważ przeprowadzone w tym podrozdziale przekształcenia matematyczne oraz wynikający
z nich schemat blokowy z rysunku 18.25 wykorzystują zapis polifazowy, do którego trzeba się
niestety przyzwyczaić i który na początku może nowicjuszom stwarzać trochę problemów,
na rysunkach 18.26 i 18.27 przedstawiono sekcje analizy i syntezy modulowanego zespołu
filtrów DFT w sposób alternatywny: bardziej rozbudowany graficznie, ale za to być może pro-
stszy w zrozumieniu i łatwiejszy do implementacji programowej dla części Czytelników. Pod-
czas analizy (rys. 18.26) do wejściowego bufora przesuwnego (blok elementów „z−1” i „↓M”
otoczonych linią przerywaną) jest jednorazowo pobieranych M próbek sygnału. Potem nastę-
puje mnożenie wszystkich próbek z bufora przez odpowiadające im wagi pk filtra, sumowanie
iloczynów „w grupach” polifazowych oraz wyznaczanie M-punktowego DFT. Podczas syntezy
(rys. 18.27) wynik IDFT jest „zwielokratniany”, tzn. każda próbka IFFT jest mnożona równo-
cześnie przez wszystkie odpowiadające jej składowe polifazowe qk filtra syntezy, a następnie
otrzymany w ten sposób wektor jest dodawany do zawartości bufora wyjściowego (blok
elementów „z−1” i „↑M” otoczonych linią przerywaną)), który po tej operacji jest przesuwany
o M pozycji do dołu i ... otrzymujemy M próbek wyjściowych.
524 Zespoły filtrów
x(n) p0
↓M 0
−1 1
z p1 2
↓M y0(n)
z−1 ∑ 0 0
pM−1
↓M K−1
−1
z pM
↓M 0
−1 1
z pM+1 2
↓M y1(n)
z −1 ∑ 1 1
p2M−1
↓M K−1
z−1 p2M
↓M
−1
z p2M+1
DFT
↓M
z−1
W*
pLp−(M+1)
↓M
z−1 pLp−M
↓M 0
−1 1
z
pLp−(M−1)
↓M yM−1(n)
z −1 ∑ M−1 M−1
pLp−1 K−2
↓M K−1
Rys. 18.26. Szczegółowy schemat sekcji a n a l i z y zespołu filtrów z modulacją zespoloną DFT. W celu
uproszczenia zapisu zastosowano inne oznaczenie numerów próbek odpowiedzi impulsowej filtra prototypo-
wego: pn = p(n), n = 0, 1, 2, ..., Lp − 1. W nadpróbkowanym zespole filtrów reduktor „↓” może być rzędu
N < M (wówczas do bufora jest jednorazowo pobieranych N, a nie M próbek)
Zespoły filtrów 525
q0
↑M
q1 z−1
↑M
y0(n) 0 0 z−1
qM−1
↑M
qM z−1
↑M
qM+1 z−1
↑M
y1(n) 1 1 z−1
q2M−1
↑M
q2M z−1
↑M
q2M+1 z−1
IDFT ↑M
z−1
W
qLp−(M+1)
↑M
qLp−M z−1
↑M
qLp−(M−1) z−1
↑M
yM−1(n) M−1 M−1 z−1
qLp−1
^
x(n)
↑M
Rys. 18.27. Szczegółowy schemat sekcji s y n t e z y zespołu filtrów z modulacją zespoloną DFT. W celu
uproszczenia zapisu zastosowano inne oznaczenie numerów próbek odpowiedzi impulsowej filtra prototypo-
wego qn = q(n), n = 0, 1, 2, ..., Lq − 1. W nadpróbkowanym zespole filtrów ekspander „↑” może być rzędu
N < M (wówczas po dodawaniu bufor jest przesuwany o N, a nie o M próbek)
526 Zespoły filtrów
Dla dociekliwych. Ponieważ sygnał wyjściowy z k-tego kanału analizy yk(m), 0 ≤ k ≤ M−1, jest
równy (filtracja plus redukcja):
L −1 L −1
y k ( m) = ∑ hk (n) x(mM − n) = ∑ p(n)WM− kn x(mM − n) (18.71)
n =0 n=0
M −1 L p −1 M −1 L p −1
y k ( m) = ∑ WM− kj ∑ p(iM + j ) x(mM − iM − j ) = ∑ WM− kj ∑ p Ij (i ) x Ij (m − i ) (18.73)
j =0 i =0 j =0 i =0
z-1 z-1
Rys. 18.28. Jedna gałąź zmodyfikowanego zespołu filtrów DFT, zapewniającego właściwość PR w przy-
padku próbkowania krytycznego (M = N), k − parzyste
Zespoły filtrów 527
Z porównania (18.35) i (18.74) wynika, że jeśli zespół krytycznie próbkowany spełnia warunek
PR, to także jego całkowicie nadpróbkowana wersja go spełnia. Przykładowo dla η = 2 mamy:
QkII ( z ) PkI ( z ) + QkII+ N ( z ) PkI+ N ( z ) = cz − m0 + cz − m0 = 2c ⋅ z − m0 (18.75)
(
cos(ω t ) = e jωt + e − jωt ) (
2 , sin(ω t ) = e jωt − e − jωt ) (2 j ) (18.76)
dlatego układy z tego typu modulacjami można przedstawiać jako szczególny przykład zasto-
sowania modulacji zespolonej typu DFT. Ich cechami szczególnymi są: duża szybkość obli-
czeniowa, duża regularność (symetryczność) struktur implementacyjnych oraz, niestety, brak
liniowej charakterystyki fazowo-częstotliwościowej poszczególnych filtrów składowych (oczy-
wiście jako całość zespół zapewnia liniowe przesunięcie fazowe, czyli nie deformuje kształtu
a tylko opóźnia sygnał wejściowy).
W dalszej części tego rozdziału będziemy wyłącznie rozważać zespoły filtrów p r ó b k o wa n e
k r y t y c z n i e , c z y l i m a k s y m a l n i e d e c y m o wa n e ( N = M ) (patrz rysunek 18.1).
Załóżmy, że dysponujemy dolnoprzepustowym filtrem prototypowym p(n) oraz że go modu-
lujemy M sygnałami kosinusowymi o określonych częstotliwościach. Zgodnie z (18.76) zespół
filtrów, otrzymywany w taki sposób, jest równoważny zespołowi o 2M modulacjach zespolo-
nych, przedstawionemu na rysunku 18.29a, w którym łączy się w pary odpowiednie odpowie-
dzi impulsowe filtrów (w konsekwencji sygnały podpasmowe). Wynika stąd, że zespół filtrów
z modulacją kosinusową można otrzymać odpowiednio modyfikując zespół filtrów oparty na
DFT (rysunek 18.25). Przyjmijmy następujące oznaczenia:
2π
−j
W2 M = e 2M − stała dyskretnej transformacji Fouriera DFT,
p (n ) − filtr prototypowy, 0 ≤ n ≤ Lp − 1, Lp = 2mM, (18.77)
sk ( n ) = W2−Mkn =e − j 2 πkn /( 2 M )
− k-ty sygnał modulujący, 0 ≤ k ≤ 2M − 1, (18.78)
pk ( n ) = sk (n ) p (n ) − k-ty filtr (prototyp zmodulowany), (18.79)
Pk ( z ) = P0 ( zW2kM ) − transmitancja Z k-tego filtra, (18.80)
Pk (e jΩ ) = P0 (e j ( Ω − kπ / M ) ) − transmitancja Fouriera k-tego filtra. (18.81)
Aby zapewnić równość szerokości pasm filtrów po połączeniu odpowiednich par, zestaw filt-
rów z rysunku 18.29a przesuwa się dodatkowo w prawo o π/(2M) = 0,5⋅(2π)/(2M) i otrzymuje
zestaw filtrów z rysunku 18.29b. Przesunięcie to jest równoważne następującej zmianie sygna-
łów modulujących sk (n) = W2−M( k +0,5) n = e jπ( k +0,5) n / M i zastąpieniem zmiennej „z” przez „ zW2M
0,5
”
w transmitancjach Z (18.80) wszystkich filtrów. Oznaczmy tak otrzymane filtry przez qk(n),
0 ≤ k ≤ 2M − 1:
a)
H1(e jΩ) H3(e jΩ) H2M−1(e jΩ)
0 1 2 3 4 2M−1 Ω
b)
HM−1(e jΩ) H1(e jΩ) H1(e jΩ) HM−1(e jΩ)
M− 1 1 0 0 1 M−1 Ω
Rys. 18.29. Związek pomiędzy charakterystykami filtrów w 2M-kanałowym zespole filtrów DFT (a)
i charakterystykami filtrów w M-kanałowym zespole filtrów DCT (b). Ciemnym kolorem zaznaczono chara-
kterystykę częstotliwościową filtraH1(ejΩ) w obu przypadkach
W celu otrzymania odpowiedzi impulsowych filtrów hk(n) sekcji analizy, połączmy obecnie
odpowiednie pary filtrów zespolonych qk(n) i q2M − k(n) (0 ≤ k ≤ M − 1):
π
hk (n ) = qk (n ) + q2 M − k (n ) = 2 p( n ) cos (k + 1 / 2)n (18.84)
M
W analogiczny sposób otrzymuje się filtry gk(n) sekcji syntezy. W rzeczywistości dodawanie
(18.84) przeprowadza się z wagami zespolonymi, które dobiera się w taki sposób, aby zapew-
nić liniowość fazy całego zespołu filtrów oraz zredukować (lub całkowicie wyeliminować
drogą kompensacji) zjawiska przecieku widmowego pomiędzy podpasmami. Na tym etapie
wykorzystuje się równania (18.32). W wyniku optymalizacji opisanej powyżej (przy założeniu
wykorzystania tego samego filtra prototypowego p(n) w sekcji analizy i syntezy) uzyskuje się
następujące równania na odpowiedzi impulsowe filtrów hk(n) i syntezy gk(n) (k = 0, 1, 2, ...,
M − 1):
π L −1 π
hk ( n ) = 2 p (n ) cos ( k + 0,5) ( n − ) + ( −1)k (18.85a)
M 2 4
π L −1 π
g k ( n ) = 2 p (n ) cos ( k + 0,5) (n − ) − ( −1)k (18.85b)
M 2 4
gdzie p(n), 0 ≤ n ≤ Lp − 1, Lp = 2mM oznacza dolnoprzepustowy filtr prototypowy o pulsacji
granicznej Ωg = π/(2M), który należy zaprojektować. Jeśli filtr p(n) jest symetryczny, to odpo-
wiedzi impulsowe filtrów syntezy gk(n) są odwróconymi w czasie odpowiedziami impulsowy-
mi filtrów analizy hk(n), niezależnie od wyboru p(n). Wzory (18.85a), (18.85b) są podstawo-
wymi wzorami w teorii zespołów filtrów z modulacją rzeczywistą.
Na rysunku 18.30 przedstawiono 2M-kanałową wersję zespołu filtrów DFT z rysunku 18.25
i dalsze „wyprowadzenie” z niej układu implementującego w sposób efektywny obliczeniowo
M-kanałowy zespół filtrów z modulacją kosinusową DCT-IV, opisany powyżej. Schemat ten
wykorzystuje zapis polifazowy wszystkich filtrów. Macierz W jest macierzą dyskretnej trans-
formacji Fouriera (DFT) o wymiarach 2M×2M, natomiast PkI(z), 0 ≤ k ≤ 2M−1 oznacza k-tą
530 Zespoły filtrów
składową polifazową I typu transmitancji P(z) filtra prototypowego (18.18a). W zespole filtrów
DCT-IV zespolona macierz „modulacji” W transformacji DFT jest zastąpiona przez
rzeczywistą macierz T transformacji kosinusowej o wymiarach M × 2M, 0 ≤ k ≤ M−1, 0 ≤ m ≤
≤ 2M−1:
π L −1
t (k , m ) = 2 cos ( k + 1 / 2)( m − ) + ( −1) k π / 4 (18.86)
M 2
W sekcji syntezy jest wykorzystywana transpozycja macierzy T, czyli TT. Transformacja T jest
realizowana za pomocą szybkich algorytmów DCT.
a)
x (n )
P0I (z2M ) ↓ 2M ↑ 2M Q0II ( z 2 M )
z −1 IDFT DFT z −1
I
P (z ) 2M
W* ↓ 2M ↑ 2M W Q (z
1
II 2M
)
z −1
1
−1
z 2M × 2M 2M × 2M
ˆ
z −1 x (n )
z −1 P2IM −1 ( z 2 M ) ↓ 2M ↑ 2M Q2IIM −1 ( z 2 M )
b)
x (n )
P0I (−z2M ) ↓ 2M ↑ 2M Q0II (−z2M )
z −1W −1 / 2
z −1W −1 / 2 IDFT DFT
P (−z )
1
I 2M
↓ 2M ↑ 2M Q (−z )
II
1
2M
z −1W −1 / 2 W* W z −1W −1 / 2
2M × 2M 2M × 2M xˆ ( n )
z −1W −1 / 2 z −1W −1 / 2
P I
(−z )
2M
↓ 2M ↑ 2M Q2IIM −1(−z2M )
2M −1
c)
x (n )
↓M P0 I (− z 2 ) Q0II (− z 2 ) ↑M
z −1
z −1 T TT
↓M P1 ( − z )
I 2
Q1II (− z 2 ) ↑M
−1 M × 2M 2M × M z −1
z
ˆ
z −1 z −1 x ( n )
↓M P2 IM −1 ( − z 2 ) Q2IIM −1 (− z 2 ) ↑M
Rys. 18.30. Kolejne przekształcenia 2M-kanałowego zespołu filtrów z modulacją zespoloną, prowadzące do
szybkiej struktury obliczeniowej zespołu filtrów z modulacją kosinusową
a) układ początkowy − 2M-kanałowy zespół filtrów z modulacją zespoloną (patrz rys. 18.25)
b) modyfikacja 1: zastosowanie podstawienia z = zW21/M2 , prowadzącego do przesunięcia charakterystyk
częstotliwościowych wszystkich filtrów zespołu w prawo o π/(2M) = 0,5(2π/(2M)); uzyskuje się w ten
sposób symetrię widm Fouriera wszystkich filtrów względemΩ = 0;
1/ 2
c) modyfikacja 2, 3, 4 i 5: 2) „przesunięcie” mnożnika W2M do funkcji bazowych transformacji DFT, 3)
przesunięcie reduktorów na lewą stronę a ekspanderów na prawą stronę, 4) dodanie parami odpowiednich
sygnałów podpasmowych po sekcji analizy (k-tego i (2M − 1 − k)-tego dla k = 0, 1, 2, ..., M − 1), w wyniku
czego redukuje się liczbę sygnałów wyjściowych z 2M do M; operacja ta odpowiada dodaniu zespolonych
funkcji bazowych transformacji DFT, co prowadzi do rzeczywistych funkcji kosinusowych transformacji
T (18.86) typu DCT.
Zespoły filtrów 531
Zespół filtrów z modulacją kosinusową można także zrealizować według schematu blokowego,
przedstawionego na rysunku 18.31, w którym macierz modulacji T1 i demodulacji T2 są
zdefiniowane w następujący sposób (0 ≤ k ≤ M − 1, 0 ≤ m ≤ 2M − 1):
π
t1 (k , m) = 2 cos ( k + 1 / 2)( m − M / 2) (18.87a)
M
π
t2 (k , m ) = 2 cos (k + 1 / 2)( m + M / 2) (18.87b)
M
Właśnie ten zespół filtrów jest stosowany w standardzie MPEG audio i z tego powodu zostanie
on dokładniej omówiony w podrozdziale 18.6. Obecnie zwrócimy jedynie uwagę na jego pod-
stawowe cechy implementacyjne.
a)
xwe(n) y0(m)
↓M P0(−z2) 0 0
PM (−z2) 1 1
z−1 2 2
z−1
↓M P1(−z2) T1
PM+1(−z2) z−1 M−1 M−1
M yM−1(m)
M+1
z−1
↓M PM−1(−z2)
P2M−1(−z2) z−1 2M−1
b)
y0(m) xwy(n)
0 0 P0(−z2) ↑M
1 1 PM (−z2)
2 2 z−1
z−1
T2T P1(−z2) ↑M
−1 2
M−1 M−1 z PM+1(−z )
yM−1(m) M
M+1
z−1
PM−1(−z2) ↑M
−1 2
2M−1 z P2M−1(−z )
Rys. 18.31. Struktura zespołu filtrów z modulacją kosinusową, stosowana w standardzie MPEG audio:
a) sekcja analizy, b) sekcja syntezy. Macierze transformacji T1 i T2 są zdefiniowane równaniami (18.87a)
i (18.87b). Cyrkulacyjne przesunięcie tych macierzy umożliwiło zmianę kolejności „wysuwania” próbek
w porównaniu ze schematem z rysunku 18.30c
532 Zespoły filtrów
A) Jak widać filtry polifazowe łączą się w pary {Pk(−z2), PM+k(−z2)}, k = 0, 1, 2, ..., M−1. Jeśli
pary te są realizowane za pomocą struktur kratowych, przedstawionych na rysunku 18.32, to
cały zespół filtrów perfekcyjnie rekonstruuje na swoim wyjściu sygnał wejściowy. W fazie
projektowania tak należy dobrać współczynniki ck,i i sk,i wszystkich struktur (k = 0, 1, 2, ...,
M/2−1), aby „sumaryczny” prototyp p(n) był filtrem dolnoprzepustowym o pulsacji odcięcia
Ωg = π/(2M) i dużym tłumieniu w paśmie zaporowym.
B) Znak minus występujący w Pk(−z2), k = 0, 1, 2, ..., 2M − 1 powoduje, że co druga próbka
każdej składowej polifazowej filtra prototypowego podczas obliczeń jest negowana.
C) Układy opóźniające „z−1”, występujące na wyjściu transformacji T2, powodują, że składowe
polifazowe Pk(−z2), k = M, ..., 2M − 1 „pracują” na danych opóźnionych o jedną próbkę w sto-
sunku do składowych Pk(−z2), k = 0, ..., M − 1.
a)
Pk (z)
−sk,1 −s
-sk,2
k,2 −sk,K
PM+k (z)
b)
Pk (z−1)
sk,K sk,2 -s
sk,1
k,2
−sk,K −sk,2 −s
sk,2k,1
-1
z zz z
ck,K ck,2 ck,1
k,2 ck,0
PM+k (z−1)
Rys. 18.32. Realizacja par składowych polifazowych filtra prototypowego za pomocą struktury kratowej,
mającej zawsze właściwość perfekcyjnej rekonstrukcji: a) analiza, b) synteza. Należy zwrócić uwagę, że
w sekcji syntezy są powtarzane w odwrotnej kolejności wszystkie kroki sekcji analizy w wersji „odtwórz”
(ang. „undo”)
Oczywiście dalej nie jest rozstrzygnięty problemem wyboru odpowiedniego filtra prototypowe-
go p(n). Możliwe są dwie „strategie” jego projektowania: „p e r f e k c y j n a ” (PR), w której
zespół filtrów spełnia kryteria perfekcyjnej rekonstrukcji sygnału, „p r z y b l i ż o n a ” − prowa-
dząca do zespołów filtrów quasi-PR, w których wymagania są spełnione w sposób przybliżony
i zespół dokładnie nie rekonstruuje przetwarzanego sygnału. Każda z tych strategii ma swoje
praktyczne uzasadnienie i specyficzne pole zastosowań.
Zespoły filtrów 533
W pierwszym przypadku dla filtrów symetrycznych warunek (18.88) sprowadza się do nastę-
pującej zależności:
1 1
pk (0)2 + p M + k (0) 2 = , p 2 (n) + p 2 ( M + k ) =
2M 2M
przybliżone quasi-PR (np. w zespole filtrów MPEG audio z filtrami o efektywnej długości 511
współczynników, tzn. liczonej bez pierwszego zera). W tym przypadku filtr prototypowy otrzy-
muje się w wyniku równoczesnej optymalizacji liniowości charakterystyki amplitudowo-czę-
stotliwościowej całego zespołu filtrów oraz minimalizacji przecieku widmowego pomiędzy
kanałami.
Zamiast jednak wyznaczać czasochłonnie E1 z (18.89), lepiej jest skorzystać ze związku po-
między komplementarnością mocową oraz filtrami Nyquista (w naszym przypadku 2M-pasmo-
wymi) i minimalizować odpowiednik E1, mniej złożony obliczeniowo, na przykład:
L −1
E'1 = max f (2 Mm)
m, m ≠0
lub E'1 = max ∑ f (2 Mm) , f (k ) = ∑ p(n ) p( n + k ) (18.90)
m , m ≠0 n =0
określający energię filtra w paśmie (π/2M + ∆, π] (przypomnijmy, że π/2M jest górną często-
tliwością graniczną filtra P(z), a ∆ oznacza parametr o małej wartości). Wzór (18.92) można
przekształcić do postaci korzystniejszej ze względów obliczeniowych (szybkość i dokładność).
Jeśli zastosujemy podstawienie:
f (n ) dla 0 ≤ n ≤ L − 2
f L (n ) = (18.96)
0,5 f (n ) dla n = L − 1
Wykorzystując (18.93) i (18.95) z (18.92) otrzymujemy:
π L −1 π
E2 = ∫ F (e
jΩ
)d Ω = ∑ 2 f L ( n ) ∫ cos [ Ω( L − 1 − n )] d Ω =
Ωs n =0
Ωs
L−2
sin( L − 1 − n )
= ∑ 2 f L ( n ) − L − 1 − n + 2 f L ( L − 1)( π − Ω s ) (18.97)
n =0
Tab. 18-1. Algorytm projektowania filtra prototypowego p(n) dla M-kanałowego, krytycznie próbkowa-
nego zespołu filtrów quasi-PR z modulacją kosinusową za pomocą metody okien
p( n ) = hi ( n ) w( n ), hi ( n ) =
(
sin Ωopt n ) dla 1 ≤ n ≤ N , hi (0) =
Ωopt
πn π
7. Obliczenie E1 i podstawienie E1nowe = E1 ,
8. Jeśli E1nowe − E1stare > tolerancja , to wykonanie:
Tab. 18-2. Program w języku Matlab, służący do projektowania filtra prototypowego p(n) dla M-kana-
łowego, krytycznie próbkowanego zespołu filtrów quasi-PR z modulacją kosinusową za pomocą metody
okien
% Ćwiczenie: Projektowanie filtrów prototypowych dla zespołu filtrów z modulacją kosinusową DCT-IV
clear all;
% Podaj parametry wejściowe
M = 32; % liczba kanałów
As = 96; % tłumienie w paśmie zaporowym w decybelach
alfa = 0.9; % współczynnik pasma przejściowego: df = alfa * fgraniczne
Lp = 128; % ile punktów wyznaczanej charakterystyki częstotliwościowej
tol = 1E-10; % tolerancja obliczeń
impeg = 1; % 0 = długość parzysta , 1 = długość nieparzysta
ifast = 1; % 1 = szybka metoda wyznaczenia czy filtr jest M-pasmowy, 0 = wolna
% Inicjalizacja parametrów wewnętrznych
MM = 2*M; % liczba kanałów zespolonych
fc = 1/MM; % częstotliwość graniczna (odcięcia)
df = alfa * fc; % pasmo przejściowe
% Oblicz długość filtra
if (As>21) D = (As-7.95)/14.36; else D = 0.922; end
N = D/df+1;
% Współczynnik beta okna Kaisera
Zespoły filtrów 537
[ FD f ] = freqz(f,1,1024,fpr); f=f/1000;
plot(f, abs(FD)); title('Ch-ka amplitudowa CAŁOŚCI (jw)');
xlabel('f [kHz]'); grid; pause;
plot(f, unwrap(angle(FD))); title('Ch-ka fazowa CAŁOŚCI (jw)');
xlabel('f [kHz]'); grid; pause;
clf
% Znieksztalcenia aliasingowe
clf; NFFT = 2048;
fd = zeros(1, NFFT);
n = 0:L-1;
for m=1:M-1 % po wszystkich „przeciekach” widmowych
modZ = exp(j*2*pi*m*n/M);
Al = zeros(1, NFFT);
for k=0:1:M-1 % po wszystkich filtrach
h = hm(k+1,:); g = gm(k+1,:);
Gk = fft( g, NFFT );
Hk = fft( h.*modZ, NFFT );
Ak = Gk.*Hk;
Al = Al + Ak;
end
fd = fd + (Al.*conj(Al));
end
fd = sqrt( fd );
freq = fpr/1000 * (0 : 1/NFFT : 0.5) ;
plot( freq, fd(1:NFFT/2+1) );
title('Przeciek widmowy (jw)'); xlabel('f [kHz]'); grid; pause;
Zespoły filtrów 539
1 7 2πkn
p(n) = a0 + 2 ∑ ak cos , n = 0, 1, 2, ..., L p − 1 (18.101)
Lp L p
k =1
po przyjęciu następujących wartości parametrów:
a0 = 1, a1 = − 0,99998229, a2 = 0,99692250
a4 = 1 / 2 , a6 = 1 − a22 , a7 = − 1 − a12
C = − ( a0 / 2 + a1 + a2 + a4 + a6 + a7 )
a3 = C / 2 − 1/ 2 − C 2 / 4, a5 = − 1 − a32
540 Zespoły filtrów
0.04 0
0.03 -50
|P(f)| [dB]
0.02 -100
p(n)
0.01 -150
0 -200
-0.01 -250
0 100 200 300 400 500 0 5 10 15 20
n f [kHz]
Rys. 18.33. Odpowiedź impulsowa p(n) otrzymywana ze wzoru (18.101) oraz moduł jej widma Fouriera
|P(f)|. Linią przerywaną zaznaczono oryginalny filtr prototypowy ze standardu MPEG audio. Przyjęto
fpróbkowania = 44100 Hz
gdzie:
( k + 1 / 2)( m − 16)π
M (k , m ) = 2 cos (18.105)
32
Synteza 32 próbek sygnału wyjściowego xˆ(n) z zespołu filtrów jest natomiast realizowana na
podstawie równań:
31 31
π(k + 1/ 2)( n + 16)
v (n ) = ∑ N (n, k ) y ( k ) = ∑ 2 cos y ( k ), n = 0, 1, ..., 63 (18.106a)
k =0 k =0 32
7
xˆ( n) = ∑ [ bv( n + 128 j ) p( n + 64 j ) + bv( n + 96 + 128 j ) p ( n + 32 + 64 j ) ], n = 0, 1,..., 31 (18.106b)
j =0
Tab. 18-4. Program w języku Matlab, służący do generacji przybliżenia odpowiedzi impulsowej filtra pro-
totypowego p(n), stosowanego w standardzie MPEG audio
% Ćwiczenie: Generacja odpowiedzi impulsowej filtra dla zespołu filtrów standardu MPEG audio.
function p = prototyp(L)
% generacja przybliżonego filtra prototypowego standardu MPEG audio
a0=1; a(1)=-0.99998229; a(2)=0.99692250;
a(4)=1/sqrt(2); a(6)=sqrt(1-a(2)^2); a(7)=-sqrt(1-a(1)^2);
A=-( a0/2+a(1)+a(2)+a(3)+a(4)+a(6)+a(7) );
a(3)=A/2-sqrt(0.5-A^2/4); a(5)=-sqrt(1-a(3)^2);
n = 0:L-1; p = a0*ones(1,L);
for(k=1:7) p = p + 2*a(k)*cos(2*pi*k*n/L); end
p = p/L; p(1)=0;
Tab. 18-5. Program implementujący zespół filtrów z modulacją kosinusową, stosowany w standardzie
MPEG audio, jako typową reprezentację czasowo-częstotliwościową
clear all;
% Parametry wejściowe
M=32; % liczba kanałów, rząd decymacji
L=512; % długość filtra prototypowego
Nx=2048; % długość sygnału testowego
542 Zespoły filtrów
% Sygnał testowy
x=sin(2*pi*(0:Nx-1)/27)+sin(2*pi*(0:Nx-1)/49)+sin(2*pi*(0:Nx-1)/155);
% x=rand(1,Nx);
% Odpowiedź impulsowa p(n) filtra prototypowego (niestandardowa)
p = prototyp(L); p = sqrt(M)*p;
plot(p); title('Filtr prototypowy'); grid; pause
% Macierze transformacji: analizy H i syntezy G
n=0:L-1;
for k=0:M-1
H(k+1,n+1) = 2*p.*cos( pi/M*(k+0.5)*(n-M/2) ); % filtry analizy
G(k+1,n+1) = 2*p.*cos( pi/M*(k+0.5)*(n+M/2) ); % filtry syntezy
end
% Analiza i synteza razem (jedna operacja za drugą)
K = floor(Nx/M); bx = zeros(1,L); y = zeros(1,L+(K-1)*M);
for m = 1 : K %
bx = [ x(m*M:-1:(m-1)*M+1) bx(1:L-M) ]; % załadowanie M nowych próbek do bufora
sb = H * bx'; % analiza: wsp(k) = sygnał*baza(k)
by = sb' * G; % synteza: sygnał = suma( wsp(k)*baza(k) )
n = (m-1)*M+1 : (m-1)*M+L; %
y(n) = y(n) + by; % złożenie kolejnych segmentów
end %
% Sygnał wyjściowy
Noffs=L-M+2; n1=1:Nx-Noffs+1; n2=Noffs:Nx;
xr=x(n1); yr=y(n2);
plot(n1,xr,'r',n1,yr,'b'); title('WE (czerw) WY (nieb)'); pause
plot(n1,xr-yr); title('Róznica WE-WY'); pause
blad_dB = 10*log10( sum(xr.^2) / sum((xr-yr).^2) ), pause
Tab. 18-6. Program implementujący zespół filtrów z modulacją kosinusową, stosowany w standardzie
MPEG audio, za pomocą operacji splotu sygnałów
clear all;
% Parametry wejściowe
M=32; % liczba kanałów, rząd decymacji
L=512; % długość filtra prototypowego
Nx=2048; % długość sygnału testowego
Nc1 = Nx+L-1; Nc2=length(1:M:Nc1); Nc3 = Nc1+L-1;
% Sygnał testowy
x=sin(2*pi*(0:Nx-1)/27)+sin(2*pi*(0:Nx-1)/49)+sin(2*pi*(0:Nx-1)/155);
% x=rand(1,Nx);
% Odpowiedź impulsowa p(n) filtra prototypowego (inna niż w normie MPEG audio)
p = prototyp(L); p = sqrt(M)*p;
plot(p); title('Filtr prototypowy'); grid; pause
% Macierze transformacji: analizy H i syntezy G
n=0:L-1;
for k=0:M-1
H(k+1,n+1) = 2*p.*cos( pi/M*(k+0.5)*(n-M/2) ); % filtry analizy
G(k+1,n+1) = 2*p.*cos( pi/M*(k+0.5)*(n+M/2) ); % filtry syntezy
end
% Analiza
for k=1:M % k-ty kanał
sb(k,1:Nc1) = conv(x,H(k,1:L)); % filtracja
sbr(k,1:Nc2) = sb(k,1:M:Nc1); % M-krotny reduktor
end %
% Synteza
y = zeros(1,Nc3); % inicjalizacja
for k=1:M % k-ty kanał
sbe(k,1:Nc1)=zeros(1,Nc1); sbe(k,1:M:Nc1)=sbr(k,1:Nc2); % M-krotny ekspander
ys(k,1:Nc3) = conv(sbe(k,1:Nc1),G(k,1:L)); % filtracja
Zespoły filtrów 543
Tab. 18-7. Program implementujący zespół filtrów z modulacją kosinusową, stosowany w standardzie
MPEG audio, w szybki sposób polifazowy
clear all;
% Parametry wejściowe
M=32; % liczba kanałów „kosinusowych”
L=512; % długość filtra prototypowego
Nx=2048; % długość sygnału testowego
MM=2*M; % liczba kanałów „zespolonych”, rząd decymacji
Lp=L/MM; % długość składowych polifazowych
M2=2*M; M3=3*M; M4=4*M; j=0:Lp-1;
% Sygnał testowy
x=sin(2*pi*(0:Nx-1)/27)+sin(2*pi*(0:Nx-1)/49)+sin(2*pi*(0:Nx-1)/155);
% x=rand(1,Nx);
% Odpowiedź impulsowa p(n) filtra prototypowego (niestandardowa)
p = prototyp(L); p = sqrt(M)*p; plot(p); title('Filtr prototypowy'); grid; pause
for n = 1 : 2 : Lp-1
p( n*MM+1 : n*MM+MM ) = -p( n*MM+1 : n*MM+MM );
end
plot(p); title('Filtr prototypowy zmodyfikowany'); grid; pause
% „Polifazowe” macierze transformacji: analizy A i syntezy B
m=0:2*M-1;
for k=0:M-1
A(k+1,1:2*M) = 2*cos((pi/M)*(k+0.5).*(m-M/2)); % macierz analizy %
B(k+1,1:2*M) = 2*cos((pi/M)*(k+0.5).*(m+M/2)); % macierz syntezy %
end
% Analiza i synteza razem (jedna operacja za drugą)
K = floor(Nx/M); bx = zeros(1,L); bv=zeros(1,2*L); y=[];
for k = 1 : K
% załadowanie M nowych próbek do bufora
bx = [ x(k*M:-1:(k-1)*M+1) bx(1:L-M) ];
% analiza
for m = 1 : 2*M
u(m) = sum( bx(m:2*M:L).*p(m:2*M:L) ); % filtracja polifazowa
end
sb = A*u'; % modulacja kosinusowa
% synteza
v = B'*sb; % demodulacja kosinusowa
bv = [ v' bv(1:2*L-MM) ]; % wstawienie do bufora
for n = 1 : M % filtracja polifazowa
ys(n) = sum(bv(n+M4*j).*p(n+M2*j)) + sum(bv(n+M3+M4*j).*p(n+M+M2*j));
end
y = [ y ys ];
end
% Sygnał wyjściowy
Noffs=L-M+2; n1=1:Nx-Noffs+1; n2=Noffs:Nx;
xr=x(n1); yr=y(n2);
plot(n1,xr,'r',n1,yr,'b'); title('WE (czerw) WY (nieb)'); pause
plot(n1,xr-yr); title('Różnica WE-WY'); pause
blad_dB = 10*log10( sum(xr.^2) / sum((xr-yr).^2) ), pause
544 Zespoły filtrów
a) 0
-20
-40
|Hk(f)| [dB]
-60
-80
-100
-120
-140
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
b) 1
0.8
0.6
d(n)
0.4
0.2
0
0 100 200 300 400 500 600 700 800 900 1000
n
c) 1.0003
1.0002
1.0001
|D(f)|
1
0.9999
0.9998
0.9997
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
d) 0
-400
arg(D(f)) [rd]
-800
-1200
-1600
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
e) 1.2E-006
8E-007
Errw(f)
4E-007
0
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
Rys. 18.34. Wybrane charakterystyki zaimplementowanego zespołu filtrów: a) moduły odpowiedzi często-
tliwościowych |Hk(f)| wszystkich filtrów sekcji analizy, b) odpowiedź impulsowa d (n) całego zespołu
filtrów, c) charakterystyka amplitudowo-częstotliwościowa |D(f)| całego zespołu filtrów (czyli moduł trans-
formaty Fouriera odpowiedzi impulsowej d (n)), d) charakterystyka fazowo-częstotliwościowa arg(D(f))
całego zespołu filtrów, e) wyciek widmowy Errw(f), obliczony ze wzoru (18.100)
19
Projekt LPC-10:
podstawy kompresji i rozpoznawania
sygnału mowy
Celem niniejszego rozdziału jest ogólne zapoznanie Czytelnika z problematyką kompresji sy-
gnału mowy na przykładzie klasycznego algorytmu LPC-10, pochodzącego jeszcze z końca lat
70. XX wieku. O jego wyborze zadecydowała prostota, poglądowość oraz łatwość imple-
mentacji programowej. Niektóre elementy składowe algorytmu (np. sposób modelowania i es-
tymacji wartości parametrów filtra traktu głosowego) są obecnie powszechnie stosowane
w najnowocześniejszych metodach kompresji mowy, wykorzystywanych w telefonach komór-
kowych. W algorytmie tym, jako jego części składowe, praktycznie wykorzystuje się różne
fundamentalne metody cyfrowej analizy przetwarzania sygnałów (np. funkcję autokorelacji,
modelowanie autoregresyjne AR). Przy okazji zapoznamy się więc także z istotnymi aspektami
ich praktycznego zastosowania. Rozdział zakończy krótkie, brawurowe przejście od metod
kompresji do ... metod rozpoznawania mowy, a dokładniej pojedynczych, izolowanych słów.
Tak się bowiem składa, że w pewnej części w obu przypadkach są wykorzystywane identyczne
algorytmy analizy sygnałów.
19.1. Wprowadzenie
Kompresja danych jest bardzo ważnym i aktualnym problemem w dobie bardzo szybkiego roz-
woju Internetu oraz lawinowo rosnącej wymiany informacji cyfrowej (mowa, audio, obrazy,
dokumenty elektroniczne, sygnały biomedyczne). Oczywiście, w zależności od rodzaju danych
stosuje się różne metody kompresji danych. Kryterium decydującym o wyborze konkretnej me-
tody jest jej efektywność. Ogólnie kompresję danych dzieli się na bezstratną i stratną.
Kompresję bezstratną stosuje się wszędzie tam, gdzie nie dopuszcza się utraty (przekłamania)
ani jednego bitu kompresowanej informacji. Sytuacja taka występuje przykładowo podczas ar-
chiwizacji programów komputerowych, gdzie zmiana jakiegokolwiek bitu jest równoważna
modyfikacji programu, mogącej prowadzić do jego błędnego działania. Także w przypadku sy-
gnałów biomedycznych kompresja stratna nie jest wskazana, a nawet czasami prawnie zabro-
niona (np. w Stanach Zjednoczonych), z powodu ryzyka podjęcia błędnej diagnozy przez leka-
rza. Do najważniejszych metod bezstratnych należą metody etropijne (przykładowo: słowniko-
we, Huffmana, arytmetyczne), w których współczynnik kompresji jest bliski współczynnikowi
„optymalnemu”, oszacowanemu na podstawie entropii sygnału.
546 Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy
Przykład
Załóżmy, że chcemy skompresować bezstratnie metodą Huffmana „komunikat”, w którym wy-
stępują wyłącznie cztery symbole alfabetu od „a” do „d”. Załóżmy dodatkowo, że procentowy
udział poszczególnych liter w przesyłanej informacji jest następujący:
pa = 0,6 pb = 0,1 pc = 0,1 pd = 0,2
Do ich zakodowania w najprostszy sposób wystarczą tylko dwa bity, np.:
a = 00 b = 01 c = 10 d = 11
ale nie uwzględnia się wówczas faktu, że „a” występuje o wiele częściej niż inne symbole i ko-
rzystny byłby kod, w którym słowo kodowe dla „a” jest jak najkrótsze. Uwzględnia to kodo-
wanie entropowe, np. metodą Huffmana, w którym bierze się pod uwagę częstość (prawdopo-
dobieństwo) występowania poszczególnych symboli. W metodzie tej w pierwszym kroku łączy
się dwa symbole o najmniejszej częstości (prawdopodobieństwie) występowania w jeden sym-
bol. Oczywiście jego prawdopodobieństwo jest równe sumie prawdopodobieństw symboli
składowych, w rozpatrywanym przypadku pbc = 0,2. Następnie powtarza się opisaną powyżej
procedurę łączenia wielokrotnie (iteracyjnie), aż do momentu otrzymania jednego symbolu.
Postępując zgodnie z podanym „przepisem” otrzymujemy:
pa = 0,6 pb = 0,1 pc = 0,1 pd = 0,2
pa = 0,6 pbc = 0,2 pd = 0,2
pa = 0,6 pbcd = 0,4
pabcd = 1
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 547
a b c d
0 1
pbc = 0,2
0 1
pbcd = 0,4
0 1
pabcd = 1
Jak już było powiedziane, celem niniejszego rozdziału jest zaprezentowanie algorytmu LPC-10
kompresji sygnału mowy. W zastosowaniach telekomunikacyjnych zakłada się, że w sygnale
mowy podstawowa informacja jest zawarta w paśmie częstotliwości 300÷3500 Hz (pełny za-
kres widma to w przybliżeniu 80÷20000 Hz), dlatego stosuje się odpowiedni filtr dolnoprzepu-
stowy („antyaliasingowy”) o częstotliwości granicznej około 3500 herców i stosuje często-
tliwość próbkowania równą 8000 Hz. Próbkowanie przeprowadza się z dokładnością 7÷16
bitów i stosuje kwantyzatory liniowe lub nieliniowe (np. 8-bitowe logarytmiczne, nieliniowe
kwantyzatory znane jako „A-law” i „µ-law”, gęściej próbkujące sygnał w okolicy zera, które
zapewniają percepcyjną jakość mowy, porównywalną z 12÷13-bitowymi kwantyzatorami linio-
wymi). Podczas kodowania próbek mowy dzieli się ją na krótkie fragmenty 20÷40-mili-
sekundowe (najczęściej 30 ms) i zakłada ich „niezmienność” (quasi-stacjonarność). Następnie
wyznacza się wartości parametrów modelu układu głosowego człowieka, które zapewniają
zsyntezowanie fragmentu mowy podobnego do analizowanego. Parametry te zapisuje się do
pliku lub bezpośrednio przesyła przez kanał transmisyjny do dekodera. Proces rozkodowy-
wania jest zwykłą operacją syntezy fragmentu mowy za pomocą modelu z konkretnymi (odczy-
tanymi lub otrzymanymi) wartościami parametrów. Dla częstotliwości próbkowania 8000 Hz
podczas analizy stosuje się zwykle okno „obserwacji” o długości 240 próbek (odpowiadające
30 milisekundom), które przesuwa się z krokiem 180 próbek (22,5 milisekundy), dlatego
zsyntezowana „ramka” sygnału mowy składa się ze 180 próbek.
Na rysunku 19.2 jest przedstawiony fragment sygnału mowy odpowiadający głosce dźwięcznej
„a” oraz przesuwane okno „obserwacji” (Hamminga), „wycinające” kolejne „ramki” sygnału
poddawane analizie.
0.5
-0.5
Rys. 19.2. Wycinanie fragmentu mowy do analizy: okno Hamminga o długości 240 elementów jest prze-
suwane z krokiem 180 próbek i wymnażane z sygnałem
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 549
Na koniec zaznaczmy wyraźnie, że dyskutowany w tym rozdziale koder mowy standardu LPC-
-10 jest dla nas tylko ciekawym przykładem złożonego algorytmu przetwarzania cyfrowego
sygnału mowy i świadectwem praktycznej użyteczności występujących w nich metod. Nie
opisano go szczegółowo, a potraktowano jedynie jako pretekst do dokładniejszego przyjrzenia
się zastosowanym w nim konkretnym rozwiązaniom. Mimo pewnej ogólności opisu, można na
jego podstawie zbudować nieoptymalny, ale działający koder mowy.
1
H ( z) =
Mowa Pobudzenie 1 + a1 z −1 + a2 z −2 + ... + a10 z −10
dźwięczna okresowe V
e(n) G e(n) s(n)
Wzm Filtr traktu
głosowego
mowa
Mowa Pobudzenie UV
bezdźwięczna losowe |H(f)|
Pierwszy przypadek ma miejsce podczas wypowiadania głosek dźwięcznych, takich jak: „a”,
„e”, „i”, „o”, „u”, natomiast drugi − podczas wypowiadania głosek bezdźwięcznych, przykła-
dowo − „s”, „sz”, „c”, „cz”, „h”. Dla g ł o s e k d ź wi ę c z n y c h pobudzenie traktu głosowego
ma w przybliżeniu kształt pokazany na rysunku 19.3, czyli jest sygnałem okresowym,
składającym się z szeregu delt Diraca. Odległość pomiędzy impulsami jest nazywana okresem
tonu podstawowego, a jej odwrotność − częstotliwością tonu podstawowego. Dla mężczyzn
częstotliwość ta waha się orientacyjnie w przedziale 80÷480 herców (bas, baryton, tenor), na-
tomiast dla kobiet wynosi 160÷960 herców (alt, mezzosopran, sopran), czyli jest około dwa
razy wyższa. Podczas zwykłej rozmowy zakres jej zmian nie jest duży, ale zauważalny, i jest
związany z intonacją. Inaczej sytuacja wygląda podczas śpiewu, zwłaszcza operowego, gdzie
zmiany częstotliwości podstawowej są bardzo duże. W rzeczywistości impuls pobudzenia
krtaniowego nie jest „impulsem Diraca” tylko go przypomina i daje się przybliżyć jako odpo-
wiedź całego układu generacji na ten impuls. W standardach telekomunikacyjnych podaje się
dokładne wartości jego próbek. Z kolei dla g ł o s e k b e z d ź wi ę c z n y c h jako modelowe po-
budzenie traktu głosowego przyjmuje się szum biały, którego orientacyjny kształt jest także
pokazany na rysunku 19.3. Ma on płaskie widmo, w którym występują wszystkie częstotli-
wości. Efekt „syczenia”, charakterystyczny dla tych głosek, jest spowodowany przez język
z zębami („s”), podniebienie („h”) lub wargi (np. głoska wybuchowa „p”), czyli już przez trakt
głosowy. To właśnie on zmienia wejściowy szum biały w szum kolorowy o nierównomiernym
widmie, z wysokoczęstotliwościowymi „pikami” rezonansowymi.
Aby poprawnie zsyntezować mowę na podstawie jej modelu generacyjnego, należy wybrać
właściwy rodzaj pobudzenia dla każdego analizowanego (i później syntezowanego) fragmentu
sygnału mowy, czyli podjąć decyzję czy analizowana głoska jest dźwięczna czy bezdźwięczna.
W przypadku pobudzenia okresowego należy wybrać odpowiednią wartość okresu tonu pod-
stawowego.
Trakt głosowy. Jak już powiedzieliśmy, trakt głosowy jest modelowany jako filtr liniowy.
Oczywiście, możemy przyjąć model transmitancji filtra typu FIR lub typu IIR. Z doświadczeń
projektowania filtrów nierekursywnych wiemy, że jest wymaganych więcej współczynników
filtra, aby zapewnić dużą stromość modułu widma częstotliwościowego transmitancji typu FIR.
W związku z tym w standardzie LPC-10 wybiera się model traktu głosowego typu IIR.
Ponieważ moduł charakterystyki amplitudowo-częstotliwościowej ma cztery maksima (rys.
19.3), to do jego zamodelowania są potrzebne minimum cztery bieguny transmitancji (zera
mianownika), leżące wewnątrz okręgu jednostkowego blisko pulsacji rezonansowych traktu
głosowego. Są to bieguny zespolone, muszą więc być parami sprzężone, aby wielomian mia-
nownika miał tylko współczynniki rzeczywiste. W konsekwencji wielomian mianownika trans-
mitancji musi być minimum ósmego rzędu. W algorytmie LPC-10 przyjmuje się z dziesiąty
rząd tego wielomianu i transmitancję traktu głosowego postaci:
G G G
H ( z) = = − − −
=
1 2
A( z ) 1 + a1z + a2 z + ... + a10 z 10
(1 − p1z )(1 − p1 z )...(1 − p5 z −1 )(1 − p5* z −1 )
−1 * −1
(19.1)
Wyznaczenie parametrów traktu głosowego, dla konkretnego quasi-stacjonarnego fragmentu
sygnału mowy, sprowadza się więc do wyznaczenia wzmocnienia G i współczynników a1, a2,
..., a10. Transmitancji (19.1) odpowiada następujące równanie czasowe filtra syntezy:
10
s ( n ) = G ⋅ e( n ) − ∑ a k s ( n − k ) (19.2)
k =1
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 551
e(n) G s(n)
−a1 z−1
s(n−1)
−a2 z−1
s(n−2)
−a10 z−1
s(n−10)
Rys. 19.4. Schemat blokowy filtra traktu głosowego. Blok „z−1” oznacza układ opóźniający o jedną próbkę
.......n..............a.................sz....................e..............g............o.................
słowo naszego"
"
0.6
0.4
0.2
0
-0.2
-0.4
500 1000 1500 2000 2500 3000 3500 4000
numer próbki
na"
"
0.6
0.4
0.2
0
-0.2
-0.4
100 200 300 400 500 600 700 800 900 1000
numer próbki
sz"
"
0.2
-0.2
1100 1200 1300 1400 1500 1600 1700 1800 1900
numer próbki
ego"
"
0.2
-0.2
2000 2500 3000 3500 4000
numer próbki
Rys. 19.5. Kształt przykładowego słowa, składającego się z głosek dźwięcznych i bezdźwięcznych. Słowo
„naszego” wypowiadane przez kobietę
Metoda funkcji autokorelacji. W tym przypadku stosuje się definicję funkcji autokorelacji
postaci:
N −1
r (k ) = ∑ s(n ) s(n + k ), k = 0, 1, 2, ... (19.3)
n −0
gdzie s(n) oznacza fragment sygnału, składający się z N próbek, powstały z mowy oryginalnej
x(n) w wyniku:
1) jej filtracji dolnoprzepustowej filtrem h(n) o górnej częstotliwości granicznej równej 900
Hz:
M −1
x ' (n) = ∑ h( k ) x (n − k ) (19.4)
k =0
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 553
dB
-60
-80
-100
-120
0 500 1000 1500 2000 2500 3000 3500 4000
f [Hz]
3000
f [Hz]
2000
1000
0
0 500 1000 1500 2000 2500 3000 3500
numer próbki
........n.................a.......................sz...................e...............g.............o..........
Rys. 19.6. Widma częstotliwościowe słowa „naszego”: klasyczna i krótkoczasowa transformata Fouriera
Na rysunku 19.7 pokazano kształt funkcji autokorelacji sygnału s(n) dla głoski dźwięcznej „a”
i bezdźwięcznej „sz”. Ponieważ dysponujemy tylko fragmentem sygnału mowy, wraz ze wzros-
tem k w sumie (19.3) występuje mniejsza liczba niezerowych składników i wartość r(k) maleje.
Oczywiście, w obu przypadkach funkcja autokorelacji przyjmuje wartość maksymalną dla
k = 0. Aby sprawdzić czy analizowana głoska jest bezdźwięczna, należy wyznaczyć pierwsze
globalne maksimum funkcji r(k) dla k > K0, i sprawdzić jego poziom. Jeśli jest ono większe od
wartości [0,3÷0,35]⋅r(0), to dany fragment mowy należy uznać za dźwięczny, w przeciw-
nym przypadku − za bezdźwięczny. Wartość K0 jest związana z częstotliwością próbkowania
oraz przyjętą maksymalną wartością częstotliwości tonu podstawowego (czyli minimalną
dopuszczalną wartością okresu tego tonu). Przykładowo dla fpr = 8000Hz i fT = 500Hz,
K0 = fpr / fT = 16. Aby poprawić właściwości dyskryminacyjne powyższego algorytmu, funkcję
autokorelacji wyznacza się nie dla sygnału s(n), tylko dla jego wersji „sprogowanej”:
554 Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy
0.4
0.1
0.2 0.05
0 0
0 50 100 150 200 0 50 100 150 200
indeks czasu indeks czasu
Rys. 19.7. Porównanie głosek „a” i „sz”, wypowiadanych przez mężczyznę: sygnały czasowe, ich funkcje
autokorelacji i AMDF oraz moduły obwiedni widma częstotliwościowego
s( n ) − P, dla s (n ) ≥ P
s , (n ) = s( n ) + P, dla s (n ) ≤ − P (19.6)
0, dla pozostałych
gdzie za próg P przyjmuje się:
P = 0,3max( s(n)) (19.7)
lub
P = K min( A1/ 3 , A3 / 3 ), K = 0,6 ÷ 0,8 (19.8)
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 555
a) b)
sprogowane a" funkcja autokorelacji sprogowanego a"
" "
0.1 0.15
0.1
0 0.05
0
-0.1 -0.05
0 50 100 150 200 0 50 100 150 200
numer próbki indeks czasu
Rys. 19.8. Fragment sygnału mowy z rysunku 19.7a po operacji progowania (19.6) z progiem (19.8) dla
K = 0,8 oraz jego funkcja autokorelacji
A1/3 i A3/3 we wzorze (19.8) oznaczają wartości maksymalne w pierwszej i trzeciej części sy-
gnału s(n), w sytuacji kiedy dzielimy ten sygnał na trzy części. Na rysunku 19.8a pokazano
sygnał s(n) z rysunku 19.7a po operacji progowania (czyli s’(n)), a na rysunku 19.8b − jego
funkcję autokorelacji.
Metoda funkcji AMDF. W związku z tym, że w procesorach starszych typów operacja mno-
żenia była wykonywana znacznie dłużej niż operacja dodawania/odejmowania, w przeszłości
do wyznaczania tonu podstawowego sygnału mowy zamiast funkcji autokorelacji stosowano
funkcję AMDF, zdefiniowaną w następujący sposób:
N −1
D( k ) = ∑ s( n ) − s( n + k ) , k = 0, 1, 2, ... (19.9)
n −0
gdzie s(n) jest sygnałem identycznym jak w (19.3). Przykładowy kształt funkcji D(k) dla
dźwięcznego i bezdźwięcznego fragmentu sygnału mowy jest przedstawiony na rysunku 19.7.
Jak widać w tym przypadku sytuacja jest analogiczna jak poprzednio, tylko istotne jest mini-
mum a nie maksimum funkcji, tzn. przykładowo ramka jest bezdźwięczna, jeśli wartość mini-
malna funkcji AMDF dla k > K0 jest większa niż 0,3 wartości maksymalnej tej funkcji (dla
wszystkich k): Dmin > 0,3Dmax.
Metoda cepstralna. Jak już wiemy, pobudzenie w przypadku dźwięcznego, stacjonarnego fra-
gmentu mowy może być w dużym uproszczeniu przedstawiane jako ciąg impulsów Diraca. Po-
nieważ transformata Fouriera sumy równomiernie poprzesuwanych impulsów Diraca ∑δ(t−T)
jest także sumą impulsów Diraca ω0∑δ(ω − kω0), gdzie ω0 = 2π/T, dlatego widmo Fouriera fra-
gmentu mowy dźwięcznej jest iloczynem ω0∑δ(ω − kω0) i widma transmitancji traktu głoso-
wego sygnału z rysunku 19.3 (prawy dolny narożnik) i ma orientacyjną postać przedstawioną
na rysunku 19.9a. Wynika to z faktu, że modelujemy trakt głosowy jako filtr liniowy, w którym
sygnał wejściowy splata się odpowiedzią impulsową filtra, a więc splotowi sygnałów w
dziedzinie czasu odpowiada iloczyn ich widm Fouriera w dziedzinie częstotliwości. Nume-
rycznie wyznaczone widmo tego fragmentu ma jednak postać taką jak na rysunku 19.9a,
ponieważ w praktyce analizujemy tylko fragment sygnału, który wycinamy funkcją prosto-
kątnego okna czasowego. W wyniku tego widmowe impulsy Diraca są „zastąpione” przez
widmo użytego okna. Pomimo wszystko otrzymane widmo jest wyraźnie okresowe, co jest
związane z okresowością pobudzenia. Można by więc wyznaczyć odwrotną transformatę
Fouriera z modułu transformaty Fouriera obliczonego widma i na jego podstawie wyznaczyć
okres powtarzania się widma i związany z nim okres pobudzenia. Ale ponieważ interesują-
cy nas sygnał jest zmodulowany w amplitudzie, korzystniej jest wyznaczyć najpierw logarytm
556 Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy
-40
dB -60
-80
-100
0 500 1000 1500 2000 2500 3000 3500 4000
częstotliwość [Hz]
Rys. 19.9. Wyznaczanie okresu tonu podstawowego głoski dźwięcznej metodą cepstralną: a) moduł widma
Fouriera 256 próbek głoski „a” po wymnożeniu z oknem Hamminga, b) moduł odwrotnej transformaty
Fouriera logarytmu widma z rysunku górnego (po odjęciu od niego składowej stałej)
z modułu widma, a dopiero potem wykonać na nim odwrotną transformację Fouriera, gdyż
w ten sposób likwiduje się modulację amplitudową widma pobudzenia:
1 N −1 N −1
c(n) =
N
∑ ln ∑ w( m) x( m)e − j 2πkm / N e± j 2 πkn = (19.10a)
k =0 m =0
C(k )
( ) ( )
= F −1 ln H ( e jΩ ) P( e jΩ ) = F −1 ln H ( e jΩ ) + F −1 ln P ( e jΩ ) ( ) (19.10b)
gdzie x(m) oznacza analizowany fragment sygnału mowy o długości N próbek, w(m) − okno
Hamminga, H(.) − charakterystykę częstotliwościową transmitancji traktu głosowego, P(.) −
widmo Fouriera pobudzenia. W wyniku powyższej operacji iloczyny widm przejdą w sumę
dwóch składowych w dziedzinie czasu: obwiednia widma znajdzie się w okolicy indeksu zero-
wego, a prążki widma spowodują powstanie „pików” o malejącej amplitudzie, występujących
w chwilach nT (wielokrotność tonu podstawowego). Przykładowy kształt sygnału c(n) jest
przedstawiony na rysunku 19.9b. Jak widać bez trudu można z niego „odczytać” okres
dźwięcznego pobudzenia.
Warto w tym miejscu zwrócić uwagę na fakt, że funkcja C(k) w (19.10a) jest rzeczywista i sy-
metryczna w sposób cykliczny (patrz rysunek 13.11) względem próbki C(0), czyli C(k) =
= C(−k) = C(N − k). Dlatego w jej szeregu Fouriera występują tylko funkcje typu kosinus i nie
ma znaczenia czy zostanie wyznaczona dla niej prosta (znak „−”) czy odwrotna (znak „+”)
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 557
dyskretna transformata Fouriera w (19.10a): wynik w obu przypadkach zawsze będzie taki
sam.
Metoda filtra odwrotnego. Załóżmy, że znamy (już wyznaczyliśmy) współczynniki trans-
mitancji filtra traktu głosowego H(z) = G/A(z) (19.1) dla interesującego nas, kompresowanego
fragmentu sygnału mowy x(n). Jak się później okaże, jest to filtr predykcji następnej próbki
sygnału mowy na podstawie znajomości M = 10 poprzednich próbek. Jeśli przepuścimy kodo-
wany sygnał przez filtr G(z) = 1/H(z) = A(z), czyli odwrotny do H(z), to otrzymamy tzw. sygnał
resztkowy, będący obserwowanym błędem predykcji. Błąd ten wynika z niezgodności przy-
jętego modelu AR w stosunku do obserwowanego sygnału rzeczywistego, ale także z impul-
sowego charakteru pobudzenia. Na rysunku 19.10 pokazano przykłady analizowanych sygna-
łów i związanych z nimi sygnałów resztkowych dla kilku głosek dźwięcznych i jednej bez-
dźwięcznej. Jak widać sygnał resztkowy ma o wiele mniejszą dynamikę niż sygnał oryginalny,
co wynika z faktu, że zastosowany model predykcji dobrze do niego pasuje. Wyjątek stanowią
jedynie chwile czasowe, w których występują impulsowe pobudzenia traktu głosowego toru
przez powietrze rytmicznie „wyrzucane” przez struny głosowe. Pojawiają się wówczas wyraź-
ne impulsy, które powtarzają się okresowo. Na ich podstawie można wnioskować o tym, czy
analizowana głoska jest dźwięczna czy bezdźwięczna (obecność lub brak ww. impulsów) oraz
o wartości okresu tonu podstawowego w tym pierwszym przypadku. W tym miejscu rodzi się
także pomysł na metodę kompresji sygnału mowy, która znajduje zastosowanie w praktyce.
Sygnał resztkowy ma mniejszą dynamikę niż sygnał oryginalny, więc można go zapisać za po-
mocą mniejszej liczby bitów. Idąc dalej można kompresować sygnał resztkowy zamiast sygna-
łu oryginalnego (np. takie podejście jest stosowane w parametrycznym koderze mowy standar-
du MPEG-4 oraz w koderach mowy telefonii bezprzewodowej GSM). Kompresję tę wykonuje
się w dziedzinie częstotliwości wydzielając i kodując tylko częstotliwości sygnału resztkowego
leżące w zakresie 0÷1000 Hz. Jest to przykład kompresji sygnału w dziedzinie jego transfor-
maty, w tym konkretnym przypadku transformaty Fouriera, w którym koduje się nie próbki
sygnału tylko współczynniki jego transformaty, w dodatku selektywnie wybrane.
0 0
-0.5
-0.2
100 200 300 400 100 200 300 400
numer próbki numer próbki
Rys. 19.10. Sygnały głosek „a”, „i”, „o”, „u” i „sz” oraz związane z nimi sygnały resztkowe, uzyskane
drogą przefiltrowania sygnałów oryginalnych przez filtr odwrotny (do filtra traktu głosowego)
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 559
Ostatecznie
x (n ) = xˆ ( n ) + err (n ) (19.12)
gdzie:
p
xˆ ( n ) = − a1 x (n − 1) − a 2 x ( n − 2) − ... − a10 x ( n − 10) = − ∑ a j x ( n − j ) (19.12a)
j =1
err ( n ) = Ge(n ) (19.12b)
Sygnał xˆ ( n ) jest prognozą wartości sygnału w chwili n-tej, a err(n) − jej błędem. Parametr
p jest równy 10, ale w ogólnym przypadku predykcji liniowej jego wartość jest dowolna. W al-
gorytmie LPC-10 sygnał jest przetwarzany blokowo (N = 240 próbek z przesunięciem co
M = 180 próbek). Dla każdych 240 próbek należy więc znaleźć optymalne wartości współ-
czynników a1, ..., a10, takie, aby „średni” błąd prognozy dla całego bloku był jak najmniejszy.
Najczęściej jako kryterium jakości predykcji wybiera się błąd średniokwadratowy, zdefinio-
wany następująco:
2
N −1
1 N −1 2 1 N −1 p
J =σ =2
∑ err (n ) = ∑ [x (n) − xˆ (n )]2 = 1 ∑ x( n) + ∑ a j x(n − j )
N − p n= p N − p n= p N − p n= p
j =1
(19.13)
Aby wyznaczyć optymalne współczynniki ak, 1 ≤ k ≤ p, dla całego bloku należy wyznaczyć po-
chodną cząstkową J względem każdego z tych współczynników i przyrównać ją do zera.
Otrzymujemy w ten sposób układ p równań z p niewiadomymi, który ma następujące rozwią-
zanie:
a = −R −1r (19.14a)
gdzie:
Aby zsyntezować analizowany fragment mowy, należy na wejście filtra IIR o znanych już
współczynnikach i wzmocnieniu (G = Jmin = σmin2) podać pobudzenie znalezione w poprzed-
nim punkcie.
Na rysunku 19.11 przedstawiono moduły transmitancji toru traktu głosowego dla kilku głosek
dźwięcznych i bezdźwięcznych. W przypadku pierwszych z nich widać, że poszczególne głos-
ki charakteryzują się różnymi częstotliwościami rezonansowymi i różnymi wysokościami ma-
ksimów rezonansowych.
Rys. 19.11. Widmo transmitancji filtra traktu głosowego dla kilku wybranych głosek
Jak już zaznaczyliśmy we wstępie do tego rozdziału, standard LPC-10 służy nam tylko jako
przykład do ogólnego wprowadzenia w problematykę kodowania sygnału mowy. Nie omawia-
my go więc szczegółowo i nie trzymamy się kurczowo zastosowanych w nim rozwiązań. Tylko
gwoli zaciekawienia Czytelników nadmienimy teraz, że w standardzie tym stosuje się dwa
modele predykcji: dziesiątego rzędu dla głosek dźwięcznych oraz czwartego rzędu dla głosek
bezdźwięcznych („szumowych”). Dodatkowo modelowanie predykcyjne stosuje się nie do
oryginalnego fragmentu sygnału mowy x(n), tylko do jego wersji x '( n ) poddanej preemfazie,
tzn. przefiltrowanej filtrem nierekursywnym FIR postaci:
x '(n ) = x (n ) − 0,9375 x ( n − 1) (19.16)
Filtr ten podbija górne częstotliwości sygnału mowy, i tym samym ułatwia proces modelowa-
nia, ponieważ wzmacnia niskie „wierzchołki” leżących tam formantów. Oczywiście w dekode-
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 561
rze musi być wykonana operacja odwrotna, tzn. po zsyntezowaniu fragmentu mowy x '( n ) na-
leży go poddać deemfazie za pomocą filtra rekursywnego IIR, odwrotnego do filtra preemfazy:
x (n ) = x '(n ) + 0,9375 x ( n − 1) (19.17)
Dla dociekliwych. Wzory (19.14) i (19.15) wyprowadzono już raz w rozdziale 16 − (16.20),
(16.21). Obecnie w celach poglądowych wyprowadzimy je ponownie dwoma alternatywnymi
sposobami.
M e t o d a 1 − d e t e r m i n i s t y c z n a . Obliczmy pochodną cząstkową funkcjonału J (19.13)
względem dowolnego współczynnika predykcji ak, 1 ≤ k ≤ p:
p
2
∂J ∂ 1 N −1 2 p
= ∑ x (n) + 2 x(n) ∑ a j x(n − j ) + ∑ a j x(n − j ) = 0
∂a k ∂a k N − p n = p
j =1 j =1
1 N −1 p
a x ( n − j ) x ( n − k ) = 0
∑
N − p n= p
2 x ( n ) x ( n − k ) + 2 ∑
j =1 j
1 N −1
p
1 N −1
∑
N − p n= p
x ( n ) x ( n − k ) + ∑
N − p n= p
x ( n − k ) ∑ a j x ( n − j ) = 0
j =1
p 1 N −1 1 N −1
∑ a j N − p ∑ x ( n − j ) x ( n − k ) = − N − p ∑ x ( n ) x ( n − k ) (19.18)
j =1 n= p n= p
Po wprowadzeniu oznaczenia:
1 N −1
R xx (k , j ) = ∑ x( n − j ) x (n − k )
N − p n= p
(19.19)
Ponieważ:
1 N −1
R xx (k , j ) = r ( k − j ) = ∑ x(n) x(n − (k − j ))
N − p n= p
(19.21)
562 Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy
1 N −1 2 1 N −1
J min = ∑
N − p n= p
x ( n ) + aT ∑ 2 x(n )x( n) + x(n)xT ( n)a
N − p n= p
p
J min = r (0) + aT [ 2r + Ra] = r (0) + aT 2r − RR −1r = r (0) + aT r = r (0) + ∑ a j r( j)
j =1
(19.24)
Jak widać otrzymaliśmy zależność (19.15).
M e t o d a 2 − s t a t y s t y c z n a . Do równań (19.14), (19.15) można też dojść na podstawie
rozważań „statystycznych”. Wartości współczynników ak, 0 ≤ k ≤ 10, powinny być dobrane tak,
aby zminimalizować „statystyczny” błąd predykcji:
σ2 = E err ( n ) = E x (n ) − xˆ (n )
2 2
(19.25)
gdzie E[.] oznacza wartość oczekiwaną. Ponieważ z założenia analizowany fragment sygnału
mowy jest sygnałem losowym stacjonarnym w szerokim sensie, wartości te nie zależą od „n”.
Z kolei błąd prognozy xˆ ( n ) powinien być „statystycznie” ortogonalny (czyli nieskorelowany)
do danych, na podstawie których „postawiono” tę prognozę:
E [x ( n ) x ( n − k )] − E [xˆ ( n ) x ( n − k )] = 0 (19.27)
p
E [x ( n ) x (n − k )] − E − ∑ a j x (n − j ) x (n − k ) = 0 (19.28)
j =1
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 563
p
E [x ( n ) x ( n − k )] + ∑ a j E [x (n − j ) x ( n − k )] = 0 (19.29)
j =1
p
r(k ) + ∑ a j r(k − j ) = 0 (19.30)
j =1
Ponieważ jednak rzeczywisty „model” sygnału może być wyższego rzędu, predykcja może nie
być idealna, wówczas minimum błędu predykcji jest równe:
p
2
J min = σmin = E [ x( n)err ( n)] = E x( n) ( x (n) − xˆ ( n) ) = E x( n) x( n) + ∑ a j x( n − j ) =
j =1
p p p
= E x (n ) x (n ) + ∑ a j x (n ) x ( n − j ) = E [x (n ) x ( n )] + ∑ a j E [x ( n ) x ( n − j )] = r (0) + ∑ a j r ( j )
j =1 j =1 j =1
(19.32)
skąd otrzymujemy równanie (19.15):
p
J min = r (0) + ∑ a j r ( j ) (19.33)
j =1
Estymacja
wzmocnienia G 10
G = r(0) + ∑ a k r (k )
k =1
mowa Okno Estymacja a = −R −1r
Preemfaza
Hamminga wsp. filtra {ak}
Decyzja UV
Autokorelacja T=0
V/UV
N −k −1
r( k ) = ∑ x ( n ) x( n + k ) V
n =0
k = 0,1, 2,..., N − 1 Oblicz okres T
Tab. 19-1. Algorytm kodera i dekodera mowy LPC-10 (s(n) − wejściowy sygnał mowy)
3. Filtr traktu głosowego. Obliczenie współczynników filtra traktu głosowego {ak, k = 1, 2, ..., p} i wzmo-
cnienia G (funkcja Matlaba lpc(), levinson()):
N −1− k
r(k ) = ∑ s2 (n ) s2 (n + k ), k = 0, 1, 2, ..., p
n =0
−1
a1 r ( 0) r (1) " r ( p − 1) r (1)
a r (1)
2 = − r ( 0) " r ( p − 2) r ( 2) p
, G = r ( 0) + ∑ a k r ( k )
# # # % # # k =1
a
p r ( p − 1) r ( p − 2) " r ( 0) r ( p )
4. Filtracja dolnoprzepustowa filtrem o odpowiedzi impulsowej h(k) i górnej częstotliwości granicznej
równej 900 Hz (projektowanie filtra funkcją fir1() Matlaba, a filtracja za pomocą funkcji filter()):
M
s3 ( n ) = ∑ h(k )s2 (n − k )
k =0
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 565
5. Progowanie sygnału:
s3 (n ) − P, dla s3 (n ) ≥ P
s4 (n ) = s3 (n ) + P, dla s3 (n ) ≤ − P
0, dla pozostałych
P = 0,3max( s3 (n)) lub P = K min( A1/ 3 , A2 / 3 ), K = 0,6÷0,8
A1/3 i A2/3 to maksymalna wartość sygnału s3(n) w jego części początkowej i końcowej, w sytuacji kiedy
dzieli się ten sygnał na trzy części (pierwsze i ostatnie 80 z analizowanych 240 próbek).
6. Funkcja autokorelacji sygnału po sprogowaniu:
N −1− k
rp (k ) = ∑ s 4 (n ) s4 ( n + k ), k = 0, 1, 2, ..., N − 1
n =0
1. Wejściowy strumień bitowy. Wydobycie ze strumienia bitów wszystkich parametrów dla kolejnej „ram-
ki” sygnału mowy:
{T , G, a1 , a2 , ..., a p }
2. Synteza. Zsyntezowanie M = 180 próbek mowy (funkcja filter() Matlaba):
p
s1 ( n ) = Ge( n ) − ∑ a k s1 (n − k ), k = 0, 1, 2, ..., M − 1
k =1
gdzie e(n) jest sygnałem pobudzającym. Dla mowy bezdźwięcznej jest to szum losowy o wariancji rów-
nej 1, dla mowy zaś dźwięcznej − sekwencja impulsów, w najprostszym przypadku ciąg jedynek od-
dzielonych zerami. Podczas filtracji uwzględnia się już zsyntezowane próbki z poprzedniej „ramki” oraz
znajomość chwili wystąpienia ostatniego impulsu w poprzedniej „ramce”, jeśli była to „ramka”
dźwięczna. Ta druga właściwość ma zapewnić „ciągłość” pobudzeń impulsowych dla sekwencji „ramek”
dźwięcznych.
3. Deemfaza − małe stłumienie wyższych częstotliwości metodą filtracji rekursywnej typu IIR (filtr odwrot-
ny do filtra preemfazy kodera):
s (n) = s1 (n) + 0, 9375 ⋅ s (n − 1)
566 Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy
Tab. 19-2. Wpływ zapisu parametrów fragmentu (ramki) sygnału mowy na uzyskiwany stopień kompresji
Tab. 19-3. Porównanie stosowanych standardów kodowania sygnału mowy. W nawiasie podano numer
standardu (rekomendacji) ITU (ang. International Telecommunications Union) lub CCITT (ang Interna-
tional Telegraph and Telephone Consultative Committee) lub jego rodzaj
Jak już było powiedziane, możliwe jest wykorzystywanie do tego celu sygnału resztkowego
(rys. 19.10), czyli wyniku przepuszczenia oryginalnego sygnału mowy przez filtr odwrotny
1/H(z). Oczywiście sygnał resztkowy sam musi być poddany operacji efektywnego kodowania,
np. w dziedzinie częstotliwości z wykorzystaniem kwantyzacji wektorowej. Po drugie, pewne
nadzieje może dawać interpolacja charakterystyki amplitudowo-częstotliwościowej filtra traktu
głosowego pomiędzy blokami danych i jego częstsze przełączanie niż tylko jeden raz na ram-
kę. W tym miejscu pojawia się jednak problem jak powyższą interpolację należy wykonać?
Przykładowo, czy filtr predykcji mający współczynniki równe wartościom średnim odpowied-
nich współczynników swoich sąsiadów będzie miał charakterystykę amplitudowo-częstotliwoś-
ciową stanowiącą przejście od charakterystyki filtra go poprzedzającego do charakterystyki
filtra następującego po nim? Okazuje się, że nie. Jeśli chcemy wyznaczyć poprawną charakte-
rystykę filtra „przejścia”, to należy wyznaczyć parę wielomianów P(z) i Q(z) (LSP − Line
Spectrum Pairs, LSF − Line Spectrum Frequencies):
p
P ( z ) = A( z ) + z − ( p +1) A( z −1 ) = 1 + ∑ ( ak + a p +1− k ) z − k + z −( p +1) (19.34a)
k =1
p
Q ( z ) = A( z ) − z − ( p +1) A( z −1 ) = 1 + ∑ ( ak − a p +1− k ) z − k − z − ( p +1) (19.34b)
k =1
dla wielomianów A(z) (19.1) dwóch sąsiednich filtrów predykcji H(z), obliczyć ich miejsca ze-
rowe (zawsze leżące na okręgu jednostkowym) oraz je interpolować, osobno dla P(z) i Q(z).
Na podstawie wielomianów Pi (z) i Qi (z), związanych z interpolowanymi miejscami zerowymi,
wyznacza się następnie wielomian Ai(z):
Pi ( z ) + Qi ( z )
Ai ( z ) = (19.35)
2
dla filtra interpolującego Hi (z). Parametr p w powyższych równaniach oznacza stopień wielo-
mianu filtra predykcji, równy 10 w metodzie LPC-10. Dla tego stopnia wielomiany P(z) i Q(z),
określone przez (19.34), przyjmują następującą postać:
Zastosowanie podczas kodowania mowy filtrów LSP/LSF ma jeszcze dodatkową zaletę. Po-
nieważ w przeciwieństwie do wielomianu A(z), współczynniki wielomianów P(z) i Q(z) nie
mają dużego zakresu zmienności oraz są mniej wrażliwe na kwantowanie (dzięki czemu jest
łatwiejsze zapewnienie stabilności filtra syntezy H(z), to mogą one być kwantowane oraz
zapisywane (przesyłane) zamiast współczynników wielomianu A(z). Stanowią więc alternatywę
dla zastosowania filtrów kratowych i kwantowania ich współczynników odbicia {γk} (patrz
tabele 22-1 i 22-2).
względem prążka C(0). W związku z tym jest ona aproksymowana tylko za pomocą funkcji ty-
pu kosinus, które nie zależą od znaku argumentu: cos(α) = cos(−α).
Współczynniki cepstralne można wyznaczyć za pomocą dwukrotnego wykonania algorytmu
szybkiej transformacji Fouriera FFT według schematu opisanego równaniem (19.10a) lub też
na początku znaleźć p współczynników filtra predykcji ak z (19.14), a następnie obliczyć z nich
q współczynników cepstralnych ck [Rabi93]:
c1 = a1 (19.36a)
k −1 m
ck = ak + ∑ k
cm ak − m , 2 ≤ k ≤ p (19.36b)
m =1
k −1 m
ck = ∑ k
cm ak − m , p +1≤ k ≤ q (19.36c)
m =1
q πk
wk = 1 + sin , 1 ≤ k ≤ q (19.38)
2 q
Do rozpoznawania mowy stosuje się identyczny jak w algorytmie LPC-10 rząd filtra predykcji
p = 10 oraz wylicza się q = 12 współczynników cepstralnych ck. Ramka danych powinna trwać
w tym przypadku 30 milisekund, a jej przesunięcie być równe 10 milisekund, co dla często-
tliwości próbkowania daje odpowiednio 240 i 80 próbek sygnału mowy. Możliwe jest szybkie,
iteracyjne wyznaczanie współczynników ak filtra LPC, opisane w następnym rozdziale (patrz
tabela 20-1), dzięki któremu metoda ta staje się bardzo atrakcyjna obliczeniowo nawet w po-
równaniu z podejściem opartym na FFT. Wówczas unika się konieczności korzystania z cza-
sochłonnej obliczeniowo zależności (19.14). Należy zwrócić uwagę, że współczynniki cep-
stralne ck wyznaczone z (19.36) odpowiadają sytuacji, kiedy w C(k) (19.10a) jest podniesione
do drugiej potęgi, co należy także uwzględnić w metodzie opartej na FFT, jeśli chce się uzys-
kać porównywalne wyniki.
Dla dociekliwych. Obecnie standardem w rozpoznawaniu mowy nie jest porównywanie współ-
czynników cepstralnych tylko mel-cepstralnych. W metodzie tej na początku sygnał mowy
poddaje się preemfazie, a następnie wymnaża z oknem Hamminga i oblicza FFT. Potem pod-
nosi się wartości prążków widma do kwadratu, czyli wyznacza estymatę funkcji gęstości wid-
mowej mocy sygnału, i uśrednia grupy prążków widma za pomocą nakładających się funkcji
wagowych o kształcie trójkątnym. Wielkość uśrednienia rośnie wraz z częstotliwością, tzn.
trójkątne funkcje wagowe są dla wyższych częstotliwości coraz szersze (po dodatkowym, op-
cjonalnym unormowaniu także coraz niższe). W ten sposób uwzględnia się podstawy percepcji
dźwięku przez człowieka, który lepiej rozróżnia niższe niż wyższe tony. Przy projektowaniu
zestawu L funkcji trójkątnych uwzględnia się psychoakustyczną skalę melową (m, f − ta sama
częstotliwość wyrażona w melach i w hercach, ln − logarytm naturalny, log − logarytm dzie-
siętny):
m = 1127,01048 ⋅ ln (1 + f / 700 ) , ( )
f = 700 ⋅ e m /1127,01048 − 1 (19.39a)
2 L πk
ck =
L l =1
( L
)
⋅ ∑ ln S (l ) cos (l − 1/ 2) , k = 1, 2, 3,..., q
(19.40b)
gdzie m jest numerem wzorca. Dla każdego wzorca są wykonywane następujące operacje. Na
początku jest tworzona macierz d(ns, nw) o wymiarach Ns × Nw, której elementy mają wartości
równe odległości euklidesowej pomiędzy cepstrum słowa o numerze ns, a cepstrum wzorca
o numerze nw:
p
∑ ( Cs (ns , k ) − Cw (nw , k ) )
2
d ( ns , nw ) = , ns = 1... N s , nw = 1... N w (19.43)
k =1
rozpoznawane słowo jest bardziej podobne do wzorca. Kiedy próbki rozpoznawanego słowa
i wzorca są identyczne, wówczas ich wektory współczynników cepstralnych są także takie
same. W takiej sytuacji najmniejszy, zerowy koszt zakumulowany jest związany z przejściem
po zerowych elementach macierzy leżących wzdłuż jej przekątnej od lewego dolnego do pra-
wego górnego rogu. W ogólnym przypadku najmniejsza wartość zakumulowana odpowiada
przejściu „doliną” wartości macierzy d(ns, nw). Na rysunku 19.14 przedstawiono przykładową
macierz dla słowa „dwa” w sytuacji kiedy traktujemy go jednocześnie jako słowo rozpoz-
nawane i wzorzec: na przekątnej obserwujemy najmniejsze wartości.
numer wektora
cech wzorca
Nw
Nw − 1
ścieżka przejścia
ograniczenia
4
3
zasady „ruchu”
2
1
numer wektora
cech słowa
1 2 3 4 5 6 Ns − 1 Ns
Rys. 19.13. Ilustracja graficzna wyznaczania najkrótszej zakumulowanej drogi przejścia (od lewego dolne-
go do prawego górnego rogu) w macierzy błędu dopasowania d(ns, nw) rozpoznawanego słowa (w poziomie)
do wzorca (w pionie). Wektorem cech jest zbiór współczynników cepstralnych
Rys. 19.14. Przykładowy kształt macierzy odległości euklidesowych d (ns, nw) (19.43) wektorów cepstral-
nych słowa „dwa” traktowanego jednocześnie jako słowo rozpoznawane i wzorzec
Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy 573
Liczba możliwych przejść pomiędzy lewym dolnym a prawym górnym rogiem macierzy odle-
głości lokalnych jest ogólnie bardzo duża. Uwzględnienie wszystkich przejść przy obliczaniu
odległości zakumulowanej byłoby praktycznie niewykonalne. Wprowadza się zatem pewne
ograniczenia wynikające z pewnych właściwości sygnału mowy oraz specyfiki postawionego
problemu, które pozwalają na znaczne ograniczenie ilości potrzebnych obliczeń. Szczegółowe
zasady „ruchu” i akumulacji mogą być różne, na przykład następujące:
• nie jest możliwe „cofanie” się w macierzy odległości lokalnych, tzn. jest dozwolone tylko po-
ruszanie się w prawo lub w górę;
• idąc dalej, jest dozwolone tylko przejście o j e d n ą p o z y c j ę w prawo, do góry oraz po sko-
sie w prawo do góry;
• z reguły narzuca się również ograniczenia globalne [Kuhn83], zawężające płaszczyznę doz-
wolonego ruchu do obszaru ograniczonego dwiema liniami, pokazanymi na rysunku 21.12
(linie przerywane).
Ograniczenie pierwsze wynika z m o n o t o n i c z n o ś c i sygnału mowy, drugie zaś i trzecie
− z jej c i ą g ł o ś c i , w związku z którą ogranicza się w obliczeniach możliwość uwzględnienia
odległości lokalnych między zbyt oddalonymi od siebie w czasie wektorami parametrów cep-
stralnych, gdyż mogłoby to prowadzić do pominięcia zbyt dużych fragmentów sygnału mowy.
Z przyjętych założeń wynika następujący sposób obliczania akumulacji błędu dopasowania
wzdłuż drogi przejścia [Wiel01, Skór03]:
ns
g (ns ,1) = ∑ d (k , 1), ns = 1, 2,..., N s , (akumulacja w pierwszym wierszu) (19.44a)
k =1
nw
g (1, nw ) = ∑ d (1, k ), nw = 1, 2,..., N w , (akumulacja w pierwszej kolumnie) (19.44b)
k =1
gdzie min oznacza wybór wartości najmniejszej z trzech możliwych (ruch w prawo, w lewo lub
po skosie − w prawo do góry), a nw(down)(ns) i nw(up)(ns) − ograniczenia dolne i górne ruchu
w pionie, zależne od wartości ns (2 ≤ nw(down)(ns), nw(up)(ns) ≤ Nw). Jak widać w rozpatrywanym
przypadku nie jest wymagane wyznaczanie wszystkich wartości elementów macierzy d(ns, nw).
Wynikową odległością słowa s od wzorca w jest wartość elementu g(Ns, Nw) macierzy zaku-
mulowanej, czyli elementu znajdującego się w jej prawym, górnym rogu − końcu „wędrówki”.
Aby uniezależnić tę wartość od rozmiaru macierzy g(.), należy ją unormować, np. poprzez
podzielenie przez pierwiastek z sumy kwadratów liczby wierszy i kolumn macierzy:
g(Ns, Nw )
a ( s , w) = (19.45)
N s2 + N w2
Należy wyznaczyć wartości zakumulowanego błędu dopasowania a(s, w(m)) słowa s do każdego
wzorca w(m), znajdującego się w bazie danych. Przyjmuje się, że wypowiedziano wzorzec
leżący najbliżej rozpoznawanego słowa (najmniejsza wartość funkcji błędu).
574 Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy
W celu przyspieszenia obliczeń dla każdej wartości ns można tylko rozpatrywać indeksy
nw leżące w okolicy przekątnej, tzn. stosować dla nw ograniczenie dolne i górne. Jeśli liczby
cepstrów słowa (Ns) i wzorca (Nw) różnią się znacznie, można także od razu przyjąć, że słowo
jest różne od wzorca.
Na rysunku 19.13 zilustrowano graficznie algorytm wyznaczania najkrótszej zakumulowanej
ścieżki przejścia za pomocą opisanej powyżej metody programowania dynamicznego. Pogru-
bioną liną zaznaczono zwycięską, „najkrótszą” ścieżkę zakumulowaną, a liniami przerywanymi
− ograniczenia dolne i górne narzucone na nw. Strzałki natomiast pokazują dozwolone możli-
wości ruchu (akumulacji). Z kolei w tabeli 19-5 jest zaprezentowany program komputerowy,
w sposób prosty implementujący przedstawioną metodę rozpoznawania izolowanych słów
w języku Matlab. Wykorzystywane są w nim następujące podprogramy:
cisza() − służący do wycinania fragmentów ciszy, występujących na początku i końcu na-
granego słowa,
cepstrum() − wykorzystywany do wyznaczania zbioru wektorów, czyli macierzy, współ-
czynników cepstralnych dla zadanego słowa,
dtw() − realizujący algorytm porównywania macierzy cepstralnych rozpoznawanego słowa
z macierzami cepstralnymi wzorców.
Szczególną rolę odgrywa tu podprogram cisza.m, który powinien być o wiele bardziej inte-
ligentny od zaproponowanego, gdyż jego zadaniem jest pozostawianie tylko wypowiedzianego
słowa, niezależnie od tego co znajduje się na początku i końca nagrania. A może to być nie
tylko cisza, ale także trzaski, szumy lub przydźwięk sieci. Pomimo tego, że sam algorytm
DTW w pewnym zakresie rozwiązuje problem początkowych i końcowych fragmentów ciszy,
to od tego wstępnego przetwarzania bardzo zależy skuteczność rozpoznawania.
Tab. 19-5. Przykładowy program do rozpoznawania izolowanych słów poprzez porównywanie ich współ-
czynników cepstralnych metodą DTW
dt1 = 0.010; Mlen = floor(dt1*fpr); % długość okna czasowego do liczenia energii [msek], liczba
próbek
dt2 = 0.001; Mstep = floor(dt2*fpr); % przesunięcie okna czasowego [msek], liczba próbek
prog = 0.25*fpr/8000; % próg głośności
xn = x / max(abs(x)); % normowanie
for nr1 = 1 : Nramek % DETEKCJA ciszy na początku nagrania
bx = xn( 1+(nr1-1)*Mstep : Mlen + (nr1-1)*Mstep ); % pobranie fragmentu sygnału
if(bx'*bx >= prog) break; end % przerwij, jeśli energia > od progu
end
for nr2 = Nramek :-1: nr1 % DETEKCJA ciszy na końcu nagrania
bx = xn( 1+(nr2-1)*Mstep : Mlen + (nr2-1)*Mstep ); % pobranie fragmentu sygnału
if(bx'*bx >= prog) break; end % przerwij, jeśli energia > od progu
end
% PĘTLA GŁÓWNA
for nr = 1 : Nramek
% Pobranie kolejnego fragmentu sygnału
n = 1+(nr-1)*Mstep : Mlen + (nr-1)*Mstep; bx = x(n);
% Przetwarzanie wstępne
bx = bx - mean(bx); % usuń wartość średnią
bx = bx .* hamming(Mlen); % zastosuj okno czasowe
% Obliczenie współczynników cepstralnych ze współczynników filtra LPC
for k = 0 : Np
r(k+1) = sum( bx(1 : Mlen-k) .* bx(1+k : Mlen) ); % funkcja autokorelacji
end
rr(1:Np,1)=(r(2:Np+1))'; % wektor autokorelacji
for m = 1 : Np
R(m,1:Np)=[r(m:-1:2) r(1:Np-(m-1))]; % macierz autokorelacji
end
576 Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy
% Obliczenie odległości d(ns, nw) pomiędzy poszczególnymi cepstrami sygnału (ns) i sprawdzanego wzorca (nw)
Nw = Nwzr( numer ); % liczba wektorów wsp. cepstralnych wzorca
Q = round( 0.2 * max(Ns,Nw) ); % współczynnik szerokości ścieżki
d = Inf*ones(Ns,Nw); tg=(Nw-Q)/(Ns-Q); % inicjalizacja macierzy odległości, tangens kąta
for ns = 1:Ns % dla każdego cepstrum rozpoznawanego słowa
down(ns) = max( 1, floor(tg*ns-Q*tg)); % ograniczenie dolne
up(ns) = min( Nw, ceil(tg*ns+Q)); % ograniczenie górne
for nw = down(ns) : up(ns) % dla każdego cepstrum wzorca
d(ns,nw) = sqrt( sum((Cx(ns, 1:Np) - Cwzr(nw, 1:Np, numer)).^2 )); % odległość
end
end
1 0
r (1) r ( 0) r (1) " r ( p − 1)
r ( 2) a1 0
r (1) r ( 0) " r ( p − 2)
⋅ a 2 = 0 (20.1)
# # # % #
# #
r ( p ) r ( p − 1) r ( p − 2) " r ( 0)
a p 0
Na podstawie tego równania, znając wartości estymaty funkcji autokorelacji r(0), r(1), ..., r(p),
należy wyznaczyć wartości parametrów a1, a2,..., ap oraz σ2min. W algorytmie Durbina-Levin-
sona rozwiązuje się ten problem obliczeniowy iteracyjnie (rekursywnie): na początku rozwią-
zuje się (20.2) dla p = 1, potem dla p = 2 i tak dalej aż do p = 10, za każdym razem wykorzy-
stując rozwiązanie z poprzedniego, niższego etapu obliczeń. Pomocniczo stosuje się także
następującą właściwość:
(20.3)
Prześledźmy krok po kroku metodę Durbina-Levinsona [Orfa88]. W celu uproszczenia zapisu
przyjmijmy oznaczenie r(k) = rk.
Krok 0: p = 0. Z (20.2) mamy: r0⋅1 = E0, skąd wyznaczamy E0. Następnie zwiększamy wymiar
wektora parametrów ak, dodając do niego zero:
r0 r1 1 E0 r0 r1 0 ∆ 0
r = ⇒ = (20.4)
1 r0 0 ∆ 0 r
1 r0 1 E0
r0 r1 1 E1
r = (20.6)
1 r0 a11 0
Stosujemy podstawienie:
Projekt LPC-10: kompresja sygnału mowy − metody zaawansowane 579
1 1 0
a = 0 − γ 1 1 (20.7)
11
i mnożymy lewostronnie obie strony (20.7) przez odpowiednią macierz próbek funkcji auto-
korelacji:
r0 r1 1 r0 r1 1 r0 r1 0
r = − γ1 (20.8)
1 r0 a11 r1 r0 0 r1 r0 1
E1 E0 ∆ 0
0 = ∆ − γ1 E (20.9a)
0 0
lub
E0 − γ1∆ 0 = E1 , ∆ 0 − γ1E0 = 0 (20.9b)
lub
γ1 =
∆ 0 r1
=
E0 E0
, E1 = E0 − γ1∆ 0 = 1 − γ12 E0 ( ) (20.9c)
Kończąc obliczenia w tym kroku, ponownie zwiększamy wymiar wektora parametrów ak, do-
dając do niego zero:
r0 r1 r2 1 E1 r0 r1 r2 0 ∆1
r r0 r1 ⋅ a11 = 0 ⇒ r r0 r1 ⋅ a11 = 0 (20.11)
1 1
r2 r1 r0 0 ∆1 r2 r1 r0 1 E1
stąd:
∆1 = r2 + a11r1 (20.12)
r0 r1 r2 1 E2
r r0 r1 ⋅ a 21 = 0 (20.13)
1
r2 r1 r0 a 22 0
1 1 0
a = a − γ a (20.14)
21 11 2 11
a 22 0 1
E 2 E1 ∆1
0 = 0 −γ 0 (20.15)
2
0 ∆1 E1
lub
E1 − γ 2 ∆1 = E 2 , ∆1 − γ 2 E1 = 0 (20.16)
lub
γ2 =
∆1 r2 + a11r1
E1
=
E1
(
, E 2 = 1 − γ 22 E1 ) (20.17)
r0 r1 r2 r3 1 E 2 r0 r1 r2 r3 0 ∆ 2
r r0 r1 r2 a 21 0 r r0 r1 r2 a 22 0
1 ⋅ = ⇒ 1 ⋅ = (20.19)
r2 r1 r0 r1 a 22 0 r2 r1 r0 r1 a 21 0
r3 r2 r1 r0 0 ∆ 2 r3 r2 r1 r0 1 E2
skąd mamy
∆ 2 = r3 + a 21r2 + a 22 r3 (20.20)
r0 r1 r2 r3 1 E3
r r0 r1 r2 a31 0
1 ⋅ = (20.21)
r2 r1 r0 r1 a 32 0
r3 r2 r1 r0 a33 0
1 1 0 E3 E 2 ∆ 2
a a a 0 0 0
31 = 21 − γ 3 22 , = − γ3 (20.22) (20.23)
a 32 a 22 a 21 0 0 0
a 33 0 1 0 ∆ 2 E2
skąd
E 2 − γ 3∆ 2 = E3 , ∆ 2 − γ 3 E2 = 0 (20.24)
lub
γ3 =
∆ 2 r3 + a 21r2 + a 22 r1
E2
=
E2
(
, E3 = 1 − γ 32 E 2 ) (20.25)
Współczynniki a31, a32, a33 wyznacza się z (20.22) na podstawie znajomości a21, a22 i γ3:
Projekt LPC-10: kompresja sygnału mowy − metody zaawansowane 581
a 33 = − γ 3 , a 32 = a 22 − γ 3a 21 , a 31 = a 21 − γ 3a 22 (20.26)
Wejście: r0, r1, r2, ..., rp − estymata funkcji autokorelacji sygnału (ri = r(i))
Wyjście: {γ1, γ2, ..., γp, Ep} lub {a1, a2, ..., ap, Ep}
1. E0 = r0
2. Dla i = 1, 2, 3, ..., p:
• γi =
ri + a(i −1)1ri −1 + a(i −1) 2 ri − 2 + ... + a (i −1)(i −1) r1
Ei −1
( )
, Ei = 1 − γ i2 Ei −1
• aii = − γ i
• dla j = 1, 2, ..., i−1: a ij = a ( i −1) j − γ i a ( i −1)( i − j )
γi = −aii, 1 ≤ i ≤ p (20.27)
Chcemy wyliczyć {a31, a32, a33} na podstawie {a41, a42, a43, a44}. Po wymnożeniu obu stron
równania (20.28d) przez γ4 i dodaniu wyniku do (20.28b) otrzymujemy:
a 41 + γ 4 a 43 = a 31 − γ 24 a 31 (20.30)
skąd:
a 41 + γ 4 a 43
a 31 = (20.31)
1 − γ 24
W analogiczny sposób mnożąc obie strony równania (20.28b) i dodając do (20.28d) mamy:
a 43 + γ 4 a 41
a 33 = (20.32)
1 − γ 24
Tab. 20-2. Związki pomiędzy współczynnikami filtrów, zapisanych w postaci klasycznej {a1, a2, ..., ap}
i kratowej {γ1, γ2, ..., γp}
1. Kratowe → Klasyczne: Wejście: {γ1, γ2, ..., γp}, Wyjście: {a1, a2, ..., ap} = {ap1, ap2, ..., app}
2. Klasyczne → Kratowe: Wejście: {a1, a2, ..., ap} = {ap1, ap2, ..., app}, Wyjście: {γ1, γ2, ..., γp},
Dlaczego tak dużo uwagi poświęcamy współczynnikom ak i γk, i ich wzajemnym związkom?
Odpowiedź jest prosta − ponieważ jeśli we współczynnikach ak jest zawarta wiedza „tajemna”
dotycząca charakterystyki częstotliwościowej filtra, to ta sama wiedza jest także we współ-
czynnikach γk, czyli z ich pomocą także można filtrować. Pojawia się jednak pytanie − jaka jest
struktura obliczeniowa filtra, w której w sposób „jawny” występują współczynniki γk? Nie
może to być przecież struktura klasyczna z rysunku 20.1a, zawierająca współczynniki ak.
Projekt LPC-10: kompresja sygnału mowy − metody zaawansowane 583
a) y(n)
1 a1 a2 a3 aM
x(n)
−1 −1 −1 −1
z z z z
e0 (n ) e1 (n) e2 (n) eM (n )
b) y(n)
−γ1 −γ2 −γM
I tak na scenę cyfrowego przetwarzania sygnałów po raz pierwszy wkraczają tzw. filtry
kratowe. Ich niezaprzeczalną zaletą jest mniejsza wrażliwość na kwantowanie współczynników
γk (mniejsza deformacja charakterystyki częstotliwościowej, spowodowana zaokrągleniem wag
filtra), co jest szczególnie istotne w przypadku implementacji filtrów na procesorach
stałoprzecinkowych, najczęściej pracujących w czasie rzeczywistym. Równocześnie filtry pra-
cujące w strukturze kratowej charakteryzuje swoistego rodzaju „ortogonalność”. Jeśli bowiem
filtr służy do modelowania parametrycznego sygnałów, to jego optymalny rząd zależy od wła-
ściwości lokalnych analizowanych danych, czyli może się zmieniać w czasie. W przypadku
zastosowania filtra o strukturze klasycznej, zmiana rzędu filtra prowadzi do konieczności wyli-
czenia wszystkich współczynników ak nowego filtra. W przypadku filtra kratowego natomiast
usuwa się współczynnik o najwyższym indeksie (uproszczenie modelu), albo wyznacza się tyl-
ko jeden, kolejny współczynnik, który dodaje do modelu kolejny, ortogonalny wymiar (rozbu-
dowanie modelu). Kratowe filtry adaptacyjnie o zmiennym rzędzie są więc często optymalnym
rozwiązaniem.
Zajmiemy się teraz wyprowadzeniem struktury filtra kratowego. Załóżmy, że pojedyncze
„ogniwo” filtra kratowego jest opisane następującym układem równań:
ei ( n ) = ei −1 ( n ) − γ i ~
ei −1 ( n − 1)
~ ~ (20.35)
ei ( n ) = − γ i ei −1 ( n ) + ei −1 ( n − 1)
Ei ( z ) = Ei −1 ( z ) − γ i z −1 E~i −1 ( z ) Ei ( z ) 1 − γ i z −1 E i − 1 ( z )
~ −1 ~
, E~ ( z ) = ~ (20.36)
E i ( z ) = − γ i E i −1 ( z ) + z Ei −1 ( z ) i − γ i z −1 E i −1 ( z )
Ai ( z ) = Ai −1 ( z ) − γ i z −i Ai −1 ( z −1 ) (19.38a )
~ −i −1
Ai ( z ) = z Ai ( z ) (19.38b)
E1 ( z ) = E0 ( z ) − γ1 z −1E~0 ( z )
~ −1 ~
(20.39)
E1 ( z ) = − γ1 E0 ( z ) + z E0 ( z )
~
Przy założeniu E0 ( z ) = E0 ( z ) = X ( z ) i po podzieleniu obu stron powyższego równania przez
X(z) otrzymujemy (A0(z) = 1):
A1 ( z ) = 1 − γ1 z −1
~ −1 −1 −1
(20.40)
A1 ( z ) = − γ 1 + z = z A1 ( z )
~
czyli spełnienie (20.38). Dzieląc natomiast obie strony równania (20.36) przez E0(z) = E0 ( z ) =
= X(z), otrzymujemy następującą zależność dla i:
~
Ai ( z ) = Ai −1 ( z ) − γ i z −1 Ai −1 ( z ) (20.41)
~ −1 ~
Ai ( z ) = − γ i Ai −1 ( z ) + z Ai −1 ( z )
konsekwencją równania (20.38a) jest następująca zależność, wiążąca współczynniki filtra rzę-
du „i” {ai1, ai2,..., aii} ze współczynnikami filtra rzędu „i − 1” {a(i−1)1, a(i−2)2,..., a(i−1)(i−1)}:
aii = − γ i (20.45a)
j = 1, 2, ..., i−1: a ij = a (i −1) j − γ i a (i −1)(i − j ) (20.45b)
Jak widać są to zależności identyczne jak te, które występują w punkcie 1 tabeli 20-2, czyli
układ z rysunku 20.1b jest filtrem kratowym typu FIR, gdyż realizuje jego równania.
Projekt LPC-10: kompresja sygnału mowy − metody zaawansowane 585
Przykład
Załóżmy, że połączyliśmy kaskadowo trzy ogniwa w sposób pokazany na rysunku 20.1b, wów-
czas w dziedzinie transformacji Z otrzymujemy:
E3 ( z ) 1 −γ 3 z −1 1 −γ 2 z −1 1 −γ1 z −1 X (n)
E ( z ) = =
3 −γ 3 z −1 −γ 2 z −1 −γ1 z −1 X ( z )
1 −γ 3 z −1 1 + γ1 γ 2 z −1 −γ1 z −1 − γ 2 z −2 X (n)
= =
−γ 3 z −1 −γ 2 − γ1 z −1 γ1 γ 2 z −1 + z −2 X ( z )
H 1 ( z ) = 1 − γ1 z −1 = 1 + a11 z −1
H 2 ( z ) = 1 + γ 1 ( γ 2 − 1) z −1 − γ 2 z −2 = 1 + a 21 z −1 + a 22 z −2
H 3 ( z ) = 1 + [ γ1 ( γ 2 − 1) + γ 3γ 2 ] z −1 + −γ 2 − γ 3 ( γ1 ( γ 2 − 1) ) z −2 − γ 3 z −3 = 1 + a31 z −1 + a32 z −2 + a33 z −3
Otrzymujemy więc nierekursywne filtry typu FIR odpowiednio pierwszego, drugiego i trzecie-
go rzędu, które mają odpowiednio współczynniki: {a11}, {a21, a22} i {a31, a32, a33}, związane
ze współczynnikami „odbicia” γ1, γ2 i γ3. Wynika stąd, że klasyczne filtry FIR można reali-
zować w strukturach kratowych, jak na rysunku 20.1b. Dodatkowo okazuje się, że obliczone
współczynniki aij transmitancji Hi(z), i = 1, 2, 3, można obliczyć na podstawie γ1, γ2, γ3, stosu-
jąc ogólne wzory wyprowadzone w metodzie Durbina-Levinsona i podane w tabeli 20-1:
a11 = − γ1
a 22 = − γ 2 , a 21 = a11 − γ 2 a11 = − γ1 + γ 2 γ1 = γ 1 ( γ 2 − 1)
a 33 = − γ 3 , a 32 = a 22 − γ 3a 21 = − γ 2 − γ 3 (γ 1 ( γ 2 − 1) ) , a 31 = a 21 − γ 3a 22 = γ 1 ( γ 2 − 1) + γ 3 γ 2
Oczywiście w tym miejscu należałoby się zapytać, czy nasza radość nie jest przedwczesna, po-
nieważ w metodzie LPC-10 stosuje się filtr rekursywny IIR o transmitancji H(z) = 1/A(z), a nie
filtr nierekursywny FIR o transmitancji H(z) = A(z), a my powyżej przedstawiliśmy strukturę
kratową dla filtra nierekursywnego. Jest to prawda, ale powyższe spostrzeżenia w prosty spo-
sób można uogólnić na przypadek kratowego filtra typu IIR.
Przypomnijmy, że równanie czasowe filtra typu IIR ma postać (przy założeniu a0 = 1):
N
y ( n) = x( n) − ∑ a N j y (n − j ) (20.46)
j =1
Po zamianie rolami wejścia i wyjścia (czyli wzajemnej wymianie miejscami x(n) i y(n) w po-
wyższym równaniu) otrzymujemy:
N
x (n) = y ( n) − ∑ a N j x(n − j ) (20.47)
j =1
586 Projekt LPC-10: kompresja sygnału mowy − metody zaawansowane
Wynika stąd, że strukturę kratową typu IIR otrzymuje się zamieniając wejście z wyjściem kra-
towego filtra typu FIR z rysunku 20.1b, co prowadzi do struktury pokazanej na rysunku 20.2b.
Widzimy, że w tym przypadku poszczególne sekcje występują w niej w odwrotnej kolejności
oraz w każdej sekcji jeden ze współczynników γi nie jest zanegowany. Dlaczego? Ponieważ te-
raz interesuje nas zależność ei−1(n) od ei(n), więc równania pojedynczej sekcji (20.35) prze-
kształcamy do następującej postaci:
ei −1 ( n ) = ei ( n ) + γ i ~
ei −1 ( n − 1)
~ ~ (20.49)
ei ( n ) = − γ i ei −1 ( n ) + ei −1 ( n − 1)
co w konsekwencji prowadzi do elementarnej sekcji struktury filtra typu IIR jak na rys. 20.2b.
a) x(n) y(n)
e M (n ) e2 (n ) e1 (n ) e0 ( n )
b) x(n) y(n)
−γM −γ2 −γ1
γM γ2 γ1
z−1 z−1 z−1
e~M (n ) e~2 ( n ) e~1 (n ) e~0 (n)
Rys. 20.2. Filtr tylko IIR w postaci klasycznej (a) i kratowej (b)
Dla dociekliwych: pełne kratowe filtry typu IIR. Jak dotąd otwartym problemem pozostaje
projektowanie kratowych filtrów IIR, mających nie tylko same bieguny, ale także zera (czyli
nie tylko wielomian w mianowniku, ale również w liczniku transmitancji):
BM ( z )
H ( z) = (20.50)
AN ( z )
W tym przypadku jest korzystnie transformować do postaci kratowej postać bezpośrednią II ty-
pu przedstawioną na rysunku 20.3a (także na rysunku 13.6). Z rysunku tego wynikają nastę-
pujące zależności (N ≥ M):
N
w( n ) = − ∑ a k w( n − k ) + x (n ) (20.51)
k =1
M
y(n) = ∑ bk w(n − k ) (20.52)
k =0
Jak widać (20.51) jest równaniem klasycznego filtra typu IIR z samymi biegunami, więc
można go implementować „kratowo” w sposób już znany, wykorzystując wzory z tabeli 20-2.
Projekt LPC-10: kompresja sygnału mowy − metody zaawansowane 587
eM (n ) e2 ( n ) e1 ( n ) e0 ( n)
b) x(n)
−γM −γ2 −γ1
γM γ2 ~ γ1 ~
e~M ( n) e~2 (n) e1 ( n ) e0 (n)
z−1 z−1 z−1
cM c2 c1 c0
y(n)
Rys. 20.3. Filtr pełny IIR w postaci klasycznej (a) i kratowej (b)
W równaniu (20.52) sygnał y(n) stanowi natomiast liniową kombinację opóźnionych wyjść
w(n) układu pierwszego (20.51). Naturalnym więc wyborem dla całego układu jest struktura
filtra kratowego, pokazana na rysunku 20.3b. Dla niej równanie (20.52) jest zastąpione rów-
naniem postaci:
M
y(n) = ∑ ck ~ek (n ) (20.53)
k =0
gdzie współczynniki ck należy wyznaczyć na podstawie znajomości {a1, a2, ..., aN, b1, b2, ...,
~
bM}. Transmitancja układu (20.52) jest równa (X(z) = EN(z), E0 ( z ) = E0 ( z ) ):
M
~
Y (z)
~ M
E ( z) M
~
E k ( z ) E0 ( z ) M
~ 1
∑ ck Ak ( z )
H ( z) = = ∑ ck k = ∑ ck ~ = ∑ c k Ak ( z ) = k =0 (20.54)
X ( z) k = 0 X ( z) k = 0 E0 ( z) N E ( z ) k =0 AN ( z) AN ( z )
Ak ( z ) = a k 0 + a k1 z −1 + a k 2 z −2 + ... + a kk z − k (20.56)
więc z (20.38b):
~
Ak ( z ) = z − k Ak ( z −1 ) = a k 0 z − k + a k1 z −( k −1) + a k 2 z −( k −2 ) + ... + a kk (20.57)
M M k
∑ bk z −k = ∑ ck ∑ a ki z −(k −i ) (20.58)
k =0 k =0 i =0
Z porównania współczynników takich samych potęg zmiennych z otrzymujemy:
M
bk = ∑ c j a j( j − k ) , k = 0, 1, 2, ..., M (20.59)
j =k
lub (aj0 = 1)
M
bk = ck + ∑ c j a j( j − k ) , k = 0, 1, 2, ..., M (20.60)
j = k +1
czyli
M
c k = bk − ∑ c j a j( j − k ) , k = M , M − 1, ..., 2, 1, 0 (20.61)
j = k +1
Przykład 1
Załóżmy, że chcemy zrealizować w postaci kratowej dwa filtry postaci:
H 1 ( z ) = A( z ) , H 2 ( z ) = 1 / A( z )
gdzie:
( )( )(
A( z ) = 1 − 0,8 jz −1 1 + 0,8 jz −1 1 − 0,9 z −1 = )
= 1 − 0,9 z −1 + 0, 64 z −2 − 0,576 z −3 = a30 + a31 z −1 + a32 z −2 + a33 z −3
Przykład 2
Chcemy teraz znaleźć wersję kratową filtra o transmitancji:
Projekt LPC-10: kompresja sygnału mowy − metody zaawansowane 589
a)
y(n)
e0 (n ) e1 (n) e2 (n) e3 ( n )
y(n)
−0,6728 +0,182 −0,576
−0,6728 +0,182 −0,576
x(n)
−1 −1
z z z−1
~
e0 ( n ) ~
e1 (n ) ~
e2 ( n ) ~
e3 ( n )
b)
x(n) y(n)
e3 ( n ) e2 ( n ) e1 (n ) e0 ( n )
x(n) y(n)
−0,576 0,182 −0,6728
Rys. 20.4. Filtry klasyczne i kratowe typu FIR (a) i IIR (b) z przykładu 1
x(n) 1 y(n)
0,9 z−1 3
−0,64 z−1 3
0,576 z−1 1
e3 ( n ) e2 ( n ) e1 (n ) e0 ( n)
x(n)
−0,576 0,182 −0,6728
0.6728
y(n)
1 + 3z −1 + 3z −2 + z −3 b0 + b1 z −1 + b2 z −2 + b3 z −3
H ( z) = −1 −2 −3
=
1 − 0, 9 z + 0, 64 z − 0, 576 z 1 + a31 z −1 + a32 z −2 + a33 z −3
Tab. 20-3. Program napisany w języku Matlab do: 1) przeliczania współczynników bm i ak transmitancji
H(z) klasycznego filtra cyfrowego na współczynniki cm i γk jego wersji kratowej, 2) filtracji sygnałów za
pomocą struktur kratowych
e0(1)=x(n);
for k=1:P
e0(k+1) = e0(k)-g(k)*e1(k);
e1n(k+1) = -g(k)*e0(k)+e1(k);
end
e1=[ x(n) e1n(2:P) ];
y1(n)=e0(P+1);
end
% Filtracja „kratowa”
% „tylko bieguny” (rys. 20.2 i 20.4b): H2(z)= 1 / [1 -0.9 0.64 -0.576 ]
% „zera i beguny” (rys. 20.3 i 20.5) : H3(z)= [ 1 3 3 1 ] / [1 -0.9 0.64 -0.576 ]
e1=zeros(1,N);
for n=1:Nx
e0(N)=x(n);
for k=N:-1:2
e0(k-1) = e0(k)+g(k-1)*e1(k-1);
e1(k) = -g(k-1)*e0(k-1)+e1(k-1);
end
e1=[ e0(1) e1(2:N) ];
y2(n)=e0(1);
y3(n)=sum(c.*e1(1:N));
end
% Rysunki
plot(y1); title('Sygnał wyjściowy - filtr: tylko zera'); pause
plot(y2); title('Sygnał wyjściowy - filtr: tylko bieguny'); pause
plot(y3); title('Sygnał wyjściowy - filtr: zera i bieguny'); pause
Standard MP3 kompresji dźwięku, w tym muzyki, jest dla wielu Czytelników symbolem postę-
pu technologicznego jaki się dokonał w ostatnich latach w dziedzinie dystrybucji nagrań mu-
zycznych. Celem tego rozdziału jest przybliżenie współczesnych rozwiązań z zakresu analizy
i przetwarzania sygnałów, stosowanych w nowoczesnych kodekach (koderach i dekoderach)
dźwięku. Przedstawiono w nim algorytmy MP1, MP2 i MP3 standardu MPEG-1 audio na szer-
szym tle wszystkich standardów z rodziny MPEG (MPEG-1, 2, 4 i 7). Ponieważ kompresja
dźwięku polega na „oszukiwaniu uszu” odbiorcy, podstawową rolę odgrywa w niej model psy-
choakustyczny percepcji dźwięku przez człowieka, podpowiadający które częstotliwości moż-
na usunąć z nagrania bez pogorszenia subiektywnej oceny jakości odsłuchu. Z tego powodu
szczególną uwagę w tym rozdziale poświęcono modelowaniu zjawisk psychoakustycznych,
zachodzących w ludzkim narządzie słuchu i dotyczących efektu maskowania jednych często-
tliwości przez drugie, które jest powszechnie stosowane we współczesnych standardach kom-
presji sygnału audio. Ponieważ jest to modelowanie złożone, z konieczności jego opis jest nie-
pełny i skrótowy, ale za to − miejmy nadzieję − bardziej przystępny. W tym miejscu autor
chciałby przeprosić znawców tematu za wszystkie irytujące ich uproszczenia, poczynione
w opisie zjawisk psychoakustycznych, ale zagadnienie to znacznie wykracza poza główny nurt
jego zainteresowań.
Niniejszy rozdział stanowi bardzo ważne zastosowanie rozważań matematycznych przeprowa-
dzonych w rozdziale 18 i poświęconych zespołom filtrów. Stanowi on piękny przykład tego
czym tak naprawdę jest „cyfrowe przetwarzanie sygnałów”, mające początek w rozważaniach
matematycznych, w tym przypadku dotyczących teorii filtrów cyfrowych i psychoakustyki,
a koniec w misternej pajęczynie bardzo wielu linii kodu p r o g r a m u , napisanych dla dowolne-
go procesora (komputera) i przez niego wykonywanych.
Nie łudź się Czytelniku, że znajdziesz w tym rozdziale odpowiedzi na wszystkie nurtujące Cię
pytania. Na pewno tak się nie stanie! Współczesne standardy kompresji dźwięku to labirynt
wielu współpracujących ze sobą metod analizy i przetwarzania sygnałów oblanych pikantnym
sosem tysięcy wartości liczbowych umieszczonych w tabelach i związanych przede wszystkim
z właściwościami narządów słuchu oraz mechanizmami percepcji dźwięku przez człowieka.
Zgubić się w nim nie jest trudno. Obiecuję jednak, że lektura następnych kilkudziesięciu stron
pozwoli Ci zrozumieć istotę stosowanych rozwiązań, a dołączone programy komputerowe po-
mogą w sposób poglądowy wniknąć w typowy gąszcz szczegółów.
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 593
Ponieważ zagadnienia opisywane w tym rozdziale są ze sobą wzajemnie powiązane, autor miał
pewien dyskomfort, gdyż musiał dokonywać wyboru kolejności prezentacji materiału ze świa-
domością, że wybór ten zawsze będzie miał słabe strony. Ostatecznie postanowił zacząć od
krótkiego wprowadzenia do standardu MPEG audio, następnie przedstawić podstawy modelo-
wania psychoakustycznego oraz dwa konkretne modele psychoakustyczne, wykorzystywane
w standardzie, a zakończyć kompletnym opisem zespołów filtrów, stosowanych na poziomach
MP1, MP2 i MP3, ich powiązaniem z modelowaniem psychoakustycznym, oraz kompletnym
opisem algorytmu i programu kodera-dekodera dźwięku poziomu MP2.
Kolejnym krokiem rozwojowym była norma MPEG-4 [ISO98] wydana w roku 1998. W swo-
ich zamierzeniach miała ona dotyczyć wysokowydajnej kompresji dla zastosowań wymagają-
cych bardzo małych przepływności bitowych około 64 kilobity na sekundę, np. wideotelefonii.
W jej rezultacie powstała jednak grupa bardzo efektywnych, skalowalnych algorytmów kom-
presji i dekompresji filmów, zwanych profilami, która może być z powodzeniem stosowana
w szerokim zakresie przepływności bitowych od 10 kilobitów do ponad 1 megabita na sekun-
dę. Na ich podstawie powstały popularne dekodery i kodery komputerowe, np. DivX i XviD,
w których wykorzystano początkowo profil najprostszy (SP − Simple Profile), potem bardziej
zaawansowany (ASP − Advanced Simple Profile), a obecnie coraz częściej także model naj-
wyższy (AVC − Advanced Video Coding), który będzie w przyszłości wykorzystywany do za-
594 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
pisu płyt DVD drugiej generacji (HD DVD − High Density/Definition DVD) oraz do dystry-
bucji telewizji internetowej.
W warstwie audio standard MPEG-4 między innymi zawiera:
− parametryczny koder mowy dla bardzo małych przepływności bitowych (od 2 do 9,6 kilobita
na sekundę);
− koder mowy CELP (Code Excited Linear Prediction) dla przepływności bitowych z zakresu
od 4 do 24 kilobitów na sekundę, wykorzystujący metodę liniowej predykcji oraz pobudzenie
filtra traktu głosowego wektorem z książki kodowej;
− czasowo-częstotliwościowy (TF − Time-Frequency) koder sygnału audio o przepływności
bitowej od 8 do 64 kilobitów na sekundę, stanowiący rozwinięcie kodera AAC ze standardu
MPEG-2;
− narzędzia do automatycznej zamiany tekstu pisanego na mowę (TTS − Text to Speech), wy-
korzystywane w prezentacjach multimedialnych.
Kodowany sygnał dźwiękowy może być spróbkowany z częstotliwością 8; 11,025; 12; 16;
22,05; 24; 32; 44,1; 48; 64; 88,2 lub 96 kiloherców oraz skwantowany w amplitudzie za po-
mocą przetwornika A/C maksymalnie 24-bitowego. Kompresować można maksymalnie dźwięk
8-kanałowy (standard 7.1 − siedem głośników kierunkowych i jeden subwoofer). Obecnie są
prowadzone intensywne prace nad uzupełnieniem kodera TF standardu MPEG-4 o bezstratne
kodowanie sygnału błędu, tzn. różnicy pomiędzy sygnałem oryginalnym a zdekompresowa-
nym. W wyniku tego otrzymuje się w całości bezstratny koder sygnału audio dedykowany do
zastosowań studyjnych lub audiofilskich.
a) ton maskujący
b) ton maskujący
ton zamaskowany ton zamaskowany
ton niezamaskowany ton niezamaskowany
fm f3
f2
f f1 t
fm tm
Absolutny próg słyszalności. Chociaż człowiek potrafi usłyszeć dźwięki różniące się ponad
milion razy intensywnością (różnica około 130 decybeli), to jednak poniżej pewnego poziomu
głośności zwanego absolutnym progiem słyszenia nie słyszy nic. Próg ten zależy od często-
tliwości i może być aproksymowany za pomocą poniższej zależności [Czyż98]:
−0,8
Tabs ( f kHz ) = 3,64 ⋅ f kHz ( )
− 6,5 ⋅ exp −0,6 ⋅ ( f kHz − 3,3) 2 + 0,001 ⋅ f kHz
4
(21.1)
596 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
w której fkHz oznacza częstotliwość wyrażoną w kilohercach. Kształt zależności (21.1) jest po-
kazany na rysunku 21.2. Krzywa absolutnego progu słyszalności jest przykładem tzw. izokon-
turu (izolinii) stałej głośności. Wyznacza się ją w ten sposób, że ustala się referencyjny poziom
ciśnienia dźwięku o częstotliwości 2 herców na granicy słyszalności przez człowieka, a na-
stępnie zmienia się częstotliwość i poziom ciśnienia akustycznego tak, aby cały czas być na
tym progu. Następnie dzieli się tak wyznaczony poziom ciśnienia przez poziom referencyjny
i wynik wyraża w decybelach. W akustyce poziom ciśnienia dźwięku definiuje się w sposób
względny jako 20log10(p/p0) decybeli, gdzie p0 jest ciśnieniem odniesienia równym 20 mikro-
paskali [Panu01].
Pasma krytyczne. Podstawową rolę w psychoakustyce odgrywa pojęcie tzw. podpasma kry-
tycznego [Czyż98], związanego z selektywnością częstotliwościową błony podstawnej. Pod-
pasmo krytyczne jest względną miarą częstotliwościowej rozdzielczości ludzkiego aparatu słu-
chowego i jest definiowane w różny sposób. P o p ierwsze, jako elementarne pasmo często-
tliwości o szerokości ∆f i środku f0, charakteryzujące się tym, że moc akustyczna zawartego
w nim szumu jest równa mocy akustycznej to nu p r o stego (sygnału sinusoidalnego) o czę-
stotliwości środkowej f0. Wyznaczanie pasm krytycznych przeprowadza się w ten sposób, że
generuje się sygnał będący sumą tonu prostego o zadanej głośności, czyli sinusoidy o często-
liwości f0, oraz maskującego go szumu o stałej, zadanej gęstości widmowej mocy w przedziale
( f0 − ∆f/2, f0 + ∆f/2). Systematycznie zwiększa się szerokość widma szumu (∆f ), czyli moc
szumu, aż do osiągnięcia wartości krytycznej, dla której badana osoba przestaje słyszeć ton
prosty. P o d ru g ie, jako graniczna szerokość ∆f pasma częstotliwościowego szumu białego
o mocy równomiernie rozłożonej w osi częstotliwości, dla której głośność szumu pozostaje
ciągle na tym samym poziomie. Po jego przekroczeniu szum jest odbierany jako głośniejszy.
Wykorzystując pojęcie pasma krytycznego wprowadzono percepcyjną jednostkę dźwięku,
czyli jeden bark odpowiadający szerokości pojedynczego pasma krytycznego, przy założeniu
podziału całego zakresu słyszalności na 25 podpasm. Zależność pomiędzy częstotliwością
f wyrażoną w kilohercach a numerem pasma krytycznego b, podanym w barkach i zmieniają-
cego się od 0 do 24, może być przybliżona następującym wzorem [Czyż98]:
Z kolei powiększanie się szerokości pasm krytycznych wraz z częstotliwością jest opisane rów-
naniem:
( )
0,69
∆f Hz = 25 + 75 ⋅ 1 + 1, 4 ⋅ ( f kHz )2 (21.4)
120 25
100
20
80
Tabs [dB]
b [bark]
60 15
40 10
20
5
0
-20 0
0 2 4 6 8 10 12 14 16 18 0 5 10 15 20 25
f [kHz] f [kHz]
Rys. 21.2. Absolutny próg słyszenia w funkcji Rys. 21.3. Zależność numeru pasma krytycz-
częstotliwości nego od częstotliwości
7 0
6
-50
5
∆f [kHz]
-100
Β [dB]
4
3 -150
2
-200
1
0 -250
0 5 10 15 20 25 -10 -5 0 5 10 15 20
f [kHz] ∆b [bark]
Rys. 21.4. Zależność szerokości pasm krytycz- Rys. 21.5. Rozkład energii odkształcenia wzdłuż
nych od częstotliwości błony podstawnej w wyniku pobudzenia tonowe-
go, czyli tzw. funkcja „rozszerzająca”
Funkcja B(∆b) jest nazywana funkcją „rozszerzającą” (spreading function) wpływ pobudzenia
akustycznego na sąsiednie pasma krytyczne. Jej kształt, przedstawiony na rysunku 21.5, jest
kluczem do zrozumienia efektu maskowania jednych częstotliwości przez drugie, który zacho-
dzi w ludzkim uchu. Wytłumaczono go na rysunku 21.6. Załóżmy, że pobudzenie akustyczne
E(k), oznaczone za pomocą „u”, wystąpiło w k-tym paśmie krytycznym. Powoduje ono reakcję
błony podstawnej w sąsiedztwie tego pasma (nachylenie S1(k) poniżej pasma numer k oraz
S2(k) powyżej niego). Próg maskowania T(k) innych częstotliwości przez pobudzenie E(k) leży
poniżej tego pobudzenia o O(k) decybeli. Z progiem T(k) są także związane zbocza S1(k)
i S2(k), które razem z nim definiują trójkąt, zaznaczony kolorem ciemnoszarym, określający na-
tężenia częstotliwości maskowane przez pobudzenie E(k). Dla przykładu na rysunku zaznaczo-
no: linią przerywaną jeden z tonów zamaskowanych (dodatkowo przekreślony) oraz linią ciąg-
łą jeden z tonów niezamaskowanych.
E(k)
zbocze zbocze
S1(k) O(k) S2(k) pobudzenie
błony
T(k) podstawowej
próg
maskowania
α1 α2 b [bark]
W skali barków kształt wychylenia błony podstawnej oraz kształt progów maskowania jest opi-
sany liniami prostymi, mającymi tangensy kątów nachylenia równe tg(α1) = S1(k) i tg(α2) =
= S2(k). Nachylenia S1(k) i S2(k) zboczy są zdefiniowane równaniem:
S1 (k ) = 31
(21.6)
S2 (k ) = 22 + min ( 0, 23 / f kHz ,10 ) − 0, 2 EdB (k )
w którym EdB(k) jest poziomem głośności pobudzenia (decybele), a fkHz oznacza jego częstotli-
wość (kiloherce). Z kolei przesunięcie (offset) pomiędzy poziomem pobudzenia a progiem
maskowania jest równe:
O (k ) = α(k ) ⋅ (14,5 + k ) + (1 − α( k )) ⋅β(k ) (21.7)
gdzie α(k) i β(k) oznaczają, odpowiednio, indeks tonalności oraz indeks maskowania w k-tym
paśmie krytycznym (często przyjmuje się β(k) = 5,5):
Występująca w (21.8) miara płaskości widmowej SFM (Spectral Flatness Measure) w k-tym
paśmie krytycznym jest zdefiniowana jako:
Nk 1/ N
k
∏ | X k (l ) | 2
l =1
SFM ( k ) = 10log10 Nk
(21.10)
1
∑ | X k (l ) | 2
N k l =1
gdzie wartości Xk(l ), l = 1...Nk, oznaczają prążki dyskretnej transformaty Fouriera iloczynu
sygnału pobudzenia i funkcji okna, np. Hanninga, leżące w k-tym paśmie krytycznym. Jest ona
równa wyrażonej w decybelach wartości ilorazu średniej geometrycznej i arytmetycznej próbek
estymaty gęstości widmowej mocy sygnału pobudzenia, leżących w k-tym paśmie krytycznym.
Miara płaskości widmowej pozwala nam zidentyfikować naturę sygnału maskującego i dobrać
w zależności od tego odpowiednią wielkość przesunięcia O(k) (21.7). Jeśli widmo jest płaskie,
to znaczy, że sygnał ma charakter szumowy: wówczas offset (21.7) jest mały, gdyż szum bar-
dzo łatwo maskuje składowe tonowe. Odwrotnie, jeśli widmo jest prążkowe, to sygnał jest su-
mą niezmieniających się tonów (sinusoid). Ponieważ tony muszą być o wiele głośniejsze, aby
zamaskować szum, offset (21.7) w takim przypadku jest duży. Dodatkowo, jeśli wiemy, że syg-
nał jest szybkozmiennym szumem, to powinniśmy przetwarzać tylko jego krótkie fragmenty,
w przeciwnym zaś przypadku możemy jednorazowo analizować jego dłuższe odcinki. Z tego
powodu miara płaskości widmowej służy także do wyznaczania entropii percepcyjnej, wyko-
rzystywanej do przełączania odpowiedzi impulsowych w drugim zespole filtrów poziomu MP3
standardu MPEG-1.
Przykładowy program komputerowy. Na podstawie zależności przedstawionych powyżej zos-
tał napisany prosty program komputerowy, przestawiony w tabeli 21-2, którego celem jest de-
monstracja opisanych powyżej zależności i zjawisk psychoakustycznych. Należy podkreślić, że
stanowi on duże uproszczenie i ma przede wszystkim charakter poglądowy, tzn. bardziej jakoś-
ciowy niż ilościowy. W programie jest analizowany sygnał składający się z dwóch tonów pro-
stych o częstotliwościach równych 2500 i 5800 herców oraz amplitudach jednostkowych. Na
rysunku 21.7 są przedstawione uzyskane wyniki analizy: po lewej stronie zależności często-
tliwościowe wyrażone w hercach, a po prawej − w barkach. Na rysunku 21.7a jest pokazana
estymata gęstości widmowej mocy analizowanego sygnału. Na rysunku 21.7b liniami przery-
wanymi są zaprezentowane oddzielne krzywe pobudzenia błony podstawnej Ek, związane
z oddzielnymi tonami, natomiast liniami ciągłymi − wynikające z nich progi maskowania.
Z kolei na rysunku 21.7c pokazano sumaryczny próg maskowania, będący sumą wszystkich
progów maskowania od pobudzeń oraz absolutnego progu słyszenia (21.1), przedstawionego
na rysunku 21.2. Różnica krzywych z rysunków a i c jest równa stosunkowi sygnału do progu
maskowania SMR (Signal to Mask Ratio). Informuje nas ona o percepcyjnej istotności akus-
tycznej poszczególnych składników częstotliwościowych analizowanego sygnału.
Dalsze szczegóły modelowania psychoakustycznego przedstawiono w następnym podrozdzia-
le, poświęconym opisowi modeli psychoakustycznych stosowanych w standardzie MPEG-1/2
audio.
600 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
a) 100 100
75
10log(|X(f)|2) [dB]
10log(|X(f)|2) [dB]
50 50
25
0 0
-25
-50 -50
0 5 10 15 20 25 0 5 10 15 20 25
f [kHz] f [bark]
b) 100 100
75
50
Ek, Tk [dB]
Ek, Tk [dB]
50
25
0 0
-25
-50 -50
0 5 10 15 20 25 0 5 10 15 20 25
f [kHz] f [bark]
c) 100 100
75
50 50
Tsum [dB]
Tsum [dB]
25
0 0
-25
-50 -50
0 5 10 15 20 25 0 5 10 15 20 25
f [kHz] f [bark]
d) 50 50
25 25
SMR [dB]
SMR [dB]
0 0
-25 -25
-50 -50
0 5 10 15 20 25 0 5 10 15 20 25
f [kHz] f [bark]
Rys. 21.7. Uproszczony przykład analizy sygnałów i modelowania psychoakustycznego: a) estymata funkcji
gęstości widmowej mocy analizowanego sygnału, składającego się z dwóch tonów prostych o częstotliwo-
ściach 2,5 oraz 5,8 kHz, b) oddzielne krzywe pobudzenia błony podstawnej Ek (linie przerywane), związane
z poszczególnymi tonami, oraz wynikające z nich progi maskowania (linie ciągłe), c) suma wszystkich pro-
gów maskowania od pobudzeń oraz absolutnego progu słyszenia (21.1), d) różnica krzywych z rysunków
a) i c)
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 601
% Parametry analizy
fpr = 44100; % częstotliwość próbkowania
Nfft = 1024; % liczba próbek FFT
Nfft2 = 513; % liczba próbek uwzględnianych
% =============================
% Przykład analizy rzeczywistego sygnału
% =============================
% Parametry
fm = [ 2500 5800]; % częstotliwości sinusoidalnych sygnałów pobudzających w [Hz]
am = [ 1 1]; % ich amplitudy
Em = 2^15*am; % amplitudy po przeskalowaniu
EmdB = 20*log10( Em ); % amplitudy w decybelach, używane w (21.6)
Nmask = length(fm); % liczba sygnałów pobudzających
fmkHz = fm/1000; % ich częstotliwości wyrażone w kilohercach
bm = 13*atan(0.76*fmkHz) + 3.5*atan((fmkHz/7.5).^2); % przeliczenie kHz na skalę Bark
% Generacja sygnału
N = Nfft; dt=1/fpr; t=(0:N-1)*dt;
x = zeros(1,N);
for k = 1 : Nmask
x = x + am(k)*sin(2*pi*fm(k)*t);
end
plot(x); title('sygnał x(n)'); grid; pause
% Okno
h = sqrt(8/3) * hanning(N,'periodic'); h = h';
602 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
% =====================================
% Krzywe pobudzenia i maskowania w skali hercowej
% =====================================
E = zeros(Nmask,Nf); EdB = zeros(Nmask,Nf); % macierz wektorów reakcji błony
Esum = zeros(1,Nf); Tsum = zeros(1,Nf); % sumaryczne: pobudzenie i próg maskowania
% Obliczenie SMR
SMR = XdB - TsumALLdB;
plot(f, SMR); title('Funkcja SMR [dB])'); xlabel('f [Hz]'); grid; pause
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 603
Drugi model psychoakustyczny standardu MPEG charakteryzuje się mniejszą złożonością obli-
czeniową oraz jest bardziej elastyczny w użyciu, gdyż w prostszy sposób można go dosto-
sować do różnych poziomów kodowania. W inny, uproszczony sposób uwzględnia się w nim
efekt maskowania częstotliwościowego poprzez modelowanie s u m a r y c z n e g o wychylenia
błony podstawnej przewodu ślimakowego w różnych miejscach. Przyjmuje się, że sumaryczne
pobudzenie E(k) błony podstawnej w dowolnym, k-tym paśmie krytycznym zależy od mocy
wszystkich sygnałów dźwiękowych S(l) = X 2(l ), które wystąpiły w dowolnym z podpasm
(l = 1, 2, 3, ..., K ). Sygnały te wpływają na pobudzenie w k-tym podpaśmie poprzez funkcję
„rozszerzającą” B(∆b), zdefiniowaną wzorem (21.5) i przedstawioną na rysunku 21.5. Przy
założeniu liniowości układu obowiązuje zasada superpozycji, tzn. wypadkowe pobudzenie E(k)
błony w k-tym podpaśmie krytycznym jest sumą pojedynczych pobudzeń El (k), pochodzących
od poszczególnych sygnałów dźwiękowych:
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 605
a) 100
80
60
[dB]
40
20
-20
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
b) 100
80
60
[dB]
40
20
-20
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
c) 100
80
60
40
[dB]
20
0
-20
-40
-60
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
Rys. 21.8. Przykład zastosowania modelu psychoakustycznego numer I do analizy sygnału, składającego się
z dwóch składowych sinusoidalnych o częstotliwościach 2,5 i 5,8 kHz i jednostkowych amplitudach. Rysu-
nek a): funkcja gęstości widmowej mocy sygnału (linia ciągła), progi maskowania związane z jego dwiema
składowymi (linie przerywane; skokowe zmiany ich wartości wynikają z uproszczeń obliczeniowych, które
nie prowadzą do błędnych wyników końcowych analizy) oraz bezwzględny próg słyszenia (linia kreska-kro-
pka). Rysunek b): całkowity próg maskowania (linia ciągła), będący sumą progów składowych z poprzednie-
go rysunku (linie przerywane i linia kropka-kreska), oraz minimalny próg maskowania (linia ciągła z czarymi
kwadratami „” ). Rysunek c): całkowity poziom dźwięku w 32 kanałach częstotliwościowych (białe kółka
„|”), minimalny próg maskowania (czarne kwadraty „” ) w tych kanałach oraz ich różnica, czyli stosunek
sygnału do minimalnego progu maskowania SMR (czarne kółka „z”)
606 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
a) 100
80
60
[dB]
40
20
-20
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
b) 100
80
60
[dB]
40
20
-20
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
c) 100
80
60
40
[dB]
20
-20
-40
0 2 4 6 8 10 12 14 16 18 20 22
f [kHz]
Rys. 21.9. Przykład zastosowania modelu psychoakustycznego numer I do analizy nagrania kwartetu smy-
czkowego. Oznaczenia na rysunku 21.9a: „T”− składowa tonowa, „V” − składowa tonowa uznana za nie-
istotną, „” − składowa nietonowa, „ ” − składowa nietonowa uznana za nieistotną. Pozostałe oznaczenia
jak na rysunku 21.8. W celu zwiększenia czytelności rysunków a) i b) zaznaczono na nich linią przerywaną
progi maskowania związane tylko z d wiema składowymi sygnału (podobnie jak poprzednio skokowe
zmiany ich wartości wynikają z uproszczeń obliczeniowych, które nie prowadzą do błędnych wyników koń-
cowych analizy)
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 607
K K
E ( k ) = ∑ El (k ) = ∑ B( k − l ) S ( l ) (21.11)
l =1 l =1
Wartość funkcji „rozszerzającej” zależy tylko od różnicy indeksów k oraz l: B(∆b) = B(k − l).
Rówanie (21.11) jest równaniem splotu. Zapisując go dla wszystkich pasm krytycznych otrzy-
mujemy następujące równanie macierzowe:
Algorytm generacji wartości elementów macierzy B(k, l) funkcji „rozszerzającej” jest podany
w normie MPEG-1 audio [ISO91].
W tym miejscu należy zwrócić uwagę na jeden bardzo istotny szczegół, łatwo umykający uwa-
dze podczas pobieżnej lektury tekstu ww. normy. Widmo analizowanego sygnału jest w niej
dzielone na podpasma krytyczne, a potem dodatkowo na tercje (3 części zawierające po 1/3
pasma) jeśli jest to możliwe. W związku z powyższym elementarne, analizowane pasma czę-
stotliwościowe składają się w normie albo z jednego prążka widma FFT albo z większej liczby
prążków, przypadających na kolejne tercje (1/3 całości) wszystkich pasm krytycznych, zdefi-
niowanych w tabeli 21-1. Wygrywa wartość większa. Wartości graniczne tych pasm można ob-
liczyć albo odczytać z tabel, znajdujących się w normie. W tabelach dla każdej częstotliwości
próbkowania są podane wartości następujących parametrów dla każdego podpasma kry-
tycznego (indeks podpasma b − od bark):
b numer pasma częstotliwościowego (tercjowego, czyli BARK-1/3),
ωlowb i ωhighb numery prążków FFT, odpowiadające najniższej i najwyższej częstotliwości,
leżącej w podpaśmie b,
bvalb częstotliwość środkowa każdego pasma, wyrażona w skali bark,
minvalb dolny limit odstępu sygnału od szumu (SNR) w każdym paśmie, decydujący
o zjawisku „odmaskowywania” w przypadku sygnałów stereo,
TMNb stałe maskowania wąskopasmowego szumu przez ton (Tone-is-Masking
Noise) w każdym paśmie.
Dla każdej częstotliwości próbkowania dokonywany jest inny podział na „robocze” podpasma
częstotliwościowe. Maksymalna wartość indeksu b jest dla nich różna.
Przypomnijmy także (patrz rozdział 18.6 i rysunek 18.2b dla M = 32, oraz rozdział 21.4 i ry-
sunek 21.15), że analizowany sygnał dźwiękowy jest rozkładany (dekomponowany) w standar-
dzie MPEG na 3 2 sygnały p o d p a smo we przez zestaw 32 równocześnie pracujących
filtrów pasmowoprzepustowych. Zadaniem modelu psychoakustycznego jest dostarczenie do
procedury alokacji bitów potrzebnej informacji o percepcyjnej istotności tych sygnałów.
W tabelach normy są podane następujące parametry związane z p r zyp o r ząd ko wa niem
p r ążkó w wid ma FFT do poszczególnych 32 kanałów częstotliwościowych i związanych
z nimi sygnałów podpasmowych, które są w rzeczywistości kodowane (indeks n = 1, 2, 3, ...,
32 to numer kanału i jednocześnie sygnału podpasmowego):
608 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
2 π(i − 0,5)
xw (i ) = x(i ) ⋅ h(i ), h(i ) = 0,5 − 0,5cos (21.13)
1024
oraz obliczenie 1024-punktowej szybkiej transformaty Fouriera FFT wynikowego sygnału:
jej modułu rω i fazy fω (w przypadku algorytmu MP3 krótsze, 256-punktowe okno może być
zastosowane, jeśli aktywne jest przełączanie okien).
3) Wyznaczenie prognozy modułu r̂ω i fazy fˆω transformaty na podstawie ich wartości z dwóch
poprzednich 1024-punktowych bloków danych, indeksowanych jako t−1 i t−2:
Przyjęte w (21.14) oznaczenie fazy jest nieco mylące, gdyż zbyt się kojarzy z częstotliwoś-
cią, ale takie właśnie jest stosowane w standardzie.
4) Obliczenia miary nieprognozowalności widmowej cω zdefiniowanej jako:
cω = (21.15)
rω + | rˆω |
bmax ecbb
ecbb = ∑ B(bvalb , bvalbb ,) ⋅ ebb , enb = bmax
(21.17a,b)
bb =1
∑ B(bvalb , bvalbb )
bb = 0
bmax ctb
ctb = ∑ B(bvalb , bvalbb ) ⋅ cbb , cbb =
ecbb
(21.18a, b)
bb =1
SNRb = max {minvalb , ( tbb ⋅ TMN b + (1 − tbb ) ⋅ NMTb )}, NMTb = 5,5 dB (21.20)
gdzie NMTb oznacza stałą maskowania tonu przez szum wąskopasmowy (Noise is Masking
Tone) w podpaśmie b.
9) Przeliczenie współczynnika SNRb ze skali decybelowej na skalę liniową i otrzymanie w ten
sposób wymaganego stosunku współczynnika mocy w każdym podpaśmie:
{
thrω = max nbω , 10absthrω /10 } (21.24)
13) Wyznaczenie stosunku sygnału do wypadkowego progu maskowania (Signal to Mask Ra-
tio) dla każdego z 32 kanałów częstotliwościowych, określonych przez odpowiedni filtr
zespołu filtrów analizy:
epartn
SMRn = 10 ⋅ log10 , n = 1, 2, 3,..., 32 (21.25)
npartn
610 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
gdzie epartn oznacza energię sygnału, a npartn poziom szumu w n-tym kanale częstotli-
wościowym:
ωhighn
epartn = ∑ rω2 (21.26)
ω=ωlown
ωhighn
if ( widthn = = 1) npartn = ∑ cωrω2
ω=ωlown (21.27)
else { }
npartn = min thrωlown ...thrωhighn ⋅ ( ωhighn − ωlown + 1)
W tabeli 21-3 jest przedstawiona implementacja programowa w języku Matlab opisanego po-
wyżej modelu psychoakustycznego, wykorzystywanego w algorytmach MP1 i MP2 standardu
MPEG-1 audio.
Pozostają jeszcze do omówienia rozszerzenia powyższego modelu, niezbędne do jego zastoso-
wania w schemacie przetwarzania sygnałów stosowanym w algorytmie MP3. W tym przypadku
od modelu psychoakustycznego wymaga się dostarczenia wartości następujących parametrów:
p o p i e r ws z e − informacji pomocnej w przełączaniu długości okna (36 lub 12 próbek)
w drugim zespole filtrów, opartego na transformacji MDCT/IMDCT, p o d r u g i e − współ-
czynników wykorzystywanych do kwantowania 576 sygnałów podpasmowych po drugim zes-
pole filtrów. Mając na uwadze realizację p i e r ws z e g o zadania, w modelu oblicza się wartość
entropii psychoakustycznej (parametr pe) widma fragmentu sygnału, związanej z jego płaskoś-
cią SFM (21.10). Jest ona miarą „ilości” (także rodzaju) zawartej w nim informacji. Dla war-
tości parametru pe przekraczającej wartość progową równą 1800, przyjmuje się, że w widmie
nie zachodzi zjawisko koncentracji informacji (energii) w kilku wyraźnych maksimach, świad-
czących o tonowej strukturze sygnału. Dlatego preferuje się wówczas okno krótkie (12 próbek)
często przesuwane (o 6 próbek), czyli większą rozdzielczość czasową a mniejszą częstotli-
wościową dekompozycji sygnałów wyjściowych z pierwszego zespołu filtrów. Wartości para-
metru pe poniżej progu świadczą natomiast o koncentracji informacji (energii) widma w kilku
(kilkunastu) prążkach oraz tonowym charakterze fragmentu sygnału: jest stosowane wówczas
okno długie (36 próbek) przesuwane z dużym krokiem (18 próbek), czyli jest wybierana lepsza
rozdzielczość częstotliwościowa a gorsza czasowa. Z kolei realizacja zadania d r u g i e g o spro-
wadza się do obliczania zamiast SMR wartości współczynników ratio, które służą do kwanty-
zacji 576 sygnałów podpasmowych, otrzymywanych na wyjściu transformacji MDCT każdego
z 32 głównych kanałów częstotliwościowych (32 razy po 18 próbek).
Przedstawione powyżej różnice funkcjonalne są wymuszone przez zasadniczo inną strukturę
budowy algorytmu MP3 w porównaniu z algorytmami MP1 i MP2. Pociągają one za sobą na-
stępujące zmiany szczegółowe w modelu numerycznym modelu psychoakustycznego:
Z1) Miara nieprognozowalności widmowej cω jest obliczana inaczej. Jej wartości o indeksach:
− od 0 do 5 są wyznaczane jak poprzednio,
− od 206 do 512 są przyrównane do 0,4,
Dla pozostałych indeksów, od 6 do 205, wartości cω są obliczane w specjalny sposób. Wyzna-
cza się mianowicie trzy 256-punktowe transformaty FFT {rω (1), fω (1)}, {rω (2), fω (2)} i {rω (3),
fω (3)}, zaczynając od 257, 257+128 oraz 257+256 próbki w buforze przetwarzanego sygnału.
Stosując następujące podstawienia:
rω = rω (2), f ω = f ω (2), rˆω = 2rω (1) − rω (3), fˆω = 2 f ω (1) − f ω (3) (21.28)
(256)
wykorzystuje się (21.15) do wyznaczenia cω dla 256-punktowego FFT oraz znajduje braku-
jące cω dla 1024-punktowego FFT ze wzoru:
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 611
gdzie x oznacza zaokrąglenie do dołu (najbliższa mniejsza lub równa liczba całkowita). Po-
nieważ wynik 256-punktowego FFT ma czterokrotnie mniej elementów niż 1024-punktowego,
czterokrotnie powiela się wybrane prążki widma krótkiego FFT.
Z2) Elementy macierzy funkcji „rozszerzającej” B( bvalb, bvalbb) są obliczane w nieco inny
sposób (nowa definicja wartości zmiennej tempy w programie z tabeli 21-3).
Z3) Współczynniki maskowania stosowne w (21.20), tonu przez szum oraz szumu przez ton,
mają we wszystkich podpasmach partycji BARK-1/3 stałe wartości, odpowiednio równe:
TMNb = 29 dB oraz NMTb = 6 dB.
Z4) W algorytmie MP3 dokonuje się kontroli echa. Oblicza się w nim wartość progu energe-
tycznego nbb (21.22), którego przekroczenie zapewnia niezamaskowanie dźwięku. Pamięta się
trzy ostatnie wartości nbb dla trzech ostatnich ramek danych (0, −1, −2), włącznie z aktualną
(0), i oblicza się próg maskowania na podstawie równania:
thrb = max {qthrb , min {nbb (0), 2 ⋅ nbb ( −1), 16 ⋅ nbb ( −2)}} (21.30)
gdzie qthrb oznacza próg ciszy, którego wartość jest odczytywana z tabeli.
Z5) Entropia psychoakustyczna pe, wykorzystywana do przełączania zespołu filtrów MDCT
(IMDCT), jest obliczana na podstawie ilorazu progu maskowania thrb (21.30) oraz energii
eb (21.16a) w b-tym podpaśmie (partycji) w skali BARK-1/3, z uwzględnieniem cbwidthb, czyli
liczby prążków 1024-punktowego FFT należących do tej partycji:
thr + 1
pe = −10 ⋅ ∑ cbwidthb ⋅ ln b (21.31)
b eb + 1
Z6) Ostatnim etapem obliczeń jest wyznaczenie współczynników ratio do kwantyzacji próbek
podpasmowych w predefiniowanych zakresach częstotliwościowych (sb = scafactor bands).
W tym celu należy przeliczyć wartości progowe thrb oraz wartości energii eb z zakresów skali
BARK-1/3 (b) na zakresy skali współczynników kwantowania (sb) według następujących wzo-
rów:
bo −1
thrsb = w1 ⋅ thrbu + ∑ thrbx +w2 ⋅ thrbo (21.32)
bx = bu +1
bo −1
esb = w1 ⋅ ebu + ∑ ebx +w2 ⋅ ebo (21.33)
bx = bu +1
w (21.30) uwzględnia się tylko nbb(0) (bez echa) oraz w całym algorytmie korzysta z oddziel-
nych tabel.
Dygresja. Przedstawiony powyżej opis opiera się bezpośrednio na tekście standardu [ISO91].
Jak widać nie należy on do najłatwiejszych do czytania, ale mogę zapewnić, że oryginał jest
znacznie bardziej skomplikowany. Potraktujmy go jako przykład, jedyny w tej książce, tego
jak często może wyglądać jedyna literatura fachowa dostępna dla współczesnego inżyniera:
całe tomy lakonicznej dokumentacji firmowej, bogatej w szczegóły lecz ubogiej w komentarze.
Łatwo się w niej pogubić. Ale często trudno od niej uciec. Podczas korekty tego rozdziału je-
den z kolegów spytał mnie, dlaczego nie spojrzę na tę tematykę ogólniej, „z lotu ptaka”. Nie-
stety nie potrafię, w dziedzinie psychoakustyki nie umiem „latać”. Mimo tego, że w połowie lat
dziewięćdziesiątych ponad rok uczestniczyłem w dużym projekcie, dotyczącym implementacji
na procesorze sygnałowym (w asemblerze) pełnego kodera i dekodera sygnału audio poziomu
MP2. Ale wtedy nie byłem odpowiedzialny za model psychoakustyczny. Moją wiedzę z tamte-
go okresu zaprezentuję w dalszej części tego rozdziału. Bardziej syntetycznie, ale z niezbęd-
nymi szczegółami.
Drogi Czytelniku! Wiem, że wystawiam Cię teraz na kolejną bardzo ciężką próbę, ale jeśli Ci
się wydaje, że można cyfrowo przetwarzać sygnały bez programowania, to się grubo mylisz.
Czeka cię programowanie, programowanie i ... jeszcze raz programowanie. Od rana do wieczo-
ra. Programowanie, czyli pisanie poezji, w której liczy się dyskretny urok i magia kilku strof,
oraz pisanie wielostronicowej prozy, w której w sposób zdyscyplinowany, logiczny i konse-
kwentny masz stworzyć symfonię z pojedynczych liter, słów, zdań, ... Bardzo bym chciał
Czytelniku, abyś został artystą!
Dlaczego tak mówię? Ponieważ w tabeli 21-3 przedstawiono program w języku Matlab im-
plementujący aż na pięciu stronach model psychoakustyczny II standardu MPEG-1 audio.
Może on być zastosowany w algorytmach MP1, MP2 oraz MP3. Dla dwóch pierwszych zawie-
ra wszystkie dane tablicowe niezbędne do kompresji sygnałów dźwiękowych spróbkowanych
z częstotliwościami 32, 44,1 oraz 48 kiloherców. W przypadku algorytmu MP3 kod programu
jest kompletny, ale konieczne jest wczytanie pomocniczych tablic z danymi, znajdujących się
w programach loadMP3long21.m, loadMP3short12.m oraz loadMP3short39.m (do po-
brania ze strony WWW z oprogramowaniem). Dane te usunięto z programu głównego dla czy-
telności i zwartości kodu.
Przyjrzyjmy się bliżej strukturze programu. Ponieważ znaczną część modelu stanowią tablice
z danymi trzeba je wygenerować tylko jeden raz przy pierwszym wywołaniu programu (lub
wczytać jak to jest w przypadku algorytmu MP3), a następnie zapamiętać dla kolejnych wywo-
łań. Do tego celu służy dyrektywa persitent. Przy pierwszym wywołaniu funkcji parametr
PSYinit nie jest zadeklarowany, czyli funkcja isempty() zwraca wartość prawda. Dlatego
program wchodzi w blok inicjalizacji wartości parametrów, w którym także jest wykonywane
podstawienie PSYinit = 1. Powoduje ono, że przy kolejnym wywołaniu funkcji inicjalizacja
jest opuszczana. Podczas inicjalizacji dla algorytmów MP1 i MP2 „odgórnie” są zadane war-
tości tylko trzech tablic: critband, bminval i widthn, opisanych w programie, pozostałe są
generowane dla każdej z trzech częstotliwości próbkowania.
Podczas obliczeń jest wykorzystywanych pięć zakresów przedziałów częstotliwościowych: nu-
mery prążków FFT, zakresy psychoakustycznych pasm krytycznych BARK, zakresy pasm kry-
tycznych z podziałem na tercje, oznaczane jako BARK-1/3, zakresy częstotliwościowe 32 fil-
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 613
trów pierwszego zespołu filtrów (dla MP1 i MP2) oraz zakresy współczynników kwantyzacji
kanałów częstotliwościowych po MDCT (dla MP3).
W tym miejscu należy podkreślić dużą czytelność programu, spowodowaną prostotą zapisu
operacji wektorowo-macierzowych w języku Matlab.
Tab. 21-3. Program w języku Matlab implementujący model psychoakustyczny II standarduMPEG-1 audio
% MP1 i MP2
persistent PSYinit
persistent M BLKSIZE HBLKSIZE window CBlen
persistent critband bminval widthn
persistent delay offs
persistent r r1 r2 f f1 f2
persistent partition numlines cbval wlowb whighb sprdf minval tmn rnorm absthr
persistent nbb_1 nbb_2
% MP3
persistent BLKSIZE_s HBLKSIZE_s window_s CBlen_s SBMAX_l SBMAX_s pe_prog
persistent cbw_l bu_l bo_l w1_l w2_l minval_l qthr_l norm_l numlines_l
persistent cbw_s bu_s bo_s w1_s w2_s qthr_s norm_s snr_s wlowb_s whighb_s
%###########################################################################################
% Inicjalizacja stałych − tylko przy pierwszym wywołaniu funkcji; wartości zapamiętywane dyrektywą persistent
%###########################################################################################
if( isempty( PSYinit) )
switch(poziom)
case 1, delay=576; offs=384;
case 2, delay=480; offs=576;
case 3, delay=768; offs=576; offs_s = 192;
otherwise, disp('Zły numer poziomu'); pause; break;
end
% Oblicz fthr, czyli wartości bark odpowiadające wszystkim prążkom widma FFT
for k = 1:1:HBLKSIZE
fk = (k-1)*dfreq; j = 2;
while( fk > critband(j) ) j = j+1; end
fthr(k) = (j-1) + (fk-critband(j-1))/(critband(j)-critband(j-1)) - 1;
end
% Oblicz wartości minval stosunku sygnału do szumu w podpaśmie, gwarantującego niezamaskowanie dźwięku
% Oblicz wartości TMN (Tone is Masking Noise)
% Oblicz współczynniki normalizujące rnorm dla funkcji "rozszerzającej"
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 615
for kb = 1 : CBlen
k = cbval(kb) + 0.5; minval(kb) = bminval(floor(k)+1);
temp = 15.5 + cbval(kb);
if( temp>24.5 ) tmn(kb) = temp; else tmn(kb) = 24.5; end
rnorm(kb) = 0;
for lb = 1 : CBlen
rnorm(kb) = rnorm(kb) + sprdf(kb,lb);
end
end
%#########################################################################
% ANALIZA
%#########################################################################
k = 1:HBLKSIZE;
if(poziom==3) k0=1:6; k1=7:4:206; k2=207:HBLKSIZE; ks = 3:52;
else k0=1:HBLKSIZE;
end
% Przesunięcie buforów
r2 = r1; r1=r;
f2 = f1; f1=f;
616 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
% kontrola echa
thr = max( qthr_l, min( nbb, min(2.0*nbb_1, 16.0*nbb_2) ) );
nbb_2 = nbb_1; nbb_1 = nbb;
% obliczenie progu thm i energii en w każdym zakresie współczynników skalujących oraz ich ilorazu ratio,
% wykorzystywanego w MP3 do kwantyzacji próbek podpasmowych
en=[]; thm=[]; ratio = [];
if ( pe < pe_prog ) % DŁUGIE BLOKI DANYCH
sb = 1 : SBMAX_l;
thm(sb) = w1_l(sb).*thr(bu_l(sb)) + sum( thr(bu_l(sb)+1 : bo_l(sb)-1 )) ...
+ w2_l(sb).*thr(bo_l(sb));
en(sb) = w1_l(sb).* eb(bu_l(sb)) + sum( eb(bu_l(sb)+1 : bo_l(sb)-1) ) ...
+ w2_l(sb).* eb(bo_l(sb));
ratio = thm./en; % wektor wyjściowy dla MP3
% ###################################
if( poziom = = 2) SMR = max( SMR ); end
% ###################################
Zespoły filtrów były szczegółowo opisane pod względem teoretycznym i programowym w roz-
dziale 18, w szczególności w podrozdziałach 18.5 i 18.6 przedstawiono zespoły z modulacją
kosinusową. Chcąc jednak umożliwić Czytelnikowi korzystanie z tego rozdziału niezależnie
od reszty książki, poniżej jeszcze raz powtórzono wybrane partie materiału w przystępnej
formie.
Na rysunku 18.33 jest przedstawiona L = 512-punktowa odpowiedź impulsowa p(n) nierekur-
sywnego filtra dolnoprzepustowego typu FIR (po lewej stronie) stosowanego w standardzie
MPEG-1 audio, tak zwanego prototypu, oraz jego charakterystyka amplitudowo-częstotliwoś-
ciowa (po stronie prawej). Jej dobrą aproksymatę można uzyskać ze wzoru (18.101). Należy
zwrócić uwagę na fakt, że szerokość pasma przepustowego filtra stanowi dokładnie 1/32 uży-
tecznego pasma częstotliwości, tzn. pasma od 0 do 1/2 częstotliwości próbkowania. Odpo-
wiedź ta jest wymnażana z M = 32 funkcjami kosinusoidalnymi o różnych częstotliwościach
i są otrzymywane odpowiedzi impulsowe filtrów „analizy” hk(n) (k = 0, 1, 2, ..., M−1, n = 0, 1,
2, ..., L−1, M = 32, L = 512):
π L −1 π
hk ( n ) = 2 p (n ) cos (k + 0,5) (n − ) + ( −1)k (21.35)
M 2 4
π L −1 π
g k ( n ) = 2 p(n )cos ( k + 0,5) (n − ) − ( −1)k (21.36)
M 2 4
Wynikowy sygnał audio jest równy sumie wszystkich odtworzonych sygnałów podpasmowych.
W wyniku analizy psychoakustycznej przetwarzanego fragmentu sygnału, która jest przepro-
wadzana w koderze, uzyskuje się dodatkową informację o percepcyjnej istotności poszczegól-
nych sygnałów w poszczególnych kanałach częstotliwościowych. Na jej podstawie przydziela
się ich próbkom różną liczbę bitów, czyli stosuje się dla nich różne poziomy kwantowania.
Niektóre sygnały mogą w ogóle nie być przesyłane.
Program w języku Matlab, implementujący opisany powyżej sposób przetwarzania sygnału
audio za pomocą zespołu filtrów analizy i syntezy, jest przedstawiony w tabeli 18-6, natomiast
620 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
w tablicy 18-7 jest zaprezentowana jego szybka wersja polifazowa, wykorzystująca macierze
modulacji i demodulacji kosinusowej, odpowiednio A i B, o wymiarach M x 2M:
π M
A(k , n ) = 2cos ( k + 0,5) n − , k = 0...M − 1, n = 0...2 M − 1 (21.37)
M 2
π M
B( k , n ) = 2 cos ( k + 0,5) n + , k = 0...M − 1, n = 0...2 M − 1 (21.38)
M 2
„przejściowe”: okno „startu”, związane z przejściem z okna „długiego” na „krótkie”, oraz okno
„stopu”, występujące podczas przejścia z okna „krótkiego” na „długie”. Poniżej są podane
równania wszystkich okien prototypowych (z pominięciem skalowania):
π
− długie: p0 (n ) = sin (n + 1/ 2) , n = 0, 1, 2, ..., 35 (21.40a)
36
π
sin 36 ( n + 1/ 2) , n = 0 ... 17
1, n = 18 ... 23
− start: p1 (n ) = (21.40b)
sin π (n − 18 + 1/ 2) , n = 24 ... 29
12
0, n = 30 ... 35
π
− krótkie: p2 (n ) = sin (n + 1/ 2) , n = 0, 1, 2, ..., 11 (21.40c)
12
0, n = 0 ... 5
π
sin (n − 6 + 1/ 2) , n = 6 ... 11
12
− stop: p3 (n ) = (21.40d)
1, n = 12 ... 17
π
sin (n + 1/ 2) , n = 18 ... 35
36
a) 1 b) 1
0.8 0.8
0.6 0.6
h0(n)
h1(n)
0.4 0.4
0.2 0.2
0 0
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35
n n
c) 1 d) 1
0.8 0.8
0.6 0.6
h2(n)
h3(n)
0.4 0.4
0.2 0.2
0 0
0 1 2 3 4 5 6 7 8 9 10 11 0 5 10 15 20 25 30 35
n n
Rys. 21.10. Kształty okien stosowanych w drugim zespole filtrów MDCT/IMDCT w algorytmie MP3 stan-
dardu MPEG-1 audio. Kolejno okna: a) długie, b) start, c) krótkie, d) stop
pe < 1800
pe ≥ 1800
długie start
pe ≥ 1800
pe < 1800
pe < 1800
stop krótkie
pe ≥ 1800
Rys. 21.11. Diagram stanów algorytmu przełączania okien {długie, start, krótkie, stop} w zespole filtrów
MDCT/IMDCT algorytmu kodera MP3, na podstawie wartości entropii psychoakustycznej pe widma aktual-
nie analizowanego bloku próbek dźwiękowych, wyznaczanej w modelu psychoakustycznym
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 623
y1( i ) ai bi x1(i )
= ⋅ (21.42)
y2( i ) −bi ai x (i )
2
gdzie {x1(i), x2(i)} i {y1(i), y2(i)} odpowiednio oznaczają próbki wejściowe i wyjściowe i-tego
motylka. Współczynniki mnożące ai i bi dla wszystkich motylków wylicza się z zależności;
1 ci
ai = , bi = (21.43)
1 + ci2 1 + ci2
na podstawie wartości ci podanych w tabeli 21-4. Następnie jest wykonywana nieliniowa kwan-
tyzacja próbek podpasmowych oraz ich bezstratne kodowanie entropijne metodą Huffmana,
w którym częściej występującym sekwencjom bitów są przydzielane krótsze kody bitowe
(patrz wprowadzenie do rozdziału 19).
Nr motylka (i) 0 1 2 3 4 5 6 7
Wartość wsp. ci −0,6 −0,535 −0,33 −0,185 −0,95 −0,041 −0,0142 −0,0037
624 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
32
512 t
0 1
kolejne
filtry
pasmowe
fpr/2 32
f 1 6 36
kolejne położenia czasowe
Rys. 21.12. Ilustracja zasady działania pierwszego zespołu filtrów analizy, wykorzystującego tylko jedną
odpowiedź impulsową (dolnoprzepustową) o długości 512 próbek, która jest przesuwana w czasie (dla jed-
nego bloku danych 36 razy po 32 próbki, co daje łącznie 1152 próbki) oraz w częstotliwości (32 razy, po-
przez wymnożenie z funkcjami kosinusoidalnymi o różnych częstotliwościach). Na dolnym rysunku jest po-
kazana szachownica czasowo-częstotliwościowa odpowiadająca realizowanej w ten sposób dekompozycji
sygnału
0 36 36 12 36
1 1 1 1 1 1 1
2
3
kolejne
4 filtry
5 podpasmowe
6
18 18 18 18 1 2 3 4 5 6 18 18
f
kolejne położenia czasowe
Rys. 21.13. Ilustracja zasady działania drugiego zespołu filtrów analizy, połączonego w sposób kaskadowy
z wyjściem każdego filtra pierwszego zespołu. Wykorzystuje on cztery odpowiedzi impulsowe: dwie podsta-
wowe − długą (36 próbek) i krótką (12 próbek) oraz dwie przejściowe: startu i stopu (obie po 36 próbek).
Odpowiedzi podstawowe są przesuwane w czasie (o połowę swojej długości, odpowiednio o 18 i 6 próbek)
oraz w częstotliwości (odpowiednio, 18 i 6 razy), w wyniku modulacji z funkcjami kosinusoidalnymi o róż-
nych częstotliwościach. Na dolnym rysunku jest pokazana szachownica czasowo-częstotliwościowa odpo-
wiadająca realizowanej w ten sposób dekompozycji sygnału. Okno długie jest stosowane dla fragmentów
sygnału o widmie chwilowym mało zmieniającym się w czasie (sygnał tonowy), dla których jest preferowana
lepsza rozdzielczość częstotliwościowa niż czasowa
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 625
zestaw 1
filtrów
drugiego
zespołu
filtr 18 18
pierwszego Hm, 18(f )
zespołu 18
f ym, 18(n)
x(n) Hm(f ) ym(n)
32 entropia
f
Hm, 1(f ) ym, 1(n)
m = 1 ... 32 6
f
1
2
1 2 3 ..................................................................... 36 3
4
f zestaw 2 5
t filtrów
drugiego 6
1 2 3 4 5 6
zespołu
Hm, 6(f )
6
f ym, 6(n)
1 1
M
1
D 2
h1(n) ↓ 32 C
T 3
18
1
M
2
D (i)
Hh32
2(n)
(z) ↓ 32 InvFreq
C
T
18
xwe(n)
(1) (2) (3) .... (8)
1 cs
ai
M
31 x1(i) y1(i)
D
H
h31
32(n)
(z) ↓ 32 C +cai i
+b
T
18 −cai i
−b
1 x2(i) y2(i)
M cs
ai
32 574
D
h32(n) ↓ 32 InvFreq
C 575
T
18 576
Rys. 21.15. Schemat blokowy sekcji analizy (dekompozycji) sygnału w koderze MP3 sygnałów dźwięko-
wych. Oznaczenia: hk(n) − splot z podaną odpowiedzią impulsową filtra pasmowoprzepustowego, „↓M”
− pozostawienie co M-tej próbki, InvFreq − zanegowanie co drugiej próbki, MDCT − zmodyfikowana dys-
kretna transformacja kosinusowa. 1 ... 32 − kanały częstotliwościowe po pierwszym zespole filtrów, 1 ... 576
− kanały częstotliwościowe po drugim zespole filtrów
y1 1 I
M 1
2
D ↑ 32 g1(n)
3 C
18 T
1 I
M 2 (i)
D InvFreq ↑ 32 Hg32
2(n)
(z)
C
18 T
xwy(n)
(1) (2) (3) .... (8)
1 I cs
ai
M 31 y1(i) x1(i)
D ↑ 32 H
g31
32(n)
(z) −b
+cai i
C
T −cai i
+b
18
(i)
1 y2 x2(i)
I
574 32 cs
ai
M
D InvFreq ↑ 32 g32(n)
575
C
576 18 T
Rys. 21.16. Schemat blokowy sekcji syntezy (odtworzenia) sygnału w dekoderze MP3 sygnałów dźwięko-
wych. Oznaczenia: gk(n) − splot z podaną odpowiedzią impulsową filtra pasmowoprzepustowego, „↑M”
− wstawienie M−1 wartości zerowych pomiędzy każde dwie próbki, InvFreq − zanegowanie co drugiej
próbki, IMDCT − odwrotna zmodyfikowana dyskretna transformacja kosinusowa
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 627
odwrotnym do (21.42). Kaskadowe połączenie i-tego motylka kodera i dekodera daje w wy-
niku jednostkową macierz diagonalną:
1 + ci2
0
ai −bi ai bi ai2 + bi2 0 1 + ci2 = 1 0
b ⋅ = =
(21.45)
i ai −bi ai 0 ai2 + bi2 2 0 1
1 + ci
0
1 + ci2
czyli eliminacja redundancji informacji zawartej w wybranych parach kanałów jest bezstratna.
W tablicy 21-5 przedstawiono program komputerowy implementujący opisany powyżej algo-
rytm. Jako ćwiczenie pozostawiamy Czytelnikowi napisanie podprogramu implementującego
serię obliczeń motylkowych.
Tab. 21-5. Program w języku Matlab implementujący sekcję analizy i syntezy kaskadowego połączenia
dwóch zespołów filtrów algorytmu MP3 standardu MPEG-1 audio
% Ćwiczenie: Zespoły filtrów analizy i syntezy sygnału audio, stosowane w kodeku MP3 standardu MPEG-1
% Wartości parametrów
M = 32; % liczba filtrów w pierwszym zespole filtrów
L = 512; % liczba próbek prototypowej odpowiedzi impulsowej w pierwszym zespole filtrów
pe_prog = 1800; % wartość progowa entropii percepcyjnej do przełączania drugiego zespołu
x=[]; y=[]; sb=[]; sbb=[]; pe=[]; typokna=[]; % inicjalizacja
% Sygnał analizowany
if(0) % testowy sygnał syntetyczny: „szum-ton-szum”
fpr = 44100; fx = 25; tmax = 0.3;
dt = 1/fpr; t = 0:dt:tmax;
x = sin(2*pi*fx*t) + 0.3*sin(2*pi*(6*fx)*t);
x = [ x 0.25*(2*rand(1,length(x))-1) x 0.25*(2*rand(1,length(x))-1) ];
x = x/max(x);
else % wczytaj nagranie muzyczne z dysku
[x,fpr,Nb] = wavread('bach44100.wav',3*44100); x=x';
end
Nx = length(x); % liczba próbek sygnału
% KODER MP3
################################################################################
% Wyznaczenie sekwencji przełączeń drugiego zespołu filtrów
for n = 1 : 576 : Nx-1024;
[SMR, pe1, ratio] = MP123psycho( x(n:n+1023), fpr, 3);
pe = [pe pe1]; % zapamiętaj wartość entropii psychoakustycznej widma sygnału
end
628 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
% Motylki antyaliasingowe tylko dla długich bloków: „zrób to sam” (typmotylka = koder, czyli „w przód”)
% b = motylki(b, typokna, typmotylka);
% DEKODER MP3
##############################################################################
% Rozkodowanie strumienia bitów (dekoder Huffmana, nieliniowa rekwantyzacja, odwrotne skalowanie)
% Motylki antyaliasingowe tylko dla długich bloków: „zrób to sam” (typmotylka = dekoder, czyli „do tyłu”)
% b = motylki(b, typokna, typmotylka);
% Synteza sygnałów przez drugi zestaw filtrów (złożenie 32 razy po 18 lub 6 podkanałów częstotliwościowych)
for k = 1:32
a = imdct( b(:,:,k), typokna );
sbb( 1:length(a), k ) = a';
end
% Uporządkowanie linii częstotliwościowych
sbb = invfreq(sbb);
% Synteza sygnału przez pierwszy zestaw filtrów (złożenie 32 kanałów częstotliwościowych)
y = synteza32(sbb, M, L);
% Prezentacja wyników
subplot(211); plot(x,'k'); title('sygnał analizowany');
subplot(212); plot(y,'k'); title('sygnał zsyntezowany'); pause
% Test odsłuchowy
soundsc(xr, fpr), pause % oryginał
soundsc(yr, fpr), pause % kopia
function sb = analiza32(x, M, L)
% 32-kanałowy zespół filtrów analizy
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 629
% Inicjalizacja
load enwindow.dat; pk=enwindow'; % wczytanie okna analizy
n=0:2*M-1; % #
for k=0:M-1 % #
A(k+1,1:2*M) = 2*cos((pi/M)*(k+0.5).*(n-M/2)); % # oblicz macierz polifazową syntezy
end % #
% Zespół filtrów: analiza
sb = []; bx512 = zeros(1,L); % zerowanie
for k = 1 : length(x)/M
bx512 = [ x(k*M:-1:(k-1)*M+1) bx512(1:L-M) ]; % załadowanie 32 nowych próbek do bufora
for m = 1 : 2*M
u(m) = sum( bx512(m:2*M:L).*pk(m:2*M:L) ); % filtracja polifazowa
end
sb32 = A*u'; % modulacja kosinusowa
sb = [sb; sb32']; % dodaj jako kolejny wiersz
end
function y = synteza32(sb, M, L)
% 32-kanałowy zespół filtrów syntezy
% Inicjalizacja
load dewindow.dat; pd=dewindow'; % wczytaj okno syntezy
n=0:2*M-1; % #
for k=0:M-1 % #
B(k+1,1:2*M) = 2*cos((pi/M)*(k+0.5).*(n+M/2)); % # oblicz macierz polifazową syntezy
end % #
MM=2*M; M2=2*M; M3=3*M; M4=4*M; Lp=L/MM; m=0:Lp-1; % Lp = długość składowych polifazowych
% Zespół filtrów: synteza
y=[]; bv=zeros(1,2*L); % zerowanie
ns = length(sb(:,1)); % liczba wierszy równa liczbie widm 32-elementowych
for k = 1 : ns
v = B'*sb(k,1:M)'; % demodulacja kosinusowa
bv = [ v' bv(1:2*L-M2) ]; % wstawienie do bufora
for n = 1 : M % filtracja polifazowa
ys(n) = sum( bv(n+M4*m).*pd(n+M2*m) ) + sum( bv(n+M3+M4*m).*pd(n+M+M2*m) );
end
y = [ y ys ];
end
function wy = invfreq( we )
% uporządkowanie linii częstotliwościowych we właściwej kolejności
for j = 2 : 2 : 32
for i = 2 : 2 : length(we(1,:))
we(i,j) = -we(i,j); % zaneguj parzyste próbki (i) w parzystych podpasmach częstotliwościowych (j)
end
end
wy = we;
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 631
Zespół filtrów. Sposób normalizacji. Zacznijmy od kodera. Sygnał audio wchodzi jednocześ-
nie do 32-kanałowego zespołu filtrów, opisanego w rozdziale 21.4, oraz do modułu modelowa-
nia psychoakustycznego, przedstawionego w rozdziale 21.3. W zespole filtrów w jednej ramce
są przetwarzane 1152 próbki sygnału: na wyjściu każdego z 32 kanałów częstotliwościowych
otrzymujemy po 36 próbek dźwiękowych. Próbki te są następnie dzielone na trzy bloki B1, B2
i B3, po 12 próbek w każdym. Dla każdego bloku jest znajdowana w tabeli 21-6 najmniejsza
wartość współczynnika skalującego, większa od wszystkich próbek bloku (co do modułu). Na-
stępnie na podstawie tablic 21-7 i 21-8 jest podejmowana decyzja, które ze współczynników
skalujących SCF (Scaling Factors) będą wykorzystywane do normowania (podzielenia) war-
tości sygnału w każdym podpaśmie. W tym celu oblicza się dwie różnice indeksów znalezio-
nych współczynników: ∆nr(B12) = nr(B1) − nr(B2) (pierwszy blok minus drugi) i ∆nr(B23) =
= nr(B2) − nr(B3) (drugi blok minus trzeci), oraz przyporządkowuje tym różnicom numer klasy,
od 1 do 5, w sposób zdefiniowany w tablicy 21-7. Następnie na podstawie tablicy 21-8 określa
się, które z trzech współczynników skalujących będą zastosowane do normalizacji i przesyłane
dla różnych kombinacji klas B12 i B23 oraz nadaje się temu wyborowi specjalny kod, od 0 do 3,
znany dekoderowi. Po co to się robi? Chce się uniknąć na przykład sytuacji, w której przesyła
się 3 współczynniki skalujące a można tylko 1 lub 2, gdyż mają one zbliżone wartości. Ozna-
czenie kodowe jest następujące (SCFI − Scale Factors’ Information):
− kod 0: trzy współczynniki,
− kod 1: dwa współczynniki, pierwszy z nich zastosuj dla bloków B1 i B2,
632 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
Alokacja bitów. I co dalej? Następuje „spotkanie po latach”, czyli połączenie się obu, równo-
ległych do tej pory torów przetwarzania sygnału w bloku alokacji bitów. Wiadomo już, które
współczynniki normujące będą przesyłane oraz jaka jest gradacja kanałów podpasmowych pod
względem percepcji dźwięku. Równocześnie jest znana wybrana przez użytkownika przepływ-
ność bitowa pb (liczba kilobitów na sekundę), która przy znajomości częstotliwości próbkowa-
nia sygnału fpr (kiloherce) jednoznacznie określa długość bitową ramki danych, przypadającą
na blok 384 (MP1) lub 1152 (MP2) próbek (w przypadku kodowania dwóch kanałów lub syg-
nału stereo liczba próbek na ramkę ulega podwojeniu). Po wyrażeniu w bajtach długość ramki
danych jest równa:
pb / 8
N ramki = , K = 384 (MP1), K = 1152 (MP2) (21.46a)
f pr / K
lub
pb
N ramki = K ⋅ , K = 12 (MP1), K = 144 (MP2) (21.46a)
f pr
Dla częstotliwości próbkowania fpr = 44,1 kHz wyliczona z (21.46) długość ramki w bajtach
nie jest liczbą całkowitą. Dlatego zaokrągla się ją do dołu i co jakiś czas wysyła się ramkę o je-
den bajt dłuższą, ustawiając odpowiedni znacznik w jej nagłówku (padding bit). Ma to na celu
pełne wykorzystanie „wykupionego” pasma transmisyjnego, np. w przypadku radiostacji cyfro-
wych. Tego rozwiązania nie zaimplementowano jednak w programie przedstawionym w tabeli
21-11, mając na uwadze jego prostą postać. Zadana przepływność bitowa determinuje także
wartość parametru sblimit, określającego numer ostatniego podpasma częstotliwościowego,
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 633
o 36*(5−4) = 36 bitów; problem kodowania kilku próbek dźwiękowych w jednym słowie ko-
dowym będzie wyjaśniony później;
5) odczytanie z szóstej kolumny tabeli 21-10 informacji o nowej wartości współczynnika syg-
nału do szumu SNR dla nowej liczby poziomów kwantyzacji; od aktualnej, maksymalnej war-
tości SMR (w modyfikowanym kanale) należy odjąć przyrost wartości SNR, związany
z przyrostem poziomów kwantyzacji (przykładowo skok w pierwszej kolumnie tabeli 21-10
z wiersza 5 na 6 odpowiada zmianie poziomów kwantyzacji z 15 na 31, a to z kolej prowa-
dzi do przyrostu wartości SNR o 25,28−20,84 = 4,44 decybela i tyle trzeba odjąć od wartości
SMR w modyfikowanym kanale częstotliwościowym);
6) jeśli w wyniku odejmowania bitów w punktach 3) lub 4) zapas wolnych bitów uległ wy-
czerpaniu, alokacja bitów zostaje zakończona, a wyniki działania wszystkich operacji wyko-
nanych w tych punktach − anulowane; w przeciwnym przypadku następuje skok do punktu 2
i ... „karuzela kręci się dalej”.
Ponieważ liczby x, y, z przyjmują tylko wartości: (21.47a) − {0, 1, 2}, (21.47a) − {0, 1, 2, 3,
4} albo (21.47c) − {0, 1, ..., 8}, można z nich utworzyć jedną liczbę zapisaną w systemie po-
zycyjnym odpowiednio o podstawie 3, 5 albo 9, i temu właśnie odpowiada równanie (21.47).
Po wykonaniu grupowania pozostawia się taką liczbę najbardziej znaczących bitów wyniku, ja-
ka widnieje w ostatniej kolumnie tabeli 21-10.
Kodowanie ramki. Ostatnią operacją wykonywaną w koderze jest tworzenie strumienia bitów,
odpowiadającego zakodowanym próbkom dźwiękowym (384 lub 1152 próbki na jeden kanał
dla algorytmu MP1 oraz MP2). Strukturę ramki danych, przedstawioną na rysunku 21.19, o-
mówiono już podczas opisu algorytmu alokacji bitów. Ramka zaczyna się 32-bitowym na-
główkiem. Zaczyna go blok 12 jedynek, który może być wykorzystany podczas synchronizacji
wykonywanej podczas „przewijania” nagrania. Potem występują bity niezbędne dla dekodera
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 635
1 1
2 Model 2
3 psycho-
FFT akustyczny
Rys. 21.17. Schemat blokowy kodera standardu MPEG-1 audio na poziomie MP1 i MP2. Szarym kolorem
zaznaczono rozszerzenia poziomu MP2 w stosunku do MP1. Wejściowy strumień bitów AUDIO: 2*768
kilobitów na sekundę (2 kanały * 16 bitów * 48 kHz), wyjściowy strumień bitów MPEG: od 2*32 do 2*192
kilobitów na sekundę
wsp. C i D
12 12 12
1
Dekodowanie Rekwantyzacja 2
MPEG (C & D) Zespół AUDIO
strumienia Denorma-
Blok 1 Blok 2 Blok 3 filtrów
bitów Rozgrupowanie lizacja
syntezy
(ramki) trójek 32
SCF, SCFI
Rys. 21.18. Schemat blokowy dekodera standardu MPEG-1 audio na poziomie MP1 i MP2. Szarym kolo-
rem zaznaczono rozszerzenia poziomu MP2 w stosunku do MP1
Rys. 21.19. Struktura ramki danych w standardzie MPEG audio na poziomach MP1 i MP2. Szarym kolo-
rem zaznaczono rozszerzenia poziomu MP2 w stosunku do MP1
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 637
Tab. 21-6. Współczynniki skalujące Tab. 21-7. Klasa zmiany numeru współczynnika skalującego
próbki podpasmowe w każdym podpaśmie częstotliwościowym na przykładzie bloków
B1 i B2 (alogicznie dla B2 i B3)
Numer Współczynnik
0 2,00000000000000 ∆nr(B12) = nr(B1) − nr(B2) KlasaB12
1 1,58740105196820
∆nr(B12) ≤ −3 1
2 1,25992104989487
−3 < ∆nr(B12) < 0 2
∆nr(B12) = 0 3
60 0,00000190734863
0 < ∆nr(B12) < 3 4
61 0,00000151386361
62 0,00000120155435 3 ≤ ∆nr(B12) 5
5 5 1 2 3 0
Tab. 21-10. Klasy kwantyzacji (rekwantyzacji) próbek podpasmowych dla poziomu MP2 (SK = słowo kodowe)
Liczba poz. SNR Próbki Bity
Wsp. A Wsp. B Wsp. C Wsp. D
kwantyzacji [dB] na SK na SK
3 0,750000000 − 0,250000000 1,33333333333 0,50000000000 0,00 3 5
5 0,625000000 − 0,375000000 1,60000000000 0,50000000000 7,00 3 7
7 0,875000000 − 0,125000000 1,14285714286 0,25000000000 11,00 1 3
9 0,562500000 − 0,437500000 1,77777777777 0,50000000000 16,00 3 10
15 0,937500000 − 0,062500000 1,06666666666 0,12500000000 20,84 1 4
31 0,968750000 − 0,031250000 1,03225806452 0,06250000000 25,28 1 5
Program komputerowy, zaprezentowany w tabeli 21-11, jest końcem naszej długiej „drogi
przez mękę”. Umożliwia on konwersję nagrań dźwiękowych typu wav do postaci mpg, akcep-
towanej przez większość dekoderów multimedialnych. Zaimplementowano w nim opisany po-
wyżej algorytm MP2, który jest mniej efektywny, ale za to zdecydowanie prostszy niż MP3.
Jest to algorytm kompletny. W tekście książki usunięto jedynie część wartości środkowych
z tablic, mając na uwadze osiągniętą dzięki temu „kompresję” tekstu programu. Cały program
jest dostępny na stronie WWW wraz z innymi przykładami do tego podręcznika.
Zwróć uwagę, drogi Czytelniku, na króciutkie wywołanie dosyć długiego podprogramu
MP123psycho.m, bez którego niestety żadna psychoakustyczna kompresja dźwięku nie może
być zrealizowana. Mam nadzieję, że teraz docenisz nasz trud poświęcony w środkowej części
tego rozdziału na zrozumienie podstaw teoretycznych modelowania psychoakustycznego ludz-
kiego narządu słuchu oraz napisanie tego podprogramu.
W programie koduje się i równocześnie rozkodowuje próbki dźwiękowe. Można także zapisy-
wać ostatnio utworzoną ramkę na dysk do zbioru ramka.mpg oraz dodawać ją do zbioru
nagranie.mpg. A jeśli można zapisywać, to także i odczytywać. Niektóre tablice są inaczej za-
pisane niż w rozdziale 21.5.1 podczas opisu algorytmu MP2, co ma zapewnić łatwiejsze ko-
rzystanie z nich podczas obliczeń.
Na co należy zwrócić uwagę? Przede wszystkim na fakt, że w starszych wersjach języka
Matlab wszystkie liczby są traktowane jako zmiennoprzecinkowe − brak jest zmiennych innych
typów, w szczególności liczb całkowitych i ułamkowych ze znakiem, zapisywanych w kodzie
uzupełnień do dwóch U2 (patrz rozdział 7). Mając na uwadze Czytelników dysponujących
starszym oprogramowaniem oraz czytelność kodu, podjęto decyzję, że wszystkie operacje
w programie będą wyłącznie wykonywane na liczbach zmiennoprzecinkowych. Dlatego w inny
sposób niż w standardzie jest wykonywana operacja kwantyzacji próbek dźwiękowych, w któ-
rej powinno się „zostawiać najbardziej znaczące bity i negować bit najstarszy”, co niestety
w zmiennoprzecinkowym Matlabie w prosty sposób nie jest możliwe. Należy jednak podkreś-
lić, ze choć zapis rekwantyzacji wygląda w programie inaczej, to jednak pod względem funk-
cjonalnym jest identyczny z normą. Konsekwencją podjętej decyzji implementacyjnej była
trudność w realizacji wszystkich operacji bitowych, które co prawda występującą w nowszych
wersjach Matlaba, ale były nie do wykorzystania. Dlatego sposób bitowego składania i rozkła-
dania ramki danych został oparty na operacjach tekstowych (głównie funkcji strcat()) oraz
na konwersjach dec2bin() i bin2dec().
Analiza poniższego programu jest Twoim zadaniem domowym, Czytelniku. Jest to najdłuższy
program w tej książce. „Płyń po morzach i oceanach!” i proszę Cię ... nie utoń.
Tab. 21-11. Program w języku Matlab implementujący algorytm MP2 kodera i dekodera sygnału audio
standardu MPEG-1
% Sygnał testowy
% Nx=5*1152; n=0:Nx-1; x=sin(2*pi*n/27)+sin(2*pi*n/49)+sin(2*pi*n/155); x=x/max(x);
% Nx=2048; x=rand(1,Nx);
% [x,fpr,Nb] = wavread('a44.wav',3*fpr); % wczytaj kodowany fragment sygnału mowy
[x,fpr,Nb] = wavread('bach44100.wav',3*fpr); % wczytaj kodowany fragment sygnału audio
plot(x); title('Sygnał kodowany'); pause % pokaż go
soundsc(x,fpr); % odtwórz na głośnikach (słuchawkach)
Np=M*3*K; % całkowita liczba próbek w jednej ramce danych
Nx=length(x); x=x'; % długość sygnału testowego
Nr=ceil(Nx/Np); x=[x zeros(1,Nr*Np-Nx)]; % uzupełnienie sygnału zerami do pełnej liczby ramek
% Parametry alokacji bitów (Fbity - liczba bitów na jedną ramkę bez prefiksu i informacji o alokacji bitów)
sblimit= sblimit1; sumabit = sumabit1;
if ((fpr==32000 | fpr==48000) & (strumien>80)) sblimit=sblimit2; sumabit=sumabit2; end
Fbajty = floor(144*1000*strumien/fpr); % fpr w Hz, a powinno być w kHz, dlatego *1000
Fbity = 8*Fbajty - 32 - sumabit; % odejmij długość prefiksu oraz info o alokacji bitów
Fbitykopia = Fbity;
% Odpowiedź impulsowa p(n) filtra prototypowego (standardowa nr 1 i niestandardowa nr 2 − tab. 18-4, (18.101))
load enwindow.dat; pe1=enwindow'; % standardowe okno kodera
load dewindow.dat; pd1=dewindow'; % standardowe okno dekodera
Nw = length(pe1); n = 1 : Nw; % ich długość
plot(1:Nw,pe1,'r',1:Nw,pd1,'b'); title('okna: kodera (RED) dekodera(BLUE)'), pause
%
############################################################################################
% PĘTLA GŁÓWNA: Koder i dekoder razem (jedna operacja za drugą) ramka za ramką
% ##########################################################################################
for iter = 1 : Nr % kolejna ramka
iter
% KODER #################################################################################
% Model psychoakustyczny: wyznacz transformatę FFT i funkcję SMR (Signal to Mask Ratio)
[SMR xxx yyy ] = MP123psycho( bx2304, fpr, poziom);
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 641
SMR(sblimit+1 : M) = -300;
Fballoc(k) = Fballoc(k)+1;
ekstrabity = ABpbit( ABwiersz(k), Fballoc(k) );
Fbity = Fbity - ekstrabity;
if(Fbity < 0) Fballoc(k) = Fballoc(k)-1; break; end
SMRkopia(k) = SMRkopia(k) - ABpSNR( ABwiersz(k), Fballoc(k) );
end
end
end
% Zbuduj ramkę danych wykorzystując Fballoc, Fscfi, Fscf, Fsb: nagłówek, informacja o alokacji bitów
% oraz wyborze współczynników skalujących, numery współczynników skalujących, skwantowane próbki
% Opcjonalne podstawienie
Fballoc = FballocX;
Fscfi = FscfiX;
Fscf = FscfX;
Fballoc = FballocX;
% DEKODER ##############################################################################
% Zsynchronizuj się z początkiem ramki i zdekoduj nagłówek, przeczytaj informację o alokacji bitów
% #####################################################################################
end % koniec kolejnej ramki
% #####################################################################################
% Sygnał wyjściowy
y = y/2; % jeśli wszystkie elementy przetwarzania, to wzmocnienie 2-krotne
Noffs=L-M+2; n1=1:Nx-Noffs+1; n2=Noffs:Nx;
xr=x(n1); yr=y(n2);
plot(n1,xr,'r',n1,yr,'b'); title('WE (czerw) WY (nieb)'); pause
plot(n1,xr-yr); title('Różnica WE-WY'); pause
SnrdB = 10*log10( sum(xr.^2) / sum((xr-yr).^2) ), pause
% Test odsłuchowy
plot(y); title('Sygnał zdekodowany'); pause
soundsc(y, fpr)
function MP2zapis( Fballoc, Fscfi, Fscf, Fsb, Nbajtow, sbpoziomy, sbbity, fpr, ...
strumien, sblimit )
% Podprogram zapisu binarnego ramki danych, wyniku kodowania algorytmu MP2
persistent InitPrefiks Prefiks sblimit1 sblimit2 sblimit3;
Prefiks = strcat( Prefiks, '11'); % (2b) nr algorytmu MPEG: 00=2.5, 10=2, 11=1
Prefiks = strcat( Prefiks, '10'); % (2b) poziom: 11=1, 10=2, 01=3, 00=zarezerwowane
Prefiks = strcat( Prefiks, '1'); % (1b) ochrona przed błędami CRC: 1=nie, 0=tak
Prefiks = strcat( Prefiks, kodstr); % (4b) strumień: 0101=64, 0111=96, 1001=128, 1011=192
Prefiks = strcat( Prefiks, kodfpr); % (2b) cz. próbkowania: 00=44.1, 01=48, 10=32
Prefiks = strcat( Prefiks, '0'); % (1b) znacznik dodatkowego bajtu: 0=nie, 1=tak
Prefiks = strcat( Prefiks, '0'); % (1b) bit wolny
Prefiks = strcat( Prefiks, '11'); % (2b) 00=stereo, 01=~stereo, 10=dwa kanały, 11=jeden
kanał
Prefiks = strcat( Prefiks, '00'); % (2b) tylko dla trybu uproszczone stereo
Prefiks = strcat( Prefiks, '0'); % (1b) prawa autorskie: 0=nie, 1=tak
Prefiks = strcat( Prefiks, '1'); % (1b) 1=oryginał, 0=kopia
Prefiks = strcat( Prefiks, '00'); % (2b) de-emfaza: 00=nie, 01=50/15 mikrosek, 1=CCITTJ.17
% Alokacja bitów
BitAlok = ''; Nb = [ 4 3 2 ]; sblim = [ 0 sblimit1 sblimit2 sblimit3 ];
for k = 1 : 3
Nbb = Nb(k); mod = 2^Nbb;
k1 = sblim(k)+1; k2 = sblim(k);
for(k = k1:k2) BitAlok = strcat( BitAlok, dec2bin(rem(Fballoc(k), mod), Nbb)); end
end
% Zapisanie ramki do osobnego zbioru "ramka.mpg", dodanie jej do zbioru "nagranie.mpg" (utwórz jeśli nie istnieje)
ZbiorWY1 = fopen('ramka.mpg','w'); % 'w' = zapisz do zbioru, usuń starą zawartość jeśli zbiór istnieje
ZbiorWY2 = ('nagranie.mpg','a'); % 'a' = dodaj binarnie do zbioru
Nbajt = length(Ramka)/8;
for k = 0 : Nbajt-1
fwrite(ZbiorWY1, bin2dec( Ramka(1+k*8 : 8+k*8) ),'uchar');
fwrite(ZbiorWY2, bin2dec( Ramka(1+k*8 : 8+k*8) ),'uchar');
end
Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku 645
fclose(ZbiorWY1);
fclose(ZbiorWY2);
% Alokacja bitów
n1st=32; Nb=4;
for n=0:sb1-1, Fballoc(n+1) = bin2dec( RamkaS(n1st+1+n*Nb : n1st+Nb+n*Nb) ); end
n1st=n1st+sb1*Nb; Nb=3;
for n=0:sb2-1, Fballoc(sb1+n+1) = bin2dec( RamkaS(n1st+1+n*Nb : n1st+Nb+n*Nb) ); end
n1st=n1st+sb2*Nb; Nb=2;
for n=0:sb3-1, Fballoc(sb1+sb2+n+1) = bin2dec(RamkaS(n1st+1+n*Nb : n1st+Nb+n*Nb)); end
n1st=n1st+sb3*Nb;
% Współczynniki skali
Nscf = 3*sum(Fscfi==0) + 2*(sum(Fscfi==1)+sum(Fscfi==3)) + 1*sum(Fscfi==2);
Nb=6; for n = 0:Nscf-1, Fscf(n+1) = bin2dec( RamkaS(n1st+1+n*Nb : n1st+Nb+n*Nb) ); end
n1st=n1st+Nscf*Nb;
646 Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku
% Próbki dźwiękowe
m = 1; K = 12;
for l = 1 : K % K=12 razy
for k = 1 : sblimit % po trzy próbki w każdym podpaśmie
indeks = Fballoc(k);
if(indeks > 0 )
nrkwant = ABnrkwant( ABwiersz(k), indeks );
grupa = Qgrupa( nrkwant );
Nb = Qbity( nrkwant );
if( grupa==3 ) % jeden kod na trzy próbki
Fsb(m) = bin2dec( RamkaS(n1st+1 : n1st+Nb) ); m=m+1;
n1st = n1st+Nb;
else % jeden kod na próbkę, trzy próbki
for n=0:2, Fsb(m)=bin2dec(RamkaS(n1st+1+n*Nb : n1st+Nb+n*Nb)); m=m+1; end
n1st = n1st+3*Nb;
end
end
end
end
Fsb = Fsb';
22
Projekt OBRAZ:
podstawy analizy i przetwarzania
sygnałów dwuwymiarowych
Piękne widoki. Świat w dwóch, trzech i ... wielu wymiarach. Szaleństwo formy, bogactwo tre-
ści. W tym rozdziale chciałbym zaproponować Ci drogi Czytelniku rozstanie się na chwilę
z szarą rzeczywistością dwóch wymiarów osi x-y (argument x, wartość funkcji y) na rzecz ba-
jecznego, bo jeszcze nieznanego świata trzech wymiarów osi x-y-z (argumenty x i y, wartość
funkcji z). Do tej pory zajmowaliśmy się funkcjami (sygnałami) jednego argumentu (1D), np.
zmiennością sygnału mowy w czasie s(t), teraz chcemy dziarsko wkroczyć w świat funkcji
(sygnałów) dwuargumentowych s(x, y) (2D) i zacząć badać, na przykład, zmienność natężenia
pola magnetycznego lub chropowatości w zależności od położenia punktu pomiarowego na
płaszczyźnie wyznaczonej przez dwie osie x i y. A jakbyśmy się szybko uporali z tym proble-
mem, to zawsze mamy jeszcze w zapasie sygnały trzyargumentowe s(x, y, z), czyli np. dane
tomograficzne pacjenta, będące rejestracją gęstości materii w trzech wymiarach przestrzeni.
I tak dalej .... bez końca. Jak z ciągle oddalającym się horyzontem.
Czy mamy w związku z tym się martwić, że stajemy obecnie w obliczu problemów o złożo-
ności nie N, tylko N 2, N 3, N 4? Oczywiście, że nie. Mając prawo jazdy i znając zasady ruchu
drogowego, możemy wierzyć, że damy sobie radę przesiadając się z dwóch kółek na cztery,
a potem na sześć, osiem. Znam profesora, który zmieniając pracę i miejsce zamieszkania
w Stanach Zjednoczonych Ameryki, wynajął ciężarówkę i sam przewiózł dorobek swojego ży-
cia od zachodniego do wschodniego wybrzeża. Najważniejsze są podstawy. Jak się wkrótce
okaże, znajomość analizy i przetwarzania sygnałów 1D bardzo nam się przyda przy analizie
sygnałów dwuwymiarowych, w szczególności o b r a z ó w .
Istnieją tysiące medycznych, przemysłowych, wojskowych i naukowych zastosowań cyfrowej
analizy i przetwarzania obrazów. Nawet nie będę próbował ich wyliczać. Rysunek 22.1 stano-
wi zbiór luźno rzuconych, ale reprezentatywnych haseł (symboli). Taniejące cyfrowe aparaty
fotograficzne i kamery sprawiły, że i Ty drogi Czytelniku pewnie już próbowałeś bawić się
w artystę fotografa, a jeśli jeszcze nie − to może wkrótce to nastąpi. Dlatego, jeśli ciągle nie
jesteś zdecydowany czy kontynuować dzisiaj lekturę tego rozdziału, to wiedz, że pozwoli Ci
ona w jakimś sensie zrozumieć świat fotografii cyfrowej.
A więc w drogę!
648 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
a) b)
c) d)
e) f)
g) h)
Rys. 22.1 Przykłady obrazów i zastosowań: a) obraz testowy Kamerzysta (Cameraman) do badania skutecz-
ności metod kompresji, b) nauka (powierzchnia Księżyca), c) bezpieczeństwo (samolot wroga, ciągle na zie-
mi), d) zdalny nadzór (np. sytuacja komunikacyjna i pożarowa w mieście), e) stan zdrowia (krew), f) jakość
produkcji (wełniane ubranie), g) identyfikacja (odciski palców), h) rozpoznawanie elementów obrazu (np.
kod pocztowy na kopercie, kody paskowe na sprzedawanych towarach, wyznaczanie optycznej rozdzielczo-
ści obiektywów aparatów fotograficznych). Pochodzenie obrazów: a) i e) Matlab, pozostałe −Signal & Image
Processing Institute, University of Southern California, http://sipi.usc.edu/database/
Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych 649
kolor = kR ⋅ R ⊕ kG ⋅ G ⊕ kB ⋅ B (22.1)
Jest to addytywny, „emisyjny” model kolorów, w którym dodawane promienie R, G, B emitują
składowe światła białego (odpowiada on sytuacji nakładania na białej ścianie światła reflekto-
rów o trzech kolorach). Współczynniki wagowe kR, kG, kB są liczbami naturalnymi, przyjmują-
cymi wartości od 0 do wartości zakresowych, zależnych od liczby bitów, które na nie przezna-
czono. Przykładowo dla 6 bitów zmieniają się one od 0 do 63, a dla 8 bitów − od 0 do 255.
a) b)
n N 6
m
x(1, 1) x(1, 2) x(1, N) 11 22 33 44 55 66
x(2, 1) x(2, 2) x(2, N) 117 165 249 149 135 77
x(3, 1) x(3, 2) x(3, N) 43 125 0 0 217 88
M 6
x(4, 1) x(4, 2) x(4, N) 98 234 0 0 168 99
177 155 133 199 111 110
x(M, 1) x(M, 2) x(M, N) 236 43 76 87 99 121
d) 5 10 15 20 25
c)
200 5
x(m,n)
100
10
0
15
5
10
15 25 20
20
20 15
m 10
25 5 n 25
Rys. 22.2. Obraz cyfrowy jako macierz liczb: a) ogólny zapis obrazu jako macierzy o wymiarach M × N
(M wierszy, N kolumn), b) macierz obrazu o wymiarach 6 × 6 pikseli, przedstawiająca czarny kwadrat
(„kolor” 0) na pstrokatym tle (zmienne „kolory” od 11 do 249), c), d) wizualizacja macierzy litery „H” jako
funkcji 2D (mesh, waterfall) oraz obrazu w poziomach szarości (25 × 25 pikseli). Piksele (próbki) obrazu
jako elementy macierzy liczb mogą być numerowane zaczynając od (0, 0) lub (1, 1). Zgodnie ze zmienną
konwencją wyświetlania punkt ten może być przyporządkowany lewemu górnemu (tak jak u nas) lub lewe-
mu dolnemu rogowi wyświetlanego „pola”
Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych 651
Tab. 22-1. 64-elementowa paleta gray poziomów szarości (po lewej − karty graficzne, po prawej − pro-
gram Matlab)
Nr „koloru” Wartość współczynnika kR Wartość współczynnika kG Wartość współczynnika kB
Karta Graf Matlab Karta Graf Matlab Karta Graf Matlab
0 0 0 0 0 0 0
1 4 0,015873 4 0,015873 4 0,015873
2 8 0,031746 8 0,031746 8 0,031746
3 12 0,047619 12 0,047619 12 0,047619
... ... ... ... ... ... ...
62 251 0,984127 251 0,984127 251 0,984127
63 255 1 255 1 255 1
Wówczas w pliku graficznym jest umieszczana paleta oraz odwołania do niej: dla każdego
piksela jest zapisywany numer koloru, rozumiany jako numer wiersza palety, w której jest on
zdefiniowany. Bardzo częstym błędem osób zaczynających zabawy programowe z obrazami
cyfrowymi jest wczytywanie obrazu wraz z paletą ale „nieprzeładowanie” palety, tzn. nieuczy-
nienie z niej palety aktywnej, czyli takiej, która jest wykorzystywana podczas wyświetlania.
Numery kolorów są wówczas źle interpretowane i rysunek przypomina dzieła wielkich mis-
trzów pop-artu, a nie zdjęcie ... ukochanej Cioci.
Obrazy mogą być binarne (tylko dwa kolory czarny i biały), monochromatyczne (zwykle po-
ziomy szarości) oraz kolorowe. Kiedy współczynniki kR, kG, kB przyjmują identyczne wartości,
otrzymujemy jeden z kolorów palety „odcienie szarości”: kombinacja (0, 0, 0) odpowiada
w niej kolorowi czarnemu, a (255, 255, 255) kolorowi białemu.
W poligrafii (drukarkach kolorowych) wykorzystuje się nie definicję światła emitowanego tyl-
ko odbitego i stosuje czterokolorowy model subtraktywny CMYK, który wynika z pochłania-
nia barw RGB przez farby. Zamiast kolorów RGB używa się w nim: turkusu, karmazynu, żółci
i czerni (Cyan-Magenta-Yellow-Black). Obowiązują przy tym następujące zależności: turkus
(C) to biel (W) minus czerwień (R) C = W − R, karmazyn to biel minus zieleń M = W − G,
a kolor żółty to biały minus niebieski Y = W − B. Łącznie C + M + Y daje kolor czarny (K).
Ponieważ jednak oszczędza się na droższych farbach kolorowych i daje się ich mniej, to
w zmodyfikowanej sumie C’+M’+Y’ brakuje czerni i dlatego trzeba jeszcze dodać K.
652 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
Ponieważ zdjęcia lub wyniki ich przetwarzania są często „prześwietlone” lub „niedoświetlone”
można tę niedoskonałość korygować. Należy wówczas znaleźć najniższy (min) i najwyższy
(max) wyko r zystywany indeks palety kolorów i przeskalować liniowo (w tym przypadku
p = 1) wszystkie indeksy stosując zależność (zakres palety to numer ostatniego indeksu kolo-
ru):
indeks p
stary − min
indeksnowy = round ⋅ zakres palety (22.2)
max − min
czyli je liniowo „rozciągnąć” na całą skalę. Może to być bardzo ważny zabieg, np. podczas
wnikliwego oglądania zdjęć rentgenowskich przez lekarza. Ponieważ monitory komputerowe
wprowadzają nieliniowe zniekształcenia intensywności kolorów, redukuje się je wprowadzając
dodatkowo w (22.2) nieliniową (odwrotną w stosunku do monitora) korekcję gamma za pomo-
cą współczynnika p ( p < 1 − rozjaśnianie, p > 1 − przyciemnianie). Korekcję tę można także
stosować do uwypuklenia słabo widocznych detali.
Obrazy są pojedyncze (still images) oraz występują w sekwencjach (video, moving pictures).
W telewizji analogowej obrazy przesyła się 60 (NTSC) lub 50 (PAL/SECAM) razy na sekun-
dę, ale w celu zmniejszenia potrzebnego pasma częstotliwościowego dokonuje się redukcji
transmitowanych danych wprowadzając przeplot (interlacing) linii, tzn. wysyła się tylko linie
parzyste obrazu pierwszego oraz linie nieparzyste obrazu drugiego itd. O zapisie (wyświetla-
niu) progresywnym (progressive) mówimy wtedy, kiedy operuje się na wszystkich liniach każ-
dego obrazu. Ponieważ w chwili wprowadzania telewizji kolorowej wymagana była zgodność
standardu telewizji kolorowej i czarno-białej przesyłany sygnał wizyjny został podzielony się
na luminancję (Y ), która reprezentuje poziom szarości, oraz chrominancje: (I, Q) w standardzie
NTSC (razem YIQ):
Podsumowaniem tej części omówionego materiału są rysunki 22.3 i 22.4. Na pierwszym z nich
zilustrowano proces akwizycji obrazu cyfrowego, w którym obraz analogowy jest dyskretyzo-
wany przestrzennie i kwantowany w wartościach (w zbiorze wszystkich możliwych kolorów
lub poziomów szarości). Z kolei na obrazie drugim podkreślono, że obraz jest zbiorem linii
(wierszy lub kolumn). Z tego powodu najprostszym sposobem analizy i przetwarzania obrazów
jest stosowanie w stosunku do nich metod dobrze znanych dla sygnałów 1D, tzn. wyznaczanie
transformat poszczególnych wierszy i kolumn oraz filtracja poszczególnych wierszy i kolumn.
Tak jak piksele tworzyły linie, a linie macierze, to uporządkowany zbiór macierzy 2D o tych
samych rozmiarach daje macierz 3D. Przykładowo film jest sekwencją pojedynczych obrazów.
A teraz żart: na rysunku 22.5 jest przedstawiony bardzo krótki film, inspirowany dramatem
Stanisława Ignacego Witkiewicza pod tytułem „W małym dworku”. Charakteryzuje go wyjąt-
kowa czystość formy i oszczędność środków ekspresji.
Rysunek 22.7 wyjaśnia w sposób poglądowy proces wyznaczania d o wo lnej , dyskretnej tran-
sformaty obrazu, separowalnej w osiach m i n, np. ortogonalnej transformaty Fouriera (DFT)
lub kosinusowej (DCT), czyli transformaty 2D macierzy 2D. Wykorzystuje się w nich
istniejące, szybkie algorytmy transformacji 1D, zdefiniowane np. równaniami od (2.76) do
654 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
dyskretyzacja
obraz kwantyzacja obraz cyfrowy
nxy
analogowy macierz liczb
yx
m
Rys. 22.3. Obraz cyfrowy jako wynik dyskretyzacji w przestrzeni i kwantyzacji wartości obrazu analogo-
wego (wartości pikseli w obrazie cyfrowym są zapisywane jako numery poziomów szarości, analogicznie jak
w macierzy na rysunku 22.2, np. od 0 do 255)
255
5
192
10 128
64
y
15
1 5 10 15 20 1 5 10 15 20
300
b)
kapelusz
250
→
poziom szarości
160 200
150
100
50
włosy
Rys. 22.4. Przykład skanowania linii obrazu cyfrowego, przejście od danych 2D do 1D: a) 10 linia dla cy-
frowego obrazu syntetycznego z rysunku 22.3, b) 160 linia dla obrazu rzeczywistego o wymiarach 512× 512
Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych 655
czas
Rys. 22.5. Sygnał wideo jako macierz 3D, czyli sekwencja macierzy 2D (bez kodowania)
a) b)
Rys. 22.6. Przykład korekcji zniekształceń radialnych wprowadzanych przez endoskopową kamerę me-
dyczną: a) obraz przed korekcją, b) obraz po korekcji
(2.80). Na początku są transformowane kolejne wiersze obrazu (u nas od 1 do 15), przy czym
wyznaczony wektor współczynników transformaty 1D (DFT, DCT lub innej) jest umieszczany
w miejscu wektora analizowanych pikseli (co symbolizuje znak „ ”). Następnie macierz
współczynników „poziomych” transformat 1D jest analizowana dalej, tzn. jej kolumny (u nas
od 1 do 20) są poddane serii transformacji 1D. Podobnie, wynik zastępuje dane wejściowe
(znak „”).
Na rysunku 22.8 są przedstawione kolejne wyniki przejściowe, otrzymane podczas transforma-
cji DFT i DCT obrazu z rysunku 22.1a, kolejno poziomo: moduł transformaty „poziomej” linii
o numerze 128, wynikowa macierz po serii transformat poziomych oraz wynikowa macierz po
serii transformacji pionowych (w obu przypadkach moduły). Ponieważ zespolone widmo Fou-
riera 1D sygnału o wartościach rzeczywistych jest (a)symetryczne, obserwujemy także (a)sy-
metrię, czyli nadmiarowość, w zespolonym widmie Fouriera 2D. Dodatkowo 2D DFT wymaga
obliczeń na liczbach zespolonych (jedno mnożenie zespolone w DFT to cztery mnożenia liczb
rzeczywistych i dwa dodawania), a sam wynik transformacji jest trudno interpretowalny, gdyż
macierze bazowe dekompozycji obrazu rzeczywistego są zespolone. Z tego powodu w algo-
rytmach kompresji obrazów w dziedzinie częstotliwościowej stosuje się wyłącznie transfor-
mację 2D DCT, mającą funkcje bazowe o wartościach rzeczywistych − w związku z tym nie-
nadmiarową, szybszą obliczeniowo i łatwiej interpretowalną. Dysponując współczynnikami
„częstotliwościowymi”, obrazów można je modyfikować, np. zerować. Wówczas po serii tra-
nsformat odwrotnych otrzymuje się ten sam obraz, pozbawiony usuniętych składowych czę-
stotliwościowych, czyli przefiltrowany. Należy pamiętać, że w lewym górnym rogu macierzy
656 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
1D DFT 1
1D DFT 8
1D DFT 15 1 10 20
Rys. 22.7. Transformacja 2D obrazu jako sekwencja transformacji 1D dla obrazu syntetycznego, najpierw
a) wierszy (15 razy, wynik zastępuje dane wejściowe, w przypadku DFT macierz staje się zespolona), a po-
tem b) kolumn (20 razy, ponownie wynik zastępuje dane wejściowe). Już po pierwszej serii transformacji
obraz wejściowy „znika”. Zamiast dyskretnej transformacji Fouriera może być zastosowana dowolna inna
transformacja. Filtracja 2D obrazu również może być realizowana jako sekwencja dwóch filtracji 1D: naj-
pierw wierszy obrazu oryginalnego, a potem filtracja kolumn wyniku pierwszej operacji
po wierszach po kolumnach
a) 120
| DFT(linia128) |
100
80
60
40
20
0
0 50 100 150 200 250
numer prążka DFT
b) 120
| DCT(linia128) |
100
80
60
40
20
0
0 50 100 150 200 250
numer prążka DCT
Rys. 22.8. Transformacja 2D obrazu Kamerzysta (rys. 22.1a) o wymiarach 256 × 256 jako sekwencja trans-
formacji 1D. W kolejności od lewej do prawej: moduł transformaty tylko linii 128, moduł po transformacji
wierszy oraz moduł po transformacji kolumn wyniku transformacji wierszy (kolejne kroki tak jak na rysunku
22.7), oba w skali logarytmicznej: a) DFT, b) DCT
transformat DFT i DCT znajduje się wartość średnia obrazu, a w jego sąsiedztwie najniższe
częstotliwości. W przypadku DFT macierz po modyfikacji powinna być dalej (a)symetryczna,
w przeciwnym razie obraz otrzymany w wyniku 2D IDFT będzie zespolony. Zagadnieniem
tym zajmiemy się szczegółowo w podrozdziale 22.2.1.
Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych 657
maska
8 8
1 17 17
Rys. 22.9. Nierekursywna filtracja 2D jako dwuwymiarowy splot próbek obrazu z macierzą wag filtra:
9 próbek obrazu (centralna i najbliżsi sąsiedzi mieszczący się w ramce 3 × 3) jest mnożonych przez wagi
filtra odpowiadające im położeniem (także w ramce 3 × 3), kolejno od lewej górnej do prawej dolnej, na-
stępnie wszystkie wartości iloczynów są dodawane, a wynik jest przyporządkowywany próbce obrazu wyni-
kowego, odpowiadającej próbce środka ramki obrazu oryginalnego (u nas jest to próbka (8, 17)). Cała ope-
racja jest powtarzana dla wszystkich położeń ramki (okna obserwacji) na obrazie filtrowanym
Ponieważ filtracja nierekursywna 1D może być interpretowana jako średnia ważona próbek
sygnału i współczynników filtra, podobnie powinno być z sygnałami 2D, czyli obrazami. Z tą
jedyną różnicą, że próbki i współczynniki mają teraz strukturę nie wektora tylko macierzy.
W konsekwencji mała macierz wag filtra przesuwa się obecnie „na tle” dużej macierzy próbek
obrazu i dla każdego jej położenia są mnożone przez siebie wartości wag oraz wartości odpo-
wiadających im, leżących „poniżej”, „zasłanianych” pikseli. Wartość sumy wszystkich iloczy-
nów stanowi wynik filtracji, który jest umieszczany w obrazie wynikowym, w punkcie odpo-
wiadającym środkowemu, zasłanianemu pikselowi. Tak rozumiana i realizowana filtracja 2D
jest przedstawiona na rysunku 22.9. Przesuwająca się, kwadratowa maska filtra (ze strzałkami)
jest na nim zaznaczona w lewym górnym rogu ciemnym kolorem. Dla przykładu, po prawej
stronie pokazano jej jedno położenie, w którym jest przez nią „wycinany” fragment drzewa.
Piksele obrazu „pobrane” przez maskę są mnożone przez odpowiadające im wagi filtra i su-
mowane, a uzyskana w ten sposób jedna liczba jest umieszczana w obrazie wynikowym w pik-
selu, odpowiadającym środkowi maski. Współczynniki wagowe filtra decydują o tym, które
częstotliwości zostaną w obrazie, a które będą usunięte. Istnieje wiele metod ich projektowa-
nia, w literaturze podaje się także wiele przykładowych zestawów wag.
Jeśli macierz wag filtra 2D może być przedstawiona jako wynik iloczynu wekto r o wego
dwóch wektorów wag filtrów 1D: h2D(m, n) = h1D(m)⋅g1D(n), 0 ≤ m≤ K−1, 0 ≤ n ≤ L−1 (co od-
powiada w dziedzinie widm Fouriera równości H2D( fm, fn) = H1D( fm)⋅G1D( fn)), to wówczas fil-
tracja 2D, przedstawiona na rysunku 22.9, jest równoważna oddzielnemu przefiltrowaniu
wszystkich wierszy obrazu za pomocą filtra h1D(n), a potem przefiltrowaniu kolumn wyniku tej
operacji za pomocą filtra g1D(n), według schematu pokazanego na rysunku 22.7. Zagadnienie
nierekursywnej filtracji 2D jest szerzej rozwinięte w rozdziale 22.3. Tam też są opisane naj-
prostsze metody projektowania wag filtrów 2D.
658 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
Dalsza część tego rozdziału stanowi rozwinięcie zaprezentowanych powyżej zagadnień. Chcąc
zachować spójność książki podano w niej także definicje wybranych operacji dla sygnałów
ciągłych. Przecież w rozdziałach od 1 do 7 zajmowaliśmy się tylko takimi sygnałami. Dlaczego
mamy więc teraz o zapominać o ich rodzeństwie 2D? Operacje podpikselowe wykonywane na
obrazach są w bezpośredni sposób związane z obrazami analogowymi.
Na początek wprowadźmy oznaczenia, które będą stosowane w tym rozdziale. Niech x(u, v)
oznacza sygnał dwuwymiarowy, którego argumenty u i v zmieniają się w sposób c i ą g ł y ,
a X( fu, fv) − jego ciągłą transformatę Fouriera. Z kolei niech x(m, n) będzie dwuwymiarowym
sygnałem o argumentach d y s k r e t n y c h m oraz n, 0 ≤ m ≤ M−1, 0 ≤ n ≤ N−1, a XDT-FT( fm, fn)
i XDFT (k, l ) − jego dwuwymiarowymi transformatami Fouriera o częstotliwościach ciągłych
( fm, fn) oraz dyskretnych (k, l ). Przypomnijmy, że częstotliwości fm, fn oraz indeksy k oraz l są
związane z unormowanymi pulsacjami cyfrowymi:
fm k k
Ω m = 2π , Ω k = 2π , k↔ f mpr (22.6a)
f mpr M M
fn l l
Ωn = 2π , Ωl = 2 π , l↔ f npr (22.6b)
f npr N N
∞ ∞ ∞ ∞
X ( fu , f v ) = ∫ ∫ x (u, v ) e − j (2 πfu u + 2 πf v v ) dudv = ∫ ∫ x( u, v )e − j 2 πf v v dv e− j 2 πfu u du (22.7)
−∞ −∞ −∞ −∞
∞ ∞ ∞ ∞
x ( u, v ) = ∫ ∫ X ( f u , f v )e j (2 πfu u + 2 πf v v ) df u df v = ∫ ∫ X ( f u , f v )e j 2 πf u u df u e j 2 πf v v df v (22.8)
−∞ −∞ −∞ −∞
∞ ∞ − j ( 2 π ( f n / f npr ) n ) − j ( 2 π ( f m / f mpr ) m )
X DT-FT ( f m , f n ) = ∑ ∑ x ( m, n ) e e (22.9)
m =−∞ n =−∞
1
f npr / 2 1 f mpr / 2
j 2 π( f m / f mpr ) m j 2 π ( f n / f npr ) n
x ( m, n ) =
f npr
∫ f ∫ X DT-FT ( f m , f n ) e df m e
df n
− f npr / 2 mpr − f mpr / 2
(22.10)
Transformacja (22.9) umożliwia nam wyznaczenie widma Fouriera obrazu dla dowolnie wy-
branych częstotliwości fn, fm. Jednak podobnie jak w przypadku sygnałów 1D, po przekrocze-
niu częstotliwości próbkowania widmo 2D zaczyna się powtarzać okresowo: w osi pierwszej
częstotliwości co fmpr, a w osi drugiej − co fnpr. Z kolei (22.10) wykorzystuje się do projekto-
wania odpowiedzi impulsowych h(m, n) nierekursywnych filtrów 2D o zadanej charakterystyce
częstotliwościowej HDT-FT( fm, fn).
• transformacja Fouriera „dyskretna − dyskretna” , prosta i odwrotna:
M −1 N −1 2π − j 2 π mk
−j nl
X DFT (k , l ) = ∑ ∑ x ( m, n ) e N e M (22.11)
m =0
n =0
N −1 M −1 2π j 2 π nl
1 1 j mk
x ( m, n ) =
N
∑ M ∑ X DFT (k , l )e M e N
(22.12)
l =0 k =0
gdzie m, n to indeksy d yskr etnego położenia przestrzennego, natomiast k, l to indeksy d ys-
kr etnych, związanych z nimi częstotliwości (0 ≤ m, k ≤ M−1; 0 ≤ n, l ≤ N−1):
k ↔ (k/M) fmpr; l ↔ (l/N) ⋅fnpr
Zwróćmy uwagę, że z powodu możliwości zastosowania przekształceń:
waż dane wejściowe są teraz zespolone. W wyniku 2D DFT w lewym górnym rogu macierzy
wynikowej otrzymujemy sumę wartości wszystkich elementów macierzy (wartość średnią po
podzieleniu przez MN) oraz współczynniki małych częstotliwości „kolumnowych” wyznaczo-
nych dla małych częstotliwości „wierszowych”. Im dalej od niego, tym częstotliwości stają się
wyższe. Chcąc przeprowadzać filtrację macierzy (obrazów) w dziedzinie współczynników
dwuwymiarowej transformacji Fouriera, np. zerując część z nich, musimy pamiętać o tym, aby
nie naruszyć symetrii widma 2D (dwie alternatywne, uproszczone definicje, które nie u-
względniają punktów o indeksach zerowych):
N M N M N M
X ± k, ± l = X * ∓ k, ∓ l , 0 ≤ k ≤ − 1, 0 ≤ l ≤ −1 (22.14a)
2 2 2 2 2 2
X ( k , l ) = X * ( N − k , M − l ) , 0 ≤ k ≤ N − 1, 0 ≤ l ≤ M − 1 (22.14b)
B( k , l ) − min( B )
⋅ 255, B ( k , l ) = F ( k , l ) = arctg ( Im( X (k , l )), Re( X ( k , l )) )
k ,l
(22.16)
max( B ) − min( B )
k ,l k ,l
Składowa stała (DC) obrazu o częstotliwościach (0, 0) znajduje się w lewym górnym rogu ma-
cierzy DFT. Po uwzględnieniu symetrii (22.14) i przestawieniu ćwiartek macierzy według
schematu z rysunku 22.11a, otrzymuje się macierz symetryczną względem przestawionego
punktu DC, przedstawioną na rysunku 22.11b. Macierz tę można w prosty sposób wykorzystać
do filtracji obrazu. Należy tylko wygenerować funkcję maski często tliwo śc iowe j o wy-
miarach obrazu, także symetryczną względem punktu DC (na rysunku 22.11c jest to dolno-
przepustowa, prostokątna maska zero-jedynkowa, jedynki w środku) i wymnożyć ją z syme-
trycznym DFT obrazu (wynik tej operacji jest przedstawiony na rysunku 22.11d). Wykonując
odwrotne DFT tak spreparowanego widma otrzymujemy przefiltrowany obraz.
Ważne jest, aby zachować symetrię maski częstotliwościowej względem punktu DC. Kształt
maski na płaszczyźnie (k, l ) może być także kołem, elipsą, oponą itd. lub ich negacją. Przykła-
dowo, w przypadku zamiany wartości maski z rysunku 22.11c na przeciwne (0 ↔ 1) otrzymu-
jemy filtr górnoprzepustowy. Wartości maski nie muszą być wyłącznie równe 0 lub 1 lecz mo-
gą przyjmować wartości pośrednie. Wtedy dostajemy częściowe wytłumienie wybranych skła-
dowych częstotliwościowych obrazu.
Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych 661
a) b)
Rys. 22.10. Moduł (a) i faza (b) transformaty DFT obrazu Kamerzysta (rys. 22.1a)
a) b) c) d)
DC
DC DC DC
Rys. 22.11. Ilustracja operacji przestawienia ćwiartek macierzy DFT: a) DFT obrazu, b) DFT obrazu po
przestawieniu, c) przykładowa, dolnoprzepustowa, zero-jedynkowa maska częstotliwościowa, d) iloczyn
widma DFT obrazu i maski częstotliwościowej
a) b) c) d)
e) f) g) h)
Rys. 22.12. Przykład wykorzystania 2D DFT do filtracji obrazu: a) filtrowany obraz, b) moduł jego widma
DFT, c) widmo po przestawieniu DC do środka („scentrowane”), d) maska częstotliwościowa, e) iloczyn
symetrycznego widma obrazu i maski, f) widmo po ponownym przestawieniu („rozcentrowane”), g) obraz
powstały w wyniku odwrotnego DFT, h) jego powiększony fragment
a) b) c) d)
Rys. 22.13. Przykład wykorzystania maski filtra opisanego dwuwymiarową funkcją Gaussa: pierwszy wiersz
− filtr dolnoprzepustowy, drugi wiersz − filtr górnoprzepustowy (1 minus dolnoprzepustowy); a) maska fil-
tra, b) iloczyn symetrycznego widma obrazu i maski, c) „rozcentrowane” widmo, g) obraz powstały w wyni-
ku odwrotnego DFT
gdzie
1/ M , k = 0 1/ N , l = 0
α( k ) = , β( l ) = (22.19)
2 / M , k = 1...M − 1 2 / N , l = 1... N − 1
proponowane rozwiązania jeszcze efektywniejsze, np. algorytm Chena [Chen77], ale wymaga-
jące własnoręcznego napisania programu (w środowisku Matlab mamy „szybkie” funkcje
dct.m i dct2.m). Należy także zwrócić uwagę na fakt, że w literaturze są definiowane cztery
odmiany 1D DCT-I, II, III i IV, podane w rozdziale 2.4. Równania (22.17) ÷ (22.19) definiują
transformację 2D DCT-II. Skąd się bierze tak duża popularność tej transformacji w przetwa-
rzaniu obrazów? Ponieważ obrazy najczęściej modeluje się za pomocą dwuwymiarowych mo-
deli autoregresyjnych pierwszego rzędu AR(1,1) (2.93), mających funkcję autokorelacji po-
staci (2.94), której wektory własne (optymalna baza Karhunena-Loevego (KL)) są bardzo zbli-
żone do wektorów bazowych transformacji 1D DCT-II. Transformacja ta jest więc subopty-
malna.
W porównaniu z 2D DFT dużą zaletą 2D DCT jest fakt, że jej funkcje bazowe nie mają warto-
ści zespolonych tylko rzeczywiste. Znacznie redukuje to jej złożoność obliczeniową oraz po-
woduje niewystępowanie redundancji w widmie DCT (patrz rys. 22.8b). Transformację tę
można także wykorzystać do filtracji obrazu poprzez usunięcie z jej widma mniej istotnych
(najmniejszych) współczynników. Zazwyczaj wykonuje się to metodą „strefową” (np. w przy-
padku filtracji dolnoprzepustowej pozostawia się współczynniki leżące w lewym, górnym rogu
w okolicy DC) lub „progową” (pozostawia się tylko współczynniki przekraczające zadaną
wartość progową, przy czym wartość ta może zależeć od położenia współczynnika w macierzy
2D DCT; w przypadku kompresji stratnej obrazu tą metodą współrzędne pozostawianych
współczynników należy także zapamiętać w skompresowanym zbiorze). Ponieważ właśnie ten
drugi sposób jest stosowany w standardzie JPEG do kompresji pojedynczych obrazów oraz
w standardzie MPEG do kompresji ich sekwencji, poświęcimy mu nieco więcej miejsca w roz-
dziale 22.5.1. Należy jednak już teraz zaznaczyć, że w standardach tych transformata 2D DCT
nie jest stosowana w stosunku do całego obrazu tylko jego fragmentów o wymiarach 8 × 8
pikseli.
Na rysunku 22.14 przedstawiono prosty przykład filtracji (kompresji) całego obrazu w dzie-
dzinie współczynników jego transformaty 2D DCT. Przetwarzaniu poddano obraz Kamerzysta
(rys. 22.1a), którego widmo 2D DCT zostało już przedstawione na rysunku 22.8b (ostatnie
w drugim wierszu). Widmo to zmodyfikowano dwoma sposobami. Po pierwsze, wymnożono
go z trójkątną maską częstotliwościową zero-jedynkową, zlokalizowaną w narożniku składo-
wej DC (lewy górny), o powierzchni 1/8 całego widma. Po drugie, wymnożono go z progową
maską częstotliwościową, przy czym wartość progu dobrano tak, aby pozostawić w przybliże-
niu 1/8 liczby wszystkich współczynników transformaty, tak jak w poprzednim przypadku.
Następnie zsyntezowano obrazy ze zmodyfikowanych widm za pomocą transformacji odwrot-
nej 2D IDCT. W przypadku maski trójkątnej w wynikowym obrazie są wyraźnie widoczne
oscylacje (tzw. dzwonienie), przypominające te z rysunków 22.12g i 22.12h, dotyczące filtracji
metodą DFT. Jednak obecnie operacja filtracji jest realizowana o wiele szybciej ze względu na
rzeczywiste wartości funkcji bazowych (przypomnijmy: jedno mnożenie liczb zespolonych
w DFT to cztery mnożenia i dwa dodawania „rzeczywiste”). Natomiast zastosowanie metody
progowej prowadzi do generacji zniekształceń przypominających szum, odbieranych jako
zwiększenie ziarnistości obrazu. Kwestia gustu, ale dla autora deformacja obrazu w drugim
przypadku jest bardziej naturalna i mniej irytująca. Oczywiście, maskowanie progowe można
także zastosować w stosunku do współczynników transformaty 2D DFT obrazu. Pozostawiamy
to jako ćwiczenie Czytelnikowi.
Ponieważ w omówionym przykładzie usunięto część próbek widma, jednocześnie dokonano
filtracji jego zawartości oraz kompresji zapisu: całość zastąpiono częścią. Co stracono? Jaki
rodzaj informacji jest związany z każdym współczynnikiem transformaty 2D, także tym usu-
wanym? O tym w kolejnym podrozdziale.
Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych 665
a)
b)
Rys. 22.14. Filtracja obrazu Kamerzysta za pomocą modyfikacji jego widma 2D DCT z rysunku 22:
a) z trójkątną maską częstotliwościową „1/8”, b) z „progową” maską częstotliwościową − próg ustawiony
tak, aby pozostawić 1/8 liczby wszystkich współczynników. Kolejno w wierszu: zmodyfikowane widmo
(góra) lub sama, zero-jedynkowa maska progowa (dół), odtworzony obraz metodą 2D IDFT, jego powięk-
szony fragment
πk
bP ( k , m ) = α( k )cos (m + 1/ 2) (22.23)
P
lub sinusowej (2.77), Hartleya (2.78), Hadamarda (2.79) i Haara (2.80). W równaniach (22.20)
i (22.21) „*” oznacza sprzężenie zespolone (negacja części urojonej liczby zespolonej), T zaś
− transpozycję. W (22.22) zastosowano ortonormalne (2.34) funkcje bazowe Fouriera (2.72),
tzn. podzielone przez P i unormowane w ten sposób do wartości 1. W takim przypadku
w równaniach (22.11) i (22.12) współczynniki skalujące wynoszą nie 1 i 1/(MN) tylko 1/ MN
i 1/ MN . Ponieważ funkcje (22.22) są wykorzystywane podczas syntezy sygnału na podsta-
wie współczynników transformaty, to w wykładniku nie występuje znak minus.
W przypadku ortogonalnych transformat 1D sygnał był przedstawiany jako suma funkcji ba-
zowych wymnożonych przez współczynniki transformacji. Podobnie jest dla transformacji 2D:
analizowana macierz jest przedstawiana jako suma macierzy bazowych wziętych z wagami
równymi współczynnikom widma 2D. Jeśli założymy, że wszystkie współczynniki widma
Y(k, l ), 0 ≤ k ≤ M−1 i 0 ≤ l ≤ N−1, są równe zeru poza jednym, np. Y(k0, l0), i macierz tę ozna-
czymy przez Yk0, l0, to z zapisu macierzowego (22.21) otrzymamy (proszę rozpisać elementy
macierzy i sprawdzić osobiście):
gdzie bP(p) oznacza p-ty wiersz macierzy transformacji ortogonalnej BP. Ponieważ transfor-
macja jest liniowa, to transformata sumy macierzy elementarnych Yk0, l0 (z tylko jednym ele-
mentem niezerowym Y(k0, l0)) jest równa sumie ich transformat, a stąd mamy:
M −1 N −1 M −1 N −1 M −1 N −1
Y= ∑ ∑ Yk0 , l0 ⇒ X= ∑ ∑ X k0 , l0 = ∑ ∑ Y (k0 , l0 ) ⋅ bTM ( k0 ) ⋅ b N (l0 ) (22.25)
k0 =0 l0 = 0 k0 = 0 l0 = 0 k0 = 0 l0 = 0
będących iloczynem wektorowym k0-tego wiersza macierzy transformacji BM oraz l0-tego wier-
sza macierzy transformacji BN (czyli k0-tej i l0-tej bazy odpowiednich transformacji 1D),
wziętych z wagami Y(k0, l0).
Na rysunku 22.15 są zaprezentowane w poziomach szarości wszystkie macierze bazowe Bk0, l0
dla transformaty ko sinuso wej o wymiarach 8 × 8 (M = 8, N = 8). Jak widać, w zależności od
indeksów są to oscylacje (o rosnącej częstotliwości) tylko poziome (k = 0), tylko pionowe
(l = 0) oraz łączone. Z każdym współczynnikiem transformaty Y(k0, l0) jest związana konkretna
macierz Bk0, l0 (22.26), która jest wykorzystywana w sumie (22.26). Jeśli wyzerujemy jeden ze
współczynników i wykonamy odwrotną transformatę 2D, to związana z nim macierz (wzorek
graficzny o różnych kształtach i częstotliwościach oscylacji przestrzennych) „znika” z obrazu.
Za pomocą zależności (22.26) można wygenerować macierze (obrazy) związane z każdym
współczynnikiem częstotliwościowym dowolnej, ortogonalnej transformacji 2D, także fourie-
rowskiej. W tym przypadku macierze Bk0, l0 są zespolone. Ćwiczenie to pozostawiamy Czytel-
nikowi.
Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych 667
k=1
k=2
k=3
k=4
k=5
k=6
k=7
Rys. 22.15. Funkcje bazowe Bk ,l = bTM ( k ) ⋅ b N (l ) (22.26) dla dwuwymiarowej transformacji kosinusowej
(22.17) o wymiarach: a) 8 × 8 (M = N = 8)
okrągłej. O czym w podrozdziale 22.3. W tym miejscu otrzymujemy także odpowiedź na py-
tanie jak filtrować: filtrami 1D oddzielnie po wierszach i kolumnach obrazu, czy filtrami 2D?
Jeśli odpowiedź impulsową filtra 2D, o kształcie gasnących oscylacji rozchodzących się ra-
dialnie, można uzyskać w wyniku iloczynu wektorowego odpowiedzi impulsowych filtrów 1D
(a tak jest np. w przypadku dolnoprzepustowego filtra Gaussa), to ze względów obliczenio-
wych (mniej mnożeń i dodawań) korzystniej jest stosować sekwencję filtracji 1D.
% JEDNA LINIA
Nr = 100; K = 2; y = x; % numer linii, szerokość znacznika, kopia obrazu
linia = x(Nr,1:N); % pobranie linii
y(Nr-K:Nr+K,1:N) = 0*ones(2*K+1,N); % zaznacz wybraną linię czarnym kolorem
subplot(121); imshow(y,cmap); title('Obraz'); % pokaż obraz z czarną linią
subplot(122); plot(linia); title('Jedna linia'); pause % pokaż wykres linii obrazu
subplot(211); plot( abs(fft(linia))/N ); title('|DFT|'); % DFT linii obrazu
% subplot(212); plot( dct(linia)/sqrt(N) ); title('DCT'); pause % DCT (Matlab) linii
subplot(212); plot( (conj(C)*linia')/sqrt(N) ); title('DCT'); pause % DCT (nasze) linii
% FILTRACJA 2D za pomocą 2D DFT (fftshift2D - przestawianie ćwiartek widma 2D DFT, patrz rys. 22.11a)
K = 32; H = zeros(M,N); % maska częstotliwościowa H (MxN)
H(M/2+1-K : M/2+1+K, N/2+1-K : N/2+1+K) = ones(2*K+1,2*K+1); % środek = (M/2+1, N/2+1)
h = fftshift2D( real( ifft2( fftshift2D(H) ) ) ); % jej odpowiedź impulsowa
subplot(121); imshow(255*H,cmap); title('Maska Freq'); % rysunek maski
subplot(122); mesh(h); title('Jej odpowiedź impulsowa'); pause % rysunek jej odp. impulsowej
function Y = fftshift2D( X )
% przestawianie ćwiartek widma 2D DFT
[M N] = size(X);
Y(M/2+1:M,N/2+1:N) = X(1:M/2,1:N/2);
Y(1:M/2,1:N/2) = X(M/2+1:M,N/2+1:N);
Y(M/2+1:M,1:N/2) = X(1:M/2,N/2+1:N);
Y(1:M/2,N/2+1:N) = X(M/2+1:M,1:N/2);
22.3.1. Splot 2D
∞ ∞ ∞ ∞
y ( u, v ) = ∫ ∫ x ( a, b)h( u − a, v − b)dadb = ∫ ∫ x ( u − a, v − b)h( a, b)da db (22.27)
−∞ −∞ −∞ −∞
G ( fu , f v ) = X ( fu , f v ) ⋅ H ( fu , f v ) (22.28)
Filtracja 2D obrazów 671
• Dyskretny splot 2D − liniowy i cykliczny oraz iloczyn widm 2D DFT w przypadku splotu cy-
klicznego (dla sygnałów 2D cykliczne powielanie danych, czyli ich uokresowienie, dotyczy
macierzy i dlatego jest wykonywane poprzez operację modulo w dwóch wymiarach):
∞ ∞
y ( m, n ) = ∑ ∑ x (i , j ) h ( m − i , n − j ) (splot liniowy) (22.31)
i =−∞ j =−∞
M −1 N −1
y ( m, n ) = ∑ ∑ (
x (i, j ) ⋅ h ( m − i ) mod M ,( n − j ) mod N ) (splot cykliczny) (22.32)
i =0 j =0
• Dyskretna funkcja korelacji 2D (własna i wzajemna, ponownie ze znakiem „+” a nie „−”):
∞ ∞
Rx , x ( i , j ) = ∑ ∑ x ( m, n ) x * ( m + i , n + j ) (22.34)
m =−∞ n =−∞
∞ ∞
R x , y (i , j ) = ∑ ∑ x ( m, n ) y * ( m + i , n + j ) (22.35)
m =−∞ n =−∞
• h(i, j) → h(−i, −j) odwrócenia w przestrzeni x-y wag filtra h(i, j), czyli jego od
powiedzi impulsowej
• h(−i, −j) → h(m − i, n − j) przesunięcia ich do punktu (m, n)
• sm,n(i, j) = x(i, j) h(m − i, n − j) wymnożenia z filtrowanym sygnałem x(i, j) dla wszystkich i, j
Koncepcyjnie operacje te są identyczne jak dla dyskretnego splotu 1D, opisanego w rozdziale
1.3.6 i graficznie wytłumaczonego na rysunku 1.8, są tylko rozszerzone o nowy wymiar. Nale-
ży je powtórzyć dla wszystkich przesunięć (m, n). Przypomnijmy, pierwsze przybliżenie ope-
racji splotu 2D przedstawiono na rysunku 22.9. Jego uzupełnienie stanowią rysunki 22.16
i 22.17, wzbogacone szczegółowym komentarzem umieszczonym w ich podpisach.
Na co należy zwrócić szczególną uwagę w przypadku splotu 2D? Po pierwsze, na ewentualny
brak przyczynowości stosowanej dwuwymiarowej odpowiedzi impulsowej filtra. Przypomnij-
my, układ jest przyczynowy, jeśli jego odpowiedź nie wyprzedza pobudzenia (skutek nie może
występować przed przyczyną). Dlatego odpowiedź przyczynowego układu dwuwymiarowego
na impuls 2D δ (i, j) (sygnał 2D delta Kroneckera):
672 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
a) b) c)
j j j
x(i, j)
h(i, j)
i i n
i
h(−i, −j)
m
Rys. 22.16. Graficzna interpretacja splotu dwuwymiarowego, czyli nierekursywnej, dwuwymiarowej filtracji
cyfrowej: a) odpowiedź impulsowa filtra h(i, j) (wartość proporcjonalna do poziomu szarości wypełnienia
symbolu „o”), b) odpowiedź impulsowa filtra po zanegowaniu jej argumentów (lustrzane odbicie względem
punktu (0, 0)), otrzymujemy h(−i, −j), c) przesunięcie h(−i, −j) do punktu (m, n) i otrzymanie w ten sposób
h(m − i, n − j), które jest następnie wymnażane z próbkami macierzy x(i, j) znajdującymi się „pod” maską
wagową filtra; na końcu wartości wszystkich iloczynów są dodawane, a otrzymana liczba, wynik filtra-
cji, jest podstawiana do macierzy wynikowej y(i, j) w punkcie (m, n). Operacje z rysunku c) są powtarzane
dla wszystkich par wartości (m, n)
a) b) c)
j j j
x(i, j)
h(i, j)
i i
n
h(−i, −j)
i
Rys. 22.17. Graficzna interpretacja splotu dwuwymiarowego, w sytuacji kiedy odpowiedź impulsowa filtra
jest nieprzyczynowa (h(i, j) ≠ 0 dla i < 0 lub j < 0). Wówczas zostaje obliczona próbka y(m, n) macierzy
wynikowego obrazu, odpowiadająca próbce środkowej przesuniętej maski wagowej filtra. W ogólności
punkt przyporządkowania może być dowolny
1, i = 0, j = 0
δ (i , j ) = (22.36)
0, i, j pozostale
czyli być niezerowa tylko dla i ≥ 0 i j ≥ 0. Wówczas podczas splotu z przyczynową odpowie-
dzią h(i, j) wartość „sumy iloczynów” jest przyporządkowywana próbce macierzy wynikowej,
odpowiadającej prawemu górnemu narożnikowi maski wagowej filtra, tak jak na rysunku
22.16. Ale podczas projektowania wag filtra 2D najczęściej otrzymuje się nieprzyczynowe
odpowiedzi impulsowe, podobnie jak to było w przypadku nierekursywnych filtrów jednowy-
miarowych (patrz rozdział 12, w szczególności podrozdział 12.5 oraz rysunki 12.9 i 12.10).
Filtracja 2D obrazów 673
Wówczas h(i, j) przyjmuje wartości niezerowe wokół środka układu współrzędnych (0, 0), tak
jak jest to pokazane na rysunku 22.17a. Wtedy po lustrzanym „odbiciu” i przesunięciu h(i, j)
do punktu (m, n), wynik splotu jest przyporządkowywany punktowi y(m, n), pokrywającemu
się ze środkiem maski wagowej filtra, tak jak na rysunku 22.17b. W ogólności jednak punkt
przyporządkowania może być dowolny. W osi (dziedzinie) czasu raczej nie spotykamy w życiu
nieprzyczynowości, natomiast w osi położenia (1D, 2D, 3D), gdzie „minus” jest umowny, kie-
runki „plus” i „minus” są równoprawne. Dlatego nieprzyczynowe filtry 2D nie powinny nas
dziwić.
Ponieważ obraz ma skończone wymiary, napotykamy problemy z realizacją operacji filtracji na
brzegach obrazu. Tam zwyczajnie brakuje nam próbek. Szczególnie jest to „bolesne” dla du-
żych macierzy współczynników wagowych, charakterystycznych dla bardzo selektywnych fil-
trów. Cóż wtedy robimy? Mamy do wyboru trzy możliwości: 1) uzupełnienie obrazu dookoła
wartościami zerowymi, 2) powiększenie obrazu metodą powtarzania wszystkich próbek brze-
gowych, 3) odbicie lustrzane próbek względem brzegów, 4) przedłużenie okresowe: powięk-
szenie obrazu metodą jego powielenia z każdej ze stron (np. utworzenie szachownicy 3×3,
składającej się z filtrowanego obrazu), Żadna z tych metod nie jest idealna, ponieważ ewentu-
alne nieciągłości wprowadzone w ten sposób na b r zegach o b r azu spowodują powstanie
tam lokalnych zafalowań w obrazie po filtracji.
Transformacja Fouriera 1D charakteryzuje się tzw. właściwością splotu (4.13), (8.20)÷(8.24),
która także funkcjonuje w dwóch wymiarach. Dlatego możemy: 1) uzupełnić macierz wag ze-
rami do rozmiarów obrazu, 2) obliczyć transformaty 2D DFT dla wag i obrazu, 3) wymnożyć
je oraz 4) wykonać transformację odwrotną 2D IDFT. Obraz zostanie przefiltrowany. Jednak
podobnie jak w świecie 1D, będzie zrealizowany w ten sposób splot cykliczny (kołowy)
(22.32), a nie liniowy (22.31). Co to znaczy? Upraszczając, możemy powiedzieć, że splotą się
nam ze sobą w sposób liniowy: „szachownica” powstała z powielenia macierzy obrazu (jak
wyżej: trzy wiersze i trzy kolumny) oraz macierz wag filtra. Przypomnijmy, że w przypadku
1D splatały się ze sobą: powielony fragment sygnału i wektory wag filtra (patrz rysunki 13.11
i 13.12). Ilustrację wyniku takiego splotu stanowią przykłady filtracji pokazane na rysunkach
22.12 i 22.13. Należy zwrócić na nich uwagę na niespodziewane wartości i zafalowania wystę-
pujące na krawędziach obrazu po filtracji, szczególnie tam gdzie występuje skokowa zmiana
wartości pikseli po „szachownicowym” powieleniu obrazu, np. na wyraźny wpływ ciemnych
spodni Pana fotografa (kamerzysty) na zafalowania występujące na niebie. W przypadku splotu
liniowego filtr „wjeżdża” na obraz startując od wartości, którymi sami ten obraz uzupełniliśmy
na brzegach. Podczas opisanej powyżej operacji szybkiego splotu, takiego wyboru nie mamy.
Poniżej przedstawiono trzy inżynierskie metody, służące do projektowania macierzy wag fil-
trów 2D. Przechodzimy więc obecnie od rozważań jakościowych do ilościowych.
Na początku musimy sobie odpowiedzieć na pytanie, jak powinna wyglądać pożądana przez
nas charakterystyka amplitudowo-częstotliwościowa filtra 2D? Dla jakich wartości (fm, fn) ma
być ona równa 1, a dla jakich 0? Na rysunku 22.18 są przedstawione naj częściej stosowane
kształty charakterystyk dolnoprzepustowych (LP), górnoprzepustowych (HP), pasmowoprze-
pustowych (BP) oraz pasmowozaporowych (BS), w których dziedzina argumentów (fm, fn) pas-
ma przepustowego opiera się na prostokącie lub okręgu. Oczywiście, wybór współczynników
charakterystyki filtra jest całkowicie dowolny i zależy od jego zastosowania.
Filtry 2D. Załóżmy początkowo, że odpowiedź impulsowa filtra 2D jest iloczynem wektoro-
wym odpowiedzi impulsowej dwóch filtrów 1D:
Ich długości są zazwyczaj znacznie mniejsze niż wymiary obrazu (K < M, L < N). Z powodu
rozdzielności zmiennych m i n w (22.38), po podstawieniu (22.38) do (22.9) w prosty sposób
otrzymujemy:
czyli widmo filtra 2D jest iloczynem wektorowym widm użytych filtrów 1D. W tym miejscu
należy zwrócić uwagę, że opisana w rozdziale 22.1 filtracja obrazu, składająca się z dwóch
sekwencji splotów 1D − najpierw g1D(n) po wierszach, a potem h1D(m) po kolumnach − jest
równoważna splotowi 2D z filtrem h2D(m, n) (22.38), gdyż podstawiając (22.38) do (22.31)
otrzymujemy:
∞ ∞ ∞ ∞
y ( m, n ) = ∑ ∑ x (i, j )h1D ( m − i ) g1D ( n − j ) = ∑ ∑ x (i , j ) g1D ( n − j ) h1D ( m − i )
i =−∞ j =−∞ i =−∞ j =−∞
a) fn/fpr fn/fpr
0,5 0,5
0,5 0,5
b) fn/fpr fn/fpr
0,5 0,5
fm/fpr fm/fpr
f0/fpr f0/fpr
0,5 0,5
c) fn/fpr fn/fpr
0,5 0,5
fm/fpr fm/fpr
f0/fpr f1/fpr f1/fpr
f0/fpr
0,5 0,5
d) fn/fpr fn/fpr
0,5 0,5
fm/fpr fm/fpr
f0/fpr f1/fpr f1/fpr
f0/fpr
0,5 0,5
a) 0.5 b)
0.4
0.3
h(n)
0.2
0.1
0
-0.1
-20 -10 0 10 20
n
c) d)
e) f)
Rys. 22.19. Przykłady projektowania filtrów 2D metodą iloczynu wektorowego odpowiedzi impulsowych
filtrów 1D: a) odpowiedź impulsowa h1D(n) filtra LP jednowymiarowego, b) otrzymana z niej (22.38) od-
powiedź impulsowa h2D(m, n) filtra LP dwuwymiarowego, c) charakterystyka amplitudowo-częstotliwoś-
ciowa filtra 2D LP, d) e) f) − przykładowe charakterystyki amplitudowo-częstotliwościowe filtrów 2D: HP,
BP i BS
1, pozostałe
H HP ( f m , f n ) =
0, | f m |< f 0 i | f n |< f 0
1, pozostałe
H HP ( f m , f n ) =
0, f m < f 0 lub f n < f 0
Filtracja 2D obrazów 677
a)
b)
Rys. 22.20. Okna 2D, składające się z 49 × 49 elementów i uzyskane z 49-elementowych okien 1D metodą
wymnożenia (iloczyn wektorowy), oraz ich widma 2D Fouriera: a) okno Hamminga, b) okno Gaussa σ( = 3)
Okna 2D. Korzystając z (22.38) można uzyskać także wersje 2D okien 1D, które będą nam po-
trzebne w dwóch następnych metodach projektowych (tym razem zakładamy wykorzystanie
jednego okna 1D o tej samej długości: −K ≤ m ≤ K, −K ≤ n ≤ K):
w2D(m, n) = w1D(m)⋅w1D(n) (22.40)
Tym razem okna nie są normowane, tzn. mają wartość maksymalną równą 1. Na rysunku 22.20
przedstawiono otrzymane w ten sposób 49×49-elementowe okna 2D Hamminga i Gaussa
(σ = 3) oraz ich widma 2D DFT po „centrowaniu, czyli po ustawieniu współczynnika DC
678 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
1 2 2 1 2 2 1 2 2 2
w2D ( m, n ) = w1D (m) ⋅ w1D (n ) = e −m / 2σ e − n / 2σ = 2
e − ( m + n ) / 2σ (22.41)
2πσ 2πσ 2 πσ
∞ 1 2 2 ∞ 1 2 2
= ∫ e −u / 2 σ e − j 2 πf u u du ∫ e− v / 2σ e − j 2 πfv v dv = (22.42)
−∞ 2πσ −∞ 2πσ
(
= e −2 π
2 2
σ f u2
) ⋅ (e −2 π2 σ2 f v2
)=e −2 π2 σ2 ( f u2 + f v2 )
Jak widać widmo 2D Fouriera ciągłej funkcji 2D Gaussa jest także funkcją 2D Gaussa. Zwięk-
szenie wartości σ rozszerza okno oraz proporcjonalnie zawęża jego widmo.
Metoda okien
1
f0 1 f0
j 2 π( f m / f mpr ) m
j 2π( f / f )n
( f 0)
hLP ( m, n ) = ∫ ∫ 1⋅e df m e n npr
df n =
f npr f
− f 0 mpr
− f0
fm0 j 2 π( f m / f mpr ) m
f n 0 j 2 π( f / f ) n
= ∫ 1⋅ e df m ⋅ ∫ e n npr
df n = (22.43)
− f −f
m0 n0
=
(
sin 2πmf m0 / f mpr ) ⋅ sin ( 2πnfn0 / fnpr ) , hLP (0,0) =
4 f m0 f n 0
πm πn f mpr f npr
( f 0)
hLP ( m, n ) =
R
2 πR m 2 + n 2
(
J1 R m 2 + n 2 , ) R=
2 πf 0
f pr
(22.47)
gdzie J1(x) oznacza funkcję Bessela pierwszego rodzaju i pierwszego rzędu (jest zaimplemen-
towana w języku Matlab). Odpowiedzi impulsowe filtrów HP, BP i BS wyznacza się jak po-
przednio ze wzorów (22.44) ÷ (22.46) (patrz rysunki 22.18 b, c, d − prawa kolumna).
Na rysunkach 22.21a i 22.21b przedstawiono przykładowe odpowiedzi impulsowe filtrów
(22.43) i (22.47), w sytuacji kiedy są one zaprojektowane na 1/2 ograniczenia pasma częstotli-
wościowego (2f0/fpr =1/2) oraz są macierzami 49×49-elementowymi (−K ≤ m ≤ K, −L ≤ m ≤ L,
K = L = 24). Jak widać w obu występują wolno gasnące oscylacje, ale w przypadku charakte-
rystyki częstotliwościowej o kształcie koła rozchodzą się one równomiernie we wszystkich
kierunkach i gasną nieco szybciej.
Zastosowanie 49×49-elementowych macierzy wag filtrów z rysunków 22.21a i 22.21b jest
równoznaczne z uwzględnieniem nie wszystkich próbek teoretycznych odpowiedzi impul-
sowych (22.43), (22.47), gdyż indeksy m, n tych odpowiedzi zmieniają się od −∞ do +∞, a są
uwzględnione tylko te o numerach od −24 do 24. Odpowiada to nałożeniu na idealne odpowie-
dzi impulsowe prostokątnego okna 2D 0/1 (o kwadratowym kształcie powierzchni). W dzie-
dzinie częstotliwości jest to równoważne splotowi zadanej charakterystyki 2D filtra z widmem
Fouriera prostokątnego okna 2D. Widmo to ma w przybliżeniu kształt funkcji z rysunku 22.21a
(w końcu funkcje z rysunków 22.21a i 22.21b to para transformat 2D Fouriera, a po prawej
stronie widzimy „okno prostokątne” tylko w dziedzinie częstotliwości). W związku z tym wy-
nikowy filtr będzie więc miał inną charakterystykę niż zadana. Dla przykładu na rysunkach
22.21c i 22.21d są przedstawione charakterystyki amplitudowo-częstotliwościowe filtrów z ry-
sunków 22.21a i 22.21b. Jak widać widmo okna dwuwymiarowego prostokątnego nie psuje
stromości filtra, ale doprowadza do bardzo silnych oscylacji, zwłaszcza na granicy jego pasma
przenoszenia. Powtarza się więc stara piosenka, bardzo dobrze znana z projektowania filtrów
1D: musimy zastosować inne okno 2D w(m, n), mające widmo mniej oscylacyjne ale za to
szersze. Szerokość widma możemy zmniejszyć rozszerzając okno.
Jak już było powiedziane powyżej, funkcje dwuwymiarowych okien przestrzennych w(m, n)
najczęściej uzyskuje się w wyniku iloczynu wektorowego próbek wybranego okna 1D
w(m, n) = w(m)w(n) i wówczas W(fm, fn) = W(fm)W(fn). Zależy nam na tym, aby widmo W(fm, fn)
było jak najwęższe, gdyż wówczas jego splot z zadaną, idealną charakterystyką częstotliwo-
ściową filtra najmniej ją zdeformuje. Na rysunku 22.20 były już pokazane przykładowe okna
2D, otrzymane w opisany powyżej sposób, oraz ich widma.
680 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
a) c)
b) d)
Rys. 22.21. Teoretyczne, ograniczone oknem prostokątnym odpowiedzi impulsowe dolnoprzepustowych fil-
trów h(m, n) (22.43) i (22.47), odpowiadające prostokątnej i kołowej charakterystyce amplitudowo-częstotli-
wościowej z rysunku 22.18a, oraz ich widma 2D Fouriera obliczone za pomocą 2D DFT: a) wizualizacja
(22.43), b) wizualizacja (22.47); 2f0/fpr = 1/2
Na rysunku 22.22 pokazano przykładowe odpowiedzi impulsowe filtrów LP, HP, BP i BS za-
projektowane z wykorzystaniem wzorów (22.47) i (22.44) ÷ (22.46) oraz okna 2D Hamminga
z rysunku 22.20a. Jak widać, są one zgodne z naszymi oczekiwaniami i wymaganiami projek-
towymi. Z kolei zastosowanie zaprojektowanych filtrów do obrazu Kamerzysta daje wynik
przedstawiony na rysunku 22.23. I tu niestety sen o p o tęd ze b r utalnie p r yska, nie
po ra z p i e r wsz y p o d c z a s nasz e j wspólnej podró ży! Odpowiedzi impulsowe LP da-
lej są za długie i wprowadzają irytujące zafalowania w obrazie. Co z tym można dalej zrobić?
Jedynym lekarstwem jest radykalne skrócenie odpowiedzi impulsowych filtrów, co zdecydo-
wanie pogorszy ich selektywność częstotliwościową. Przykłady znanych z literatury takich
„gotowców” podano w następnym podrozdziale 22.3.3.
Alternatywnym rozwiązaniem jest odejście od filtrów liniowych na rzecz krótkich filtrów nie-
liniowych (statystycznych, logicznych, kontekstowych), np. medianowych lub morfologicz-
nych, oraz zastąpienie przetwarzania typu „to samo dla wszystkich” przetwarzaniem typu
„każdemu według jego potrzeb”: adaptacyjnemu i lokalnemu. Przykładem takiego przetwarza-
nia może być adaptowanie wag filtra w zależności od lokalnej zawartości obrazu, np. stosowa-
nie długich filtrów na gładkich płaszczyznach obrazu, a krótkich − przy krawędziach obiektów.
Cóż, jak widać jesteśmy dopiero na początku bardzo długiej drogi. W końcu jest to podręcznik
dotyczący jedynie podstaw cyfrowej analizy i przetwarzania sygnałów.
Filtracja 2D obrazów 681
a)
b)
c)
d)
Rys. 22.22. Przykłady filtrów 2D zaprojektowanych na podstawie wzorów (22.47) oraz (22.44) ÷ (22.46)
z zastosowaniem okna 2D Hamminga z rysunku 22.20a: a) dolnoprzepustowy (LP), czyli filtr z rysunku
22.21b z nałożonym oknem, b) górnoprzepustowy (HP), c) pasmowoprzepustowy (BP), d) pasmowozapo-
rowy (BS)
682 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
a) LP b) HP
c) BP d) BS
Rys. 22.23. Wynik zastosowania filtrów z rysunku 22.22. Jak widać, filtr dolnoprzepustowy LP, mający
istotnych około 25 × 25 wag, dalej jest za szeroki, gdyż wprowadza wyraźnie widoczne oscylacje w okolicy
skokowych zmian intensywności pikseli (patrz rysunek f). Jak widać koniecznością staje się użycie filtrów
jeszcze krótszych, np. 5 × 5 lub 3 × 3 lecz o wiele mn i ej s el ek t y w n y c h
Metoda częstotliwościowa
ne w ten sposób wagi, zmniejszając oscylacje na ich brzegach oraz je ... z radością stosować.
Należy zwrócić szczególną uwagę na umieszczanie próbek widma w paśmie przejściowym
filtra, gdyż to czyni go mniej stromym, co z kolei zmniejsza oscylacje w odpowiedzi impulso-
wej filtra. Na rysunku 22.24 przedstawiono kolejne etapy projektowania dwóch filtrów według
powyższego przepisu oraz uzyskane przykładowe charakterystyki amplitudowo-częstotliwo-
ściowe. W celu łatwiejszej interpretacji częstotliwościowej osie zadanych i otrzymanych cha-
rakterystyk amplitudowo-częstotliwościowych opisano na tym rysunku w częstotliwościach
unormowanych, a nie numerami prążków widma 2D DFT. Szczegóły implementacyjne metody
można znaleźć w programie zamieszczonym w tabeli 22-5.
W porównaniu z metodą okien w metodzie częstotliwościowej nie wyznacza się odpowiedzi
impulsowej filtra analitycznie, tylko numerycznie: stosując 2D IDFT ze swoich wymagań.
a) b)
Rys. 22.24. Przykład projektowania odpowiedzi impulsowej filtra dolnoprzepustowego w dziedzinie czę-
stotliwości dla dwóch kształtów charakterystyk amplitudowych (rys. 22.18a): a) prostokątnego oraz b) ko-
łowego. Kolejno pionowo: zadana charakterystyka częstotliwościowa filtra HDFT(k, l ) (po przestawieniu z ry-
sunku 22.11a, opisana w częstotliwościach unormowanych), oscylacyjna odpowiedź impulsowa uzyskana
w wyniku odwrotnej transformacji Fouriera 2D IDFT, efekt wymnożenia tej odpowiedzi z oknem 2D Gaussa
(σ = 10) oraz jej widmo 2D, obliczone za pomocą 2D DFT (ponownie przestawione i opisane w częstotliwo-
ściach unormowanych)
Filtracja 2D obrazów 685
Tab. 22-3. Definicje przykładowych filtrów 2D, liniowych i nieliniowych (medianowy, minimalny, maksy-
malny)
Rodzaj filtra
Definicja
Zastosowanie
LP 1 4 7 4 1
wygładzanie 1 1 1 1 1 1 1 2 1 4 16 26 16 4
1 1 1 1
1 1 1 , 1 2 1 , 2 4 2 ,
9 10 16 273 7 26 41 26 7
1 1 1 1 1 1 1 2 1
4 16 26 16 4
1 4 7 4 1
MEDIANOWY x1 x2 x3
usuwanie szumu med x4 x5 x6 wartość środkowa po uporządkowaniu {min...max}
impulsowego
x7 x8 x9
EROZJI x1 x2 x3 x1 x2 x3
DYLATACJI min x4 − x6 , max x4
− x6 wartość min/max sąsiadów piksela
ścienianie
pogrubianie x7 x8 x9 x7 x8 x9
686 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
W przetwarzaniu obrazu stosuje się także proste filtry nieliniowe, które okazują się być bardzo
skuteczne. Z tego powodu ich definicje także podano w tablicy 22-2. Należy do niej filtr me-
dianowy, minimalny (erozji) oraz maksymalny (dylatacji). W tym przypadku filtr nie ma żad-
nych wag tylko jest reprezentowany przez maskę, na przykład o wymiarach 3 × 3 lub 5 × 5, któ-
ra przesuwa się nad obrazem. W każdym położeniu maska „widzi” wybraną grupę pikseli ob-
razu. Na podstawie ich wartości w obrazie wynikowym jest ustawiana wartość piksela pokry-
wającego się z środkiem maski. W filtrze medianowym wartości „widzianych” pikseli są usta-
wiane w kolejności od najmniejszego do największego, a jako wynik filtracji jest wybierana
wartość znajdująca się w środku tak uporządkowanego zbioru. Ponieważ zakłócenia impulso-
we w obrazie mają wartości odbiegające od „otoczenia”, zostają one skutecznie usunięte w ten
sposób. Nie towarzyszy temu szkodliwe wygładzenie skokowych zmian intensywności pikseli
w obrazie, typowe dla liniowego filtra dolnoprzepustowego. W podobny sposób pod względem
metodologicznym działają filtry minimalny i maksymalny: do obrazu wynikowego jest kopio-
wana minimalna lub maksymalna wartość przyjmowana przez piksele sąsiadujące z pikselem
„wybranym” przez środek maski. Filtrowi minimalnemu towarzyszy „erozja” (zmniejszenie)
wielkości obiektów obrazu, maksymalnemu zaś − ich „dylatacja” (powiększenie). Dodatkowo
definiuje się operacje złożone, będące sekwencją wywołań tych filtrów: otwarcia (min + max)
− usunięcie zakłóceń typu zewnętrzne „wypustki” obiektu obrazu oraz domknięcia (max +
+ min) − usunięcie zakłóceń typu wewnętrzne „nadżerki” obiektu obrazu [Wojn94, Wojn98,
Tade97].
Dla dociekliwych. Na zakończenie, w tabeli 22-4 podano wzo r y p r o j ekto we, które umożli-
wią nam prosty dobór parametrów filtrów obrazu, wywodzących się z funkcji Gaussa (przy-
pomnijmy (22.41)), zajmującej jedno z najważniejszych miejsc w analizie i przetwarzaniu syg-
nałów 1D i 2D ze względu na: minimalne pole powierzchni jej atomu czasowo-częstotli-
wościowego (17.7)÷(17.9) oraz ten sam kształt funkcji czasowej i jej widma (4.35), (22.42).
Z ich wykorzystaniem można wygenerować różne filtry zastępujące te z tabeli 22-3. Oryginal-
na, jednowymiarowa funkcja Gaussa g0(m) jest filtrem dolnoprzepustowym, jej pierwsza po-
chodna g1(m) − filtrem różniczkującym, a druga pochodna g2(m) − filtrem pasmowoprzepu-
stowym. Podobnie jest z dwuwymiarową funkcją Gaussa i jej pochodnymi cząstkowymi, które
w tym przypadku są filtrami kierunkowymi. Jej pierwsze pochodne cząstkowe mogą zastępo-
wać filtry gradientowe Sobela, horyzontalny i wertykalny. Natomiast laplasjan:
∂ 2 g 0 ( m, n ) ∂ 2 g 0 ( m, n )
L ( m, n ) = + = g 2 m ( m, n ) + g 2 n ( m, n ) (22.48)
∂2 m ∂2n
jest dwuwymiarowym filtrem pasmowoprzepustowym o charakterystyce częstotliwościowej 2D
o postaci z rysunku 22.18c (po prawej). Program z tabeli 22-5 umożliwia projektowanie filtrów
gaussowskich. Na rysunku 22.25 przedstawiono kształty gaussowskich filtrów 1D (K = L = 25)
i 2D (K = L = 15), w obu przypadkach σ = 5, a na rysunku 22.26 − przykłady zastosowania
filtrów 2D (K = L = 4, σ = 1,4).
a) 0.08
0.06
g 0 (m)
0.04
0.02
0
-20 -10 0 10 20
m
b) 0.01
0.005
g1(m)
-0.005
-0.01
-20 -10 0 10 20
m
c) 0.002
0.001
0
g 2 (m)
-0.001
-0.002
-0.003
-20 -10 0 10 20
m
Rys. 22.25. Kształty filtrów „gaussowskich” (σ = 5) 1D i 2D, zdefiniowanych w tabeli 22-4: a) dolnoprze-
pustowe, b) różniczkujące (kierunkowe: po wierszach i kolumnach), c) pasmowoprzepustowe
688 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
a) b)
c) d) e)
Rys. 22.26. Przykłady zastosowania filtrów „gaussowskich” do przetwarzania obrazu Kamerzysta (rys.
22.1a): a) filtracja dolnoprzepustowa, b) filtracja pasmowoprzepustowa z wykorzystaniem laplasjanu funkcji
Gaussa, c) filtracja gradientowa po wierszach, d) filtracja gradientowa po kolumnach, e) pierwiastek z sumy
kwadratów obrazów c) i d); parametry filtrów: K = 4, L = 4, σ = 1,4
% METODA OKIEN
chka = 1; % 0 = charakterystyka prostokątna, 1 = kołowa
w = hamming(L); w = w * w'; % okno 2D
subplot(111); mesh(m,n,w); colormap([0 0 0]); title('2D Okno'); pause
end
Nie wiem dlaczego, ale często podczas pisania tej książki przychodzi mi do głowy porównanie
dokonywanych przeze mnie wyborów do ... łyżwiarstwa figurowego, którego już notabene od
wielu lat nie oglądam. Program obowiązkowy jest w nim mniej więcej znany. W tym rozdziale
się już on skończył. Problem dotyczy wyboru programu dowolnego: krótkiego, dynamicznego,
porywającego i ... inspirującego. Miejmy nadzieję, że taka właśnie będzie w Twoich oczach,
drogi Czytelniku, biortogonalna, predykcyjna wersja transformacji falkowej.
Jak już było powiedziane, predykcyjna transformacja falkowa (PTF) jest specyficzną imple-
mentacją zespołu filtrów dyskretnej transformacji falkowej, opisanej w rozdziale 17.4, ale tym
razem w wersji biortogonalnej (patrz rysunki 17.14 i 17.15). Przypomnijmy, poprzednio
w dwukanałowym, krytycznie próbkowanym zespole filtrów występowały dwa filtry: dolno-
przepustowy h0(n) oraz górnoprzepustowy h1(n): na wyjściu pierwszego z nich otrzymywali-
śmy dolnoprzepustową aproksymatę sygnału Ω, a na wyjściu drugiego − wysokoczęstotliwoś-
ciowe detale (szczegóły) Π, stanowiące uzupełnienie aproksymaty do oryginalnego sygnału.
W predykcyjnej wersji transformacji falkowej jest podobnie, tylko filtry są realizowane w inny
sposób. Na rysunku 22.27 są przedstawione schematy blokowe predykcyjnej transformacji
prostej i odwrotnej. Bloczek podział dzieli sygnał wejściowy sj (na j-tym poziomie dekompo-
zycji) na dwie składowe polifazowe: sj(e) − próbki o indeksach parzystych (even) oraz sj(o) −
próbki o indeksach nieparzystych (odd). Zakładając, że sygnał sj jest wektorem o parzystej
liczbie elementów (sj = sj(n), n = 0...N − 1, N − liczba naturalna parzysta), otrzymujemy:
N
s (e)
j ( n ) = s j (2n ), n = 0... −1 ( próbki parzyste) (22.49)
2
N
s (o)
j ( n ) = s j (2n + 1), n = 0... − 1 ( próbki nieparzyste) (22.50)
2
Następnie wyznacza się współczynniki aproksymacji sj−1 (odpowiadające Ω) oraz detali dj−1
(odpowiadające Π) na ( j −1)-ym poziomie dekompozycji. Wyjściowy sygnał detali dj−1 otrzy-
muje się jako błąd predykcji P próbek nieparzystych sj(o) na podstawie próbek parzystych sj(e).
Sygnał ten zawiera informację o wyższych częstotliwościach. Wyjściowy sygnał aproksymacji
sj−1 powstaje natomiast w wyniku działania operatora opisanego na schemacie bloczkiem U
− uaktualnienie, który dobiera się tak, aby wartość średnia sygnałów sj i sj−1 była taka sama.
Podsumowując mamy:
Podział: sj → sj(e), sj(o)
Predykcja: dj−1 = sj(o) – P{ sj(e)} (22.51)
Uaktualnienie: sj−1 = sj(e) + U{ dj−1}
Analiza Synteza
parzyste Aproksymata LP parzyste
(e) (e)
sj s j−1 s j−1 sj
sj sj
Podział P U U P Łączenie
(o) (o)
s j d j−1 d j−1 s j
nieparzyste Detale HP nieparzyste
Rys. 22.27. Schematy blokowe prostej i odwrotnej predykcyjnej transformacji falkowej, P – predykcja,
U – uaktualnienie (LP − niskoczęstotliwościowa, HP − wysokoczęstotliwościowa)
692 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
Odwrotną transformację PTF otrzymuje się poprzez odwrócenie (po angielsku: undo) wszyst-
kich operacji, wykonanych w transformacji prostej (patrz rysunek 22.27):
Odwrócenie uaktualnienia: sj(e) = sj−1 − U{ dj−1}
Odwrócenie predykcji: sj(o) = dj−1 + P{ sj(e)} (22.52)
(e) (o)
Łączenie: sj , sj → sj
Transformacja PTF, określona równaniami (22.51) i (22.52), jest zawsze odwracalna niezależ-
nie od tego jakich filtrów (funkcji) P i U użyto: sygnał wejściowy jest zawsze perfekcyjnie re-
konstruowany na jej wyjściu (lecz tylko wtedy, kiedy współczynniki transformaty nie są mo-
dyfikowane, np. kwantowane, progowane, adaptowane). Właściwość ta jest spełniona także
w przypadku, gdy funkcje (filtry) predykcji i uaktualnienia są nieliniowe (np. medianowe).
Schemat PTF umożliwia prostą implementację transformacji całkowitoliczbowych (dla sygnału
całkowitoliczbowego współczynniki transformaty są również całkowitoliczbowe − ważne pod-
czas bezstratnej kompresji sygnałów), realizację różnych typów adaptacji oraz efektywne roz-
wiązanie problemu brzegowego (o czym dalej). Dodatkowo w PTF są możliwe obliczenia
z podstawianiem (czyli nie są wymagane dodatkowe zasoby pamięci), a wydajność oblicze-
niowa jest większa niż dla klasycznej dyskretnej transformacji falkowej, liczonej za pomocą
zespołu filtrów (w przypadku zastosowania tych samych funkcji bazowych).
N −1 N
−1
N −1
1 12 2
sj =
N
∑ s j ( n) = N ∑ s j (n ) + ∑ s j ( n )
(e) (o)
(22.56)
n =0 n =0 n =0
po uwzględnieniu (22.55), otrzymujemy dla poziomu j – 1:
N
−1 N −1 N
−1
2 2 12 2
s j −1 = ∑ s j −1 ( n ) = ∑ ( 2 − 2u0 ) ⋅ s (e)
j (n ) + ∑ 2u0 ⋅ s (o)
j (n) (22.57)
N n =0 N n =0 n =0
Falkowa dekompozycja 2D obrazów 693
n n n
sj sj sj
waną. W takim przypadku przewidywaną wartość próbki nieparzystej oblicza się na podstawie
dostępnych wartości próbek parzystych odpowiednio modyfikując wagi (na przykład na rysun-
ku 22.28c wagi predyktora na lewym brzegu są wyznaczone na podstawie jednego sąsiada
z lewej strony i trzech z prawej strony). Takie rozwiązanie problemu brzegowego nie jest moż-
liwe w klasycznym zespole filtrów, gdzie rutynowo stosuje się odbicie lustrzane lub periody-
zację sygnału.
s (e)
j ( n1 )
N −1 n N − 2 1 a N −1
n1 1
a N −1
s (e) (n2 ) n N −1 n N − 2 a
1 a N − 2
j = 2 2
= B NxN ⋅ N −2 (22.59b)
(e) N −1
n n NN −1 1 a0 a
0
s j (nN ) N
Następnie zakłada się, że ten sam wielomian opisuje także sygnał składający się z próbek nie-
parzystych i wykorzystuje się go do obliczenia wartości funkcji w punktach pomiędzy węzła-
mi, czyli właśnie wartości próbek nieparzystych. Przykładowo załóżmy, że znamy wartości
wielomianu dla próbek sj(e) o numerach n = 0, 1, 2, 3, odpowiadających próbkom 0, 2, 4, 6 syg-
nału oryginalnego sj, a szukamy jego wartości dla n = 1,5 − czyli dla próbki o numerze 3 syg-
nału oryginalnego, będącą równocześnie drugą próbką sygnału sj(o). W sytuacji kiedy znamy
wartości próbek sj(e)(n1), ..., sj(e)(nN), współczynniki wielomianu (22.58) stanowią rozwiązanie
równania (22.59) i są dane wzorem:
−1 s (e) s (e)
j ( n1 ) j ( n1 )
N −1
a N −1 n1 n1N −2 1
a
N −1
n2N −2 s (e) (n2 ) s (e) (n2 )
N − 2 = n2 1
j
= B −N1× N j
(22.60)
(e) (e)
a0 n NN −1 nNN −1 1 s j (n N ) s j ( nN )
Falkowa dekompozycja 2D obrazów 695
a N −1
a
N −2
s (je ) ( n ) = n N −1 n N − 2 1 (22.61)
a0
s ( e ) ( n1 ) −1
n1N −1 n1N −2 1
j
s ( e ) ( n2 ) n N −1 n2N −2 1
s j ( xi ) = p ⋅ j , p = n N −1 n N −2 1 2 (22.62)
( e) n N −1 n N −1
s j (n N ) N N 1
Nowa, wyznaczona interpolacyjnie wartość sj(e)(n) jest sumą ważoną wartości sj(e)(n1), sj(e)(n2),
... sj(e)(nN), a wartości wektora wag p są współczynnikami predyktora P. Przyjmując, na przy-
kład n = 0,5 lub 1,5 otrzymujemy w ten sposób predykcję (prognozę) wartości odpowiednich
próbek oryginalnego sygnału sj(m) o numerach nieparzystych (patrz rysunek 22.28). Przez rząd
interpolacji rozumie się stopień wielomianu interpolacyjnego. Rząd predyktora jest zawsze
o jeden większy od rzędu interpolacji (stopnia wielomianu) i jest liczbą parzystą.
flag=0;
N=2*rzad;
if N>0
x=1:1:N;
for i=1:N
for j=1:N
a(i,j)=x(i)^(N-j);
end
end
xp=-0.5;
for k=1:N+1;
xp=xp+1;
if xp==rzad+0.5; xp=xp; flag=1; end
for i=1:N
p(i)=xp^(N-i);
end
if flag==1, xp=rzad+0.5; flag=0; end
for i=1:N
for j=1:N
if i==j
b(i,j)=p(i);
end
end
end
c=b*inv(a);
for i=1:N
w(i)=sum(c(:,i));
end
wagi(k,:)=w;
end
end
if N==0;
wagi=1;
end
if N==1;
wagi=fliplr(wagi);
end
Przykładowe wartości zwracane przez funkcję prd dla predyktora IV rzędu są następujące
(dwóch sąsiadów po każdej stronie dla n = 1,5):
» prd(2)
ans =
1 1
predykcja
−1/2 −1/2 −1/2 −1/2
sj−1 = sj−1(0)
Rys. 22.29. Rozpływ próbek sygnału w PTF z rysunku 22.27 dla predyktora P o wagach p = [1/2, 1/2] oraz
uaktualnienia U o wagach u = [1/4, 1/4]. Układ ten odpowiada biortogonalnemu systemowi falkowemu z ry-
sunku 22.30 z filtrami: górnoprzepustowym g = [−1/2, 1, −1/2] oraz dolnoprzepustowym h == [−1/8, 1/4,
3/4, 1/4, −1/8]. Aby obliczyć wagi filtrów g i h wystarczy obliczyć sumaryczne wagi wszystkich dróg
przejścia każdej próbki sygnału sj z wejścia na wyjście (przykładowo dla sj (2) mamy: (−1/2) ⋅ (1/4) + 1 +
+ (−1/2) ⋅ (1/4) = 3/4)
698 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
Analiza Synteza
s j−1 s j−1
~
h ↓2 Aproksymata LP ↑2 h
sj sj
d j−1 d j−1
~g ↓2 Detale HP ↑2 g
Rys. 22.30. Transformacja PTF jako zespół filtrów biortogonalnych. Wzory projektowe dla b i o r t o go n a l -
n y c h filtrów analizy g (LP), h (HP) oraz syntezy g (LP), h (HP) falkowej przedstawiono w tabeli 22-7
i porównano z wymaganiami stawianymi filtrom ortogonalnym h0 i h1 (LP − dolnoprzepustowy, niskoczę-
stotliwościowy, HP − górnoprzepustowy, wysokoczęstotliwościowy)
Tab. 22-7. Zestawienie wymagań i równań projektowych dla ortogonalnych i biortogonalnych systemów
falkowych [Burr98]
2 ∑ h(n) = 2 ∑ h( n ) = ∑ h ( n ) = 2
n n n
g ( n ) = ( −1) h(1 − n )
n
4 g ( n ) = ( −1) n h( N − n ) n
g ( n ) = ( −1) h (1 − n )
1.5 1.5
1 1
0.5 0.5
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
funkcja skalująca analizy falka analizy funkcja skalująca analizy falka analizy
0
0 0
t t 0 t t
funkcja skalująca syntezy falka syntezy funkcja skalująca syntezy falka syntezy
0
0 0
0 t t t t
22.30. W tym pierwszym przypadku zastąpienie funkcji bazowych analizy przez funkcje synte-
zy i odwrotnie można uzyskać przez zamianę kolejności gałęzi poprzecznych, tj. wyko nanie
naj p ier w uaktualnienia, a następ nie p r ed ykcj i. W przypadku drugim następuje za-
miana miejscami filtrów sekcji analizy i syntezy.
Falkowy schemat predykcyjny umożliwia projektowanie odwracalnych transformacji całkowi-
toliczbowych, które odwzorowują zbiór liczb całkowitych w zbiór liczb całkowitych (nie są
one liniowe). Błąd rekonstrukcji sygnałów w wyniku zastosowania takich transformat wynosi
zero, a ich właściwości są zbliżone do właściwości zmiennoprzecinkowych pierwowzorów.
Transformaty całkowitoliczbowe znajdują zastosowanie w algorytmach kompresji bezstratnej
(np. sygnałów biomedycznych), gdzie w torze kompresji poprzedzają koder entropijny. Ich
realizacja programowa jest bardzo prosta, gdyż polega wyłącznie na całkowitoliczbowym za-
okrągleniu sygnałów wyjściowych z filtrów predykcji i uaktualnienia, takim samym w sekcji
analizy i syntezy transformacji.
700 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
Zdaję sobie sprawę, że większość Czytelników jest w tym momencie bardzo znużona i czuje
się oszukana: miały być obrazy, a tu ciągle dekompozycja falkowa, w dodatku 1D a nie 2D!
Totalna klapa: uwertura przerosła symfonię! No cóż. Dla podniesienia na duchu powiem, że
w standardzie kompresji obrazów JPEG2000 jest m.in. stosowana predykcyjna transformacja
falkowa 1D z filtrami Cohen-Daubechies-Feauveau 5/3, które poznaliśmy, oraz 9/7. Transfor-
macja falkowa jest także używana przez Federalne Biuro Śledcze w Stanach Zjednoczonych
Ameryki do kompresji odcisków palców. Obecnie próbuje się ją także wykorzystać do różni-
cowej kompresji kolejnych ramek (klatek) obrazu w zapisach wideo. Wersja predykcyjna
transformacji falkowej ma wiele zalet, m.in. jest obliczeniowo szybsza i umożliwia obliczenia
bez konieczności wprowadzania dodatkowych zmiennych pomocniczych (oszczędność pamię-
ci). Trzeba iść pod górę, aby wejść na szczyt. Czy warto było się trudzić? Na to pytanie każdy
z Czytelników już wkrótce sam sobie odpowie po zapoznaniu się z częścią praktyczną tego
podrozdziału.
Do falkowej analizy o b r azó w, czyli sygnałów dwuwymiarowych, najczęściej wykorzystuje
się j ed no wymiar o wą transformację falkową (patrz rysunek 22.32):
1) w pierwszym kroku są dekomponowane kolejne wiersze obrazu na współczynniki aproksy-
macji i detali za pomocą sekcji analizy układów z rysunków 22.27 lub 22.30; wynik takiego
przekształcenia jest pokazany na rysunku 22.32b;
2) w drugim kroku są dekomponowane kolejne kolumny obu podobrazów aproksymacji i deta-
li, otrzymane w kroku pierwszym, ponownie na współczynniki aproksymacji i detali za pomocą
tych samych układów; końcowy wynik dekompozycji (jednopoziomowej) obrazu jest przed-
stawiony na rysunku 22.32c.
Po dekompozycji obraz jest reprezentowany przez cztery macierze współczynników falko-
wych, które łącznie mają tyle samo elementów co obraz oryginalny: macierz aproksymacji oraz
macierze detali horyzontalnych, wertykalnych i diagonalnych. Uzasadnienie nazw poszczegól-
nych macierzy detali wynika wprost z rysunku 22.35b, na którym wyraźnie widać jak prefero-
wane są w nich wybrane kierunki krawędzi na obrazie. Także kierunek oscylacji bazowych
funkcji falkowych, związanych z macierzami (podobrazami) detali i pokazanych na rysunku
22.36, także potwierdza słuszność tych nazw.
Na rysunku 22.33 są jeszcze raz zbiorczo przedstawione wszystkie macierze współczynników,
otrzymywanych podczas dekompozycji obrazu Lena. W tym przypadku należy zapamiętać
zwyczajowy sposób prezentacji wyników transformaty falkowej obrazów, czyli układ podobra-
zów współczynników: LP-LP, LP-HP, HP-LP, HP-HP (A-A, A-D, D-A, D-D). Ponieważ po-
dział na aproksymatę (A) i detale (D) jest równoważny filtracji dolnoprzepustowej LP oraz
górnoprzepustowej HP, wybrano na tym rysunku oznaczenia związane z filtrami, ponieważ są
one bardziej naturalne (i intuicyjne) w książce z przetwarzania sygnałów. Z kolei na rysunku
22.34a jest przedstawiony wynik dwupoziomej dekompozycji falkowej obrazu Lena. Jak widać
Falkowa dekompozycja 2D obrazów 701
Filtracja Filtracja
wierszy + kolumn +
decymacja decymacja
Aproksymata
A A-A
LP+↓2 LP-LP
Obraz oryginalny A
LP+↓2
D A-D
HP+↓2 LP-HP
Detale
A D-A
LP+↓2 HP-LP
D
HP+↓2
D D-D
HP+↓2 HP-HP
Rys. 22.32. Wytłumaczenie kolejnych etapów dekompozycji obrazu za pomocą transformacji falkowej 1D:
krok 1 − dekompozycja każdego wiersza na jego aproksymatę (filtracja dolnoprzepustowa LP + usunięcie co
drugiej próbki, czyli decymacja ↓2) oraz detale (filtracja górnoprzepustowa HP tego samego wiersza + de-
cymacja ↓2), krok 2 − dekompozycja każdej kolumny dwóch półobrazów wynikowych z kroku 1 na jego
aproksymatę (LP + ↓2) i detale (HP + ↓2), identycznie jak w kroku 1 tylko teraz po kolumnach. Podczas
dekompozycji jest wykorzystywana sekcji analizy transformacji falkowej z rysunku 22.27 lub 22.30. Synte-
za obrazu przebiega w odwrotnej kolejności z użyciem sekcji analizy transformacji. W przypadku dwukana-
łowego zespołu filtrów z rysunku 22.30 układ „LP lub HP + ↓2” jest teraz zastąpiony przez blok „↑2 + LP
lub HP”, tzn. w miejsce usuwania co drugiej próbki po filtracji występuje teraz wstawianie wartości zero-
wych pomiędzy każde dwie próbki przed filtracją
a) b) c)
LP-LP LP-HP
LP HP
HP-LP HP-HP
a) b)
LP-LP LP-HP
LP-HP
HP-LP HP-HP
HP-LP HP-HP
a) b)
Rys. 22.35. Ilustracja dwóch właściwości współczynników transformacji falkowej: a) histogramy współ-
czynników dla obrazu testowego Lena, pokazujące, że współczynniki w podobrazach detali przyjmują małe
wartości wokół zera (wykresy sporządzono dla odpowiednich macierzy falkowych z rys. 22.33c), b) dekom-
pozycja obrazu testowego pokazująca „wrażliwość” współczynników detali na zmiany częstotliwości w ob-
razie w odpowiednich kierunkach: horyzontalnym, wertykalnym i diagonalnym
a) b)
Rys. 22.36. Przykładowe dwuwymiarowe falkowe funkcje bazowe: a) wizualizacja trójwymiarowa (pła-
szczyzna oznacza wartość zero), b) wizualizacja w poziomach szarości (kolor jasny to duża wartość). Poło-
żenie funkcji bazowych jest adekwatne do rys. 22.33c i rys. 22.35b. Należy zwrócić uwagę na różny kieru-
nek oscylacji w falkowych funkcjach bazowych, związanych z podobrazami detali: horyzontalny, wertykal-
ny i diagonalny
704 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
cierzy wynikowych ostatniego poziomu analizy i ... wrócić z powrotem. Cóż otrzymamy?
Funkcję skalującą lub falkę, w zależności od tego co wybraliśmy. W świecie 1D jeden współ-
czynnik transformacji falkowej na wybranym poziomie dekompozycji mówił nam, że w sygna-
le w danej chwili czasowej występuje falka o określonej częstotliwości (związanej z pozio-
mem). W świecie 2D jest podobnie. Teraz otrzymujemy informację, że w danym miejscu
przestrzeni występuje falka 2D o określonej częstotliwości. Stąd już krok do zrozumienia tak
dużej popularności stosowania transformat falkowych do rozpoznawanie tekstur w obrazach!
Jednak uwertura naprawdę była długa (z konieczności), więc musimy powoli zmierzać do koń-
ca naszej ledwo rozpoczętej symfonii. W tabeli 22-8 znajduje się program napisany w języku
Matlab, stanowiący implementację dwuwymiarowej, predykcyjnej transformaty falkowej, który
stanowi uwieńczenie naszych rozważań przeprowadzonych w tym podrozdziale. Mamy nadzie-
ję, że jego użycie stanowić będzie nie lada gratkę dla Czytelników, żądnych wyzwań „ekstre-
malnych”.
Zaokrąglenia (round) w funkcjach l2int.m i il2int.m powodują, że współczynniki fal-
kowe są liczbami całkowitymi. Z tego powodu mogą być one kodowane bezstratnie, na przy-
kład z wykorzystaniem kodowania entropijnego Huffmana lub arytmetycznego.
A = imread('lena.bmp'); B=double(A);
rzadP=2;
rzadU=2;
% Analiza
[AA, AD, DD, DX]=lwt2d(B,rzadP,rzadU);
% Rekonstrukcja
BR=ilwt2d(AA, AD, DD, DX,rzadP,rzadU);
% Wykresy
BO=[AA, s256(abs(AD)); s256(abs(DD)), s256(abs(DX))];
figure, imshow(uint8(BO),256); title('Współczynniki falkowe')
figure, imshow(uint8(BR),256); title('Rekonstrukcja')
blad=(sum(sum(abs(B-BR))))
[w k]=size(B);
k2=round(k/2);
w2=round(w/2);
A=zeros(w,k2);
D=zeros(w,k2);
AA=zeros(w2,k2); AD=AA; DD=AA; DX=AA;
Falkowa dekompozycja 2D obrazów 705
for j=1:w
[A(j,:),D(j,:)]=l2int(B(j,:),rzadP,rzadU);
end
[w k]=size(A);
for j=1:k
[a,d]=l2int(A(:,j)',rzadP,rzadU);
AA(:,j)=a';
AD(:,j)=d';
end
for j=1:k
[a,d]=l2int(D(:,j)',rzadP,rzadU);
DD(:,j)=a';
DX(:,j)=d';
end
[w k]=size(AA);
D=zeros(2*w,k);
A=zeros(2*w,k);
B=zeros(2*w,2*k);
for j=1:k
a=DD(:,j)';
d=DX(:,j)';
x=il2int(a,d,rzadP,rzadU);
D(:,j)=x';
end
for j=1:k
a=AA(:,j)';
d=AD(:,j)';
x=il2int(a,d,rzadP,rzadU);
A(:,j)=x';
end
[w k]=size(A);
for j=1:w
B(j,:)=il2int(A(j,:),D(j,:),rzadP,rzadU);
end
function [even,odd]=l2int(x,rzadP,rzadU)
%podział
even = x(1:2:length(x));
odd = x(2:2:length(x));
odd=odd-round(sub(even,rzadP));
even =round(update(odd,rzadU))+even;
function x=il2int(even,odd,rzadP,rzadU)
even =even-round(update(odd,rzadU));
odd=round(sub(even,rzadP))+odd;
x=merge(even,odd);
706 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
function odd=sub(even,rzad);
odd=[];
wagi=prd(rzad); [w,d]=size(wagi);
wagi=wagi(2:w,:);[w,d]=size(wagi);
if rzad==0
odd=even;
end
if rzad>0;
% brzegi na początku
for i=1:floor(w/2-1)
odd(i)=even(1:d)*wagi(i,:)';
end
if rzad==1; i=0; end
% środek
pom = conv(even, wagi((w/2),:));
pom(1:w-1)=[]; pom(length(pom)-w+2:length(pom))=[];
j=length(even)-w+1;
odd=[odd pom];
% brzegi na końcu
for k=1:floor(w/2)
odd(i+j+k)=even(length(even)-d+1:length(even))*wagi(ceil(w/2)+k,:)';
end
end
function even=update(odd,rzad);
wagi=prd(rzad); [w,d]=size(wagi);
wagi=wagi(1:w-1,:);[w,d]=size(wagi);
wagi=0.5*wagi;
if rzad==0
even=0.5*odd;
end
if rzad>0;
% brzegi na początku
for i=1:floor(w/2)
even(i)=odd(1:d)*wagi(i,:)';
end
pom = conv(odd, wagi(ceil(w/2)+1,:));
pom(1:w-1)=[]; pom(length(pom)-w+2:length(pom))=[];
j=length(odd)-w+1;
even=[even pom];
% brzegi na końcu
for k=1:floor(w/2)-1
even(i+j+k)=odd(length(odd)-d+1:length(odd))*wagi(ceil(w/2)+k+1,:)';
end
end
function x=merge(even,odd);
x=zeros(1,length(even)+length(odd));
x(1:2:length(x))=even;
x(2:2:length(x))=odd;
function A=s256(A);
Amin=min(A(:));
A=A-Amin;
Amax=max(A(:));
A=255*A/Amax;
Przykłady zastosowań 707
Y (k , l ) YDCT (k , l ) ± Q ( k , l ) / 2
Z (k , l ) = round DCT = , k , l = 0, 1,..., 7 (22.63)
Q ( k ,l ) Q (k , l )
gdzie „x” oznacza największą liczbę całkowitą mniejszą od lub równą x, czyli zaokrąglenie
do dołu. W wyniku tej operacji współczynniki transformaty o małych wartościach zostają wy-
zerowane. W normie JPEG jest zalecanych kilka tablic kwantyzacji, przykładowo następujące
dla składowej luminancji Y oraz obu chrominancji Cb i Cr (22.4) 24-bitowego obrazu RGB:
16 11 10 16 24 40 51 61 17 18 24 47 99 99 99 99
12 12 14 19 26 58 60 55 18 21 26 66 99 99 99 99
14 13 16 24 40 57 69 56 24 26 56 99 99 99 99 99
14 17 22 29 51 87 80 62 47 69 99 99 99 99 99 99
QY (k , l ) = QC (k , l ) =
18 22 37 56 68 109 103 77 99 99 99 99 99 99 99 99
24 35 55 64 81 104 113 92 99 99 99 99 99 99 99 99
49 64 78 87 103 121 120 101 99 99 99 99 99 99 99 99
72 92 95 98 112 100 103 99 99 99 99 99 99 99 99 99
W (22.63) znak „+” w liczniku stosuje się dla XDCT(k, l ) ≥ 0, a „−” w przeciwnym przypadku.
Ponieważ współczynniki DC (lewy górny narożnik) sąsiednich bloków 8×8 pikseli są najczęś-
ciej duże i skorelowane (z powodu składowej stałej obrazu), dlatego są one traktowanie spe-
cjalnie: współczynnik DC pierwszego bloku oraz różnice tych współczynników pomiędzy ko-
lejnymi blokami są zapisywane w kodzie VLI (Variable Length Integers). W zastosowanym do
DC kodowaniu VLI każda kodowana liczba jest zastępowana następującą parą sekwencji bito-
wych (B, X):
• B − czterema bitami, na których podaje się liczbę bitów potrzebnych do zapisania modułu
kodowanej liczby (dla różnic współczynników DC dopuszcza się od 0 do 11 bitów),
• X − zapisanym binarnie modułem liczby (tylko bity znaczące), którego bity się neguje, jeśli
liczba jest ujemna (jest to część opcjonalna dla DC, niewystępująca dla wartości zerowych
różnic).
Na końcu stosuje się koder entropijny Huffmana (patrz rysunek 19.1) (obowiązkowy) lub
arytmetyczny (opcjonalny), ale tylko w odniesieniu do bitów modułów liczb (używa się od-
dzielnych tablic dla różnych długości modułów). W dekoderze sprawdza się najstarszy z bitów
modułu liczby i jeśli jest on równy 0, to wszystkie bity się neguje.
708 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
Natomiast pozostałe współczynniki, tzw. AC, każdego bloku są kodowane oddzielnie. Ich war-
tości skanuje się wzdłuż linii ukośnych prostopadłych do głównej diagonali macierzy współ-
czynników transformaty, zaczynając od lewego górnego rogu (patrz rysunek 22.37), czyli po-
rządkuje od najniższych do najwyższych częstotliwości. Ponieważ w wyniku kwantyzacji wię-
kszość współczynników AC jest wyzerowanych, uzyskuje się długie sekwencje zer, poprze-
dzielane nielicznymi wartościami niezerowymi. Na p o czątku metodą Huffmana koduje się
8-bitowy obiekt typu (Z, B), gdzie:
• Z − długość sekwencji zer poprzedzających (kod RLC − Run Length Coding) (4 bity),
• B − najmniejsza liczba bitów potrzebna do zapisania modułu elementu niezerowego (4 bity),
dla współczynników AC zmieniająca się od 1 do 10.
Kiedy sekwencje zer mają więcej niż 15 elementów, to sztucznie się je dzieli na porcje: (15, 0)
plus reszta, dążąc do tego, aby kod pary (Z, B) zmieścił się na 8 bitach. W ten sposób dąży się
do ograniczenia wielkości tablic kodowych Huffmana. Należy zwrócić uwagę, że zapis (15, 0)
oznacza 16 zer: 15 poprzedzających i jedno zero, które po nich następuje. Do p ie r o p o te m
koduje się binarnie sam element niezerowy X: zapisuje się binarnie moduł liczby, pozostawia
tylko bity znaczące potrzebne do jego zdekodowania oraz neguje wszystkie bity, jeśli liczba
jest ujemna. Następnie koduje się metodą Huffmana otrzymaną w ten sposób grupę bitów,
używając oddzielnych tablic dla różnych długości modułów. Jak widać para (B, X) tworzy kod
VLI dla każdego niezerowego współczynnika AC. W strumieniu bitów występują na przemian
kody Huffmana obiektów (Z, B) i modułów elementów niezerowych X.
DC AC
i.t.d.
Rys. 22.37. Skanowanie zygzak współczynników
transformaty 2D DCT każdego bloku 8×8 pikseli
Zbiór dyskowy
Tablice Tablice Nagłówek
Obraz podzielony
kwantyzacji kodowania
na bloki 8×8 Tablice
Zbiór dyskowy
Nagłówek Tablice Tablice
Obraz podzielony
kodowania kwantyzacji
Tablice na bloki 8×8
Rys. 22.38. Schemat blokowy kodera (góra) i dekodera (dół) obrazów standardu JPEG [Bhas97]. Tablice
kodera entropijnego Huffmana, stosowane w standardzie, są zoptymalizowane dla szerokiej gamy obrazów,
dlatego najczęściej nie są najefektywniejsze dla aktualnie kodowanego
Przykłady zastosowań 709
Schemat blokowy kodera i dekodera standardu JPEG przedstawiono na rysunku 22.38. W de-
koderze wszystkie operacje są przeprowadzane w odwrotnej kolejności, a rekwantyzacja jest
przeprowadzana według wzoru:
Przykład. Przedstawimy teraz przykład kodowania nieko mp atyb ilny ze standardem, ale za
to prosty i poglądowy. Załóżmy, że tablica kwantyzacji Q(k, l) = c (dowolnie wybrana liczba).
Do kodowania różnic współczynników DC nie użyjemy kodowania Huffmana, jak jest w stan-
dardzie (pozostawiamy to jako zadanie domowe dla Czytelnika!) tylko samo kodowanie VLI:
zawsze 4 bity na podanie najmniejszej liczby potrzebnych bitów do zapisania modułu binar-
nej reprezentacji kodowanej liczby, a potem zapis tego modułu. Na przykład liczba 7 w kodzie
dwójkowym ma zapis 0111, a w kodzie VLI: 0011 111. W przypadku liczb ujemnych stosu-
jemy negację bitów modułu, czyli dla liczby −7 mamy 0011 000 (analogicznie −1 → 0001 0,
6 → 0011 110).
Załóżmy, że dwa kolejne bloki 8×8 pikseli po transformacji DCT i kwantyzacji są następujące:
520 50 0 0 0 0 0 0 510 30 0 0 0 0 0 0
20 0 0 0 0 0 0 0 47 0 0 0 0 0 0 0
0 0 0 0 −12 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 12 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Kodujemy blok 1:
DC = 520: 520 − 0 = 520 kodujemy jako ciąg binarny 1010 1000001000
Pierwsze cztery bity informują, że do binarnego zakodowania liczby 520 jest potrzebnych 10
bitów, a potem występuje 10-bitowa reprezentację tej liczby. Ponieważ jest to liczba dodatnia,
nie dokonujemy negacji jej bitów. Przy kodowaniu par AC na pierwszy element pary przezna-
czamy 4 bity (jeśli występuje więcej zer niż 15, np. 22, to kodujemy je jako dwie pary (15, 0)
i (6, X), gdzie X oznacza niezerową liczbę), potem 4 bity na najmniejszą liczbę bitów, potrzeb-
nych do binarnego przedstawienia modułu wartości niezerowej, a na końcu zapisujemy moduł
wartości niezerowej, którego bity negujemy, jeśli liczba jest ujemna. W związku z powyższym
dla współczynników AC bloku 1 otrzymujemy (zzzz (4 bity) − liczba zer poprzedzających nie-
zerowy współczynnik, bbbb (4 bity) − liczba bitów modułu tego współczynnika, xx...x (bbbb
bitów) − jego moduł, zanegowany dla liczb ujemnych):
Kodujemy blok 2:
DC = 510: 510 − 520 = −10 kodujemy jako ciąg binarny 0100 0101
Pierwsze cztery bity informują, że do zakodowania wartości −10 są potrzebne 4 bity, a potem
występują 4 bity będące negacją reprezentacji binarnej liczby 10: 1010 → 0101. Ze względu
na predykcyjne kodowanie współczynników DC jako prognozę bieżącej wartości (510) przyj-
mujemy wartość poprzednią (520) i zapisujemy tylko różnicę.
Naszym zadaniem w tej części jest danie satysfakcji najambitniejszym Czytelnikom i skrótowe
zapoznanie ich z id eą kompresji sygnału wideo, czyli sekwencji obrazów. Ponieważ kolejne
klatki (ramki) takiej sekwencji, mogą się tylko nieznacznie różnić, bezwarunkowe kodowanie
każdej z nich oddzielnie, tak jak w standardzie JPEG, jest mało efektywne. Pomimo tego takie
rozwiązanie, znane jako M-JPEG (Moving-JPEG), jest jednak stosowane z powodu swojej
prostoty, zwłaszcza jeżeli w urządzeniu istnieje algorytm/sprzęt do szybkiej realizacji kom-
presji JPEG. Obecnie bardzo często wykorzystuje się go w aparatach fotograficznych do kom-
presji krótkich filmów − sekwencji zdjęć.
W przypadku sygnału wideo jest zdecydowanie preferowana kompresja MPEG, m.in. stosowa-
na w stosunku do filmów nagrywanych na płytach DVD oraz przy nadawaniu satelitarnej i na-
Przykłady zastosowań 711
ziemnej telewizji cyfrowej. Schemat blokowy kodera i dekodera standardu MPEG jest przed-
stawiony na rysunku 22.39. W standardzie MPEG o wyborze opcji algorytmu kompresji decy-
duje blok sterujący kodera, jedną z możliwości jest jednorazowe kodowanie bloku siedmiu ra-
mek (patrz rysunek 22.39). Pierwsza z nich, nazywana ramką I (Intraframe coded ), jest kodo-
wana niezależnie od innych ramek − przyjmijmy dla up roszczenia, że tak jak w metodzie
JPEG, natomiast pozostałe podobnie, tylko w sposób różnicowy: różnica ramki P1 (Predicted )
względem ramki I, różnica ramki P2 względem P1 oraz różnica ramek B (Bidirectionally pre-
dicted ) względem dwóch ramek odniesienia: I, P1 lub P2. Zastosowanie ramki I ma na celu
uniknięcie akumulacji błędów predykcji oraz umożliwienie synchronizacji („przewijania” fil-
mu). W rzeczywistości nie jest realizowane zwykłe odejmowanie ramek, ale odejmowanie
„inteligentne”: dla każdego makrobloku pikseli (np. 16×16) ramki aktualnie kodowanej różni-
cowo (predykcyjnie) w stosunku do jednej lub dwóch ramek, które już są zakodowane, znajdu-
je się najbardziej do niego podobny makroblok w ramkach odniesienia: tylko jednej z po-
przednich lub jednej z poprzednich i jednej z następnych, i odejmuje się je od kodowanej ram-
ki. Operacja znajdowania podobnych makrobloków (czyli ich wektorów przesunięć − wekto-
rów ruchu − w stosunku do interesującego nas makrobloku ramki kodowanej) jest nazywana
estymacją ruchu, a ich odejmowanie − kompensacją ruchu. Jest ona graficznie zilustrowana na
rysunku 22.40.
W uproszczeniu w koderze MPEG wykonuje się kolejno następujące operacje (patrz rysunki
22.39 i 22.40).
1) Koduje się ramkę I, przykładowo tak jak w standardzie JPEG (DCT + kwantyzator Q),
z wykorzystaniem makrobloków, np. o wymiarach 16×16. Potem się ją rozkodowuje (IDCT +
+ Q−1) w celu kodowania różnicowego względem niej następnych ramek. Oznaczmy rozkodo-
waną ramkę I przez Ir (tę samą konwencję będziemy stosować dalej).
2) Przeprowadza się kompensację ruchu ramki P1 względem ramki Ir (przesuwanie makroblo-
ków z Ir i odejmowanie od P1). Zapamiętuje się znalezione i zastosowane optymalne wektory
ruchu WR. Otrzymany w ten sposób obraz różnicowy koduje się w ten sam sposób jak ramkę I,
a następnie go rozkodowuje. Oznaczmy przez IP1r obraz rozkodowany. Jeśli mamy rozkodo-
waną różnicę IP1r ramki P1 i poprzesuwanych makrobloków ramki odniesienia Ir oraz jeśli
znamy ramkę Ir i wektory ruchu WR zastosowane podczas „jej” przesuwania, to możemy na tej
podstawie odtworzyć ramkę P1. Możemy, więc ją odtwarzamy: P1r = IP1r + WR(Ir), gdzie
WR(Ir) oznacza obraz uzyskany w wyniku przesuwania makrobloków obrazu Ir z użyciem za-
pamiętanych wektorów ruchu WR.
3) Następnie koduje się ramkę P2 na podstawie odtworzonej ramki P1 w taki sam sposób jak
P1 kodowano w stosunku do odtworzonej ramki I.
4) Na końcu ramki B1, B2, B3, B4 są kodowane różnicowo w stosunku do dwóch ramek: roz-
kodowanego I i rozkodowanego P1 lub rozkodowanego P1 i rozkodowanego P2. Kompensacja
ruchu jest teraz wykonywana w stosunku do dwóch ramek odniesienia.
Ze względu na brak miejsca i dostępność literatury, w której szeroko dyskutuje się technikę
kompresji MPEG [Skar98, Doma00, Doma05], nie będziemy tego tematu dalej rozwijać.
Pewnie wielu Czytelników z radością teraz odetchnie i wielu się zasmuci. C’est la vie!
Jako zadanie domowe pozostawiamy Czytelnikowi programową implementację metod kom-
presji, przedstawionych w tym podrozdziale. W przypadku kodowania MPEG można na wstę-
pie zaniedbać kompensację ruchu i zacząć od prostego kodowania różnicowego kilku ramek.
712 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
Wejściowe
Rodzaje ramek
bity
Kontrola
Pamięć Bufor
DCT Q VLC I B1 B2 P1 B3 B4 P2
ramek
VLC −1
Wstępne Q−1 Bufor
przetw. Q −1
DCT−1
Wyjściowe DCT −1
bity Kompensacja ruchu
Wejściowe
wideo
Kompensacja Pamięć Ramka poprzednia
1/2
ruchu ramek Multi-
plekser
Ramka następna
Estymacja 0 Wyjściowe
ruchu wideo
Rys. 22.39. Schemat blokowy kodera (po lewej) i dekodera (po prawej) sygnału wideo standardu MPEG.
Oznaczenia operacji: DCT − dwuwymiarowa transformacja kosinusowa, Q − kwantyzacja, VLI − bezstratne
kodowanie o zmiennej długości (Variable Length Integers), „X−1” − operacja odwrotna do X. Oznaczenia ra-
mek: I − ramka kodowana bez kompensacji ruchu tak jak w standardzie JPEG, P1 − ramka kodowana różni-
cowo (predykcyjnie) w stosunku do ramki I z kompensacją ruchu jednostronną („w przód”), P2 − ramka ko-
dowana różnicowo w stosunku do P1 z kompensacją ruchu jednostronną („w przód”), B − ramki kodowane
różnicowo z kompensacją ruchu dwustronną („w przód” od ramki I oraz „w tył” od odpowiedniej ramki P)
a) b) Ramka
poprzednia Ramka
aktualna Ramka
Ramka
poprzednia następna
WR1
Ramka
Makroblok
aktualna
WR2
WR
Makroblok
DCT DCT
Rys. 22.40. Ilustracja graficzna zasady działania procedur estymacji i kompensacji ruchu: a) jednostronnej
„w przód”, b) dwustronnej: „w przód” i „w tył”. W ramkach odniesienia, „poprzedniej” i „następnej”, znaj-
duje się makroblok pikseli najbardziej podobny do makrobloku w aktualnej ramce i odejmuje się go od tej
ramki. Tworzy się w ten sposób obraz różnicowy, charakteryzujący się małymi wartościami intensywności
pikseli, który można efektywnie zakodować tak jak w standardzie JPEG. Optymalne wektory przesunięć,
prowadzące do minimalizacji dynamiki obrazu różnicowego nazywa się wektorami ruchu (WR) − również
się je koduje i przesyła
szach i kolumnach bloków pikseli o wymiarach 4×4 lub 8×8 i są zdefiniowane następującymi
macierzami transformacji 1D (bez skalowania; y = B⋅x, x = BT⋅y, x − wektor piony składający
się z czterech lub ośmiu pikseli obrazu):
8 8 8 8 8 8 8 8
12 10 6 3 −3 −6 −10 −12
1 1 1 1 8 4 −4 − 8 − 8 − 4 4 8
2 1 −1 −2
10 −3 −12 −6 6 12 3 −10
B4 x 4 = , B8 x 8 = , Binv = BT
1 −1 − 1 1 8 −8 − 8 8 8 −8 −8 8
1 −2 2 −1 6 −12 3 10 −10 −3 12 −6
4 −8 8 − 4 − 4 8 −8 4
3 −6 10 −12 12 −10 6 −3
end
end
end
kod, bity, pause
% Dekodujemy komunikat (sekwencję symboli)
pa_rev = pa(end:-1:1); alfa = [ 0 (Ns:-1:1) ]; nrdekod = []; % inicjalizacja parametrów
dol = 0; gora = 1; zakres = gora-dol; %
for k = length(nr) : -1 : 1 % początek pętli dekodowania
x = (kod-dol)/zakres; % oblicz liczbę x
indx = find( pa_rev <= x ), indx = indx(1); % pierwsza liczba w tablicy pa_reverse <= x
gora = dol + zakres*pa_rev( indx-1 ); % nowa "góra"
dol = dol + zakres*pa_rev( indx ); % nowy "dół"
zakres = gora-dol; % nowy "zakres"
nrdekod = [nrdekod alfa(indx) ]; % numer zdekodowanego symbolu
end
disp('Wysłano symbole'); nr
disp('Odebrano symbole'); nrdekod
W czasach skrupulatnej ochrony praw autorskich oraz różnych przejawów działalności intelek-
tualnej do produktów „autorskich” dodaje się niewidoczne dla użytkownika znaczniki (odpo-
wiednik znaków wodnych w banknotach), które mają potwierdzać ich autentyczność i źródło
pochodzenia (autor produktu, prawa użytkowania, kontrola rozpowszechniania itp.). Zabezpie-
czenia te muszą być tak skonstruowane, aby były niewid o czne dla odbiorcy oraz o d p o r ne
na brutalny „atak” nieuczciwego użytkownika na taki produkt, tzn. jego modyfikacja (np. de-
cymacja, filtracja, zmiana formatu na stratny) nie może doprowadzić do uszkodzenia znaku
wodnego, będącego świadectwem źródła pochodzenia. Oczywiście, istnieje także potrzeba wy-
krycia edycji zmian oryginału oraz jego ewentualnej rekonstrukcji.
Istnieje wiele technik znakowania obrazów odpornymi znakami wodnymi. My zapoznamy się
z jedną z nich. W centrum naszej uwagi będą stosowane w niej metody przetwarzania sygna-
łów. Na rysunku 22.41 przedstawiono schemat ideowy interesującego nas algorytmu metody
widma rozproszonego w dziedzinie czasu. W celu uzyskania lepszych właściwości wizualnych,
odporności na kompresję JPEG lub na przykład rotację obrazu, analogiczne znakowanie moż-
na przeprowadzić w dziedzinie współczynników transformaty DCT lub w dziedzinie współ-
rzędnych log-polar (rozdz. 22.5.3). Podczas procedury znakowania obrazu na początku two-
rzona jest macierz, która ma jego wymiary i składa się z bloków pikseli o takich samych warto-
ściach: 1 albo −1. Pełnią one rolę znaku wodnego − specjalnie przez nas definiowanego wzor-
ca binarnego. Następnie każdy jej element jest mnożony (modulowany) przez liczbę uzyskaną
z generatora liczb pseudolosowych, np. o rozkładzie normalnym, oraz skalowany przez ten sam
współczynnik wzmocnienia/tłumienia. W ten sposób znak ten jest ukrywany. Ostatnim etapem
jest dodanie zamaskowanego znaku do obrazu. Podczas operacji odczytywania znaku są moż-
liwe dwa scenariusze, detekcja „w jasno” i „w ciemno”. W pierwszym przypadku dysponujemy
oryginalnym obrazem bez znaku wodnego, w związku z czym na początku odejmujemy go od
sprawdzanego obrazu. Natomiast w drugim przypadku, w sytuacji kiedy nie mamy oryginału,
na początku filtrujemy obraz górnoprzepustowo, gdyż chcemy „odzyskać” szum szerokopa-
smowy dodany podczas znakowania. W dalszej części oba algorytmy są identyczne. Przepro-
wadzamy synchroniczną demodulację wzorca znaku, tzn. mnożymy wszystkie piksele obrazu
przez te same, odpowiadające im liczby pseudolosowe, które użyto podczas znakowania.
W sytuacji kiedy w chronionym obrazie znak przyporządkowany danemu pikselowi miał war-
716 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
suma wartości
pikseli
?
w blokach −1 1 1
Obraz do
znakowania HP f
1 −1 −1
−1 1 1
wzmocnienie
Rys. 22.41. Schemat blokowy algorytmu znakowania obrazu metodą rozpraszania widma oraz dekodowania
ukrytego znaku
a) b) c) d)
Rys. 22.42. Przykład znakowania obrazu: a) obraz oryginalny, b) znak, c) znak zmodulowany szumem,
d) obraz (obraz oryginalny z dodanym znakiem, który jest zmodulowany szumem)
Przykłady zastosowań 717
Tab. 22-10. Przykładowy program do nanoszenia znaków wodnych na obrazach metodą rozpraszania wid-
ma
% Parametry
K = 32; % rozmiar bloku dla jednego bitu znaku wodnego (K x K pikseli)
wzm = 1; % wzmocnienie znaku wodnego
% Rysunki
figure, subplot(1,2,1); imshow(Demod,[]); title('Demodulacja')
subplot(1,2,2); imshow(ZnakDetekt,[]); title('Detekcja znaku')
718 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
gdzie f1(x, y) i f2(x, y) oznaczają ciągłe obrazy, a F1(fx, fy) i F2(fx, fy) ich dwuwymiarowe trans-
formaty Fouriera. Wartość przesunięcia (x0, y0) obrazu 2 w stosunku do obrazu 1 można wy-
znaczyć w prosty sposób:
F ( f , f )F *( f , f )
2 x y 1 x y
Fourier −1
*
F2 ( f x , f y ) F1 ( f x , f y )
= Fourier e
{
−1 − j 2 π ( f x x0 + f y y0 )
}
= δ( x − x0 , y − y0 ) (22.66)
− j 2 π( f x x0 + f y y0 )
F2 ( f x , f y ) = e F1 ( f x cos Θ + f y sin Θ, − f x sin Θ + f y cos Θ) (22.68)
F2 ( r, ϕ) = F1 ( r, ϕ − Θ) (22.69)
f 2 ( x, y ) = f1 ( ax, ay ) (22.70)
1
F2 ( f x , f y ) = F1 ( f x / a , f y / a ) (22.71)
a2
1
F2 (log f x ,log f y ) = F1 (log f x − log a , log f y − log a ) (22.72)
a2
W celu jednoczesnej detekcji rotacji (kąt Θ) i skalowania (współczynnik a) należy moduł wid-
ma Fouriera przenieść z układu kartezjańskiego do układu log-polar w sposób pokazany na ry-
sunku 22.43. Rotacja obrazu w tym układzie jest przesunięciem wzdłuż osi kątów, natomiast
skalowanie jest przesunięciem wzdłuż osi log(r)
y ϕ
r
ϕ
(0, 0) x (0, 0) log(r)
function B = logpolar(A);
% Zamiana współrzędnych kartezjańskich na log-polar
A = double(A);
[w k] = size(A);
a) b)
c) d)
a) b)
c) d)
e) f)
g) h)
Rys. 22.45. Pośrednie wyniki algorytmu dopasowywania obrazów za pomocą DFT. Obraz z rys. b) jest
przeskalowany 1,3 razy, obrócony wokół środka o 11 stopni i przesunięty w prawo i w dół o odpowiednio
10 i 5 pikseli. Rysunki przedstawiają: a) ,b) dopasowywane obrazy pomnożone przez okno Hanninga, c), d)
moduły widm w skali logarytmicznej, e), f) reprezentację modułów widm w układzie log-polar, g), h) wyniki
detekcji rotacji i skalowania
Przykłady zastosowań 723
Tab. 22-12. Dopasowywanie dwóch obrazów, z których jeden jest obrócony, przeskalowany i przesunięty
(w programie są wykorzystywane funkcje imrotate.m oraz imresize.m z Image Processing Toolbox)
% Obrazy testowe
I1 = imread('lena.bmp'); I1=double(I1);
%I1 = CHECKERBOARD(64,4,4);
[w1 k1]=size(I1);
I2=I1;
% Obrót
ANGLE=11; I2 = imrotate(I1,ANGLE,'bilinear');
% Skalowanie
M=1.3; I2 = imresize(I2,M,'bilinear');
[w2 k2]=size(I2);
I2=I2(round((w2-w1)/2):round((w2+w1)/2), round((k2-k1)/2):round((k2+k1)/2));
I2=I2(1:w1,1:k1);
% Przesunięcie
K=10; L=5;
I2(:,w1-K:w1)=[]; I2=[zeros(size(I2,1),K+1) I2];
I2(w1-L:w1,:)=[]; I2=[zeros(L+1,size(I2,2)); I2];
% Okno czasowe
I1=okno2d(I1);
I2=okno2d(I2);
figure, subplot(1,2,1), imshow(I1,[]), subplot(1,2,2), imshow(I2,[])
Dla dociekliwych. Przekształcenia afiniczne można wykorzystać do generacji fraktali (co być
może będzie dla Czytelnika interesującym urozmaiceniem) [Kudr93]. Rozważmy cztery prze-
kształcenia afiniczne zadane macierzami:
σ x = 1, σ y = 1, σ xy = 0, σ x = 0,5, σ y = 1, σ xy = 0, σ x = 1,5, σ y = 1, σ xy = 0,
Θ = 0, t x = t y = 0 Θ = 0, t x = t y = 0 Θ = 0, t x = t y = 0
σ x = 1, σ y = 1,5, σ xy = 0, σ x = 1, σ y = 1, σ xy = 0, σ x = 1, σ y = 1, σ xy = 0,
Θ = 0, t x = t y = 0 Θ = 0.2 [rad ], t x = t y = 0 Θ = 0, t x = t y = 20 [ piksele]
a następnie ustalmy dowolny punkt startowy i generujemy jego nowe współrzędne w ten spo-
sób, że są one wyliczane ze starych za pomocą losowo wybranego przekształcenia od A1 do A4.
Efektem tych obliczeń jest choinka pokazana na rysunku 22.47. Program implementujący algo-
rytm jej wyznaczania jest przedstawiony w tablicy 22-12.
Informacja wzajemna. Wprowadzona przez Shannona miara ilości informacji źródła bez pa-
mięci jest definiowana jako:
N 1 N
H ( p1 ,..., pN ) = H ( S ) = ∑ pi log2 = − ∑ pi log2 ( pi ) (22.77)
i =1 pi i =1
i jest nazywana entropią stowarzyszoną ze zbiorem n niezależnych zdarzeń S = {x1, ..., xN}
oraz ze zbiorem prawdopodobieństw ich zajścia (rozkładem prawdopodobieństwa) P = {p1,
..., pN}. Ilość informacji zawartej w komunikacie jest odwrotnie proporcjonalna do logarytmu
726 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
prawdopodobieństwa zajścia zdarzenia. Entropię Shannona można policzyć dla obrazów cy-
frowych biorąc pod uwagę rozkład prawdopodobieństwa luminancji. Obraz, w którym wystę-
puje większości pikseli o takiej samej jasności ma małą entropię (jasność każdego piksela jest
znana z dużym prawdopodobieństwem), natomiast obraz, w którym wszystkie poziomy jasnoś-
ci występują równie często ma dużą entropię (każdy piksel to wielka niewiadoma). W takim
rozumieniu entropia jest miarą koncentracji funkcji rozkładu prawdopodobieństwa luminancji
w obrazie (obrazy z rozkładami zbliżonymi do impulsu mają małą entropię, a rozkłady równo-
mierne dużą).
Dygresja. A oto ulubiony przykład jednego z moich kolegów, wykładowców z przedmiotu ana-
lizy i przetwarzania obrazów: nachylona płaszczyzna − entropia maksymalna, a informacja −
taka sama, co w płaszczyźnie poziomej, dla której entropia jest równa zeru. Podchodźmy więc
do pojęcia entropii bez nadmiernych oczekiwań i przesadnych emocji.
I ( A, B ) = H ( A) + H ( B ) − H ( A, B ) , ( )
H ( A, B ) = − ∑ pij log2 pij (22.78)
i, j
gdzie H(A), H(B) oznaczają entropię obrazów A i B, a H(A, B) ich entropię wzajemną, zdefi-
niowaną równaniem (22.77) tylko z użyciem prawdopodobieństwa pij łącznego zajścia dwóch
zdarzeń w obrazach A i B (wówczas suma po dwóch zmiennych: i oraz j). Maksymalizacja
informacji wzajemnej oznacza więc minimalizację entropii wzajemnej.
Informacja wzajemna ma następujące właściwości:
I ( A, B ) = I ( B, A)
I ( A, A) = H ( A)
I ( A, B ) ≤ H ( A), I ( A, B ) ≤ H ( B ) , czyli H ( A, B ) ≥ H ( A) i H ( A, B ) ≥ H ( B )
I ( A, B ) ≥ 0
I ( A, B ) = 0 wtedy i tylko wtedy gdy A i B są niezależne
W trakcie dopasowywania obszar pokrywających się części obrazów zmienia się, co ma wpływ
na wartość informacji wzajemnej. Z tego względu stosuje się następującą normalizację:
H ( A) + H ( B )
NMI = (22.79)
H ( A, B )
a)
b)
Rys. 22.48. Histogramy wzajemne dla obrazów o tej samej treści (kolor ciemny oznacza dużą wartość):
a) obrazy o tej samej luminacji b) obrazy o przeciwnej luminancji. W obu przypadkach unormowana infor-
macja wzajemna wynosi 1
Tab. 22-14. Dopasowywanie obrazów cyfrowych metodą maksymalizacji informacji wzajemnej (z wyko-
rzystaniem funkcji z Image Processing Toolbox)
a)
b)
c) d)
Rys. 22.49. Przykład dopasowania dwóch obrazów cyfrowych: a) obrazy przed dopasowaniem oraz ich
histogram wzajemny, b) obrazy po zakończeniu dopasowywania oraz ich histogram wzajemny, c) moduł
różnicy obrazów przed dopasowaniem, d) moduł różnicy obrazów po dopasowaniu. Obrazy są rozmyte po-
nieważ przefiltrowano je dolnoprzepustowo w celu eliminacji maksimów lokalnych
%===================================
function I2 = affine_tz(I1, parametry);
% obraz I2 = wynik transformacji afinicznej obrazu 1
a11 = bxy*sin(th)+bx*cos(th);
a12 = bxy*cos(th)-bx*sin(th);
730 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
a21 = by*sin(th);
a22 = by*cos(th);
%========================
function [NMI,a] = MI2(I1,I2)
% Informacja wzajemna pomiędzy dwoma obrazami
%==========================
function h = jointhist(I1,I2)
% Histogram wzajemny obrazów dla 256 poziomów jasności o dynamice 0 − 255
Automatyczna detekcja linii prostych stanowi jedno z typowych zadań analizy obrazów. Przy-
kładowo wykorzystuje się ją w inżynierii materiałowej podczas badań materiałów krystalicz-
nych metodą mikroskopii elektronowej. W tym podrozdziale przedstawiono jeden z algo-
rytmów do tego służących, który posłuży nam jako reprezentatywny przykład stosowanych
rozwiązań [Frąc05].
Jednym z ważniejszych problemów inżynierii materiałowej jest możliwość powtarzalnej pro-
dukcji materiałów krystalicznych o określonych właściwościach. Właściwości materiału krysta-
licznego są zdeterminowane przede wszystkim przez rozmiar oraz przestrzenną orientację do-
men krystalicznych, z których jest zbudowany dany materiał. O wielkości i położeniu tych do-
men wnioskuje się na podstawie detekcji par dyfrakcyjnych linii Kikuchiego, występujących na
obrazach uzyskiwanych ze skaningowej mikroskopii elektronowej. Ponieważ konieczna jest
analiza tysięcy obrazów, musi się ją przeprowadzać w sposób automatyczny.
Przykłady zastosowań 731
Po zakończeniu obliczeń macierz H(ai, bj) przyjmuje duże wartości w punktach (ai, bj), w któ-
rych przecina się wiele prostych b = −axk + yk (w przestrzeni parametrów). W przypadku małej
liczby jasnych pikseli można zastosować następującą modyfikację powyższego algorytmu,
w której kolejno (po dyskretyzacji parametrów a i b oraz utworzeniu macierzy H(ai, bj) jak
poprzednio):
• pobiera się każdy niezerowy piksel o współrzędnych (xk, yk);
• prowadzi się wszystkie proste przechodzące przez ten punkt oraz wszystkie inne, niezerowe
punkty obrazu;
• oblicza się wartości współczynników (a, b) tych prostych i zaokrągla się je do (ai, bj);
• zwiększa się o 1 wartości elementów macierzy H na pozycjach (ai, bj), obliczonych w po-
przednim punkcie.
732 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
a) b)
c) d)
− 300
− 200
− 100
r 0
100
200
300
0 50 100 150
θ
Rys. 22.50. Przykład analizy i przetwarzania obrazów w mikroskopii elektronowej: a) obraz analizowany,
b) wynik filtracji kierunkowej, c) wynik binaryzacji oraz operacji morfologicznych, d) wynik transformacji
Hougha (sumowanie wartości pikseli wzdłuż linii prostych, jednoznacznie zdefiniowanych przez wartości
parametrów (r, θ)). Jasne piksele transformaty Hougha oznaczają duże wartości zakumulowane, czyli obec-
ność linii w obrazie
Ponieważ przy wykorzystaniu zapisu (22.80) mamy problemy z reprezentacją linii pionowych,
częściej równanie linii przedstawia się we współrzędnych biegunowych:
i wówczas parametry linii (r, θ) zastępują (a, b) (M, N − liczba pikseli obrazu w osiach x i y).
Dodatkową zaletą takiego postępowania jest fakt, że po odpowiedniej dyskretyzacji i prze-
kształceniach, można wykorzystać do obliczeń algorytm szybkiej transformacji Fouriera FFT.
Wykonanie tego pozostawiamy jednak jako „zadanie domowe” dla najambitniejszych Czytel-
ników. Polecamy także zapoznanie się z funkcją radon.m programu Matlab. Na rysunku
22.50d pokazano przykładową transformatę Hougha wyrażoną właśnie we współrzędnych bie-
gunowych. Współrzędne jasnych pikseli określają nam parametry linii wykrytych na obrazie.
Przykłady zastosowań 733
a) b)
Rys. 22.51. Oryginalny i przetworzony obraz endoskopowy strun głosowych: a) otwarte i zamknięte struny
głosowe w dwóch różnych położeniach x-y, b) uśrednione za okres tonu podstawowego obrazy różnicowe
strun głosowych w dwóch różnych położeniach x-y
a) b)
Rys. 22.52. Funkcja korelacji wzajemnej R(m, n) dwóch przetworzonych obrazów strun głosowych (różni-
cowych, uśrednionych), przesuniętych względem siebie: a) przesunięcie dx = dy = − 5 piksela, b) przesunię-
cie dx = dy = − 5,5 piksela
a) b)
Rys. 22.53. Funkcja kąta fazowego widma wzajemnego Ψ(k, l ) dwóch przetworzonych obrazów strun gło-
sowych, dla przesunięcia obrazów względem siebie o: a) ∆x = ∆y = − 5,5 piksela, b) ∆x = ∆y = − 0,5 piksela
lezienie tego przesunięcia {∆x, ∆y}. Jak wiadomo, w takim przypadku dwuwymiarowe trans-
formaty Fouriera F1(ωx, ωy) i F2(ωx, ωy) (22.7) obrazów f1(x, y) i f2(x, y) są ze sobą związane
następującą zależnością (analogicznie do (4.10) tylko 2D):
Przykłady zastosowań 735
j ( ωx ⋅∆x +ω y ⋅∆y )
F2 (ωx , ω y ) = F1 (ωx , ω y ) ⋅ e (22.83)
Dlatego jeśli wymnożymy F2(ωx, ωy) przez sprzężenie zespolone widma F1(ωx, ωy) i unormu-
jemy wynik, to po uwzględnieniu (22.83) otrzymamy:
Odwrotna transformata Fouriera (22.8) z G12 (ωx, ωy) jest równa (konsekwencja (4.10) i (4.28)
w świecie 2D):
( ) j ( ω ⋅∆x +ω y ⋅∆y )
g12 ( x, y ) = Fourier −1 G12 ωx , ω y = Fourier −1 e x
= δ ( x + ∆x, y + ∆y )
(22.85)
czyli jest dwuwymiarowym impulsem Diraca, występującym na płaszczyźnie w punkcie
(− ∆x, − ∆y). Ta właściwość odgrywa podstawową rolę podczas detekcji przesunięcia obrazów.
W przypadku obrazów o skończonych wymiarach impuls Diraca przyjmuje postać dwuwymia-
rowej, przestrzennej funkcji typu sinc (4.27):
Dla obrazów dyskretnych (spróbkowanych) w równaniach (22.84) i (22.85) stosuje się, odpo-
wiednio, odwrotną i prostą dyskretną (szybką) transformację Fouriera DFT (FFT), w związku
z czym wynikiem naszej analizy jest spróbkowana funkcja (22.86). Jeśli obraz f2(x, y) jest
przesunięty w stosunku do f1(x, y) o całkowitą liczbę pikseli to otrzymujemy rysunek 22.52a,
w przeciwnym przypadku − rysunek 22.52b. Dlaczego na rysunku pierwszym jest „tak do-
brze”, kiedy na drugim jest „tak źle”? W tym miejscu nowicjusz w tematyce przetwarzania
sygnałów jest narażony na duże niebezpieczeństwo wyciągnięcia niepoprawnych wniosków,
znane już ze świata 1D (rysunek 8.4). Poprawna odpowiedź jest następująca: ponieważ
w pierwszym przypadku funkcja (22.86) jest próbkowana w miejscach przejść przez zero,
a drugim przypadku nie.
W języku Matlab implementacja algorytmu opisanego powyżej algorytmu nie nastręcza żad-
nych problemów (eps − stała dokładności obliczeń numerycznych):
F1 = fft2(f1); F2 = fft2(f2);
temp = F2.*conj(F1); G12 = temp./(abs(temp)+eps);
g12 = real(ifft2( G12 ));
[dy,dx] = find( g12 == max(max(g12)) );
Interpolując obraz z rysunku 22.52b można próbować wyznaczyć wartość przesunięcia pod-
pikselowego, jeśli takowe występuje. Ale jest też możliwe alternatywne rozwiązanie [Cięc05],
przedstawione poniżej. Dla obrazów dyskretnych zależność (22.83) przyjmuje następującą po-
stać:
gdzie k, l oznaczają odpowiednio indeksy wierszy i kolumn macierzy DFT obu obrazów, Nk
i Nl − liczbę wierszy i kolumn tych macierzy, a ∆m i ∆n − wielkość przestrzennego przesunię-
cia obrazów względem siebie. W związku z tym kąty fazowe widm Fouriera obrazów są zwią-
zane następującą zależnością:
k l
Φ [ F2 ( k , l ) ] = Φ [ F1 ( k , l ) ] + 2π ∆m + ∆n (22.88)
Nk Nl
lub alternatywnie:
( )
Ψ ( k , l ) = Φ [ F2 ( k , l ) ] − Φ [ F1 ( k , l ) ] = ) F2 ( k , l ) ⋅ F1* ( k , l ) = α ⋅ k + β ⋅ l (22.89)
gdzie
α = 2π ⋅ ∆m / N k , β = 2π∆l / N l (22.90)
Jak widać funkcja 2D Ψ(k, l ) jest płaszczyzną w przestrzeni 3D, tzn. jej punkty Ψ(ki, li) leżą na
płaszczyźnie. Jeśli wyznaczymy współczynniki α i β nachylenia tej płaszczyzny, to potem
z (22.90) możemy obliczyć estymatę wartości ∆m oraz ∆n podpikselowego przesunięcia obra-
zu f2(x, y) w stosunku do f1(x, y). Z kolei obliczenie wartości współczynników α i β sprowadza
się do rozwiązania w sensie średniokwadratowym równania postaci:
k1 l1 Ψ ( k1 , l1 )
k
l2 α Ψ (k 2 , l2 )
2 = , Ax = b (22.91)
# # β #
kK lK Ψ (k K , lK )
x = ( AT A ) −1 AT ⋅ b (22.92)
„Koniec wieńczy dzieło”, dlatego w ostatnim akapicie tego rozdziału powinna nastąpić seria
bajecznie kolorowych fajerwerków. Jestem szczęściarzem, ponieważ pracuję w zespole, który
po latach ciężkiej pracy uczestniczy obecnie we wspaniałym i ambitnym projekcie, będącym
właśnie takim reprezentatywnym przykładem złożoności systemów analizy, przetwarzania
i wizualizacji danych 2D i 3D.
Usiądźmy wygodnie w fotelu. Film, przecież mówimy o obrazach, zaczyna się dramatycznie:
u bohatera naszej opowieści pojawia się podejrzenie zmian rakowych w węzłach chłonnych le-
żących w okolicach drzewa oskrzelowego. Cały świat w jednej chwili usuwa mu się spod nóg.
Wkrótce jest skierowany na tomografię komputerową (CT) górnego odcinka dróg oddecho-
wych. Następnego dnia prowadzący go lekarz otrzymuje czarno-białe klisze oraz płytę CD
z jego danymi, stanowiącymi zeskanowany z zadaną rozdzielczością rozkład gęstości tkanek
w przestrzeni 3D. Zasiada wieczorem przed swoim komputerem, wczytuje zbiór zapisany
w formacie DICOM (Matlab go czyta!) oraz wirtualnie bada pacjenta oglądając różne przekro-
je jego danych. Nagle w okolicy głównego rozgałęzienia, tzw. kariny, dostrzega zastanawiają-
cą zmianę gęstości tkanek węzła chłonnego oraz jego powiększenie. Ponieważ zmiana ta znaj-
duje się za ścianą drzewa oskrzelowego, znaczy najlepsze miejsce nakłócia czerwonym marke-
rem. Już wie: jutro musi to miejsce odnaleźć. Zmęczony gasi światło. Następnego dnia nasz
bohater przychodzi do szpitala na zabieg transbronchialnej, cienkoigłowej biopsji aspiracyj-
nej. Miejscowe znieczulenie. Lekarz przez usta (lub nos) wprowadza mu bronchofiberoskop,
wyposażony w kamerę endoskopową, manipulator oraz kanał roboczy z igłą, służącą do po-
brania próbek tkanek do analizy laboratoryjnej. Porusza się w tunelu dróg oddechowych. Wi-
dzi jego ścianki. Wybiera miejsce nakłócia. Jednak waha się. Tutaj czy tam? Ponieważ ma tyl-
ko jeden kanał roboczy, decyduje się wyjąć igłę i włożyć specjalny ultrasonograf. Na końcu
bronchofiberoskopu pęcznieje balonik z płynem, który przylega do ścianek tchawicy. Lekarz
teraz nic nie widzi przez kamerę endoskopową, jednak dzięki ultrasonografowi patrzy „w głąb”
tkanek, widzi węzeł chłonny i podejrzane miejsce. Starając się nie zmieniać położenia bron-
chofiberoskopu wyjmuje ultrasonograf i ponownie wkłada igłę endoskopową. Jednak mu się to
nie udaje! Końcówka endoskopu przesuwa się. Pomimo tego podejmuje decyzję o wykonaniu
nakłócia. Cięcie!
Od początku. Akcja! Pacjent już jest znieczulony. Lekarz, nasz nowy bohater, włącza kompu-
ter wyposażony w interfejs wideo (framegrabber), wkłada płytę CD i uruchamia program
wspomagający zabieg. Dopiero teraz wkłada bronchofiberoskop przez usta pacjenta. Na ekra-
nie monitora widzi kilka obrazów: pierwszy z rzeczywistej kamery endoskopowej, drugi z wir-
tualnej kamery, zsyntezowany na podstawie danych tomograficznych pacjenta, trzeci − to
drzewo oskrzelowe z markerem, który został wprowadzony wczoraj wieczorem. Wprowadza
endoskop głębiej. Program pobiera kolejne obrazy z rzeczywistej kamery, porównuje je
i wstępnie estymuje jej przesunięcie (metoda log-polar lub optical flow, nie omawiana przez
nas). Następnie traktuje to położenie jako zgrubny punkt startowy do dokładniejszej estymacji:
na podstawie danych tomograficznych syntezuje wirtualny obraz drzewa oskrzelowego (obraz
z wirualnej kamery), który jest podobny do rzeczywistego obrazu endoskopowego. Porównuje
obraz rzeczywisty z endoskopu oraz wirtualny (image registration). Niestety, obrazy znacznie
się różnią! Trzeba zmienić położenie wirtualnej kamery. Program wykonuje to automatycznie.
Po kilku iteracjach obrazy różnią się już bardzo mało. Lekarz wie, że końcówka bronchofibe-
roskopu znajduje się w miejscu położenia wirtualnej kamery. Program przesuwa kursor na ry-
sunku drzewa oskrzelowego.
738 Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych
a) b)
c) d)
e) f)
Rys. 22.54. Przykład obrazów syntetycznych (a, b, c, d, e) oraz rzeczywistych (f) uzyskiwanych podczas
zabiegu transbronchialnej cienkoigłowej biopsji aspiracyjnej wspomaganej algorytmem wirtualnej broncho-
skopii: a) skanowanie pacjenta podczas tomografii komputerowej − zbieranie informacji o gęstości tkanek
w punktach leżących na równoległych płaszczyznach i jej zapisywanie do zbioru w formacie DICOM,
b) odtwarzanie i wizualizacja dowolnego przekroju danych pacjenta na podstawie zapisanego zbioru danych,
c) obraz drzewa oskrzelowego, odtworzony na podstawie danych tomograficznych pacjenta (drzewo oskrze-
lowe to zbiór punktów o podobnej gęstości − izopowierzchnia), d) siatka trójkątów tworzących wirtualną
powierzchnię drzewa oskrzelowego, wynik działania algorytmu marching cubes, e) oświetlona siatka trójką-
tów tworząca przestrzenny model drzewa oskrzelowego, f) rzeczywisty obraz z kamery endoskopowej,
przedstawiający kulminacyjny moment pobierania wycinka tkanek przez lekarza
Przykłady zastosowań 739
a) b)
Rys. 22.55. Dwa różne obrazy endoskopowe. Na ich podstawie trzeba wnioskować o wielkości przesunięcia
bronchofiberoskopu z kamerą. Do dyspozycji mamy, na przykład, metody log-polar, informacji wzajemnej
(obie w opisano w rozdz. 22.5.3) oraz optical flow Ponieważ metoda log-polar pracuje na niskoczęsto-
tliwościowej informacji zawartej w obrazach, dlatego oba obrazy są przefiltrowane dolnoprzepustowo
a) b)
Rys. 22.56. Przykład rzeczywistego obrazu endoskopowego (a) oraz odpowiadającego mu obrazu wirtualne-
go (b), odtworzonego z danych tomograficznych. Obrazy te są dopasowywane do siebie (image registration)
za pomocą metody informacji wzajemnej, opisanej w rozdz. 22.5.3, i w ten sposób dokładniej estymuje się
miejsce położenia kamery w drzewie oskrzelowym
Krok po kroku, lekarz powoli zmierza do celu. Na rysunku drzewa oskrzelowego kursor poło-
żenia endoskopu jest już coraz bliżej markera węzła chłonnego. W tym momencie po ostatnim
dopasowaniu obrazów jest zmieniany tryb wyświetlania: na obraz z rzeczywistej kamery nie
jest nałożony wirtualny obraz ścianek tunelu oskrzelowego tylko półprzeźroczysty obraz tka-
nek, które znajdują się za ścianą drzewa oskrzelowego. Lekarz widzi węzeł chłonny. Wykonuje
nakłócie, pobiera tkanki i trafia. Cięcie!
Tak już w niektórych szpitalach na świecie to wygląda. My powoli i systematycznie do tego
zmierzamy.
A teraz obejrzyjmy kilka kadrów z naszego filmu, zaczerpniętych z [Soch05a, Turc05]. Są one
przedstawione na rysunkach 22.54, 22.55 i 22.56. Proszę uważnie przeczytać podpisy pod ry-
sunkami. Ponieważ kamera endoskopowa ma obiektyw szerokokątny, otrzymany z niej obraz
jest zdeformowany. Dlatego przed dopasowaniem obrazu rzeczywistego z kamery i wirtualne-
go, otrzymanego na podstawie danych tomograficznych, trzeba także zdeformować obraz wir-
tualny, wykorzystując do tego znany model zniekształceń i wartości jego parametrów, wyzna-
czonych wcześniej dla używanej kamery (patrz rozdział 22.1).
Cięcie! Koniec. Napisy.
23
Projekt MODEM ADSL:
szybki dostęp do Internetu
po linii telefonicznej
a)
b) 0 1 0 0 1 1 1
c) 0 1 0 0 1 1 1
0 1 0 0 1 1 1
d)
0 1 0 0 1 1 1
e)
0 1 0 0 1 1 1
f)
0 1 0 0 1 1 1
g)
01 00 11
h)
Rys. 23.1. Wybrane przykłady modulacji cyfrowych: a) sygnał zegara, b) unipolarna modulacja poziomu bez
powrotu do zera, c) bipolarna modulacja poziomu z przełączaną jedynką i powrotem do zera, d) modulacja
zbocza (kod Manchester), e) modulacja amplitudy, f) modulacja częstotliwości, g) dwustanowa (jednobito-
wa) modulacja fazy jednego okresu funkcji kosinus , h) czterostanowa (dwubitowa) modulacja fazy jednego
okresu funkcji kosinus
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 743
Sygnał postaci (23.1a) składa się z dwóch składowych: synfazowej cos(2πft) i kwadraturowej
sin(2πft) (kosinus przesunięty o minus 90 stopni: cos(2πft − π/2) = sin(2πft)). Jeśli przedstawi-
my amplitudę sinusa bm w funkcji amplitudy kosinusa am dla różnych wartości kąta φm, to otrzy-
mamy okrąg o promieniu jednostkowym (cos2φm+ sin2φm = R = 1).
Na rysunku 23.2a przedstawiono ilustrację graficzną sygnału (23.1a) przyjmującego opisane
powyżej cztery stany. Przez analogię do zespolonego sygnału harmonicznego postaci:
współczynnik am sygnału kosinusoidalnego cos(2πft) w (23.1a) oznacza się także jako część
„rzeczywistą” (Realis) sygnału xm(t), a współczynnik bm sygnału sinusoidalnego sin(2πft) − ja-
ko jego część „urojoną” (Imaginaris). W przypadku występowania zakłóceń sygnał odebrany
ma inny promień i kąt niż sygnał nadany (rysunek 23.2b).
Idąc krok dalej, zwiększa się liczbę stanów nośnej i jednorazowo przesyłanych bitów przez
wprowadzenie dodatkowej zmienności amplitudy sygnału xm(t) (23.1), czyli promienia okręgu,
na którym występuje zmienność fazy:
xm,n (t ) = Rn cos ( 2πft − φm ) = am,n cos ( 2πft ) + bm,n sin ( 2πft ) (23.3)
23.3b (linie przerywane). W środku każdego pola „szachownicy” znajduje się stan nadawany,
oznaczony przez „•”. Z powodu zakłóceń odbierany sygnał, oznaczony analogicznie jak na
rysunku 23.2b przez „{”, ma inną amplitudę i fazę. Transmisja bitów jest bezbłędna, jeśli syg-
nał będący wynikiem detekcji mieści się w przyporządkowanym mu polu. Liczba stanów −
pól szachownicy − powinna być dobrana z uwzględnieniem stosunku mocy sygnału do mocy
szumu SNR (Signal-to-Noise Ratio): duża w przypadku wysokiego SNR (słabe zakłócenia)
i mała dla niskiego SNR (silne zakłócenia). Dla tej samej wartości mocy szumu można po-
większyć rozmiar QAM poprzez zwiększenie mocy nadawanego sygnału. Rozmiar konstelacji
zależy również od docelowej stopy błędu oraz sposobu kodowania (QAM, PCM itd.).
a) b)
Imag (sin)
Imag (sin)
10 1 00
nadane
(a, b)
1 błąd
R
φ Real
odebrane
-1 0 1 (cos)
Real (cos)
11 -1 01
0 1
Rys. 23.2. Konstelacja stanów modulacji 4-QAM: a) cztery stany sygnału xm(t) = amcos(2πft) + bmsin(2πft),
am = cosφm i bm = sinφm, dla kątów φm = 45, 135, 225, 315 stopni, odpowiadające kombinacjom bitów: 00,
10, 11 i 01: b) błąd pomiędzy sygnałem nadanym „•” i odebranym „{”: inny promień R i kąt φ
Rys. 23.3. Konstelacja stanów sygnału typu 16-QAM: „•” − możliwe stany sygnału nadawanego (współ-
czynniki cosinusa i sinusa), „{” − wartości sygnału odebranego w odbiorniku (są one inne niż wartość nada-
na z powodu zakłóceń transmisji, ale mieszczą się w polu przyporządkowanemu nadawanemu symbolowi
dla poprawnie dobranej konstelacji − szachownicy)
wtarzane dopóki odbiornik nie zgłosi poprawnej detekcji. Szybszy sposób inicjalizacji mode-
mu polega na zmierzeniu SNR w dekoderze dla sygnału testowego, wyznaczeniu optymalnej
konstelacji i przesłaniu tej informacji do kodera (wymaga to tylko jednokrotnej komunikacji).
W przypadku wystąpienia chwilowych, silniejszych zakłóceń, wartości amplitudy i fazy syg-
nału odebranego mogą znacznie różnić się w stosunku do sygnału nadanego. Wówczas naj-
częściej jest niepoprawnie dekodowany na szachownicy konstelacji nie stan nadany tylko jeden
ze jego sąsiadów („{” z rysunku 23.3b wychodzą wówczas poza granice kwadratowego pola,
przyporządkowanego stanowi nadanemu). Wówczas jest odczytywany inny numer stanu i inna
związana z nim sekwencja bitowa. Aby zminimalizować liczbę przekłamanych bitów, numery
sąsiednich stanów p o wi n n y się różnić tylko jednym bitem. Niestety spełnienie tego wymaga-
nia nie jest możliwe dla wszystkich stanów. Jak widać na rysunku 23.3a sytuacja taka występu-
je tylko dla stanów leżących w tych samych ćwiartkach płaszczyzny, po jej podzieleniu przez
osie układu współrzędnych.
Opisany powyżej sposób modulacji jest stosowany w klasycznych rozwiązaniach modemów
telefonicznych. W przypadku modulacji M-QAM jest w nich używany jeden sygnał nośny
o częstotliwości mieszczącej się w paśmie akustycznym sygnału mowy ludzkiej, czyli do 3400
herców. Na przykład w protokole V.32 sygnał nośny, przełączany w fazie, ma częstotliwość
1800 herców. W protokołach transmisji V.32, V.34 i V.92 maksymalne prędkości odpowied-
nio wynoszą 9600, 28800 i 56 000 bitów na sekundę.
a)
Modem - wiele sygnałów nośnych
częstotliwość
fmin .................... ....fk−1..fk..fk+1...........fm−1..fm..fm+1............ .......... fmax f [kHz]
Nośna fk+1
b) Bity:
b3b2b1b0 (ak+1, bk+1)
ak+1cos(Ωk+1n) + bk+1sin(Ωk+1n)
(cos, sin)
Nośna fk
Bity: Wysyłany
b5b4 (ak, bk) sygnał x(n)
akcos(Ωkn) + bksin(Ωkn)
(cos, sin)
Nośna fk−1
Bity:
b9b8b7b6 (ak−1, bk−1)
ak−1cos(Ωk−1n) + bk−1sin(Ωk−1n)
(cos, sin)
Rys. 23.4. Ilustracja zasady pracy modemu szerokopasmowego z wieloma nośnymi: a) podział pasma czę-
stotliwościowego dla wielu sygnałów nośnych, równocześnie przesyłających dane, b) generacja transmi-
towanego sygnału jako sumy równocześnie modulowanych wielu nośnych,Ωk = 2πfk/fpróbkowania
Ponieważ każda nośna ma inną częstotliwość i w związku z tym, w ogólności, inny poziom
zakłóceń transmisji, dla każdej z nich są dobierane tym mniejsze rozmiary konstelacji M-QAM
(23.3) im zakłócenia są silniejsze (patrz pkt. 23.6.5 − wzór (23.28)). W konsekwencji na każ-
dej nośnej w jednostce czasu jest przesyłana różna liczba bitów. Na rysunku 23.4b przedsta-
wiono generację trzech przykładowych nośnych (sygnałów synfazowo-kwadraturowych) o pul-
sacjach Ωk−1, Ωk i Ωk+1, z których pierwsza i ostatnia pracują na konstelacji 16-QAM (małe
zakłócenia), środkowa zaś na konstelacji 4-QAM (duże zakłócenia). Nośne te są następnie
sumowane i łącznie przesyłane przez kanał jako jeden sygnał x(n). W odbiorniku należy zde-
kodować przesyłane stany poszczególnych nośnych, czyli odczytać binarnie numery w zwią-
zanych z nimi konstelacjach. Sprowadza się to do pomiaru amplitudy i fazy każdej z nośnych
i znalezienia reprezentanta „pomiaru” na jej szachownicy konstelacji (rys. 23.3a).
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 747
S(k) s(n) x(n) x(t) ξ(t) y(t) y(n) ye(n) Ye(k) Se(k)
szum
..010.. TEQ ..010..
QAM IDFT P C/A linia A/C e(n) DFT FEQ QAM-1
h(t) P-1
Rys. 23.5. Uproszczony schemat praktycznej realizacji układu transmisji z wieloma nośnymi. Oznaczenia:
QAM i QAM−1 − koder i dekoder konstelacji, IDFT i DFT − odwrotna i prosta dyskretna transformacja Fou-
riera, P i P−1 − dodanie i usunięcie tzw. cyklicznego prefiksu, czyli powtórzenie wysyłanego sygnału lub jego
fragmentu, C/A i A/C − przetwornik cyfrowo-analogowy i analogowo-cyfrowy, TEQ − korektor czasowy,
skracający odpowiedź impulsową kanału, FEQ − korektor częstotliwościowy, usuwający amplitudowe
i fazowe zniekształcenia wprowadzone przez kanał oraz korektor TEQ
Transmisja jest zorganizowana w sposób blokowy: za każdym razem jest syntezowana jedna
ramka danych, czyli sygnał będący sumą wszystkich, „przeskalowanych” nośnych. Dodana
modyfikacja sygnału przed przetwornikiem C/A w nadajniku (polegająca na powtórzenia całe-
go sygnału zsyntezowanego w wyniku IDFT lub jego fragmentu) oraz po przetworniku A/C
w odbiorniku (czyli usunięcie części dodanej) ma na celu wymuszenie realizacji sp lo tu ko -
ło wego odpowiedzi impulsowej linii transmisyjnej z poszczególnymi, o d d z i e l n y m i p a -
k i e t a m i (blokami, ramkami) danych w trakcie fizycznie zachodzącego s p l o t u l i n i o we g o
z c a ł y m s y g n a ł e m . Zaletą zachodzenia splotu kołowego w odniesieniu do fragmentów syg-
nału jest występowanie iloczynu widm DFT: kanału oraz pojedynczych fragmentów, czyli wy-
syłanych konstelacji. W odbiorniku korekcja zniekształceń amplitudowych i fazowych wpro-
wadzanych przez kanał jest wówczas bardzo prosta, wystarczy tylko podzielić DFT otrzyma-
nego sygnału przez DFT odpowiedzi impulsowej kanału. Oczywiście, odpowiedź tę trzeba
znać albo umieć zmierzyć (oszacować). Podczas fazy inicjalizacji modemu jest dokonywana
estymacja odpowiedzi impulsowej kanału oraz synchronizacja nadajnika i odbiornika, umoż-
liwiająca skorzystanie z walorów splotu kołowego sygnałów.
748 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
Scenariusz transmisji z rysunku 23.5 jest realizowany w standardzie ADSL w układzie przed-
stawionym na rysunku 23.6. Zasadniczą cechą technologii ADSL jest dostawa cyfrowych usług
szerokopasmowych przez istniejącą abonencką linię telefoniczną (skrętkę miedzianą), z za-
chowaniem dotychczasowych, analogowych usług telefonicznych klasy POTS (Plain Old Tele-
phone Service). Ta popularna i najstarsza usługa zajmuje pasmo przenoszenia w kanale do
częstotliwości około 4 kiloherców (dokładniej pasmo w zakresie częstotliwości 300 ÷ 3400
herca). Pasmo, z jakiego korzysta ADSL, mieści się w granicach od 0 do 1,104 megaherca.
Z widma tego wydzielono zakres od 0 do 4 kHz w celu umożliwienia zwykłej transmisji gło-
sowej podczas korzystania z modemu. Prowadzenie rozmowy telefonicznej nie ma żadnego
wpływu na szybkość jak i jakość transferu danych. Rozdzielanie i łączenie sygnałów analogo-
wych części „telefonicznej” i „modemowej” dokonuje się w (roz)sprzęgaczach (splitter), u-
mieszczanych po obydwu stronach łącza ADSL i wyposażonych w aktywne filtry pasmowe
o odpowiednich charakterystykach przenoszenia: dolnoprzepustowej (poniżej 3,4 kHz) dla
telefonu i górnoprzepustowej (powyżej 4,8 kHz) dla modemu. Widmo częstotliwości od 26
kHz do 1,104 MHz podzielono na podpasma o szerokości 4312,5 Hz. Część z nich jest uży-
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 749
Modem Modem
ADSL ADSL
Filtr Filtr
górnoprzepustowy górnoprzepustowy
linia telefoniczna
Filtr Filtr
dolnoprzepustowy dolnoprzepustowy
sieć
Telefon analogowy Centrala - rozmowa
telefoniczna
Rys. 23.6. Sprzętowa realizacja układu transmisji danych z modemami wielotonowymi ADSL
b)
Dane wysyłane
Telefon Dane odbierane
W procesie aktywacji modemy na obydwu końcach linii informują się wzajemnie o potrzebie
zaistnienia połączenia. Modem próbujący nawiązać połączenie wysyła sygnał trwający 32 mili-
sekundy na jednej z czterech możliwych częstotliwości: 189,75 kHz; 207 kHz; 224,25 kHz lub
258,75 kHz. Sygnał ten jest nadawany z mocą – 4 dBm przez pierwsze 16 ms, a przez na-
stępne 16 ms z mocą równą – 28 dBm. Modem po odebraniu sygnału wysyła potwierdzenie na
jednej z trzech możliwych częstotliwości: 34,5; 43,125 lub 60,375 kHz.
Oczywistym więc jest, że kanał będzie wpływał na widmo sygnału odebranego, jego amplitudę
i fazę, w różny sposób dla różnych częstotliwości, i powodował detekcję innych stanów na
diagramie konstelacji niż te, które zostały nadane. Dodatkowy problem stwarza fakt, że sygnał
nadawany ma strukturę blokową, gdyż składa się z fragmentów, będących wynikiem odwrotnej
transformacji Fouriera IDFT, ułożonych jeden za drugim. W takiej sytuacji odpowiedź impul-
sowa kanału podczas splotu może „widzieć” (obejmować) kilka bloków i wówczas jego wynik
może zależeć od danych przesyłanych w sąsiednich blokach, a tak być nie powinno. Opisana
powyżej sytuacja jest przedstawiona na rysunku 23.8a. Najprostszym rozwiązaniem odseparo-
wania od siebie kolejnych bloków danych na wyjściu jest ich powtórzenie podczas nadawania,
co jest pokazane na rysunku 23.8b. Oznacza to, że sygnał po operacji IDFT a przed
przetwornikiem C/A jest w bloku P powielany (patrz rysunek 23.5). Jeśli odpowiedź impulso-
wa kanału nie jest dłuższa od czasu trwania pojedynczego bloku danych, to wówczas jej splot
z drugim blokiem danych zależy też od bloku pierwszego, czyli od tego samego sygnału.
Wówczas zaczynając od początku drugiego bloku splot liniowy staje się splotem kołowym,
opisanym dokładnie w rozdziale 13.4 dla sygnałów dyskretnych. W związku z tym po sprób-
kowaniu sygnału w odbiorniku jest prawdziwa zależność (13.12) dla drugiego bloku, czyli
przejście sygnału przez kanał opisuje sp lo t ko ło wy dyskretnych wersji obu sygnałów.
Z właściwości splotu dyskretnej transformacji Fouriera (rozdz. 8.1.4) wynika, że takiemu splo-
towi odpowiada iloczyn widm DFT sygnałów splatanych! A więc jesteśmy już w domu. Należy
w odbiorniku z s y n c h r o n i z o wa ć się z początkiem drugiego bloku, pobrać wszystkie nale-
żące do niego próbki, a następnie wyznaczyć jego dyskretną transformatę Fouriera. Ponieważ
jest ona wówczas równa iloczynowi DFT odpowiedzi impulsowej kanału i DFT transmitowa-
nego sygnału, należy ją podzielić przez DFT odpowiedzi impulsowej kanału i otrzymać w ten
sposób transmitowane dane:
DFT [ y (k )]
DFT [ y (k )] =DFT [ x (k )] ⋅ DFT [ h( k )] ⇒ DFT [ x( k )] = (23.8)
DFT [ h (k )]
czas t
dane x(t)
czas t
b) h(t)
czas t
x(t)
czas t
c) dane x(t)
czas t
d) he(t)
czas t
dane x(t)
czas t
Rys. 23.8. Objaśnienie celowości dodawania tzw. cyklicznego prefiksu do każdego transmitowanego bloku
danych (oznaczenia sygnałów z rys. 23.5): a) brak prefiksu, b) maksymalny prefiks − cykliczne podwojenie
transmitowanych danych dla długiej odpowiedzi impulsowej kanału, c) krótki prefiks − kopiowanie frag-
mentu danych z końca bloku na jego początek, d) krótki prefiks − cykliczny splot transmitowanych danych
z krótką (skróconą) odpowiedzią impulsową kanału he(t), która jest wynikiem splotu odpowiedzi impulso-
wych: linii h(t) i korektora czasowego e(t) (w postaci cyfrowej: he(n) = h(n) ⊗ e(n))
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 753
x(t)
Kanał
h(t)
y(t)
Rys. 23.9. Pełny schemat blokowy modemu ADSL z modulatorem IFFT i demodulatorem FFT
widać inne nośne (przekreślone strzałki narysowane liniami przerywanymi) nie mają wpływu
na wynik ich detekcji, ponieważ znajdują się w miejscach, w których zeruje się widmo okna
prostokątnego. Natomiast wszystkie zakłócenia występujące poza ww. miejscami zerowymi
(nieprzekreślone strzałki narysowane liniami ciągłymi) w istotny sposób wpływają na wynik
detekcji, tym bardziej im ich częstotliwości leżą bliżej analizowanych nośnych.
Strumień bitów:
11 00 10 01 .....11 01
Szeregowo → Równolegle
11 00 10 01
0 0 S(k)
s(n)
x(n)
Przetwornik C/A
x(t)
Przejście danych
przez kanał
zakłócenia transmisyjny
y(t)
Rys. 23.10. Schemat blokowy nadajnika modemu ADSL oraz przejścia danych przez kanał transmisyjny
Zmiany grubości pary. Najczęściej spotykane łącze telefoniczne składa się z kilku sekcji, czę-
sto wykonanych z przewodów o różnej grubości. Zwykle cieńsze przewody występują bliżej
centrali, co wynika z faktu, iż kable składają się wówczas z większej liczby par przewodów.
Z grubością żył jest ściśle związana impedancja falowa przewodu. W miejscu połączenia żył
o różnych grubościach może wystąpić niedopasowanie falowe impedancji, powodujące po-
wstawanie echa na skutek odbicia sygnału w miejscu połączenia.
756 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
y(t)
Przetwornik A/C
y(n)
ye(n)
Szeregowo → Równolegle
1 2 .......... 31 32 33 34 35 36 ..................................................................... 544
Korektor FEQ
0 1 2 3 ................. 255
11 00 10 01
Równolegle → Szeregowo
Strumień bitów:
11 00 10 01 .....11 01
Rys. 23.12. Ilustracja wpływu innych nośnych i zakłóceń na wynik detekcji numeru stanu konstelacji po-
szczególnej nośnej
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 757
Szum biały. Rozkład funkcji gęstości prawdopodobieństwa addytywnego szumu, jaki obser-
wuje się w odbiorniku modemu ADSL, jest bardzo podobny do białego szumu gaussowskiego
(AWGN – Additive White Gaussian Noise). Rozkład ten jednak zanika do zera dla mniejszych
wartości amplitudy szumu. Jednak różnica ta jest na tyle mała, że uznaje się ją za nieistotną.
Szum biały jest szumem, który dodaje się równomiernie do transmitowanego sygnału w całym
paśmie częstotliwości. Źródłem jego pochodzenia jest szum kwantowania, zjawiska termiczne
zachodzące w torze analogowym oraz zakłócenia elektromagnetyczne pochodzące z otoczenia.
Jego moc przyjmuje się jako stałą i równą –140 dBm/Hz, choć w rzeczywistości nieznacznie
zależy ona od częstotliwości.
Szum impulsowy. W przeciwieństwie do innych zakłóceń źródło szumu impulsowego jest trud-
ne do określenia. Może być on generowany przez różnego rodzaju urządzenia komutacyjne,
obwody sygnalizacyjne czy nawet ładunki elektrostatyczne. Charakteryzuje się zmiennym
kształtem sygnału oraz znaczną amplitudą. Badania nad szumem impulsowym wykazują, iż
jego amplituda mieści się zwykle w przedziale od 5 do 20 miliwoltów przy czasie trwania od
30 do 150 mikrosekund. Impulsy występują średnio od 1 do 5 razy na minutę. Ze względu na
stosunkowo wysoką amplitudę szum impulsowy może poważnie wpływać na poziom błędów
podczas transmisji danych przez modem ADSL.
Przeniki stanowią najgroźniejsze zakłócenie, występujące podczas transmisji xDSL. Mogą wy-
stąpić nie tylko pomiędzy modemami DSL jednego typu, a również pomiędzy różnymi typami
modemów, jeśli tylko ich pasma częstotliwości częściowo się pokrywają. Przeniki występują,
kiedy transmisja w j e d n e j z par kabla wieloparowego zakłóca sygnał w i n n e j parze tego
samego kabla. Najczęściej ma to miejsce w części rozdzielczej instalacji, z której poszczególne
pary są rozprowadzane do abonentów. Ze względu na to, gdzie znajduje się nadajnik zakłóca-
jący, a gdzie odbiornik, dzielimy przeniki na zdalne (FEXT) i zbliżne (NEXT).
Przenik zdalny (FEXT – Far End Crosstalk) występuje, kiedy nadajnik i odbiornik, między
którymi dochodzi do zakłócenia, znajdują się na dwóch różnych końcach tego samego kabla.
Częściej występuje on podczas transmisji przez urządzenia xDSL tego samego typu, np. dwa
modemy ADSL. Stopień zakłócenia FEXT jest zależny od długości pętli abonenckiej i rośnie
758 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
wraz z jej wzrostem. Ma to związek z tłumieniem linii, które jest większe dla dłuższych pętli.
Takiemu samemu tłumieniu ulega sygnał przenikowy, który musi przejść przez całą długość
pętli od nadajnika do odbiorcy zakłócenia. Dlatego też przenik zdalny j est mniej szko -
d liwy niż zbliżny. Opierając się na wynikach pomiarów kabla o długości około 5,5 kilome-
tra (18 kilostóp), zawierającego 50 par przewodów, opracowano model symulujący uproszczo-
ną zależność na wielkość przeników FEXT [Bing99]:
0.6
N 2
FEXTN = k ⋅d ⋅ f 2 ⋅ H ( f ) (23.9)
49
gdzie: k = 8 ⋅ 10 −20 – stała wyznaczona empirycznie, d – długość pętli wyrażona w stopach
(1 stopa = 0,305 metra), f – częstotliwość w hercach, H ( f ) – transmitancja pętli. Wartość
przeników wyliczana z (23.9) jest wielkością bezwymiarową. Jej zlogarytmowanie pozwala na
wyrażenie przeników w decybelach.
Przenik zbliżny (NEXT – Near End Crosstalk), bardziej szkodliwy niż zdalny FEXT, wystę-
puje, kiedy nadajnik sygnału transmitowanego przez jedną parę przewodów znajdzie się na tym
samym, „bliskim” końcu kabla co odbiornik dołączony do innej pary. Wówczas nadajnik za-
kłóca odbiornik „po sąsiedzku”, jak w życiu, w sposób „zbliżny”. Przenik zbliżny nie wystąpi
w sytuacji, kiedy na jednym końcu kabla wieloparowego są tylko nadajniki, a na drugim – tyl-
ko odbiorniki. Może wtedy wystąpić jedynie przenik zdalny. Ponieważ przenik NEXT nie
przechodzi przez całą długość pętli abonenckiej, jego wartość nie jest tłumiona tak znacznie
jak przeniku FEXT. Jest on wobec tego o wiele bardziej szkodliwy. Zależność wartości prze-
ników zbliżnych od częstotliwości zakłócanej oraz od liczby pętli zakłócających opisuje wzór
[Bing99]:
0.6 3
N 1
NEXTN = ⋅f 2
(23.10)
49 1.134 ⋅ 1013
w którym N oznacza liczbę par zakłócających (maksymalnie 49) a f jest częstotliwością syg-
nału zakłócającego, wyrażoną w hercach. Podobnie jak dla (23.9), wartość przeników NEXT
(23.10) jest wielkością bezwymiarową.
Wartość przeników rośnie wraz ze zmniejszaniem się odległości między parami oraz zwięk-
szaniem długości odcinka, na którym dochodzi do zakłóceń. Szkodliwe oddziaływanie między
parami 1 i 2 jest wzajemne, ale zależy od poziomu mocy ich sygnałów. Jeśli transmisja odbywa
się w kablu wieloparowym, to wszystkie pary tego kabla mogą oddziaływać na siebie, a prze-
nik wypadkowy będzie większy. Znaczenie ma także wielkość skrętu pary. Z badań wynika, że
para skręcona z mniejszym skokiem jest mniej podatna na przeniki niż para o większym skoku
skrętu.
Rozpatrzmy teraz przeniki w odniesieniu do systemu ADSL. Jeżeli pracuje on w trybie FDM
(podziału częstotliwości), to przeniki zbliżne od innych systemów ADSL nie występują, po-
nieważ nadajnik transmituje dane w innym paśmie niż odbiornik. Równocześnie nadajniki
obydwu abonentów nadają sygnały w tym samym paśmie częstotliwości, więc występują prze-
niki zdalne, które mogą być szkodliwe. W systemie ADSL pracującym z kompensacją echa
(EC) na skutek częściowego pokrywania się pasma transmisji występują zarówno przeniki
zdalne jak i zbliżne. Sytuacja się komplikuje, gdy poprzez pary tego samego kabla transmitują
urządzenia należące do różnych systemów rodziny DSL, przykładowo ISDN lub HDSL.
W takim wypadku wielkość przeników zależy od liczby i widma poszczególnych sygnałów.
Uff ...
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 759
Ponieważ znajomość właściwości linii transmisyjnej jest tak ważna dla poprawnej pracy mo-
demu, zapoznajmy się z nimi na samym początku. Na rysunku 23.13 przedstawiono przykła-
dowe odpowiedzi impulsowe linii transmisyjnej bez [Arslan] i z górnoprzepustowym filtrem
rozsprzęgającym telefon analogowy (patrz rysunek 23.6) oraz ich charakterystyki częstotliwo-
ściowe: amplitudową, fazową oraz opóźnienie grupowe. Oryginalna odpowiedź impulsowa li-
nii [Arslan] jest pokazana na rysunku 23.13a, moduł jej widma Fouriera − na rysunku 23.13b,
faza widma − na rysunku 23.13c, a jej pochodna (odpowiedź grupowa) − na rys. 23.13d. Jak
widać linia transmisyjna bardzo silnie tłumi wyższe częstotliwości oraz ma w przybliżeniu li-
niową charakterystykę fazowo-częstotliwościową. Co prawda tylko w przybliżeniu, gdyż jej
pochodna względem częstotliwości podzielona przez 2π, czyli funkcja opóźnienia grupowego,
nie jest wartością stałą tylko zmieniającą o około 4 mikrosekundy wokół wartości 11 mikro-
sekund (co przy próbkowaniu 2,208 megaherca daje średnie opóźnienie równe około 24-em
próbkom sygnału ze zmianami plus minus 4 próbki). W bardzo dużym przybliżeniu można
jednak przyjąć, że linia jednakowo opóźnia wszystkie składowe częstotliwościowe, czyli że
kształtu przebiegu czasowego nie jest zmieniony na jej wyjściu (w przybliżeniu występuje tyl-
ko jego opóźnienie). Natomiast filtr (roz)sprzęgacza powoduje znaczne wydłużenie czasu trwa-
nia łącznej odpowiedzi impulsowej linii z powodu wrowadzenia szkodliwych, wolno gasną-
cych, niskoczęstotliwościowych oscylacji, widocznych na rysunku 23.13e. W dziedzinie czę-
stotliwościowej jego wpływ jest tylko nieznacznie widoczny na rysunku 23.13f w zakresie
bardzo niskich częstotliwości, właściwie nieistotnych dla poprawnej pracy modemu, gdyż
przypadających na pasmo telefonu analogowego i tzw. strefę buforową (patrz rys. 23.7).
760 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
a) 0.006 b) -20
0.005
-30
0.004
|H(f)| [dB]
-40
h(t)
0.003
0.002 -50
0.001
-60
0
0 50 100 150 200 250 0 0.2 0.4 0.6 0.8 1 1.2
t [µs] f [MHz]
c) 0 d) 22
20
-20 18
kąt H(f) [rd]
tgrp [µsek]
16
-40
14
-60 12
10
-80 8
0 0.2 0.4 0.6 0.8 1 1.2 0 0.2 0.4 0.6 0.8 1 1.2
f [MHz] f [MHz]
e) 0.005 f) -20
0.004
-30
0.003
|H(f)| [dB]
-40
h(t)
0.002
0.001 -50
0
-60
-0.001
0 50 100 150 200 250 0 0.2 0.4 0.6 0.8 1 1.2
t [µs] f [MHz]
Rys. 23.13. Przykłady odpowiedzi impulsowych kanału i ich charakterystyk amplitudowo- i fazowo-czę-
stotliwościowych. a), b), c), d) odpowiedź oryginalna oraz jej widmo amplitudowe, fazowe i opóźnienie gru-
powe tgrp, e), f) odpowiedź linii z górnoprzepustowym rozsprzęgaczem telefonicznym i jej widmo am-
plitudowe
Rozsprzęgacz należy projektować tak, aby wypadkowa długość odpowiedzi impulsowej linii
z rozsprzęgaczem nie była dłuższa od czasu trwania pojedynczego transmitowanego bloku da-
nych (512 próbek sygnału). Zazwyczaj stosuje się górnoprzepustowe filtry Czebyszewa I ro-
dzaju, rzędu co najmniej piątego. Z powodu braku miejsca projektowanie filtra rozsprzęgacza
nie jest przedmiotem naszego zainteresowanie.
Podczas przeprowadzonych symulacji, których wyniki opisano w dalszej części tego rozdziału,
wykorzystywano odpowiedź impulsową linii bez (roz)sprzęgacza [Arslan] z rysunku 23.13a
oraz odpowiedź linii z (roz)sprzęgaczem, pokazaną na rysunku 23.13e. Jak widać charakte-
rystyki amplitudowo-częstotliwościowe obu odpowiedzi, przedstawione na rysunkach 23.13b
i 23.13f, prawie się nie różnią, a jednak badania symulacyjne przeprowadzono dla obu ukła-
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 761
dów. Dlaczego tak uczyniono? Ponieważ w przygotowaniu są nowsze standardy ADSL, w któ-
rych filtr (roz)sprzegacza nie jest wymagany. Przykładem może być standard G922.2 G.Lite,
zubożona, ale za to tańsza implementacyjnie wersja G9221.1, mająca o połowę mniejszą czę-
stotliwość próbkowania (1,104 zamiast 2,208 MHz), dwa razy mniej kanałów częstotliwoś-
ciowych (256-punktowe a nie 512-punktowe FFT) oraz oferująca przepływność bitową do
użytkownika równą 1,5 megabita na sekundę (zamiast 9 Mbs).
Należy zatem pobudzić układ sygnałem, który ma Pxx(f ) różne od zera (najlepiej stałe w czę-
stotliwości), wyznaczyć Pyx(f ), obliczyć H(f ) jako wynik dzielenia Pyx(f ) przez Pxx(f ) oraz zna-
leźć h(t) metodą odwrotnej transformacji Fouriera z H(f ). Pxx(f ) = const, jeśli Rxx(τ) = δ(τ), co
jest prawdziwe dla szumu (rozdz. 1.4.3).
Powyższe rozumowanie jest teoretycznie poprawne ale trudno realizowalne w praktyce, ponie-
waż jest w nim wymagana znajomość sygnałów w czasie od −∞ do +∞ oraz całkowanie
w takich granicach. Sygnały x(t) i y(t) należałoby zatem spróbkować, wyznaczyć estymaty
funkcji korelacji Rxx(k) i Ryx(k) na podstawie skończonego zbioru próbek {x(n)} i {y(n)}, obli-
762 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
czyć Pxx(k) i Pyx(k) za pomocą dyskretnej transformacji Fouriera DFT, następnie je podzielić
H(k) = Pyx(k)/ Pxx(k) i wykonać odwrotne DFT: h(n) = IDFT( H(k) ).
W normie ADSL jest proponowane nieco inne rozwiązanie, oparte bezpośrednio na równa-
niu (23.7):
Y( f )
Y ( f ) = H( f )X ( f ) ⇒ H( f ) = (23.13)
X( f )
1 K
hˆ( n ) = FFTN−1 ∑ FFTN ( yk ( n )) X N ( k ) (23.14)
K
k =1
a) 3 b) 1
2 0.8
1
0.6
Rs (k)
s(n)
0
0.4
-1
-2 0.2
-3 0
0 100 200 300 400 500 -500 -250 0 250 500
nr próbki przesunięcie k
Rys. 23.14. Przykładowa postać czasowa sekwencji treningowej (a) oraz jej funkcji autokorelacji (b)
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 763
przypadek 1 przypadek 2
h(n)
y(n)
czas
FFT FFT
Rys. 23.15. Ilustracja zjawiska kołowego przesunięcia obliczanego h(n) (23.14) (w ramce na szarym tle)
w zależności od chwili pobierania fragmentu sygnału y(n) do analizatora FFT (w drugim przypadku prze-
sunięcie nie występuje)
a) 0.006 b) 0.006
0.005
0.004
0.004
h(n) hest(n) h(n) hest(n)
0.003 0.002
0.002
0
0.001
0 -0.002
0 100 200 300 400 500 0 100 200 300 400 500
numer próbki n numer próbki n
Rys. 23.16. Przykład wyznaczania odpowiedzi impulsowej linii transmisyjnej na podstawie (23.14) w ukła-
dzie: a) bez górnoprzepustowego filtra (roz)sprzęgacza telefonicznego, b) z tym filtrem. Oznaczenia: h(n)
− odpowiedź oryginalna, hest ( n ) = hˆ( n ) − odpowiedź obliczona (estymowana). Pochodzenie czklicynego
przesunięcia hest(n) w stosunku do h(n) jest związane z wyborem fragmentu sygnału y(n) do obliczeń (patrz
rys. 23.15)
Dzięki wielokrotnemu nadawaniu tej samej sekwencji treningowej o długości N próbek, wy-
musza się wystąpienie splotu kołowego transmitowanych danych i odpowiedzi impulsowej
linii, co ilustruje rysunek 23.15. W odbiorniku wystarczy wówczas w sposób cykliczny pobrać
K kolejnych bloków po N próbek z przetwornika A/C i obliczyć h(n) z (23.14). Wyznaczona
w ten sposób estymata odpowiedzi impulsowej linii hˆ(n ) jest przesunięta w sposób kołowy
(cykliczny). O wielkości tego przesunięcia decyduje wybór początku pobierania bloku próbek
z bufora sygnału y(n): przesunięcie nie występuje kiedy pierwsza pobrana próbka odpowiada
początkowi sekwencji treningowej. Na rysunku 23.15 pokazano przypadki dwóch różnych
przesunięć cyklicznych obliczonego hˆ(n ) w zależności od chwili pobierania danych. Wyni-
kiem estymacji są odpowiedzi impulsowe przedstawione w ramkach na szarym tle (należy je
odwrócić w osi czasu). Jak widać w drugim przypadku nie występuje przesunięcie ponieważ do
analizatora FFT pobrano blok danych bez rotacji kołowej. Z kolei na rysunku 23.16 przed-
stawiono przykładowe wyniki estymacji h(n), uzyskane w wyniku komputerowej symulacji
764 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
Dla dociekliwych. Istnieje bardzo wiele metod projektowania filtrów skracających odpowiedź
impulsową linii transmisyjnej. My zapoznamy się jedynie z prostym algorytmicznie, poglądo-
wym podejściem, zaproponowanym w pracy [Tkac03], które zostanie teraz skrótowo zapre-
zentowane. Na początku zróbmy następujące założenia:
h(n) − oznacza oryginalną odpowiedź impulsową linii mającą Lh próbek (n = 0, 1, ..., Lh − 1),
e(n) − to filtr korektora TEQ o długości Le (n = 0, 1, 2, ..., Le − 1),
he(n) = h(n)⊗e(n) − czyli skrócona odpowiedź impulsowa linii, jest wynikiem splotu h(n) i e(n)
oraz ma Lh + Le − 1 próbek.
Niech h, e i he oznaczają wektory poziome zbudowane z próbek h(n), e(n) i he(n). Chcemy,
aby energia he(n) koncentrowała się w Lp = P + 1 = 33 próbkach, zaczynając od ∆ + 1 próbki.
Mając na uwadze zdefiniowanie matematycznej postaci minimalizowanej funkcji kosztu (celu),
wprowadźmy następujące oznaczenia:
− macierzy H, o wymiarach Le × (Lh + Le − 1), splotu odpowiedzi impulsowej linii h(n) z poszu-
kiwanym filtrem korektora e(n):
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 765
0∆ 0 0
W∆ = 0 I Lp 0 (23.16)
0 0 0 Lh + Le −1−∆− Lp
E
∑ he2 (n )
( h e W∆ )( h e W∆ )
T
h e W∆ W∆T hTe h e W∆ hTe
J= W = n∈W = = = (23.18)
EW ∑ he2 (n ) ( he W∆ )( he W∆ )T h e W∆ W∆T hTe h e W∆ hTe
n∈W
eHW∆ HT eT
J= (23.19)
eHW∆ HT eT
Załóżmy obecnie, że macierz A ∆ = HW∆ HT jest pełnego rzędu, dodatnio określona i syme-
tryczna. Wówczas można w stosunku do niej zastosować dekompozycję Choleskiego, tzn.
przedstawić ją jako iloczyn
gdzie G∆ jest macierzą trójkątną górną. Wówczas funkcję kosztu (23.19) można przekształcić
do następującej postaci
v ∆ = GeT ⇒ e T = G − 1v ∆ (23.22a, b)
Ostatecznie problem projektowania wag filtra korektora TEQ e(n) (wektora e) został sprowa-
dzony do minimalizacji funkcji J (23.21). Ponieważ X∆ jest macierzą hermitowską, to funkcja
ta przyjmuje wartość minimalną (równą λ∆, min) dla wektora v∆ równego wektorowi własnemu
v∆, min macierzy X∆, związanemu z jej najmniejszą wartością własną λ∆, min. Uwzględniając ten
fakt oraz (23.22b), otrzymujemy wyrażenie na poszukiwane wagi korektora TEQ:
( )
T
e opt = vT∆, min G −1 (23.23)
gdzie macierz G∆ jest zdefiniowana przez (23.20), a wektor v∆, min otrzymuje się w wyniku de-
kompozycji macierzy X∆ (23.21) względem jej wartości własnych EVD (Eigen-Value Decom-
position) [Bjor87]. Z (23.23) należy wyznaczyć wagi korektora TEQ dla różnych wartości
opóźnienia ∆ początku skróconej odpowiedzi impulsowej i jako wynik końcowy przyjąć to
opóźnienie, dla którego kryterium (23.21) przyjmuje wartość najmniejszą.
Program napisany w języku Matlab, służący do wyznaczania wag filtra TEQ według powyższej
metody, jest przedstawiony w tabeli 23-2. Na rysunku 23.17 zaprezentowano wyniki jego za-
stosowania.
Tab. 23-2. Program w języku Matlab do wyznaczania wag filtra korektora czasowego TEQ
Lh = length(h); Lz = Lh+Le-1-D-Lp;
H = zeros(Le, Lh+Le-1);
for i=1:Le
H(i,i:i+Lh-1) = h;
end
W1 = zeros(Lh+Le-1, Lh+Le-1);
W0 = zeros(Lh+Le-1, Lh+Le-1);
rect=[zeros(1,D),ones(1,Lp),zeros(1,Lz)];
W1 = diag(rect);
W0 = diag(1-rect);
X1=H*W1*H';
G = chol(X1);
X0=H*W0*H';
T = inv(G)'*X0*inv(G);
[V,D] = eig(T);
LambdaMin = min(diag(D)); % # lub skrótowo
LambdaMinIdx = find(diag(D)==LambdaMin); % # [LambdaMin, LambdaMinIdx] = min(diag(D));
e = V(:,LambdaMinIdx)' * inv(G)';
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 767
1 1
0.5 0.5
^
h(n)
0 0
^h(n)
-0.5 -0.5
h^e(n) h^e(n)
-1 -1
10 20 30 40 50 60 70 80 10 20 30 40 50 60 70 80
numer próbki n numer próbki n
Rys. 23.17. Ilustracja graficzna operacji skrócenia czasu trwania wypadkowej odpowiedzi impulsowej linii
transmisyjnej w wyniku zastosowania filtra korektora TEQ. Oznaczenia: hˆ( n ) − odpowiedź przed skróce-
niem, obliczona z (23.14), hˆ ( n ) − odpowiedź po skróceniu. Po lewej − bez rozsprzęgacza telefonicznego,
e
po prawej − z (roz)sprzęgaczem. Linią przerywaną narysowano okno prostokątne, w którym była maksy-
malizowana energia odpowiedzi skróconej hˆe ( n ) . Optymalne opóźnienie tego okna jest parametrem metody
P −1 2 P −1 2
R( d ) = ∑ ye ( d + m ) + ∑ ye ( d + m + N ) (23.24b)
m=0 m=0
a dzielenie przez R(d ) służy jedynie normowaniu uzyskiwanych wartości. Wielkości Q(d )
i R(d ) mogą być wyznaczane iteracyjnie. Przykładowo dla Q(d ) mamy:
Q (d + 1) = Q (d ) − ye (d ) ye (d + N ) + ye ( d + P ) ye ( d + P + N )
768 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
0.5
0.4
0.3
fADSL (n)
0.2
0.1
0
-0.1
0 50 100 150 200 250 300 350 400 450 500 550
numer próbki n
Rys. 23.18. Przykładowy kształt uśrednione (100 realizacji) funkcji synchronizacyjnej fADSL(d ) (23.24)
w przypadku niewystępowania oraz występowania addytywnego szumu o mocy −110 dBm/Hz (obie funkcje
pokrywają się)
Z powodu występowania szumu w kanale, funkcję synchronizacji wyznacza się dla kilku (kil-
kunastu, kilkudziesięciu) bloków danych i uśrednia (dodaje i dzieli przez liczbę składników).
Na rysunku 23.18 przedstawiono przykładowy kształt uśrednionej funkcji synchronizacji
fADSL(d ) w przypadku niewystępowania oraz występowania addytywnego szumu o mocy −110
dBm/Hz dla tego samego tr ansmito wanego sygnału. Jak widać obie funkcje pokrywają
się i mają ostre maksimum.
Koreluje się w niej blok N/2 próbek sygnału ye(n), zaczynających się od dowolnej próbki
d, z blokiem próbek przesuniętych o N/2 oraz normuje wynik tej korelacji. Maksimum funkcji
fOFDM(d ) występuje kiedy numer d pierwszej próbki korelowanego bloku jest równy numerowi
pierwszej próbki przesyłanego bloku danych (nie prefiksu). Podobnie jak poprzednio, w obec-
ności szumu funkcję synchronizacyjną można wyznaczać dla kilku bloków danych i uśredniać.
Na rysunku 23.20 pokazano przykładowy kształt uśrednionej funkcji fOFDM(d ) (100 realizacji)
w przypadku niewystępowania oraz występowania addytywnego szumu o mocy −110 dBm/Hz
(podobnie jak poprzednio obie funkcje pokrywają się). Wynika z niego, że w rozpapatr ywa-
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 769
he(n)
czas
dane
czas
Rys. 23.19. Ilustracja koncepcji synchronizacji blokowej: w pierwszej i drugiej połowie każdego bloku da-
nych jest transmitowany ten sam sygnał, do całości jest dodawany prefiks
0.6
0.5
0.4
fOFDM(n)
0.3
0.2
0.1
0
0 50 100 150 200 250 300 350 400 450 500 550
numer próbki n
Rys. 23.20. Przykładowy kształt uśrednionej funkcji synchronizacyjnej fOFDM(d ) (23.25) w przypadku nie-
występowania oraz występowania addytywnego szumu o mocy −110 dBm/Hz (obie funkcje pokrywają się)
nym przypadku początek bloku danych zaczyna się w okolicy 50. próbki. Jednak teraz funkcja
decyzyjna charakteryzuje się maksimum o szerokości równej długości cyklicznego prefiksu.
Ponieważ w modemach ADSL prefiks składa się aż z P = 32 próbek, na rysunku 23.20 obser-
wujemy stosunkowo płaskie i szerokie maksimum, który może stwarzać problemy detekcyjne.
Dodatkowo (23.25) jest bardziej złożone obliczeniowo niż (23.24) i wymaga wysyłania dwa
razy tych samych danych.
W sytuacji kiedy cała „brudna” robota została już zrobiona, częstotliwościowa korekcja znie-
kształceń amplitudowo-fazowych wprowadzanych przez linię (łącznie z filtrem TEQ) jest
czystą przyjemnością. Ponieważ wszystko w systemie jest już znane, wystarczy tylko obliczyć
estymatę „wejścia” Sˆ ( k ) na podstawie zmierzonego „wyjścia” Ye(s)(k) i wyestymowanej wiedzy
o zniekształceniach wprowadzanych przez skrócony kanał Hˆ e (k ) (analogicznie jak w (23.12)):
1
Ye(s) ( k ) ≈ Hˆ e (k ) ⋅ SN
(k ) + Ξ
N ( k ) ⇒ Sˆ (k ) = Ye(s) ( k ) = FEQ(k ) ⋅ Ye(s) (k ) (23.26)
ˆ
H ( k )
wyjscie linia wejscie szum e
gdzie:
1 1
Ye( s ) ( k ) = FFT ye( s ) ( n ) , FEQ(k ) = = (23.27)
ˆ
H e ( k ) FFT hˆe ( n )
770 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
Ponieważ mamy już działający model obliczeniowy wielotomowej transmisji ADSL spróbujmy
teraz oszacować oferowane przez nią przepływności bitowe. Rozmiar konstelacji i liczby bitów
przesyłanych na każdej z nośnych zależą od stosunku sygnału do szumu, występującego
w każdym kanale częstotliwościowym. Sumaryczna przepływność bitowa modemu b jest dana
wzorem:
SNRk Px ,k
b = ∑ bk = ∑ log 2 1 + , SNRk = (23.28)
k k Γ Pn ,k + PIF ,k
2
SNRk = ∑ [ Sm ( k )]
2
∑ Sm ( k ) − Sˆm (k ) (23.30)
m m
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 771
60 60
|E(k)| |FEQ(k)|
40 40
20 20
0
[dB]
[dB]
^ (k)|
|H 0 ^ (k)|
e |H
-20 e
-20
-40 ^
|H(k)| -40
-60
-60
0 50 100 150 200 250 0 50 100 150 200 250
numer kanału numer kanału
Rys. 23.21. Kolejne kroki obliczeń prowadzących do wyznaczenia korektora FEQ. Hˆ ( k ) , E(k), Hˆ e ( k )
i FEQ(k) to charakterystyki amplitudowo-częstotliwościowe: linii telefonicznej, korektora TEQ, linii z ko-
rektorem TEQ oraz korektora FEQ
4 1.5
10 00
3 1
2 10 00
Imag (sinus)
Imag (sinus)
1 0.5
0 11 01 0
-1 -0.5
-2 11 01
-3 -1
-4 -1.5
-4 -3 -2 -1 0 1 2 3 4 -1.5 -1 -0.5 0 0.5 1 1.5
Real (cosinus) Real (cosinus)
Rys. 23.22. Przykład deformacji konstelacji 4-QAM w przypadku nie zastosowania korektora FEQ (dwa
różne kanały częstotliwościowe, dwa różne poziomy mocy szumu addytywnego)
1.5 1.5
1 1
Imag (sinus)
Imag (sinus)
0.5 0.5
0 0
-0.5 -0.5
-1 -1
-1.5 -1.5
-1.5 -1 -0.5 0 0.5 1 1.5 -1.5 -1 -0.5 0 0.5 1 1.5
Real (cosinus) Real (cosinus)
1.5 1.5
1 1
Imag (sinus)
Imag (sinus)
0.5 0.5
0 0
-0.5 -0.5
-1 -1
-1.5 -1.5
-1.5 -1 -0.5 0 0.5 1 1.5 -1.5 -1 -0.5 0 0.5 1 1.5
Real (cosinus) Real (cosinus)
Rys. 23.23. Przykład detekcji konstelacji 4-QAM w jednym z kanałów częstotliwościowych w przypad-
ku zastosowania korektora FEQ i występowania addytywnego szumu białego o mocy: −120, −110, −100,
− 90 dBm/Hz (kolejno poziomo)
772 Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej
Na rysunku 23.24 przedstawiono wyznaczone symulacyjnie zależności SNR (23.30) dla dwóch
linii transmisyjnych: bez układu (roz)sprzęgacza telefonicznego (h(t) − rys. 23.13a) oraz z nim
(h(t) − rys. 23.13e), w przypadku występowania addytywnego szumu białego o mocy: − 300,
−140, −120, −100 dBm/Hz. Z kolei na rysunku 23.25 pokazano odpowiadające im alokacje bitów
bk (23.28) w poszczególnych kanałach częstotliwościowych. Można zaobserwować wyraźną
różnicę dla obu linii tylko dla niskich częstotliwości. W przypadku niewystępowania szumu
oraz wykorzystania wszystkich kanałów osiąga się szybkość transmisji około 15 megabitów na
sekundę, limitowaną interferencjami międzysymbolowymi oraz sposobem alokowania bitów
w standardzie ADSL, który dopuszcza przesyłanie w jednym kanale częstotliwościowym od
2 do 15 bitów.
Ponieważ za każdym razem była przeprowadzana od początku cała procedura inicjalizacyjna
(identyfikacja odpowiedzi impulsowej linii, projektowanie korektora TEQ, synchronizacja)
a dopiero potem następowała transmisja danych testowych, dla różnego poziomu szumu uzys-
kiwano różniące się estymaty odpowiedzi impulsowej i w konsekwencji r ó żne korektory
TEQ. Z tego powodu rodziny charakterystyk SNR przedstawionych na rysunku 23.24 nie tylko
się obniżają wraz ze wzrostem poziomu zakłóceń, ale także mają załamania w różnych miej-
scach (zera transmitancji korektora są rozłożone za każdym razem inaczej). W przypadku za-
stosowania jednego korektora powinny się tylko obniżać.
80 80
70 70
60 60
50 50
SNR [dB]
SNR [dB]
40 40
30 30
20 20
10 10
0 0
-10 -10
0 50 100 150 200 250 0 50 100 150 200 250
numer kanału numer kanału
Rys. 23.24. Przykładowe zależności SNR dla dwóch linii transmisyjnych: bez układu (roz)sprzęgacza tele-
fonicznego (po lewej) oraz z nim (po prawej), podczas występowania addytywnego szumu białego o mocy:
−300, −140, −120, −100 dBm/Hz
16 16
liczba bitów / nr konstelacji
14 14
12 12
10 10
8 8
6 6
4 4
2 2
0 0
0 50 100 150 200 250 0 50 100 150 200 250
numer kanału numer kanału
Rys. 23.25. Alokacja bitów w poszczególnych kanałach częstotliwościowych dla funkcji SNR z rysunku
23.24: po lewej układ bez (roz)sprzęgacza telefonicznego, a po prawej − z nim; szum −300, −140, −120,
−100 dBm/Hz (linii przerywanej użyto tylko w celu poprawy czytelności rysunku, odpowiada ona pozio-
mowi szumu −140 dBm/Hz)
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 773
Na koniec wypada jeszcze zwrócić uwagę na znaczenie właściwego projektowania filtra kore-
ktora czasowego TEQ. Jego charakterystyka amplitudowo-częstotliwościowa jest również bar-
dzo istotna. W przypadku kiedy występują w niej ostre minima, spowodowane przez zera
transmitancji leżące blisko okręgu jednostkowego, wypadkowa charakterystyka linii z kore-
ktorem także je ma, a to powoduje, że ulokowane w nich kanały stają się częściowo lub całko-
wicie bezużyteczne. Co prawda korektor FEQ koryguje wypadkową charakterystykę całego
układu silnie wzmacniając pewne jej części, ale prowadzi to także do identycznego wzmoc-
nienia szumu, braku poprawy współczynnika SNR i małej liczby przydzielonych bitów. Rów-
nocześnie z powodu nieidealnych filtrów demodulacji (rys. 23.12) dla silnie tłumionych kana-
łów o wiele bardziej szkodliwe jest przenikanie zakłóceń od kanałów sąsiednich, pogarszające
ich SNR.
Najprostszym sposobem unikania zer w charakterystyce częstotliwościowej filtra TEQ jest sto-
sowanie małej liczby wag, na przykład dwóch lub czterech zamiast szesnastu. Ale powoduje to
złe skrócenie odpowiedzi impulsowej kanału (rys. 23.26a) i bardzo duże interferencje
międzyblokowe i międzykanałowe. W konsekwencji cała charakterystyka SNR układu bardzo
się obniża i szybkość transmisji znacznie spada (rys. 23.26b). W przypadku występowania
szumu sytuacja zmienia się, ponieważ charakterystyka SNR ulega przede wszystkim obniżeniu
z jego powodu, a nie z powodu interferencji (rys. 23.27b). Wówczas zastosowanie krótszych
filtrów TEQ mniej „boli”, a dodatkowo unika się zer w charakterystykach częstotliwościowych
korektora TEQ (rys. 23.27a) i całego układu (rys. 23.27b).
0.012 70
0.008 60
50
SNR [dB]
0.004
herr(n) 40
0
30
-0.004 20
-0.008 10
0 20 40 60 80 100 0 50 100 150 200 250
numer próbki n numer kanału
Rys. 23.26. Wpływ stosowania filtrów TEQ o różnej długości dla układu z (roz)sprzęgaczem telefonicznym
w sytuacji niewystępowania szumu. Po lewej: sygnał resztkowy pozostały po operacji skrócenia odpowiedzi
impulsowej, po prawej: odpowiadająca mu charakterystyka SNR. Długość korektora TEQ Le = 2 (linia ciągła
cienka), 8 (linia przerywana), 16 (linia ciągła gruba)
60 40
40
30
|E(f)| [dB]
SNR [dB]
20
20
0
-20 10
-40 0
0 50 100 150 200 250 0 50 100 150 200 250
numer kanału numer kanału
Rys. 23.27. Wpływ stosowania filtrów TEQ o różnej długości dla układu z (roz)sprzęgaczem telefonicznym
w sytuacji występowania szumu −110 dBm/Hz. Po lewej: charakterystyka amplitudowo-częstotliwościowa
samego korektora, po prawej: charakterystyka SNR całego układu. Długość korektora TEQ Le = 2 (linia
ciągła), 8 (linia przerywana)
% Ćwiczenie: Symulacja pracy modemu ADSL (Neostrady) − szybki dostęp do Internetu po linii
% telefonicznej
% PARAMETRY
% KOREKTOR CZASOWY TEQ
Le = 16; % długość filtra korektora czasowego, skracającego odpowiedź impulsową kanału
Lp = 32; % długość prefiksu
% KANAŁ
N = 512; % długość transmitowanej ramki danych bez prefiksu
Np = N + Lp; % długość ramki wraz z prefiksem
Niter = 400; % liczba transmitowanych ramek (iteracji pętli nadawania)
% Z NORMY
fpr = 2.208e6; % częstotliwość próbkowania [Hz]
SzumDbmHz = -100; % moc szumu w linii telefonicznej [dBm/Hz]
SygnalDbm = 23; % moc wejściowa sygnału w odbiorniku [dBm]
WzmKod = 4.2; % wzmocnienie kodowania [dB]; np. bez kodera/dekodera Viterbiego = 0, z nim = 4.2
OdstepKod = 6; % margines (zapas) działania modemu dla SNR [dB]
Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej 775
% ###########################################################################################
% PĘTLA GŁÓWNA - POCZĄTEK ###############################################################
% ###########################################################################################
iter
end
% SYNCHRONIZACJA #####################################################################
if( (Synchronizacja == 1) & (iter > iterEstymacjaKanalu + 4) ) % warunek
LiczSynchro = LiczSynchro-1 % zmniejsz licznik pętli synchronizacji
r = bye(1:2*N+Lp); % pobierz dane z bufora
for n = 0 : N+Lp-1 % funkcja synchronizacyjna (23.24)
q = sum(bye(n+1:n+Lp).*bye(n+N+1:n+N+Lp));
r = sum(bye(n+1:n+Lp).^2) + sum(bye(n+1+N:n+Lp+N).^2);
sc(n+1)=q/r;
end
scSUM = scSUM + sc; % akumuluj funkcję SYNCHRO
% plot(sc); title('funkcja SYNCHRO'); pause % opcjonalny rysunek
% ###########################################################################################
% PĘTLA GŁÓWNA - KONIEC ##################################################################
% ###########################################################################################
Celem ostatniego projektu jest sprawdzenie czy Czytelnik umie poradzić sobie z nowym „pro-
blemem” bez pomocy „Mamusi i Tatusia”. W żargonie młodzieżowym sytuacja taka bywa
nazywana „jazdą bez trzymanki”. Postawionym zadaniem jest praktyczna weryfikacja użytecz-
ności wielu algorytmów omawianych w poprzednich rozdziałach książki, tym razem w zastoso-
waniu do estymacji chwilowego przesunięcia fazowego:
∆φ(n ) = φ2 (n ) − φ1 (n ) (24.1)
j ( 2 π f c n +φ2 ( n ) )
y2 ( n ) = HT ( x2 ( n ) ) = a2 ( n ) e (24.3b)
{
∆φˆ 1 ( n ) = arg y1* ( n ) y2 ( n ) } (24.4)
wykorzystując fakt, że
j ( φ2 ( n ) −φ1 ( n ) )
y1* ( n ) y2 ( n ) = a1 ( n ) a2 ( n ) e
( m) (m)
∆φˆ 2 ( n ) = φˆ 2 ( n ) − φˆ 1 ( n ) = arg DFT ( w ( m ) x2 ( n + m ) ) − arg DFT ( w ( m ) x1 ( n + m ) ) (24.5a)
c
( f ) c
( f )
( m ) ( m)
*
∆φˆ 2 ( n ) = arg DFT ( w ( m ) x2 ( n + m ) ) DFT ( w ( m ) x1 ( n + m ) ) (24.5b)
( fc ) ( fc )
W równaniu (24.5a) użyto znaku estymatora „^” w stosunku do faz poszczególnych sygnałów,
aby określić możliwość analizy sygnałów zaszumionych. Estymator (24.5b) jest korzystniejszy
do praktycznej implementacji w czasie rzeczywistym ze względu na mniejszą złożoność obli-
czeniową.
Parametrami metody krótkoczasowej transformacji Fouriera jest długość DFT (N = 2M+1)
oraz rodzaj użytego okna czasowego w(m) (patrz tabela 24-1).
Metoda krótkoczasowej transformacji Wignera. Podobnie jak wyżej stosuje się dyskretną
transformację Fouriera tylko w odniesieniu nie do samych sygnałów x1(n) i x2(n), lecz frag-
mentu ich jądra Wignera x2(n + m) x1*(n − m) (m = − M,..., 0,..., M):
780 Projekt FAZA: estymacja chwilowego przesunięcia fazowego
( m )
(
∆φˆ 3 ( n ) = arg DFT w ( m ) x2 ( n + m ) x1* ( n − m ) ) (24.6)
( 2 fc )
Na uwagę zasługuje fakt, że teraz funkcja analizująca ma częstotliwość 2fc zamiast fc. Metoda
krótkoczasowej transformacji Wignera jest mniej złożona obliczeniowo i charakteryzuje się
podobnymi właściwościami dynamicznymi jak metoda krótkoczasowej transformacji Fouriera,
ale jest mniej odporna na zakłócenia losowe.
Parametrami metody krótkoczasowej transformacji Wignera jest długość DFT (N = 2M+1)
oraz rodzaj użytego okna czasowego w(m) (patrz tabela 24-1).
X 2 ( z ) ≈ Hn ( z ) X1 ( z ) (24.7)
gdzie X1(z) i X2(z) oznaczają transformaty Z dyskretnych sygnałów x1(n) i x2(n). Chwilowe
przesunięcie fazowe między tymi sygnałami oblicza się wówczas z następującego wzoru:
∆φˆ 4 ( n ) = arg H n ( z ) j 2 π fc f pr (24.8)
z=e
Metoda filtra Kalmana. Metodę filtracji Kalmana można zastosować do estymacji parametrów
zespolonego (analitycznego), zmiennego w czasie sygnału sinusoidalnego. Przyjmuje się wtedy
następującą postać sygnału:
jΦ ( n )
y (n ) = a (n ) e (24.9)
Następnie definiuje się wektor stanu procesu jako (kąt całkowity, pulsacja unormowana, zmia-
na tej pulsacji z próbki na próbkę sygnału):
T
x ( n ) = Φ ( n ) , Ω ( n ) , α ( n ) (24.11)
i zapisuje równania (24.9) dla dwóch kolejnych chwil czasowych n i n+1. Na tej podstawie
znajduje się zależność x(n+1) od x(n) i otrzymuje macierz modelu procesu F (patrz równania
(15.79) i (15.81)):
Projekt FAZA: estymacja chwilowego przesunięcia fazowego 781
1 1 0, 5
F = 0 1 1 (24.12a)
0 0 1
Im( y (n ))
Φ (n ) = arctg
Re( y ( n ))
H = [1 0 0] (24.12b)
Adaptacyjne predyktory liniowe. W metodzie tej stosuje się jeden ze standardowych układów
pracy filtra adaptacyjnego. W każdej chwili czasowej n liniowy predyktor stara się przewidzieć
wartość ∆φˆ i (n ) na podstawie M estymat ją poprzedzających:
M
∆φˆ iLP ( n ) = ∑ hn ( m ) ∆φˆ i ( n − m ) (24.13)
m =1
gdzie hn(m) oznaczają wartości adaptacyjnie przestrajanych wag filtra, wyznaczone w po-
przedniej iteracji. Zmiana wag jest w każdym kroku algorytmu proporcjonalna do aktualnego
błędu predykcji
1 1
F= , H = [ 1 0] (24.15)
0 1
Dwa adaptacyjne algorytmy estymacji ∆φˆ i (n ) są przedstawione w tabeli 24-2, przy czym algo-
rytm drugi jest nieco mniej złożony obliczeniowo. Parametry „zapominania” λ i µ są odpo-
wiedzialne za szybkość przestrajania się filtra i decydują o tym, czy filtr jest wolny (filtr „dłu-
go” pamięta, nie nadąża za szumem, więc dobrze odszumia sygnał, lecz może nie nadążać za
zmianą samego sygnału) czy szybki (pamięta „krótko”, nadąża za zmiennością sygnału, ale źle
odszumia, gdyż częściowo nadąża także za szumem).
Tab. 24-1. Algorytmy procedur numerycznych służących do estymacji chwilowego przesunięcia fazowego
∆φ(n ) = φ2 (n ) − φ1 (n ) pomiędzy sygnałami x1(n) i x2(n) (24.1)
(
Im y1* ( n ) y2 ( n )
∆φˆ 1 ( n ) = arctg
)
1 (
Re y * ( n ) y ( n )
2 )
FOURIER. Metoda krótkoczasowej transformacji Fouriera. N = 2M + 1
• Wyznaczenie „falki” sinusowej i kosinusowej ws(m) and wc(m) (w(m) − funkcja okna):
( ) ( )
ws (m ) = w(m )sin 2 πm f c / f pr , wc (m ) = w(m )cos 2 πm f c / f pr , m = − M ,..., 0,...., M
• Splot „falek” ws(m) i wc(m) z jądrem Wignera x12(n,m) analizowanych sygnałów x1(n) i x2(n):
x21 ( n, m ) = x2 ( n + m ) x1 ( n − m ) , m = − M ,..., 0,..., M
M M
s
x21 (n ) = ∑ x21 ( n, m ) ws ( m ), c
x21 (n) = ∑ x21 ( n, m ) wc ( m )
m =− M m =− M
• Wyznaczenie estymaty chwilowego przesunięcia fazowego sygnałów:
xs (n)
∆φˆ 3 ( n ) = arctg 21
xc ( n )
21
784 Projekt FAZA: estymacja chwilowego przesunięcia fazowego
hn =0 (m) = 0, b ( m ) = 0, m = 1, 2, 3,..., M
Algorytm:
while (dostępne nowe próbki sygnałów x1(n) i x2(n) o indeksie n)
b (1) = x1 ( n ) (pobierz nową próbkę sygnału x1(n) do bufora)
M
err = x2 ( n ) − ∑ h n −1 ( m ) ⋅ b ( m ) (oblicz błąd „skorelowania” sygnałów x1(n) i x2(n))
m =1
M M
∆φˆ 4 ( n ) = arctg ∑ s ( m ) hn ( m ) ∑ c ( m ) hn ( m ) (oblicz przesunięcie fazowe)
m =1 m =1
b ( m ) = b ( m − 1) , m = M , M − 1, M − 2,..., 2 (przesuń próbki w buforze)
n = n +1 (zwiększ indeks n)
end while
UWAGA: wzm ( n ) − patrz tabela 24-3, algorytmy: LMS, NLMS-1, NLMS-2, NLMS-3.
Inicjalizacja:
F − macierz modelu procesu (24.15), H − macierz modelu pomiaru (24.15), se − wektor począt-
kowych estymat zmiennych procesu [ ∆φˆ i (0 ) θˆ (0 ) ]T (24.14), P − macierz wariancji ww. estymat,
R = r − wariancja szumu pomiaru, λ, µ − parametry adaptacji ( zapominania)
1 1 0 p11 0 1 0
F = , H = [1 0] , se = 0 , P = 0 p22
, R = [r11 ] = r , I =
0 1 0 1
( )
wzm = P1 ⋅ H T ⋅ H ⋅ P1 ⋅ H T + λ ⋅ r ⋅ r , se = s1 + wzm ⋅ err , P = I − wzm ⋅ H ⋅ P1/λ ( )
∆φˆ iKAL ( n ) = se(1)
end while
( )
wzm = P1 ⋅ H T ⋅ H ⋅ P1 ⋅ H T + r , se = s1 + wzm ⋅ err, P = I − wzm ⋅ H ⋅ P1 ( )
∆φˆ iKAL ( n ) = se(1)
end while
LMS wzm(n ) = 2 ⋅ µ
M
NLMS-1 eng (n ) = ∑ b(m ) ⋅ b(m ), wzm (n ) = 2 ⋅ µ (γ + eng (n ))
m =1
Powodzenia!
Tab. 24-4. Kod programu napisanego przez Czytelnika w języku Matlab, implementujący i testujący opisa-
ne w tym rozdziale metody estymacji chwilowego przesunięcia fazowego
Nie, to jeszcze nie koniec! Niniejszy rozdział stanowi swoisty EPILOG naszej opowieści. Jak
w teatrze kurtyna pójdzie w nim w górę odsłaniając to, co tak właściwie jest sercem cyfrowego
przetwarzania sygnałów: d e d y k o wa n y s p r z ę t , czyli różne, elektroniczne, mniej lub bar-
dziej skomplikowane „liczydełka” oraz zintegr o wane, „sygnałowe” śr o d o wiska p r o -
gr amo we, z pomocą których można ten sprzęt w prosty sposób ożywiać. Ponieważ sygnały
cyfrowe są zbiorami (wektorami, macierzami, ...) liczb, to do ich przetwarzania można użyć
dowolnego rodzaju układu, który może te liczby dodawać, odejmować, mnożyć i dzielić. Są
nim klasyczne procesory komputerowe, a także tzw. procesory sygnałowe i mikrokontrolery
oraz układy logiki programowalnej, które obecnie już mają wewnątrz zaimplementowane
jednostki arytmetyczno-logiczne lub umożliwiają prostą implementację takich jednostek. Przy-
miotnik „sygnałowy” oznacza najczęściej, że układ ma możliwość szybkiego wykonywania
(najczęściej w jednym cyklu zegarowym) operacji mnożenia zawartości dwóch rejestrów oraz
dodawania wyniku do trzeciego rejestru, nazywanego akumulatorem. Aby było to możliwe,
w układzie muszą być wówczas rozwiązane także w efektywny sposób problemy pobierania
danych z pamięci, poprzez np. zwielokrotnianie równocześnie dostępnych przestrzeni i szyn
adresowych, danych oraz sygnałów sterujących. Szybkość tej operacji daje możliwość prze-
twarzania próbek danych „w locie”, w trakcie ich napływania, w tak zwanym czasie rzeczy-
wistym (na bieżąco). Przykładowo:
− procesory sygnałowe występują w telefonach komórkowych, w których jest dokonywana
w czasie rzeczywistym kompresja i dekompresja sygnału mowy,
− mikrokontrolery sygnałowe w tanich sterownikach urządzeń,
− układy logiki programowalnej, np. FPGA (Field Programmable Gate Array), w kartach
graficznych, wymagających równoległego przetwarzania na bieżąco wielu potoków liczb
w różnych arytmometrach,
− a układy ASIC (Application-Specific Integrated Circuits) w odbiornikach telewizji cyfrowej,
dekodujące skomplikowany strumień bitów i zamieniające go w płynny ciąg perfekcyjnej
jakości obrazów.
Ponieważ liczby mogą być reprezentowane w różny sposób (patrz rozdział 7), procesory
sygnałowe dzieli się na stałoprzecinkowe i zmiennoprzecinkowe. Pierwsze z nich są zdecydo-
788 EPILOG: implementacja algorytmów DSP na procesorach sygnałowych
wanie tańsze, ale też trudniejsze w użyciu dla nowicjusza, ponieważ konieczna w nich jest stała
kontrola nad możliwościami wystąpienia przepełnień rejestrów. My tym zagadnieniem w ogóle
się do tej pory nie zajmowaliśmy, gdyż z zasady w języku Matlab wszystkie obliczenia są prze-
prowadzane na liczbach zmiennoprzecinkowych podwójnej precyzji (64 bity).
Oczywiście, możliwości elektronicznych zabawek bardzo szybką się starzeją, dlatego postara-
my się przedstawić w tym rozdziale tylko najistotniejsze aspekty poruszanych zagadnień.
Drugim bohaterem tego rozdziału są zaawansowane środowiska programowe, mające umożli-
wiać bardzo szybką implementację sprzętową algorytmów. Naszym celem do tej pory było
zrozumienie samego algorytmu oraz jego zakodowanie w języku Matlab i przetestowanie. Im
większy problem, tym bardziej skomplikowany algorytm i dłuższy program. Ponieważ Matlab
ma bardzo bogatą bibliotekę funkcji cyfrowego przetwarzania sygnałów, gotowych cegiełek
z których można zbudować olbrzymie domy, jesteśmy bezpieczni − przygotowani na różne
okoliczności. Ale, niestety, są dwa mankamenty tego rozwiązania. Po pierwsze, trzeba pisać
programy, co zabiera trochę czasu, a po drugie, i co gorsze, programy te są ... zupełnie bez-
użyteczne, ponieważ procesory sygnałowe ich ... nie zrozumieją. Jak można wyjść z tej ślepej
uliczki? Istnieją zintegrowane środowiska, także w samej rodzinie Matlaba (jest to Simulink),
w których algorytm buduje się nie w sposób tekstowy tylko w graficzny, łącząc ze sobą jego
poszczególne bloczki. Dodatkowo można wymuszać całkowitoliczbowość prowadzonych ob-
liczeń i w ten sposób sprawdzać jego stabilność numeryczną (tym razem to DSP Blockset). Jest
to bardzo ważne w sytuacji, kiedy adresatem algorytmu jest procesor stałoprzecinkowy, operu-
jący przykładowo na liczbach 16-, 24- lub 32-bitowych. Następnie można kod Matlaba prze-
kształcić za pomocą odpowiednich narzędzi do kodu napisanego w języku C, a kompilatory
tego języka są już dostępne dla większości procesorów sygnałowych. Co ciekawe producent
Matlaba dostarcza już także gotowe narzędzia, umożliwiające przejście bezpośrednio z kodu
Matlaba do kodu asemblerowego, napisanego w języku maszynowym konkretnego procesora.
Teraz jest to możliwe dla procesorów firm Analog Devices, Motorola i Texas Instruments,
które wymieniono alfabetycznie, aby nie być posądzonym o kryptoreklamę („Nie ze mną te
numery ...”).
Podsumowując, w tym rozdziale przedstawiono zagadnienie implementacji algorytmów cyfro-
wego przetwarzania sygnałów w specjalnie do tego celu przeznaczonych układach elektronicz-
nych.
M M
1) filtracji FIR (bm − współczynniki filtra): y(n) = ∑ bm x(n − m ) = ∑ h(m) x(n − m )
m =0 m=0
M N
2) filtracji IIR (bm, ak − współczynniki filtra): y(n) = ∑ bm x(n − m)+ ∑ a k y(n − k )
m=0 k =1
N
1
3) funkcji korelacji wzajemnej: R x, y (m ) =
N
∑ x (n) y (n + m )
n =0
N −1
4) transformacji Fouriera: X (k ) = ∑ x ( n ) e − j 2 πn k / N
n =0
N −1
5) transformacji DCT: X (k ) = α(k ) ∑ x ( n )cos ( πk ( n + 1/ 2) / N )
n =0
Kluczem do sukcesu jest więc szybkie mnożenie dwóch liczb i dodawanie wyniku do zawartoś-
ci akumulatora a (MAC − Multiply and Accumulate):
a = x0 y0
a = a + x1 y1
(25.2)
a = a + x2 y2
iii
W układach z procesorami sygnałowymi liczby są pobierane z przetworników analogowo-cy-
frowych (patrz rozdział 7), zapisywane w pamięci, następnie pobierane z niej do procesora
(jednostki arytmetyczno-logicznej ALU) i przechowywane w jego rejestrach. Procesor mnoży
i dodaje zawartości swoich rejestrów oraz stale pobiera do nich nowe liczby. Partytura operacji
(25.2) dla procesora sygnałowego wygląda w przybliżeniu tak (anowe = astare + x ⋅ y):
a = 0 ( x0 → x, y0 → y )
powtórz ( M + 1) razy : (25.3)
{ a = a + x ⋅ y ( x0 → x, y0 → y ) }
gdzie a oznacza rejestr akumulator, a x oraz y − rejestry pomocnicze, przeznaczone do prze-
chowywania argumentów operacji arytmetycznych. Operacje w nawiasach okrągłych są wyko-
nywane równocześnie z operacjami arytmetycznymi i dotyczą pobierania liczb z pamięci do
rejestrów x i y procesora. Na początku akumulator jest zerowany, a z pamięci jest pobierana
pierwsza para liczb. Następnie w pętli wielokrotnie jest wykonywane równoczesne mnożenie
aktualnej zawartości rejestrów x i y oraz pobieranie do nich nowych argumentów. Po M + 1
obiegach pętli w akumulatorze znajduje się wartość będąca sumą iloczynów par liczb xk oraz
yk (25.1).
Ponieważ kolejne pary liczb (x0, y0), (x1, y1), (x2, y2), ... są potrzebne w tym samym czasie, naj-
częściej procesor sygnałowy ma trzy pamięci: jedną na program (P) oraz dwie na dane − argu-
menty operacji arytmetycznych (nazwijmy je X i Y), a także trzy niezależne magistrale,
składające się z szyn: adresowej, danych i sygnałów sterujących (do obliczeń są nam potrzebne
w istocie dane, nie adresy). Dane xk i yk są więc pobierane równocześnie do rejestrów proce-
790 EPILOG: implementacja algorytmów DSP na procesorach sygnałowych
ponieważ podczas filtracji są one cyklicznie wykorzystywane dla kolejnych chwil czasowych
n. Aby tak było, to wystarczy przed pierwszym użyciem rejestru ry powiadomić procesor, że
zwiększanie zawartości tego rejestru ma być realizowane w trybie modulo M. Robi się to
ustawiając zawartość rejestru modulo my, związanego z ry, na M−1, co już zapobiegliwie
zrobiono w pierwszej linii równania (25.6).
EPILOG: implementacja algorytmów DSP na procesorach sygnałowych 791
czyli próbka wyjściowa y(n) jest sumą ważoną aktualnej oraz M ostatnich próbek sygnału wej-
ściowego {x(n), x(n − 1), x(n − 2),...,x(n − M)}. W związku z tym próbki te muszą być pamię-
tane. Są one przechowywane w buforze roboczym, który jest aktualizowany po nadejściu
z przetwornika analogowo-cyfrowego kolejnej danej wejściowej. Aby zapisać nową daną, „sta-
re” próbki mogą być przesunięte o jedną pozycję. W jego wyniku najstarsza próbka jest usu-
wana z bufora, na zwolnione miejsce jest zaś zapisywana nowa dana. Bufor o takiej organizacji
próbek nazywa się buforem przesuwnym. Zasada jego pracy jest przedstawiona na rysunku
25.2a. Ponieważ jednak przemieszczanie próbek w pamięci niepotrzebnie zajmuje czas proce-
sora, częściej stosuje się bufory kołowe, w których taka konieczność nie występuje. W tym
przypadku „przychodząca” próbka „nadpisuje” w pamięci próbkę najstarszą, po czym następu-
je przesunięcie wskaźnika zapisu („kasowania”) na następną pozycję w buforze (w sposób
kołowy). Zasada pracy bufora kołowego jest zilustrowana na rysunku 25.2b. Po „załadowaniu”
nowej próbki, próbki znajdujące się w buforze powinny być odczytywane w kierunku przeciw-
nym do ruchu wskaźnika „wpisującego”, od ostatnio wpisanej do najstarszej. Na rysunku kie-
runek odczytu danych jest zaznaczony linią przerywaną. Bufory przesuwne i kołowe były już
opisane w rozdziale 10.2 (w tabeli 10-2 znajdują się programy napisane w języku Matlab, które
je implementują).
a) bufor przesuwny
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
b) bufor kołowy 1 1 1 1 5 5
2 2 2 2 6
3 3 3 3
4 4 4
Rys. 25.2. Ilustracja graficzna zasady działania bufora przesuwnego i kołowego o długości M = 4. Wartości
kolejnych próbek sygnału x(n) są równe: 1, 2, 3, .... Strzałka oraz przyciemnione pole pokazują miejsce,
w którym jest umieszczana w buforze kolejna próbka
Tab. 25-1. Operacje wykonywane przez procesor sygnałowy podczas instrukcji MAC
Lp. Nazwa operacji Kod operacji
1 Wymnożenie aktualnej zawartości rejestrów x i y (x ⋅ y)
2 Dodanie wyniku tej operacji do zawartości akumulatora a: a = a + (x ⋅ y)
3 Pobranie nowej wartości xn z pamięci X-RAM spod adresu [ X-RAM:(AdrX) ]→ rejestr x
znajdującego się w rejestrze wskaźnikowym AdrX
4 Pobranie nowej wartości yn z pamięci Y-RAM spod adresu
[ Y-RAM: (AdrY) ] → rejestr y
znajdującego się w rejestrze wskaźnikowym AdrY
5 Zwiększenie adresu przechowywanego w rejestrze AdrX AdrX = (AdrX + OffX)mod(ModX)
6 Zwiększenie adresu przechowywanego w rejestrze AdrY AdrY = (AdrY + OffY)mod(ModY)
Procesory sygnałowe innych firm, np. Texas Instruments i Analog Devices, mają tylko dwie
pamięci wewnętrzne: programu P (PM) i danych D (DM). W ich przypadku współczynniki filtra
zwyczajowo są przechowywane w pamięci programu.
W procesorach sygnałowych „równoczesność” wykonywania wielu operacji w jednym cyklu
zegarowym jest osiągana dzięki potokowej architekturze procesora, odpowiedniemu wyborowi
instrukcji oraz umiejętnemu napisaniu programu przez użytkownika.
M
y(n) = ∑ h( m) x( n − m)
m =0
pamięć P ROZKAZ
a = a + x⋅y
Licznik rozkazów
Rys. 25.3. Ilustracja budowy i zasady pracy procesora sygnałowego podczas wykonywania instrukcji MAC
(Multiply and Accumulate)
794 EPILOG: implementacja algorytmów DSP na procesorach sygnałowych
pamięć X pamięć Y
AdrX− − AdrY++
x(n-5) h(0) x(n−M) x(n)
x(n-4) h(1)
x(n-3) h(2)
x(n-2) h(3) ... x(n−1)
x(n-1) h(4)
x(n) h(5)
x(n-7) h(6) x(n−5) x(n−2)
x(n-6) h(7)
x(n−4) x(n−3)
a = a + x⋅y
Rys. 25.4. Ilustracja równoległości pracy procesora sygnałowego podczas wykonywania instrukcji MAC
(Multiply and Accumulate) z podkreśleniem wykorzystania buforów kołowych
r0 n0 m0
r1 n1 m1
r2 n2 m2
r3 n3 m3
r4 n4 m4
r5 n5 m5
r6 n6 m6
r7 n7 m7
Rejestry arytmetyczne
a2 a1 a0
Akumulatory
b2 b1 b0
x1 x0
Rejestry danych
y1 y0
Rys. 25.5. Rejestry wewnętrzne procesora sygnałowego firmy Motorola DSP56xxx. a2 i b2 to 8-bitowe
rejestry przepełnień
zbioru dyskowego o nazwie xsig.dat, ponieważ adres xin = x:$E000 został z nim
skojarzony w zbiorze komend (typu batch) dla symulatora. Następnie jest zapisywana do
bufora próbek wejściowych wskazywanego przez rejestr r1. Potem następuje „taniec z piłką”,
czyli filtracja danych, które aktualnie znajdują się w buforze (rejestr r1 pokazujący na próbki
sygnału jest dekrementowany, a rejestr r4 wskazujący na próbki odpowiedzi impulsowej jest
inkrementowany). Po obejściu „dookoła” buforów oba rejestry wskaźnikowe znajdują się w
miejscu wyjścia: r1 pokazuje na ostatnio wczytaną próbkę, r4 − na wagę h(0) filtra. W
związku z powyższym r1 musi być przesunięty o jedną pozycję do przodu, czyli na
„najstarszą” próbkę sygnału, która ma zostać usunięta z bufora przez następną daną wejściową.
Wynik filtracji zostaje zapisany do zbioru dyskowego ysig.dat, skojarzonego z adresem
y:$E000 w zbiorze komend dla symulatora.
Tab. 25-2. Przykładowy program filtracji sygnałów z wykorzystaniem procesora sygnałowego DSP56xxx
firmy Motorola (przeznaczony dla symulatora tego procesora)
Ćwiczenie: y = h⊗x ; iloczyn skalarny czyli filtr nierekursywny (dane czytane z dysku i zapisywane na dysk)
który wybierze rodzaj operacji (arytmetycznej, logicznej, przesłania itd.), oraz 2) pary liczb
(np. próbki sygnału i współczynnika filtra) do mnożenia. Najłatwiej zrealizować to za pomocą
trzech magistral, jednej dla przesyłania rozkazów realizowanego algorytmu (wykonywanego
programu) i dwu magistral dla danych. Warto pomyśleć o jeszcze jednej magistrali dla wysła-
nia wyników na zewnątrz jednostki arytmetyczno-logicznej ALU, choć nie jest to konieczne,
bo możemy do tego wykorzystać jedną z magistral danych. Zdarzają się też rozwiązania, dzie-
lące na dwie fazy przesłania po magistralach danych, trwające cykl zegara: pierwszą − odczytu
(przesłanie z pamięci do rejestru ALU) i drugą – zapisu ( w przeciwnym kierunku).
Przesłania danych realizowane za pomocą rozkazów są stratą cykli zegara i dlatego lepiej jest
mieć mechanizm transmisji niezależny od ALU i jednostki nią sterującej. Takim mechanizmem
obecnym we wszystkich nowoczesnych procesorach jest sterownik DMA (Direct Memory
Access).
Na rysunku 25.6 jest przedstawiona architektura typowego mikroprocesora sygnałowego, prze-
znaczonego do przetwarzania sygnału mowy oraz sygnału audio. Aby nie zagmatwać szcze-
gółami istoty architektury bazowej pominęliśmy na tym rysunku pewne dodatkowe, bardzo
przydatne, a nawet niezbędne, elementy takie jak: wspomniany sterownik DMA, kontroler
przerwań przychodzących z zewnątrz oraz port JTAG – niezbędny podczas uruchamiania
aplikacji na nowej karcie z procesorem sygnałowym. Architektura ta zawiera wszystkie wymie-
nione uprzednio elementy, konieczne do wydajnego przetwarzania sygnału cyfrowego. Próbki
sygnału są najczęściej rytmicznie dostarczane oraz wysyłane na zewnątrz tą samą drogą po-
przez synchroniczny interfejs szeregowy. Sygnały wielokanałowe mogą być transportowane
tym samym kanałem wejścia/wejścia w formacie z podziałem czasu TDM (Time Division
Multipexing).
Peryferia
Szyna adresowa X
Jednostka
Generacji Szyna adresowa Y
Adresu
Szyna danych X
Szyna danych Y
Typowa aplikacja. Schemat typowej, ale niezbyt skomplikowanej aplikacji związanej z prze-
twarzaniem sygnału i realizowanej na platformie mikroprocesorowej (procesor sygnałowy, mi-
krokontroler, komputer osobisty, palmtop itp.) jest przedstawiony na rysunku 25.7. Dotyczy on
implementacji algorytmów operujących na blokach próbek, takich jak analiza widmowa lub
kompresja sygnałów. W przypadku filtracji, przetwarzanie odbywa się najczęściej w procesie
obsługi przerwania od nowej, przychodzącej próbki, gdyż takie rozwiązanie minimalizuje opó-
źnienie sygnału. Wówczas odstęp czasowy między kolejnymi próbkami narzuca twardy limit
na czas obliczeń: przetwarzanie pobranej próbki musi się zakończyć przed nadejściem próbki
następnej. Dzieląc ten czas przez czas wykonania pojedynczej instrukcji otrzymujemy (w przy-
bliżeniu – niektóre instrukcje będą wykonywane dłużej) maksymalną liczbę instrukcji proceso-
ra, jakie możemy wykonać. Przykładowo, większość instrukcji procesorów rodziny Motorola
DSP56300 jest wykonywana w jednym cyklu zegara, co przy częstotliwości 100 MHz i czę-
stotliwości próbkowania sygnału 96 kHz (dźwięk stereo 48000 próbek na sekundę) daje około
1000 instrukcji. To i dużo i mało – zależy od aplikacji.
Powrót z przerwania
(RTI − Return from interrupt)
Nie
Próbka(i)
gotowa(e) ?
Pętla
główna
Tak
Rys. 25.7. Schemat algorytmiczny typowej aplikacji programowej, wykorzystującej procesor sygnałowy
EPILOG: implementacja algorytmów DSP na procesorach sygnałowych 799
Tab. 25-3. Typowe parametry architektury procesorów sygnałowych na podstawie rodzin mikroprocesorów
(µP) firmy Texas Instruments. Oznaczenia: MIPS – miliony instrukcji na sekundę, MFLOPs – miliony ope-
racji zmiennoprzecinkowych na sekundę, SP – stałoprzecinkowy, ZP – zmiennoprzecinkowy
rami DSP (Starter Kit, Evaluation Module itp.), które podłącza się do komputerów osobistych
za pomocą interfejsu RS lub USB, komunikującego się z portem emulacji JTAG procesora
sygnałowego, poprzez wbudowany na takiej karcie konwerter. Po załadowaniu programu na
procesor DSP można sterować jego wykonaniem z komputera PC. Ponieważ oferowane karty
są wyposażone w przetworniki A/C i C/A, możliwa jest przykładowo analiza częstotliwościo-
wa lub filtracja sygnałów audio w czasie rzeczywistym.
Zestaw instrukcji mikroprocesora sygnałowego oraz ich postać odpowiada zadaniom, do ja-
kich został stworzony oraz architekturze, w której wiele operacji jest wykonywanych równo-
cześnie (równolegle). Do zadań należy wykonywanie typowych działań arytmetycznych na wy-
branym formacie danych: stało- lub zmiennoprzecinkowym. Oprócz standardowych operacji
dodawania (add), odejmowania (sub), mnożenia (mpy) i dzielenia (div) (z tym ostatnim jest
nieco kłopotu, ale też rzadziej mamy z nim do czynienia w algorytmach DSP), występuje
sztandarowe mnożenie z sumowaniem MAC oraz cały zestaw operacji logicznych (and, or,
not, przesunięcia i rotacje bitów). Bogate instrukcje przesłań służą dostarczaniu danych do
obliczeń i wysyłaniu wyników, a rozkazy rozgałęzień pomagają w tworzeniu części logiczno-
-decyzyjnej algorytmu. Na szczególną uwagę zasługują instrukcje oraz pewne rejestry służące
sprzętowej realizacji pętli, oszczędzające bezcenne cykle zegara z limitu wynikającego z okre-
su próbkowania lub gromadzenia bloku próbek. Sprzętowa realizacja pętli eliminuje do zera
straty czasu wynikające z cyklicznego wykonywania powtarzającej się sekwencji instrukcji, na
przykład kolejnych składników splotu. Instrukcje te istnieją zwykle w dwu wersjach, w pierw-
szej jest powtarzana tylko jedna instrukcja (np. rep), a w drugiej − ich cała grupa (np. do).
DMA (Direct Memory Access). Sterownik DMA ma jednak oczywistą przewagę nad opisanym
mechanizmem przerwań, polegającą na pełnym odciążeniu jądra obliczeniowego procesora,
gdyż nie wymaga on rezerwacji rejestrów adresowych oraz nie traci cennych cykli zegara jed-
nostki centralnej na realizację przesłań. To drugie jest możliwe dzięki oddzielnej magistrali
sterownika DMA oraz specjalnej konstrukcji wewnętrznych pamięci, polegającej na ich po-
dziale na bloki o wielkości 256 lub 1024 słów, które mogą być równocześnie i bezkonfliktowo
802 EPILOG: implementacja algorytmów DSP na procesorach sygnałowych
dostępne, tak dla jednostki centralnej jak i dla opisywanego sterownika. Jest to pamięć dwu-
portowa, której zalety mogą być w pełni wykorzystane jeśli przyjmiemy:
1) wielkość bufora kołowego równą podwójnej długości przetwarzanego bloku próbek;
2) długość bloku próbek, a więc połowy bufora, równą potędze liczby dwa, tak aby granica
niezależnych bloków pamięci była granicą połówek bufora.
Przy takiej organizacji, z jednej połówki korzysta jądro obliczeniowe procesora, a w drugiej
jest równocześnie gromadzony kolejny, nowy blok próbek, dostarczanych przez kanał DMA.
Emulator to urządzenie, kiedyś duże i kosztowne, służące zastąpieniu układu scalonego proce-
sora w docelowym obwodzie elektronicznym identyczną co do kształtu i parametrów wtyczką
sondy. Emulator może zastąpić (emulować) działanie fizycznego układu, dając możliwość peł-
nej, sprzętowej kontroli działania uruchamianego sprzętu i programów. Umożliwia on zakłada-
nie pułapek sprzętowych (zatrzymywanie programu po wystąpieniu zadanej przez użytkownika
kombinacji sygnałów w układzie lub ich określonej sekwencji) oraz oferuje pamięć „śladu”,
w której jest przechowywany stan wybranych sygnałów (sterujących, szyn) na wiele cykli zega-
rowych wstecz. Jest to bardzo pomocne podczas analizy przyczyn występowania błędów
algorytmów i sprzętu.
Współczesne emulatory korzystają z wbudowanych w układ mikroprocesora („on-chip”) mo-
dułów emulatora i faktycznie są niewielkimi konwerterami jednego ze standardowych interfej-
sów komunikacyjnych (RS-232, LPT, USB, Ethernet itd.) do standardu JTAG. Najbardziej
popularne są obecnie emulatory dla portu USB 2.0, ze względu na dużą szybkość transmisji
danych (szybka aktualizacja okienek zasobów procesora w programie obsługującym emulator)
oraz rozwiązanie, przy okazji, problemu zasilania emulatora.
EPILOG: implementacja algorytmów DSP na procesorach sygnałowych 803
Uruchamiana płyta
JTAG DSP
EMULATOR
USB
Debugger to program służący do wyszukiwania i usuwania błędów nowej aplikacji DSP, czyli
jej debuggowania (odpluskwiania). Funkcję debbugera pełnią obecnie zintegrowane, okienko-
we środowiska programowo-uruchomieniowe, realizujące jednocześnie symulację i emulację.
Wykorzystują one identyczny interfejs graficzny użytkownika, co bardzo ułatwia inżynierowi
posługiwanie się nimi w procesie uruchamiania (testowania) programów. Zdarzają się jeszcze
starsze debuggerów w postaci programu wykonywanego przez uruchamiany procesor sygna-
łowy, sterowany poprzez interfejs szeregowy (np. UART, SPI). Jest to rozwiązanie z pewno-
ścią tańsze, ale raczej należące do przeszłości, gdyż oferujące ograniczone możliwości imple-
mentacji pułapek i śledzenia historii programu.
Język C/C++ − starszy brat asemblera. Pisanie programów w językach wysokiego poziomu
ma wiele zalet, w tym jedną podstawową: szybkość tworzenia nowych aplikacji. Z tego po-
wodu wybór języka C/C++ jako języka programowania procesora DSP jest ze wszech miar
godny pochwały. Jednak pamiętajmy także o wadach tego rozwiązania. Mimo upływu wielu lat
i znacznego postępu w dziedzinie poprawiania efektywności kompilatorów języków wysokiego
poziomu, dalej generowany przez nie kod maszynowy jest znacznie wolniejszy od kodu napi-
sanego w asemblerze! Ciągle więc istnieje konieczność pisania w języku maszynowym frag-
mentów programu, krytycznych dla jego wydajności. Oczywiście, w sytuacji dużego nadmiaru
mocy obliczeniowej procesora DSP można się bez tego obejść, można także starać się korzy-
stać wyłącznie z gotowych, dostarczanych przez producentów, zoptymalizowanych bibliotek
typowych funkcji DSP, ale w przypadkach tworzenia własnego, dedykowanego, specjalistycz-
nego rozwiązania sprzętowego właściwie nie jest możliwe zrezygnowanie z zalet asemblera.
804 EPILOG: implementacja algorytmów DSP na procesorach sygnałowych
Matlab, język C/C++, asembler. Bardzo ciekawą możliwością szyb kiej implementacji apli-
kacji DSP jest skorzystanie z gotowych modułów startowych (ewaluacyjnych) z procesorami
sygnałowymi, oferowanych przez firmy Analog Devices, Motorola i Texas Instruments, dla
których istnieje szybka ścieżka przejścia od kodu Matlaba do kodu C i jego kompilacja do po-
staci binarnej z wykorzystaniem kompilatora języka C wybranego procesora sygnałowego.
W przypadku prostych bądź standardowych algorytmów związanych z filtracją, analizą wid-
mową, a nawet kompresją sygnałów, efekty mogą być natychmiastowe. Metoda ta, z oczywi-
stych powodów, nadaje się wyłącznie do urządzeń i aplikacji wykonywanych w pojedynczych
lub kilku egzemplarzach, ale nawet w przypadku przygotowywania urządzenia mającego być
produkowanym masowo, może pomóc przyśpieszyć implementacje algorytmów, gdyż dostar-
cza startowego szkieletu oprogramowania, który następnie uzupełnia się ręcznie. Taka kombi-
nacja środowiska obliczeniowego Matlaba z prostymi narzędziami i modułami sprzętowymi
jest także najbardziej atrakcyjną i pożądaną platformą dydaktyczną.
Program
źródłowy
Eye-diagram
Menedżer
projektu
Pamięć
danych
Pamięć
programu
FFT-
waterfall
Rejestry Okno
procesora podglądu
Rys. 25.10. Przykład zintegrowanego środowiska uruchomieniowego Code Composer Studio dla proceso-
rów sygnałowych firmy Texas Instruments
Bardzo dobrym środowiskiem, które pozwoli nam uniknąć wielu kłopotów jest pakiet Matlab,
zawierający świetne narzędzie projektowe i symulacyjne jakim jest program o nazwie FDA-
tool. Za pomocą tego programu możemy zaprojektować filtr podając jego charakterystykę
częstotliwościową, wybierając strukturę i rząd, następnie możemy obejrzeć jego parametry
częstotliwościowe i fazowe, położenie zer i biegunów dla obliczeń w domyślnej dla Matlaba
podwójnej, zmiennoprzecinkowej precyzji. W kolejnym kroku możemy dobrać strukturę filtra
(postać I lub II, transponowana, motylkowa itd.) kontrolując stabilność, aby następnie przejść
do implementacji stałoprzecinkowej poprzez kwantyzację współczynników filtra zgodnie
z parametrami wybranej platformy sprzętowej. Poprawność działania uzyskanej struktury mo-
żemy sprawdzić w kolejnym kroku, czyli podczas implementacji filtra w formie schematu
blokowego programu Simulink i symulacji jego działania. To bardzo cenne narzędzie, ponie-
waż możemy na wejście filtra podłączyć wybrane źródło sygnału (np. generator białego szumu,
jeśli chcemy otrzymać obraz charakterystyki częstotliwościowej), a sygnał wyjściowy możemy
obejrzeć w postaci czasowej lub częstotliwościowej. Co więcej, możemy obejrzeć sygnały
w węzłach pośrednich filtra, co pozwala na lokalizowanie przyczyn jego ewentualnego złego
funkcjonowania. Łatwo się tutaj przekonać, jak różne wyniki (np. powstawanie przepełnień
zakresu liczbowego reprezentacji stałoprzecinkowej) dają różne struktury filtrów i wybrać
optymalną dla naszej aplikacji. Projektowanie filtrów IIR o skrajnych częstotliwościach odcię-
cia (np. filtra górnoprzepustowego o bardzo niskiej częstotliwości granicznej) prowadzi do
biegunów położonych bardzo blisko koła jednostkowego, a więc blisko granicy stabilności.
Wystarczy niewielka zmiana wartości współczynników w wyniku kwantyzacji i przejścia do
reprezentacji stałoprzecinkowej, aby taki filtr przestał być stabilny. Filtr może działać nie-
stabilnie nie tylko w wyniku przekroczenia granicy wnętrza koła jednostkowego przez biegun
jego transmitancji, ale również z powodu zaokrągleń liczb powstających w wyniku obliczeń.
Opisane powyżej składniki pakietu Matlab pozwalają na znalezienie stabilnej, działającej wer-
sji wybranego filtra. FDAtool nie jest programem uniwersalnym, obejmującym wszystkie moż-
liwe struktury i parametry filtrów cyfrowych, ale ten jego brak możemy uzupełnić sami dopisu-
jąc odpowiednie procedury nowych filtrów oraz własnoręcznie wykonując ich implementację
w programie Simulink (biorąc za wzór kod Matlaba, którego wygenerowania możemy zażądać
od Simulinka dla standardowych struktur filtrów).
EPILOG: implementacja algorytmów DSP na procesorach sygnałowych 807
Przyciski kolejnych
etapów projektowania
Rys. 25.11. Okno programu FDAtool − narzędzia środowiska Matlab do projektowania filtrów cyfrowych
Rys. 25.12. Przykład testowania zaprojektowanego filtra cyfrowego za pomocą programu Simulink
plików, zapisanych w pamięci nieulotnej (wewnętrzna pamięć FLASH lub karty MMC SD), co
odpowiada funkcji tzw. pen-drive’ów. Najnowsze generacje tych urządzeń zawierają również
tuner radiowy FM i umożliwiają nagrywanie programów radiowych.
W przedstawionym układzie poszczególne elementy spełniają następujące funkcje:
• procesor DSP wykonuje kompresję/dekompresję oraz korekcję częstotliwościową (equa-
lizer) sygnału audio, np. regulację basów; odpowiada także za zadania systemowe takie jak ob-
sługa komunikacji z użytkownikiem oraz zapis/odczyt/zarządzanie plikami z nagraniami;
• pamięć służy do przechowywania programu i jego parametrów,
• urządzenia peryferyjne pozwalają użytkownikowi sterować układami wejścia/wyjścia oraz
wyświetlaczem,
• kodeki sygnału audio i mowy (przetworniki A/C i C/A) służą pobieraniu z urządzeń wej-
ściowych sygnałów analogowych i ich konwersji na postać dyskretną (podczas nagrywania)
oraz odwrotnie, z postaci dyskretnej na analogową (podczas odtwarzania);
• konwertery napięcia przekształcają napięcie baterii do postaci wymaganej do zasilania wszy-
stkich bloków funkcjonalnych układu.
Centralną rolę układu odtwarzacza/rejestratora MP3 może pełnić 16-bitowy, stałoprzecinkowy
procesor sygnałowy z odpowiednimi peryferiami, na przykład TMS320VC55xx firmy Texas
Instruments lub BlackFin firmy Analog Devices. Procesory te mają wbudowany interfejs USB,
a ich wysoka energooszczędność pozwala na zasilanie z pojedynczej baterii R6 (popularne
„paluszki” AA lub AAA). Takie rozwiązanie wymaga jednak użycia aż czterech wysoko
sprawnych układów: 1) konwertera DC/DC „w dół” do zasilania jądra procesora sygnałowego,
2) stabilizatora linowego w zasilaniu kodeka audio (para przetworników A/C i para C/A) w ce-
lu uniknięcia szumów przetwarzania, 3) konwertera DC/DC „w górę” do zasilania wyświe-
tlacza LCD i diod LED, 4) jeszcze jednego konwertera DC/DC „w górę” zasilającego wejścia
i wyjścia procesora sygnałowego i wszystkie układy otoczenia napięciem 3,3V.
Przykładowo, bloki funkcjonalne urządzenia, zaznaczone na rysunku 25.13 ciemniejszym ko-
lorem, mogą być zrealizowane z wykorzystaniem układów produkowanych przez firmę Texas
Instruments − na stronie WWW znajdują się odnośniki do odpowiednich tabel. Pozostałych
elementów trzeba szukać u innych producentów.
Rys. 25.13. Schemat blokowy przykładowej aplikacji DSP – rejestrator/odtwarzacz formatu MP3
(zaczerpnięte ze strony WWW firmy Texas Instruments: http://dspvillage.ti.com/dsp/docs/)
przed nadejściem kolejnego zbocza zegarowego. Jak widać na schemacie z rysunku 25.14
wszystkie mnożenia składające się na czteroskładnikowy splot wraz z ich sumą są wyliczane
naraz, czyli w tym samym cyklu zegara. Ponieważ mnożenie i sumowanie są implementowane
jako skomplikowane, bitowe działania logicznie, droga przejścia reprezentacji bitowej danych
przez wiele bramek jest długa, a to implikuje długi cykl zegara jaki możemy zastosować. Z ko-
lei długi cykl zegara to mała wydajność, dlatego lepiej jest rozbić te operacje na dwa kolejne,
krótsze cykle, za pomocą rozdzielających je rejestrów pomocniczych, tak jak to pokazano na
rysunku 25.14. Różnicę w szybkości pomiędzy układem FPGA a procesorem DSP widać od
razu, gdyż w FPGA w rozpatrywanym przypadku pełny splot jest wyliczany w jednym cyklu
zegara, natomiast procesor sygnałowy potrzebuje na to co najmniej czterech cykli. Układów
mnożących we współczesnych strukturach FPGA nie musimy sami budować z pojedynczych
810 EPILOG: implementacja algorytmów DSP na procesorach sygnałowych
bramek, ponieważ są już one wbudowane w układy dedykowane do zastosowań DSP, szybkie
i gotowe do użycia. Ich liczba jest obecnie liczona w setkach, a całkowita wydajność takich
układów FPGA sięga setek miliardów mnożeń z akumulacją na sekundę. Bloki mnożące i su-
mujące można również łączyć w celu dopasowania precyzji bitowej przetwarzanych danych
(przykładowo, układy Stratix® II pozwalają na obliczenia z precyzją 9, 18 lub 36 bitów). Wy-
brane aplikacje DSP, takie jak np. programowe radio (software radio), mają ogromne wymaga-
nia obliczeniowe, które mogą być zaspokojone tylko przez układy FPGA lub ASIC.
Kończąc, powiedzmy kilka słów na temat wad i zalet układów FPGA w stosunku do proce-
sorów DSP. Przygotowanie i wdrożenie aplikacji DSP w układach FPGA jest trudnym i skom-
plikowanym zadaniem i jest to ich podstawową wadą. Co prawda, producenci tych układów,
świadomi jak jest to krytyczne dla popularności rynkowej, od wielu lat intensywnie rozwijają
odpowiednie narzędzia, jednak nadal wdrażanie nowych algorytmów w układach FPGA jest
zadaniem o wiele trudniejszym niż programowanie procesorów DSP. Testy poprawności lo-
gicznej i analizy czasowej zajmują dużo, bo blisko 80% czasu projektanta. Samo testowanie
z uwagi na szybko rosnącą złożoność układów nie pozwala na pełne testy w krótkim czasie
i wymaga trudnych kompromisów oraz specjalnych metod.
Na układ FPGA decydujemy się zazwyczaj kiedy mamy sprawdzony algorytm, który raczej nie
będzie modyfikowany, kiedy aplikacja wymaga ekstremalnej wydajności lub kiedy dysponuje-
my zestawem gotowych aplikacji FPGA algorytmów (IPcore).
Szybkie i w miarę bezpieczne jest obecnie projektowanie opierające się na sprawdzonych bi-
bliotekach funkcji i algorytmów DSP dostarczanych przez producentów narzędzi i wiele ma-
łych firm projektowych. Mając nowy algorytm przygotowany i sprawdzony na przykład pakie-
tem Matlab, możemy pokusić się o jego implementację w układzie FPGA, natomiast ekspery-
menty, modyfikacje i testowanie samego algorytmu w czasie rzeczywistym jest zadaniem ucią-
żliwym i ryzykownym.
Przeprowadzane dotychczas porównania wydajnych procesorów DSP (np. rodziny C6000 fir-
my Texas Instruments) z układami FPGA, wykazały przewagę tych pierwszych w skompliko-
wanych algorytmach, z dużą liczbą pętli i rozgałęzień oraz różnorodnymi operacjami arytme-
tyczno-logicznymi. Układy FPGA wykazują natomiast miażdżącą przewagę w wydajności dla
zadań polegających na „prostym” przetwarzaniu (typu filtracja lub transformacja: DFT (FFT),
DCT, falkowa) dużych strumieni sygnałów 1D, 2D i 3D.
Wydajność
Rys. 25.15. Obszary zastosowań procesorów sygnałowych najbardziej wpływające na ich rozwój − obecnie
i w przyszłości
812 EPILOG: implementacja algorytmów DSP na procesorach sygnałowych
No cóż, drogi Czytelniku. Czy jesteśmy „trendy”? Jedno jest pewne, wielu producentów sprzę-
tu i oprogramowania DSP czeka tylko na to, abyśmy mieli jakieś potrzeby związane z przetwa-
rzaniem sygnałów cyfrowych i udali się do najbliższego sprzedawcy akcesoriów DSP. Może
pójdziemy razem?
Literatura
Acke99 Ackenhusen J.G.: Real-Time Signal Processing: Design and Implementation of Signal Pro-
cessing Systems. Upper Saddle River, PTR Prentice Hall 1999.
Agai95 Agaian S.S., Astola J., Egiazarian K.: Binary Polynomial Transforms and Nonlinear Digital Fil-
ters. New York, Marcel Dekker 1995.
Akan92 Akansu A.N., Haddad R.A.: Multiresolution Signal Decomposition: Transforms, Subbands and
Wavelets. San Diego, Academic Press 2000.
Amba95 Ambardar A.: Analog and Digital Signal Processing. Boston, PWS Publishing 1995.
Amba98 Ambardar A., Borghesani C.: Mastering DSP Concepts Using Matlab, Upper Saddle River,
Prentice Hall 1998.
Ande84 Anderson B.D.O., Moore J.B.: Filtracja optymalna. Warszawa, WNT 1984.
Anto93 Antoniou A.: Digital Filters. Analysis, Design, Applications. New York, McGraw-Hill 1993.
Arslan Arslan G., Ding M., Lu B., Milosevic M., Shen Z., Evans B.L.: Matlab DMTTEQ Toolbox.
www.ece.utexas.edu/~bevans/ projects/adsl/dmtteq/dmtteq.html
Arsl01 Arslan G., Evans B.L, Kiaei S.: Equalization For Discrete Multitone Transceivers To Maximize
Bit Rate. IEEE Transactions on Signal Processing, vol. 49, no. 12, 3123-3135, Dec. 2001.
Bagc99 Bagchi S., Mitra S.K.: The Nonuniform Discrete Fourier Transform and Its Applications in Sig-
nal Processing. Boston, Kluwer 1999.
Barn96 Barnwell T.P., Nayebi K., Richardson C.H.: Speech Coding: A Computer Laboratory Textbook.
New York, Wiley 1996.
Bayo91 Bayoumi M. (red.): Parallel Algorithms and Architectures for DSP Applications. Boston, Kluwer
Academic Publisher 1991.
Beau78 Beauchamp K.: Przetwarzanie sygnałów metodami analogowymi i cyfrowymi. Warszawa, PWN
1978.
Bell89 Bellanger M.: Digital Processing of Signals. Theory and Practice. Chichester, Wiley 1989.
Bend76 Bendat J., Piersol A.: Metody analizy i pomiaru sygnałów losowych. Warszawa, PWN 1976.
Bend93 Bendat J., Piersol A.: Engineering Applications of Correlation and Spectral Analysis. New York,
John Wiley & Sons 1993.
Bert91 Bertrand J., Bertrand P.: Affine Time-Frequency Distributions. W „Time-Frequency Signal Ana-
lysis − Methods and Applications”, B. Boashash (red.), Melbourne, Longman Cheshire, 1991.
Bhas97 Bhaskaran V., Konstantinides K.: Image and Video Compression Standards. Algorithms and
Architectures. Boston, Kluwer Academic Publishers 1997.
Biał00 Białasiewicz J.T.: Falki i aproksymacje. Warszawa, WNT 2000.
814 Literatura
Bień05 Bień A., Duda K., Szyper M., Wetula A., Zieliński T.P., Rozkrut A.: The new measure of low-
-frequency disturbances in power system. Metrology and Measurement Systems, vol. XII, no. 2,
121-130, 2005.
Bier03 Biernacki R., Butkiewicz B., Szabatin J. (red.), Świdzińska B.: Zbiór zadań z teorii sygnałów
i teorii informacji. Warszawa, Oficyna Wydawnicza Politechniki Warszawskiej 2003.
Bili92 Bilinskis I., Mikelsons A.: Randomized Signal Processing. New York, Prentice Hall 1992.
Bjor87 Bjorck A., Dahlquist G.: Metody numeryczne. Warszawa, PWN 1987.
Bing99 Bingham J.A.C.: ADSL, VDSL, and Multicarrier Modulation. New York, John Wiley&Sons
1999.
Blah85 Blahut R.E.: Fast Algorithms for Digital Signal Processing. Reading, Addison-Wesley 1985.
Blah92 Blahut R.E.: Algebraic Methods for Signal Processing and Communications Coding. Berlin,
Springer 1992.
Boas94 Boashash B., O’Shea P.: Polynomial Wigner-Ville Distributions and Their Relationship to Time-
-Varying Higher Order Spectra. IEEE Trans. Signal Processing. vol. 42, no. 1, 216-220, 1994.
Boas03 Boashash B. (red.): Time-Frequency Signal Analysis and Processing. A Comprehensive Refe-
rence. Oxford, Elsevier 2003.
Bogu99 Bogucka H., Dziech A., Sawicki J.: Elementy cyfrowego przetwarzania sygnałów z przykładami
zastosowań i wykorzystaniem środowiska Matlab. Kraków, Wydawnictwo Fundacji Postępu Te-
lekomunikacji 1999.
Boro87 Borodziewicz W., Jaszczak K.: Cyfrowe przetwarzanie sygnałów. Warszawa, WNT 1987.
Box83 Box G.E.P., Jenkins G.M.: Analiza szeregów czasowych: prognozowanie i sterowanie. Warsza-
wa, PWN 1983.
Bozi94 Bozic S.M.: Digital and Kalman Filtering: An Introduction to Discrete-Time Filtering and Opti-
mum Linear Estimation. London, Edward Arnold 1994.
Brac65 Bracewell R.N.: The Fourier Transform and Its Applications. New York, McGraw-Hill 1965.
Brac68 Bracewell R.: Przekształcenie Fouriera i jego zastosowania. Warszawa, WNT 1968.
Bran97 Brandt S.: Analiza danych: metody statystyczne i obliczeniowe. Warszawa, PWN 1998.
Bruc01 Bruce E.N.: Biomedical Signal Processing and Signal Modeling. New York, Wiley 2001.
Buła02 Bułat J., Duda K., Rumian R., Stępień J., Turcza P., Zieliński T.: Bezstratna kompresja sygnałów
biomedycznych. Pomiary, Automatyka, Kontrola, nr 5/6, 37-40, 2002.
Buła03 Bułat J., Turcza P., Zieliński T.P.: Performance Evaluation of xDSL Channel Equalizer for Sin-
gle and Multitone Interference. Proc. European Conference on Circuits Theory and Design, vol.
II, 349-352, Kraków 2003.
Buła04 Bułat J., Twardowski T., Zieliński T.: Some New Results from TEQ Design for Maximum Bit
Rate ADSL Modem. IEEE Int. Conf. on Communications ICC’04, vo1. 1, 21-25, Paris 2004.
Burd84 Burdic W.S.: Underwater Acoustic Signal Analysis. Prentice Hall 1984.
Burr85 Burrus C.S., Parks T.W.: DFT/FFT and Convolution Algorithms. Theory and Implementation.
New York, Wiley 1985.
Burr94 Burrus C.S., McCellan J.H., Oppenheim A.V., Parks T.W., Schafer R.W., Schuessler H.W.:
Computer-Based Exercises for Signal Processing Using MATLAB. Englewood Cliffs, Prentice
Hall 1994.
Burr98 Burrus C.S., Gopinath R.A., Guo H.: Introduction to Wavelets and Wavelet Transforms. A Pri-
mer. Upper Saddle River, Prentice Hall 1998.
Cand86 Candy J.V.: Signal Processing: The Model-Based Approach. New York, Mc-Graw Hill 1986.
Cand88 Candy J.V.: Signal Processing. The Modern Approach. New York, McGraw-Hill 1988.
Carp94 Carpentier E., Vincent I., Auger F., Doncarli C.: Classification of non-stationary sinusoidal sig-
nals. European Signal Processing Conference EUSIPCO-94, 1429−1432, Edinburgh 1994.
Cart00 Cartinhour J.: Digital Signal Processing: An Overview of Basic Principles. Upper Saddle River,
Prentice Hall 2000.
Chas92 Chassaing R.: Digital Signal Processing with C and the TMS320C30. New York, Wiley 1992.
Chen01 Chen C.-T.: Digital Signal Processing: Spectral Computation and Filter Design. New York,
Oxford University Press 2001.
Chen77 Chen W.H, Smith C.H., Fralick S.: A fast computational algorithm for the discrete cosine
transform. IEEE Trans. on Communications, vol. 25, 1004-1009, September 1977.
Chen95 Chen W.-K. (red.): The Circuits and Filters Handbook. Boca Raton, CRC Press 1995.
Literatura 815
Chug98 Chugani M.L., Samant A.R., Cerna M.: LabVIEW Signal Processing. Upper Saddle River, Pren-
tice Hall 1998.
Chui92 Chui C.K.: An Introduction to Wavelets. Boston, Academic Press 1992.
Cięc05 Cięciwa S., Deliyski D., Zieliński T.P.: Fast FFT-based motion compensation for laryngeal
high-speed videoendoscopy. 4-th International Workshop on Models and Analysis of Vocal Emi-
ssions for Medical Applications, Florence 2005.
Clar95 Clarke R.J.: Digital Compression of Still Images and Video. London, Academic Press 1995.
Clay98 Claypoole R. L., Baraniuk R. G., Nowak R.D.: Adaptive wavelet transforms via lifting. IEEE Int.
Conference on Acoustics, Speech and Signal Processing, 1513-1516, 1998.
Clay03 Claypoole R. L., Davis G. M., Sweldens W., Baraniuk R. G.: Nonlinear wavelet transforms for
image coding via lifting. IEEE Trans. on Image Processing, vol. 12, no. 12, 1449-1459, 2003.
Cohe95 Cohen L.: Time-Frequency Analysis. Englewood Cliffs, Prentice Hall 1995.
Cohe98 Cohen L., Loughlin P. (red.): Recent Developments in Time-Frequency Analysis. Boston, Kluwer
1998.
Cowa85 Cowan C.F.N., Grant P.M.: Adaptive Filters. Englewood Cliffs, Prentice Hall 1985.
Croc83 Crochiere R.E., Rabinear L.R.: Multirate Digital Signal Processing. Englewood Cliffs, Prentice
Hall 1983.
Czyż98 Czyżewski A.: Dźwięk cyfrowy: Wybrane zagadnienia teoretyczne, technologia, zastosowania.
Warszawa, Akademicka Oficyna Wydawnicza EXIT 1998.
Daub92 Daubechies I.: Ten Lectures on Wavelets. Philadelphia, SIAM 1992.
Daub98 Daubechies I., Sweldens W.: Factoring wavelet transforms into lifting steps. J. Fourier Anal.
Appl., vol. 4, no. 3, 245-267, 1998.
Dąbr00 Dąbrowski A. (red.): Przetwarzanie sygnałów przy użyciu procesorów sygnałowych. Poznań,
Wydawnictwa Politechniki Poznańskiej 1997.
Deli89 Deliyski D., Zieliński T.P.: Objective diagnosis of laryngeal pathology using the Wigner-Ville
distribution. XII GRETSI Symp. on Signal and Image Processing, 973−976, Juan Les Pins 1989.
Deli05 Deliyski D.: Endoscope motion compensation for laryngeal high-speed videoendoscopy. Journal
of Voice, vol. 19, no. 3, 485-496, 2005.
Dell93 Deller J., Proakis J.G., Hansen J.H.L.: Discrete-Time Processing of Speech Signals. New York,
Macmillan 1993.
Doma00 Domański M.: Zaawansowane techniki kompresji obrazów i sekwencji wizyjnych. Poznań, Wy-
dawnictwa Politechniki Poznańskiej 2000.
Dore90 Dorenzo S.E.: Interfacing: A Laboratory Approach Using the Microcomputer for Instrumen-
tation, Data Analysis and Control. Englewood Cliffs, Prentice Hall 1990.
Dote90 Dote Y.: Servo Motor and Motion Control Using Digital Signal Processors. Englewood Cliffs,
Prentice Hall 1990.
Duda01 Duda K., Turcza P., Zieliński T.P.: Lossless ECG compression with lifting wavelet transform.
IEEE Instrumentation and Measurement Technology Conference, 640−644, Budapest 2001.
Duda02 Duda K.: Bezstratna kompresja sygnału EKG za pomocą całkowitoliczbowych transformacji
falkowych. Rozprawa doktorska, Kraków, AGH 2002.
Duda04 Duda K., Bien A., Szyper M., Zielinski T.P.: Analysis of Voltage disturbances caused by simul-
taneous amplitude and phase modulation in electric power network. The 2004 IEEE Int. Confe-
rence on Harmonics and Quality of Power ICHQP-2004, Lake Placid, New York 2004 (CD-
-ROM, paper #hqp048).
Dzie93 Dziech A.: Random Pulse Streams and their Applications. Amsterdam, Elsevier 1993.
Elli82 Elliott D.F., Rao K.R.: Fast Transforms. Algorithms, Analyses, Applications. Academic Press
1982.
Elli87 Elliott D.F. (red.): Handbook of Digital Signal Processing. Engineering Applications. San Diego,
Academic Press 1987.
Elli01 Elliott S.J.: Signal Processing for Active Control. San Diego, Academic Press 2001.
ElSh90 El-Sharkawy M.: Real Time Digital Signal Processing Applications with Motorola’s DSP56000
Family. Englewood Cliffs, Prentice Hall 1990.
ElSh96 El-Sharkawy M.: Digital Signal Processing Applications with Motorola’s DSP56002 Processor.
Upper Saddle River, Prentice Hall PTR 1996.
816 Literatura
Embr91 Embree P.M.: C Language Algorithms for Digital Signal Processing. Upper Saddle River, Pren-
tice Hall 1991.
Embr95 Embree P.M.: C Algorithms for Real-Time DSP. Upper Saddle River, Prentice Hall 1995.
Fern96 Fernández G., Periaswamy S., Sweldens W.: Liftpack: A software Package for Wavelet Trans-
forms using Lifting. Proc. SPIE, vol. 2825, 396-408, 1996 (http://cm.bell-labs.com/who/wim/
papers/papers.html).
Fili95 Filipkowski A.: Układy elektroniczne analogowe i cyfrowe. Warszawa, WNT 1995.
Flie94 Fliege N.J.: Multirate Digital Signal Processing. Multirate Systems, Filter Banks, Wavelets.
Chichester, Wiley 1994.
Fran75 Franks L.E.: Teoria sygnałów. Warszawa, PWN 1975.
Frąc05 Frączek R., Zieliński T.P.: New algorithm for Kikuchi lines detection in electron microscopy
images. European Signal Processing Conference EUSIPCO, Antalya 2005.
Furu01 Furui S.: Digital Speech Processing, Synthesis, and Recognition. New York, M. Dekker 2001.
Gajd98 Gajda J., Szyper M.: Modelowanie i badania symulacyjne systemów pomiarowych. Kraków,
Wydział EAIiE-AGH 1998.
Gajd00 Gajda J., Sroka R.: Pomiary kąta fazowego. Kraków, Wydział EAIiE-AGH 2000.
Gajd02 Gajda J.: Statystyczna analiza danych pomiarowych, Kraków , Wydział EAIiE-AGH 2002.
Garg98 Garg H.K.: Digital Signal Processing Algorithms: Number Theory, Convolution, Fast Fourier
Transforms, and Applications. Boca Raton, CRC Press 1998.
Glen99 Glentis G.-O., Berberidis K., Theodoridis S.: Efficient least squares adaptive algorithms for FIR
transversal filtering. IEEE Signal Processing Magazine, vol. 16, no. 4, 12−41, July 1999.
Gold00 Gold B., Morgan N.: Speech and Audio Signal Processing. New York, Wiley 2000.
Gonz04 Gonzales R.C., Woods R.E., Eddins S.L.: Digital Image Processing Using Matlab. Upper Saddle
River, Pearson Prentice Hall 2004.
Grov99 Grover D., Deller J.R.: Digital Signal Processing and the Microcontroller. Upper Saddle River,
Prentice Hall PTR 1999.
Guzi93 Guziński A.: Liniowe elektroniczne układy analogowe. Warszawa, WNT 1993.
Hang95 Hang H.-M., Woods J.W.: Handbook of Visual Communications. San Diego, Academic Press
1995.
Hanz01 Hanzo L., Somerville F.C.A., Woodard J.P.: Voice Compression and Communications. Prin-
ciples and Applications for Fixed and Wireless Channels. New York, Wiley Interscience 2001.
Harr78 Harris F.J.: On the use of windows for harmonic analysis with the discrete Fourier transform.
Proc. IEEE, vol. 66, no. 1, 51−83, January 1978.
Harr87 Harris F.J.: Multirate filters for interpolating and desampling. [W] „Handbook of Digital Signal
Processing”, ed. F.D. Elliott, 173−287, San Diego, Academic Press 1987.
Hask97 Haskell B.G., Puri A., Netravali A.N.: Digital Video: An Introduction to MPEG-2. New York,
Chapman & Hall 1997.
Haye96 Hayes M.H.: Statistical Digital Signal Processing and Modeling. New York, Wiley 1996.
Hayk90 Haykin S.: Modern Filters. New York, Macmillan 1990.
Hayk96 Haykin S.: Adaptive Filter Theory. Upper Saddle River, Prentice Hall 1996.
Hayk98 Haykin S.: Systemy telekomunikacyjne. Warszawa, WKŁ 1998.
Hobs81 Hobson G.S.: Przyrządy z przenoszeniem ładunku. Warszawa, WNT 1981.
Host87 Hostetter G.H.: Recursive estimation. [W] „Handbook of Digital Signal Processing”, ed. F.D.
Elliott, 899−940, San Diego, Academic Press 1987.
IEEE79 Programs for Digital Signal Processing. New York, IEEE Press 1979.
Ifea93 Ifeachor E.C., Jervis B.W.: Digital Signal Processing. A Practical Approach. Wokingham,
Addison-Wesley 1993.
ISO91 ISO/IEC-11172: Coding of Moving Pictures and Associated Audio for Digital Storage Media at
up to about 1.5 Mbit/s. MPEG-1 International Standard, 1991.
ISO95 ISO/IEC-13818: Information technology - Generic Coding of Moving Pictures and Associated
Audio Informations. MPEG-2 International Standard, 1995.
ISO98 ISO/IEC-14496: Information technology - Very Low Bitrate Audio-Visual Coding. MPEG-4
International Standard, 1998.
ISO02 ISO/IEC-15938: Multimedia Content Description Interface. MPEG-7 International Standard,
2002.
Literatura 817
ITU99 ITU−T Recommendation G.992.1: Transmissions Systems and Media, Digital Systems and Net-
works – Asymmetric Digital Subscriber Line (ADSL) Transceivers, June 1999.
Izyd99 Izydorczyk J., Płonka G., Tymma G.: Teoria sygnałów. Wstęp. Gliwice, Helion 1999.
Jack96 Jackson L.B.: Digital Filters and Signal Processing with Matlab Exercises. Boston, Kluwer
Academic Publishers 1996.
Jain89 Jain A.K.: Fundamentals of Digital Image Processing. Englewood Cliffs, Prentice Hall 1989.
Jaya84 Jayant N.S., Noll P.: Digital Coding of Waveforms. Englewood Cliffs, Prentice Hall 1984.
Jora98 Jorasz U.: Wykłady z psychoakustyki. Poznań, Wydawnictwa Naukowe Uniwersytetu AM 1998.
Kahr98 Kahrs M., Bandenburg K. (red.): Applications of Digital Signal Processing to Audio and Acou-
stics. Boston, Kluwer 1998.
Kalo93 Kalouptsidis N., Theodoridis S.: Adaptive System Identification and Signal Processing Algo-
rithms. New York, Prentice Hall 1993.
Kalo97 Kalouptsidis N.: Signal Processing Systems: Theory and Design. New York, Wiley 1997.
Kama89 Kamas A., Lee E.A.: Digital Signal Processing Experiments. Eng. Cliffs, Prentice Hall 1989.
Kame87 Kamen E.: Introduction to Signal and Systems. New York, Macmillan Publishing 1987.
Kay88 Kay S.M.: Modern Spectral Estimation: Theory and Application. Englewood Cliffs, Prentice
Hall 1988.
Kay93 Kay S.M.: Fundamentals of Statistical Signal Processing: Estimation Theory. Englewood Cliffs,
PTR Prentice Hall 1993.
Kisz03 Kiszka P.: Modulacje cyfrowe: przykłady i zastosowania. Praca magisterska, Akademia Górni-
czo-Hutnicza, Kraków 2003.
Kond94 Kondoz A.M.: Digital speech: Coding for Low Bit Rate Communication Systems. Chichester,
Wiley 1994.
Kono99 Konopacki J., Izydorczyk (red.): Teoria sygnałów i cyfrowe przetwarzanie sygnałów: labora-
torium. Gliwice, Wydawnictwa Politechniki Śląskiej 1999.
Kuc88 Kuc R.: Introduction to Digital Signal Processing. McGraw-Hill 1988.
Kudr76 Kudrewicz J.: Analiza funkcjonalna dla automatyków i elektroników. Warszawa, PWN 1976.
Kudr93 Kudrewicz J.: Fraktale i chaos. Warszawa, WNT 1993.
Kuhn83 Kuhn M.H., Tomaszewski H.H.: Improvements in Isolated Word Recognition, IEEE Trans.
Acoust., Speech, Signal Processing, vol. 31, no. 1, 157-167, Feb. 1983.
Kule84 Kulesza W.: Systemy widmowej analizy danych cyfrowych. Warszawa, WKŁ 1984.
Kuo96 Kuo S.M., Morgan D.R.: Active Noise Control Systems: Algorithms and DSP Implementations.
New York, Wiley 1996.
Kuo01 Kuo S.M., Lee B.H.: Real-Time Digital Signal Processing. Implementations, Applications, and
Experiments with the TMS320C55X. Chichester, Wiley 2001.
Lim90 Lim J.S.: Two-Dimensional Signal and Image Processing. Prentice Hall 1990.
Lu92 Lu W.-S., Antoniou A.: Two-Dimensional Digital Filters. New York, Marcel Dekker 1992.
Lynn94 Lynn P.A.: Introductory Digital Signal Processing with Computer Applications. Chichester,
Wiley 1994.
Lyon99 Lyons R.G.: Wprowadzenie do cyfrowego przetwarzania sygnałów. Warszawa, WKŁ 1999.
Łopa94 Łopacz H., Zieliński T.P.: Analiza czasowo-częstotliwościowa odpowiedzi impulsowych pomiesz-
czeń z wykorzystaniem STFT oraz transformaty wavelet. Ogólnopolskie Seminarium Akustyki
OSA-94, 259−262, Wrocław 1994.
Madi98 Madisetti V.K., Williams D.B.: The Digital Signal Processing Handbook. Boca Raton, CRC
Press − IEEE Press 1998.
Maje89 Majewska H., Nagłowski P.: Filtry z akustyczną falą powierzchniową. Audio-hifi-Video, nr 4,
23−28, 1989.
Mall98 Mallat S.: A Wavelet Tour of Signal Processing. San Diego, Academic Press 1998.
Malv91 Malvar H. S.: Signal Processing with Lapped Transforms. London, Artech House 1991.
Mano00 Manolakis D.G., Ingle V.K., Kogon S.M.: Statistical and Adaptive Signal Processing: Spectral
Estimation, Signal Modeling, Adaptive Filtering and Array Processing. Boston, McGraw-Hill
2000.
Marp87 Marple S.L.: Digital Spectral Analysis with Applications. Englewood Cliffs, Prentice Hall 1987.
Marp95 Marple S.L.: Digital Spectral Analysis with Applications in C Fortran and MATLAB. Prentice
Hall 1995.
818 Literatura
Marv99 Marven C., Ewers G.: Zarys cyfrowego przetwarzania sygnałów. Warszawa, WKŁ 1999.
Mast94 Masters T.: Signal and Image Processing with Neural Networks: A C++ Sourcebook. New York,
Wiley 1994.
Mend86 Mendel J.M.: Lessons in Digital Estimation Theory. Englewood Cliffs, Prentice Hall, 1986.
Mert99 Mertins A.: Signal Analysis: Wavelets, Filter Banks, Time-Frequency Transforms and Appli-
cations. Chichester, Wiley 1999.
Mine92 Miner G.F., Comer D.J.: Physical Data Acquisition for Digital Processing. Englewood Cliffs,
Prentice Hall 1992.
Mitc96 Mitchell J.L.: MPEG Video Compression Standard. New York, Chapman & Hall 1996.
Mitr93 Mitra S.K., Kaiser J.F. (red.): Handbook for Digital Signal Processing. New York, Wiley 1993.
Mitr98 Mitra S. K.: Digital Signal Processing. A Computer-Based Approach. New York, McGraw-Hill
1998.
Mitr99 Mitra S.K.: Digital Signal Processing Laboratory Using Matlab. Boston, McGraw-Hill 1999.
Moor99 Moore B.: Wprowdzenie do psychologii słyszenia. Warszawa, PWN, 1999.
Neko99 Nekoogar F., Moriarty G.: Digital Control Using Digital Signal Processing. Upper Saddle River,
Prentice Hall 1999.
Niki93 Nikias C.L., Petropulu A.P.: Higher-Order Spectra Analysis: A Nonlinear Signal Processing
Framework. Englewood Cliffs, Prentice Hall 1993.
O’Fl87 O’Flynn M., Moriarty E.: Linear Systems. Time Domain and Transform Analysis. New York,
Wiley 1987.
Oppe79 Oppenheim A.V., Schafer R.: Cyfrowe przetwarzanie sygnałów. Warszawa, WKŁ 1979
Oppe82 Oppenheim A.V.: Sygnały cyfrowe: przetwarzanie i zastosowania. Warszawa, WNT 1982.
Oppe89 Oppenheim A.V., Schafer R.W.: Discrete-Time Signal Processing. Englewood Cliffs, Prentice
Hall 1989.
Oppe97 Oppenheim A.V., Willsky A.S., Nawab S.H.: Signals & Systems. Upper Saddle River, Prentice
Hall 1997.
Orfa88 Orfanidis S.J.: Optimum Signal Processing. An Introduction. New York, Macmillan 1988.
Orfa96 Orfanidis S.J.: Introduction to Signal Processing. Englewood Cliffs, Prentice Hall 1996.
Osio65 Osiowski J.: Zarys rachunku operatorowego. Warszawa, WNT 1965.
Otne78 Otnes R.K., Enochson L.: Analiza numeryczna szeregów czasowych. Warszawa, WNT 1978.
Ozim85 Ozimek E.: Podstawy teoretyczne analizy widmowej sygnałów. Warszawa-Poznań, PWN 1985.
Ozim02 Ozimek E.: Dźwięk i jego percepcja. Warszawa-Poznań, PWN 2002.
Qian96 Qian D.S., Chen D.: Joint Time-Frequency Analysis. Upper Saddle River, Prentice Hall 1996.
Panu01 Panuszka R.: Acoustic Waves, Kraków, Wydawnictwo PTA 2001.
Papa87 Papamichalis P.E.: Practical Approaches to Speech Coding. Eng. Cliffs, Prentice Hall 1987.
Papi95 Papir Z.: Analiza częstotliwościowa sygnałów. Zbiór zadań. Kraków, Wydawnictwa AGH 1995.
Papo77 Papoulis A.: Signal Analysis. New York, Mc-Graw Hill 1977.
Papo84 Papoulis A.: Probability, Random Variables, and Stochastic Processes. New York, McGraw-Hill
1984.
Papo88 Papoulis A.: Obwody i układy. Warszawa, WKŁ 1988.
Parh99 Parhi K.K.: VLSI Digital Signal Processing Systems: Design and Implementation. New York,
Wiley 1999.
Parh99 Parhi K.K., Nishitani T. (red.): Digital Signal Processing for Multimedia Systems. New York,
Marcel Dekker 1999.
Park87 Parks T.W., Burrus C.S.: Digital Filter Design. New York, Wiley 1987.
Pask99 Pasko M., Walczak J.: Teoria sygnałów. Gliwice, Wydawnictwa Politechniki Śląskiej 1999.
Pele95 Peleg S., Friedlander B.: Polynomial Phase Transform, IEEE Trans. on Signal Processing, vol.
43, no. 8, 1901−1914, 1995.
Peti03 Petitcolas F. A. P.: MPEG psychoacoustic model I for MATLAB, www.cl.cam.ac.uk/~fapp2/
software/mpeg/, 2003.
Pirs98 Pirsch P.: Architectures for Digital Signal Processing. Chichester, Wiley 1998.
Pita90 Pitas I.: Nonlinear Digital Filters. Boston, Kluwer 1990.
Pita93 Pitas I.: Digital Image Processing Algorithms. Englewood Cliffs, Prentice Hall 1993.
Plui03 Pluim J.P.W. , Maintz J.B.A., Viergever M.A.: Mutual-information-based registration of medical
images: a survey. IEEE Trans. on Medical Imaging, vol. 22, no. 8, 986-1004, August 2003.
Literatura 819
Pora94 Porat B.: Digital Processing of Random Signals: Theory and Methods. Englewood Cliffs,
Prentice Hall 1994.
Pora97 Porat B.: A Course in Digital Signal Processing. New York, Wiley 1997.
Poul85 Poularikas A.D., Seely S.: Signals and Systems. Boston, PWS Engineering 1985.
Prat01 Pratt W.K.: Digital Image Processing. New York, Wiley 2001.
Proa92 Proakis J.G., Manolakis D.G.: Digital Signal Processing. Principles, Algorithms, and Appli-
cations. New York, Macmillan 1992.
Quat01 Quatieri T.F.: Discrete-Time Speech Signal Processing. Upper Saddle River, Prentice Hall 2001.
Rabi75 Rabiner L.R., Gold B.: Theory and Application of Digital Signal Processing. Englewood Cliffs,
Prentice Hall 1975.
Rabi78 Rabiner L.R., Shafer R.W.: Digital Processing of Speech Signals. Prentice Hall 1978.
Raus98 Rauschmayer D.: Adsl/Vdsl Principles: A Practical and Precise Study of Asymmetric Digital
Subscriber Lines and Very High Speed Digital Subscriber Lines. Macmillan Technical Publish-
ing, 1998.
Redd96 Reddy, B.S., Chatterji, B.N.: An FFT-based technique for translation, rotation, and scale-inva-
riant image registration. IEEE Trans.on Image Processing vol. 5, no. 8, 1266–1271, August
1996.
Rei92 Reid C.E., Passin T.B.: Signal Processing in C. New York, Wiley 1992.
Robe87 Roberts R.A., Mullis C.T.: Digital Signal Processing. Reading, Addison-Wesley 1987.
Robi85 Robinson E.A., Durrani T.: Geophysical Signal Processing. Prentice Hall 1985.
Romb96 Romberg T.M., Black J.L., Ledwidge T.J.: Signal Processing for Industrial Diagnostics. Chi-
chester, Wiley 1996.
Rora93 Rorabaugh C.B.: Digital Filter Designer’s Handbook. New York, McGraw-Hill 1993.
Rora99 Rorabaugh C.B.: DSP Primer. New York, McGraw-Hill 1999.
Rutk94 Rutkowski L.: Filtry adaptacyjne i adaptacyjne przetwarzanie sygnałów. Warszawa, WNT 1994.
Said96 Said A., Pearlman W.A.: Set Partitioning in Hierarchical Trees. IEEE Transactions on Circuits
and Systems for Video Technology, vol. 6, no. 3, 243-250, 1996.
Schm97 Schmidl T.M, Cox D.C.: Robust Frequency and Timing Synchronization for OFDM. IEEE
Trans. on Communications, vol. 45, no. 12, 1613-1621, 1997.
Shap93 Shapiro J. M.: Embedded image coding using zerotrees of wavelet coefficients. IEEE Trans. on
Signal Processing, vol. 41, no. 12, 3445-3462, 1993.
Shen95 Shenoi K.: Digital Signal Processing in Telecommunications. Upper Saddle River, Prentice Hall
1995.
Simp94 Simpson R.J.: Digital Signal Processing Using the Motorola DSP Family. Englewood Cliffs,
PTR Prentice Hall 1994.
Skar93 Skarbek W.: Metody reprezentacji obrazów cyfrowych. Warszawa, Akademicka Oficyna Wy-
dawnicza PLJ 1993.
Skar98 Skarbek W. (red.): MULTIMEDIA: Algorytmy i standardy kompresji. Warszawa, Akademicka
Oficyna Wydawnicza PLJ 1998.
Skór03 Skórka E.: Rozpoznawanie izolowanych słów w systemach sterowania głosem. Praca dyplo-
mowa, Państwowa Wyższa Szkoła Zawodowa, Tarnów 2003.
Smit92 Smith M.J.T., Mersereau R.M.: Introduction to Digital Signal Processing. A Computer Labora-
tory Textbook. New York, Wiley 1992.
Soch05a Socha M., Duplaga M., Turcza P., Zieliński T.P.: Oprogramowanie wspomagające zabieg trans-
bronchialnej igłowej biopsji aspiracyjnej metodą wirtualnej bronchoskopii. Sympozjum Mode-
lowanie i Pomiary w Medycynie, Krynica Górska 2005.
Soch05b Socha M., Duda K., Zieliński T., Duplaga M.: Algorytmiczna korekcja zniekształceń geome-
trycznych kamery bronchoskopu. Sympozjum Modelowanie i Symulacja Systemów Pomiaro-
wych, Krynica Górska 2005.
Sode97 Soderstrom T., Stoica P.: Identyfikacja systemów. Warszawa, PWN 1997.
Star99 Starr T., Cioffi J.M., Silverman P.J.: Understanding Digital Subscriber Line Technology. Upper
Saddle River, Prentice Hall, 1999.
Star02 Starr T., Sorbara M., Cioffi J.M., Silverman P.J.: DSL Advances. Prentice Hall, 2002.
Stea88 Stearns S.D., David R.A.: Signal Processing Algorithms. Eng. Cliffs, Prentice Hall 1988
Stea90 Stearns S.D.: Digital Signal Analysis. Englewood Cliffs, Prentice Hall 1990.
820 Literatura
Stea96 Stearns S.D., David R.A.: Signal Processing Algorithms in Matlab. Upper Saddle River, Prentice
Hall 1996.
Stei77 Steiglitz K.: Wstęp do systemów dyskretnych. Warszawa, WNT 1977.
Stęp00 Stępień J., Zieliński T.P., Rumian R.: Image denoising using scale-adaptive lifting schemes.
Proc. IEEE International Conference on Image Processing, Vancouver 2000.
Stęp01a Stępień J., Zieliński T.P.: Signal denoising using line-adaptive lifting wavelet transform. IEEE
Instrumentation and Measurement Technology Conference, 1386−1391, Budapest 2001.
Stęp01b Stępień J.: Predykcyjna wersja transformacji falkowej sygnałów cyfrowych. Rozprawa doktorska,
Kraków, Akademia Górniczo-Hutnicza 2001.
Stoi97 Stoica P., Moses R.: Introduction to Spectral Analysis. Upper Saddle River, Prentice Hall 1997.
Stra96 Strang G., Nguyen T.: Wavelets and Filter Banks. Wellesley, Wellesley-Cambridge Press 1996.
Stra04 Stranneby D.: Cyfrowe przetwarzanie sygnałów. Warszawa, Wydawnictwo btc, 2004.
Swel96 Sweldens W., Schröder P.: Building your own wavelets at home. W Wavelets in Computer
Graphics, ACM SIGGRAPH Course Notes, 15-87, 1996.
Szab90 Szabatin J.: Podstawy teorii sygnałów. Warszawa, WKŁ 1990.
Szyp92 Szyper M., Zieliński T.P., Sroka R.: Spectral analysis of nonstationary signals in the system with
wide phase modulation. IEEE Transactions on Instrumentation and Measurement, vol.41, no.6,
919-920, 1992.
Tade88 Tadeusiewicz R.: Sygnał mowy. Warszawa, WKŁ 1988.
Tade92 Tadeusiewicz R.: Systemy wizyjne robotów przemysłowych. Warszawa, WNT 1992.
Tade97 Tadeusiewicz R., Korohoda P.: Komputerowa analiza i przetwarzanie obrazów. Kraków, Wy-
dawnictwa Fundacji Postępu Telekomunikacji 1997.
Tayl83 Taylor F.: Digital Filter Design Handbook. New York, Marcel Dekker 1983
Tayl94 Taylor F.J.: Principles of Signals and Systems. New York, McGraw-Hill 1994.
Tayl98 Taylor F., Mellott J.: Hands-on Digital Signal Processing. New York, McGraw-Hill 1998.
Teka95 Tekalp A.M.: Digital Video Processing. Upper Saddle River, Prentice Hall 1995.
Teme78 Temes G.T., Mitra S.K.: Teoria i projektowanie filtrów. Warszawa, WNT 1978.
Teol98 Teolis A.: Computational Signal Processing with Wavelets. Boston, Birkhauser 1998.
Teub92 Teuber J.: Digital Image Processing. Englewood Cliffs, Prentice Hall 1992.
Thed96 Thede L.D.: Analog and Digital Filter Design Using C. Upper Saddle River, Prentice Hall 1996.
Theo01 Theodoridis S.: Adaptive filtering algorithms. Proc. IEEE Instrumentation and Measurement
Technology Conference, 1497−1501, Budapest 2001.
Ther92 Therrien C.W.: Discrete Random Signals and Statistical Signal Processing. Englewood Cliffs,
Prentice Hall 1992.
Tiet87 Tietze U., Schenk Ch.: Układy półprzewodnikowe. Warszawa, WNT 1996.
Tkac03 Tkacenko A., Vaidyanathan P.P.: A Low-Complexity Eigenfilter Design Method for Channel
Shortenning Equalizers for DMT Systems. IEEE Trans. on Communications, vol. 51, no. 7, 1069-
-1072, July 2003.
Trei87 Treichler J.R., Johnson C.R., Larimore M.G.: Theory and Design of Adaptive Filters. New York,
Wiley 1987.
Turc97a Turcza P., Zieliński T.P.: VME/VXI instrument with parallel DSP processors for real-time dyna-
mic measurements. XIV IMEKO World Congress, Finland, vol. 4B, 132−136, Tampere 1997.
Turc97b Turcza P., Zieliński T.P.: Hardware instantaneous phase shift estimation on field programmable
gate arrays. Proc. IMEKO-TC4 9th International Symposium on Electrical Instruments in In-
dustry, 237−240, Glasgow 1997.
Turc97c Turcza P., Zieliński T.P.: On accelerating DSP algorithms using FPGA hardware. Proc. 4th Int.
Workshop on Systems, Signals and Image Processing, Poland, 77−80, Poznań 1997.
Turc97d Turcza P., Zieliński T.P.: Real-time implementation of MPEG audio psychoacoustical model on
fixed-point Motorola DSP56002. Proc. 4th International Workshop on Systems, Signals and Ima-
ge Processing, 81−84, Poznań 1997.
Turc98 Turcza P., Zieliński T.P.: Fast cosine Gabor transform and its application to image compression.
IEEE-SP Symposium on Time-Frequency and Time-Scale Analysis, 461−464, Pittsburgh 1998.
Turc99a Turcza P., Zieliński T.P.: Design of prototype filters for cosine-modulated filter banks. Proc. 6th
Int. Workshop on Systems, Signals and Image Processing, 169−172, Bratislava 1999.
Literatura 821
Turc99b Turcza P., Zieliński T.P.: Extension of finite length signals in linear-phase sine/cosine-modula-
ted filter banks. Proc. 6th Int. Workshop on Systems, Signals and Image Processing. 173−176,
Bratislava 1999.
Turc99c Turcza P., Zieliński T.P.: Regular linear-phase cosine-modulated filter banks for image com-
pression. Second European Conference on DSP for Multimedia Communications and Services,
Kraków 1999.
Turc99d Turcza P., Czosnowski J., Zieliński T.P.: Linear phase modulated filter banks with efficient VLSI
realization. Materiały XXII Krajowej Konferencji Teorii Obwodów i Układów Elektronicznych
KKTOiUE-99, 503−508, Warszawa − Stare Jabłonki 1999.
Turc01 Turcza P.: Modulowane zespoły filtrów o regularnej strukturze i liniowej charakterystyce fazo-
wej. Rozprawa doktorska, Kraków, AGH 2001.
Turc05 Turcza P.: Navigation system for bronchofiberoscopic procedures based on image registration
with scale adaptive image similarity measures. European Signal Processing Conference
EUSIPCO-05, Antalya 2005.
Twar04 Twardowski T., Zieliński T.: Fast estimation of power spectral density of ISI/ICI interferences
for ADSL modem. Proc. IEEE Int. Conference on Acoustics, Speech and Signal Processing
ICASSP-04, 1049-1052, Montreal 2004.
Twar05 Twardowski T., Zieliński T.P., Turcza P.: Equalizer design for discrete multitone systems com-
bining response shortening and spectral shaping. 17-th European Conference on Circuits Theory
and Design, Cork (Irlandia) 2005.
Uhl98 Uhl T., Kurowski P.: Zastosowanie środowisk MATLAB i Siglab do analizy sygnałów. Kraków,
KCIS 1998.
Vaid93 Vaidyanathan P.P.: Multirate Systems and Filter Banks. Englewood Cliffs, Prentice Hall 1993.
Vash96 Vaseghi S.V.: Advanced Signal Processing and Digital Noise Reduction. Chichester, Wiley
1996.
Vett95 Vetterli M., Kovacevic J.: Wavelets and Subband Coding. Eng. Cliffs, Prentice Hall 1995.
Weso03 Wesołowski K.: Podstawy cyfrowych systemów telekomunikacyjnych. Warszawa, WKŁ 2003.
West94 Westall F.A. (red.): Digital Signal Processing in Telecommunications. London, Chapman & Hall
1994.
Widr85 Widrow B., Stearns S.: Adaptive Signal Processing. Englewood Cliffs, Prentice Hall 1985.
Wiel01 Wielgat R.: Zastosowanie znaczników fonetycznych, nieliniowej transformacji czasowej i nie-
jawnych modeli Markowa do rozpoznawania izolowanych słów mowy polskiej. Praca doktorska,
Politechnika Łódzka 2001.
Wojn80 Wojnar A.: Teoria sygnałów. Warszawa, WNT 1980
Wojn94 Wojnar L., Majorek M.: Komputerowa analiza obrazu. Kraków, FOTOBIT-DESIGN 1994.
Wojn98 Wojnar L.: Image Analysis: Applications in Material Engineering. Boca Raton, CRC Press 1998.
Wojt00 Wojtaszczyk P.: Teoria falek. Warszawa, PWN 2000.
Wojt87 Wojtkiewicz A.: Elementy syntezy filtrów cyfrowych. Warszawa, WNT 1984.
Wojt00 Wojtkiewicz A., Gajo Z. (red.): Cyfrowe przetwarzanie sygnałów. Ćwiczenia laboratoryjne.
Warszawa, Oficyna Wydawnicza Politechniki Warszawskiej 2000.
Worn95 Wornell G.W.: Signal Processing with Fractals: A Wavelet-Based Approach. Upper Saddle Ri-
ver, Prentice Hall 1995.
Xie03 Xie H., Hicks N., Keller G.R., Huang H., Kreinovich V.: An IDL/ENVI implementation of the
FFT-based algorithm for automatic image registration. Computers & Geosciences, vol. 29,
1045–1055, 2003.
Zarz98 Zarzycki J.: Cyfrowa filtracja ortogonalna sygnałów losowych. Warszawa, WNT 1998.
Zeln94 Zelniker G., Taylor F.J.: Advanced Digital Signal Processing: Theory and Applications. New
York, Marcel Dekker 1994.
Ziel88 Zieliński T.P.: On a software implementation of the Wigner-Ville transform. Computer Physics
Communications (Netherlands), vol.50, 747−750, 1988.
Ziel89a Zieliński T.P.: Algorithms for mixed time-frequency signal processing by means of the Wigner-
-Ville distribution. Proc. Australasian Measurement and Instrumentation Conference AIM-89,
75−79, Adelaide 1989.
Ziel89b Zieliński T.P., Donevsky B.D.: Razpredelenie na Wigner-Ville: algoritmi i prilozenia. Elektro-
promislennost i Priborostroene (Bulgaria), no.12, 2−6, 1989.
822 Literatura
Ziel89c Zieliński T.P.: Detection using cross-terms in the Wigner-Ville distribution. Proc. XII GRETSI
Symposium on Signal and Image Processing, 133−136, Juan Les Pins 1989.
Ziel90 Zieliński T.P.: New detection method based on the cross-terms mechanism of the Wigner-Ville
transform. Proc. V European Signal Processing Conference (Signal Processing V, Elsevier Scien-
ce), 157−160, Barcelona 1990.
Ziel91 Zieliński T.P.: Note on computation of some bilinear time-frequency signal representations.
Proc. Int. Conf. on Digital Signal Processing (DSP-91, Elsevier Science), 40−44, Florence 1991.
Ziel93a Zieliński T.P., Liszka S., Kołczak A.: Practical software implementation of the discrete wavelet
transform. Proc. Signal Processing'93 Workshop − Polish IEEE Chapter on Circuits and Systems,
19−22, Poznań 1993.
Ziel93b Zieliński T.P.: Efficient computation of the wavelet transform using fast Mellin transform. Proc.
7th International Symp. on Theoretical Electrical Engineering, 303−308, Szczecin 1993.
Ziel93c Zieliński T.P.: Note on computation of come affine bilinear time-frequency signal representa-
tions. Proc. Int. Conf. on Digital Signal Processing DSP-93, 94−99, Nicosia 1993.
Ziel94a Zieliński T.P.: Computation of the time-frequency Q-distribution of Altes. Proc. IEEE Interna-
tional Symposium on Circuits and Systems, vol.2, 365−368, London 1994.
Ziel94b Zieliński T.P.: Computation of affine Wigner-Ville distributions by means of chirp-Z transform.
Proc. VII European Signal Processing Conference, 649−652, Edinburgh 1994.
Ziel94c Zieliński T.P.: Reprezentacje sygnałów niestacjonarnych typu czas-częstotliwość i czas-skala.
Wydawnictwa AGH, nr 10 w serii „Rozprawy, monografie”, Kraków 1994.
Ziel95a Zieliński T.P.: Metody estymacji chwilowego przesunięcia fazowego. Część I: Algorytmy i ich
implementacje. Symp. Modelowanie i Symulacja Systemów Pomiarowych, 76−87, Krynica 1995.
Ziel95b Zieliński T.P.: Metody estymacji chwilowego przesunięcia fazowego. Część II: Porównanie włas-
ności użytkowych. Symp. Modelowanie i Symulacja Systemów Pomiarowych, 88−100, Krynica
1995.
Ziel96a Zieliński T.P.: Instantaneous phase shift estimation methods. IEEE/IMEKO Instrumentation and
Measurement Technology Conference, 162−167, Brussels 1996.
Ziel96b Zieliński T.P.: Wigner transform instantaneous phase estimator. VIII European Signal Proce-
ssing Conference EUSIPCO-96, 695−698, Trieste 1996.
Ziel96c Zieliński T.P., Turcza P., Rumian R.: Audio MPEG compression using Motorola digital signal
processor 56002. Materiały XIX Krajowej Konferencji Teorii Obwodów i Układów Elektronicz-
nych KKTOiUE-96, 567−572, Krynica 1996.
Ziel99a Zieliński T.P., Turcza P.: Time-frequency sampling schemes in Gabor transforms. Second Euro-
pean Conf. on DSP for Multimedia Communications and Services, Kraków 1999.
Ziel99b Zieliński T.P., Turcza P.: Design of Lerner prototype filters for communication filter banks. In-
ternational Conference on Broadband Access BAC-99, 42−47, Kraków 1999.
Ziel00a Zieliński T.P., Stepień J., Duda K.: Filter design for adaptive lifting schemes. Proc. European
Signal Processing Conference EUSIPCO-2000, Tampere, Finland, 2000.
Ziel00b Zieliński T.P.: Analiza czasowo-częstotliwościowa sygnałów biomedycznych. Materiały II Sym-
pozjum Pomiary i Modelowanie w Medycynie, 44−96, Krynica Górska 2000.
Ziel01a Zieliński T.P.: Window choice strategies in the short-time Fourier transform. Proc. of the Inter-
national Conf. on Signals and Electronic Systems, 141−146, Łódź 2001.
Ziel01b Zieliński T.P.: Joint time-frequency resolution of signal analysis with Gabor transform. IEEE
Trans. on Instrumentation and Measurement, vol.50, no.5, 1436−1444, 2001.
Ziel02 Zieliński T.P.: Design of Lerner prototype filters for audio cosine-modulated filter banks.
Bulletin of the Polish Academy of Sciences: Technical Sciences, vol. 50, no. 1, 29−36, 2002.
Ziel04 Zieliński T.P.: Wavelet transform applications in instrumentation and measurement: tutorial &
& literature survey. Metrology and Measurement Systems, vol. XI, no. 1, 61-101, 2004.
Dodatki
A Bootstrap 800
A/C 180 BP 106, 132, 289
ADPCM 547 BS 106, 132, 289
ADSL 740 Bufory przesuwne 265, 791
AIC 427 − kołowe 265, 791, 794
A-law 548
AGU 793 C
Algorytm filtracji cyfrowej 265, 356 CCD 175
− Goertzela 235 Cecha liczby zmiennoprzecinkowej 178
− Remeza 321 Cepstrum 556, 570
− szybkiego splotu 371, 373 Charakterystyka amplitudowa 106, 133
− szybkiej transformacji Fouriera 241 − fazowa 106
Aliasing 96, 211 − − liniowa 107, 309
ALU 789 Chirp-Z 239
AM, AM-SC 91 Chrominancja 652
AMDF 555 CMYK 651
Analiza czasowo-częstotliwościowa 444, 493 CTD 175
− częstotliwościowa Częstotliwość chwilowa 9
− − fourierowska 210 − rezonansowa układu RLC 122
− −, lupa w dziedzinie częstotliwości 239 − sygnału 7
− −, metody klasyczne 31, 226, 420
− −, metody zaawansowane 420 D
− −, przykłady zastosowania funkcji okien 220 DBS, DBS-SC 91
− −, wykorzystanie okna Kaisera 219 DCT 1D 52, 57
− spektralna patrz analiza częstotliwościowa − −, obliczanie za pomocą FFT 258
− widmowa patrz analiza częstotliwościowa − 2D 663
Aproksymacja Czebyszewa 321 Debbuger 803
AR 264, 557 Decybele 134
ARMA 264 Decymator 347, 500, 508
ASIC 787 Dekada 116
Atan2 107 Dekompozycja falkowa 461, 463
AVC 712 − − 2D (dwuwymiarowa) 701
AWGN 757 − macierzy względem wartości własnych 59
− polifazowa sygnału 503
B − Wolda 28
Bark 596 Delta Diraca 79
Baza dyskretna Fouriera 51 − Kroneckera 260, 672
− ortogonalna 42, 51 Demodulacja amplitudy 344
− ortonormalna 42, 51 − przesunięcia fazowego 344
BIBO 262 DFT 1D (jednowymiarowe) 199
Biortonormalność 445 − −, algorytm bezpośredni 231
Bootloader 800 − −, − Goertzela 234
826 Skorowidz
DFT 1D, algorytm rekurencyjny 236 FFT DIF (podział w częstotliwości) 252
− −, interpretacja 206 − DIT (podział w czasie) 241
− −, przykłady transformat 202 − − radix-2 241
− −, właściwości 200 − − radix-4 246
− 2D (dwuwymiarowe) 257, 653, 659 − − split-radix 250
− −, szybki algorytm 258 − − uniwersalne 250
DMA 797, 801 − −, zmiana kolejności próbek 244
DOA 205 −, opis metody 241
Dopasowywanie obrazów 718 −, program 248
Double Precision 178 −, struktura „motylka” 243
DP 185 − sygnałów rzeczywistych 255
DST 52 −, złożoność obliczeniowa 241, 244
DTW 571 − 2D 258
Dyskretna transformacja patrz transformacja Filtr analogowy Bessela 135
Dyskretyzacja w czasie 173
− − Butterwortha 135, 146
Dystrybuanta 24
− −, charakterystyka amplitudowa 106, 133
Dzielenie wielomianów 270
Dzwonienie (ringing effect) 661, 664 − −, − fazowa 106
− − Czebyszewa I 135, 157
− − Czebyszewa II 135, 161
E − − eliptyczny 135
Efekt brzegowy 673 − − Hilberta 339
Ekspander cyfrowy 347, 500 − −, implementacja sprzętowa 165
Emulator procesora DSP 802 − − LP, HP, BP, BS 106, 132
Energia sygnału 6
− −, projektowanie 137
Entropia 725
− − prototypowy 135
− psychoakustyczna 610, 611, 620
− − rekonstruujący 186
− wzajemna 726
− − różniczkujący 345
Ergodyczność 27
− −, struktury Sallena-Keya 166
ESPRIT 437
Estymacja minimalno-średniokwadrat. MMS 408 − cyfrowy adaptacyjny 380
− najmniejszych kwadratów LS 399 − − − gradientowy 384
− parametrów sygnału 418 − − − LMS 386
− przepływności bitowej w modemie ADSL 770 − − − LS 388
− przesunięcia fazowego 778 − − − NLMS 387
− − obrazu 733 − − − RLS 399
− rekursywna 399 − − − WLS 388
− ruchu w MPEG wideo 711 − − − WRLS 390, 399
Estymator 30 − − decymatora 351, 508
− funkcji autokorelacji 31 − − deemfazy 561
− − gęstości widmowej mocy 31 − − dwuwymiarowy 674, 683
− wartości oczekiwanej 31 − − Gaussa 686
−, własności (obciążony, zgodny itp.) 30 − − gradientowy 685
− − Hilberta 341
− − interpolatora 348, 508
F
falka 466, 471 − − Kalmana 408
falki Haara 467 − − kratowy 581
− biortogonalne 698, 699 − − − FIR 583
− Daubechies 467 − − − IIR 586, 587
− ortogonalne 467, 698 − − maksymalny (dylatacji) 685
− 2D 703 − − medianowy 364, 685
FDM 749 − − minimalny (erozji) 685
FEQ 769 − − nieliniowy 364
FEXT 757 − − nierekursywny FIR 264, 307, 583
Skorowidz 827
L Model AR 426
Laplasjan 686 − ARMA 429
Liczby patrz kod − generacji sygnału mowy 549
Listek główny widma okna 210, 215, 335 − MA 427
Listki boczne widma okna 210, 215, 335 − psychoakustyczny I 603, 632
LMS 386 − psychoakustyczny II 604, 632
LP 106, 132, 289 Modelowanie parametryczne 423
LPC-10 545, 563 − psychoakustyczne 594
Log-polar 719 Modem 740
LOT 499 Modulacja amplitudy 9, 11, 91
LS 388 − częstotliwości 10, 11
LSB 182 − fazy 10, 11
LSF 567 − kąta 9, 11
LSP 567 − QAM 743
LTI 103, 260 − rzeczywista 76
Luminancja 652
− wielotonowa DMT 745
− zespolona 77
M Modulator DMT 751
MA 264 Momenty centralne, zwykłe sygnału 6
MAC 789, 792, 793 Mowa bezdźwięczna, dźwięczna 551
Mantysa liczby zmiennoprzecinkowej 178 MP1, MP2 618, 631
Masa prawdopodobieństwa 24 MP3 618
Maskowanie częstotliwościowe 595 MPEG audio 593
MDCT, IMDCT 620 − wideo 711
MDL 427 MSB 182
Mel 570 Multiplekser 187
Metoda aproksymacji Czebyszewa 321 MUSIC 436
− Bartletta 420
µ-law 548
− Blackmana-Tukeya 31, 227, 421, 439
− dopasowanej transformacji Z 293
− Durbina-Levinsona 577, 581 N
− EV (EigenVector) 436 Nadpróbkowanie 452
NEXT 758
− MN (Minimum Norm) 436
Nieprognozowalność widmowa 608, 610
− modelowania parametrycznego 423
Niezależność sygnałów liniowa 42
− MV (Minimum Variance) 440 NLMS 387
− niezmienności odpowiedzi impulsowej 291 NMT 609
− okien 1D i 2D 325, 678 Norma 40
− optymalizacji średniokwadratowej 317 Normalizacja bazy ortogonalnej 45
− overlap-add 373
− overlap-save 373 O
− Pisarenki 432, 436 Obserwator 389
− podprzestrzeni 430 OFDM 740
− próbkowania w częstotliwości 313, 682 Okna w MPEG audio (długie, krótkie, ...) 621
− residuów 273 Okno Bartletta patrz trójkątne
− transformacji biliniowej 293 − Blackmana 90, 213, 335
− Welcha 32, 421 − Dolpha-Czebyszewa 217
− Yule’a-Walkera 291 − Hamminga 90, 213, 335
− zer i biegunów 108, 124, 277, 280 − Hanninga (Hanna) 90, 213, 335
Metryka i jej warunki 39 − Kaisera 218, 335
M-JPEG 710 − Parzena 90
MMS 409 − prostokątne 90, 213, 335
Moc sygnału 6 − trójkątne (Bartletta) 90, 213, 335
Skorowidz 829