Uploaded by gage.ahan

t.zielinski. .cyfrowe.przetwarzanie.sygnalow. .od.teori.do.zastosowan

advertisement
Cyfrowe przetwarzanie sygnałów
od teorii do zastosowań
Ukochanej Żonie
za anielską cierpliwość
Cyfrowe przetwarzanie sygnałów
od teorii do zastosowań
Tomasz P. Zieliński
W y d a w n i ctw a Ko mu n i k a cji i Ł ą czn oś ci
Warszaw a
Opiniodawcy:
prof. dr hab. inż. Tadeusz Więckowski
prof. dr hab. inż. Jacek Wojciechowski
Okładkę projektował: Dariusz Litwiniec
Redaktor merytoryczny: mgr inż. Elżbieta Gawin
Redaktor techniczny: Maria Łakomy
Korekta: zespół
621.39
W książce w sposób przystępny dokonano przejścia od matematycznych podstaw teorii sygnałów
analogowych do współczesnych zastosowań analizy i przetwarzania sygnałów cyfrowych. Niezbędne
rozważania matematyczne zilustrowano licznymi przykładami obliczeniowymi, rysunkami oraz
programami komputerowymi, napisanymi w języku Matlab.
Poza klasycznymi tematami, takimi jak filtracja analogowa i cyfrowa oraz ciągła i dyskretna transformacja Fouriera, opisano także zagadnienia bardziej zaawansowane: filtrację adaptacyjną, estymację
rekursywną oraz nowoczesne metody analizy częstotliwościowej i czasowo-częstotliwościowej sygnałów, w tym transformację falkową i zespoły filtrów. Podano również podstawy: kodowania i rozpoznawania sygnału mowy, kompresji MP3 sygnału audio, analizy i przetwarzania obrazów oraz cyfrowej
modulacji wielotonowej, stosowanej m.in. w szybkich telefonicznych modemach ADSL oraz w lokalnych bezprzewodowych sieciach komputerowych typu Wi-Fi.
Książka jest adresowana do pracowników naukowych wyższych uczelni, słuchaczy studiów doktoranckich, studentów zgłębiających tajniki cyfrowego przetwarzania sygnałów oraz praktykujących inżynierów zainteresowanych własnym rozwojem.
Podręcznik akademicki dotowany przez Ministra Edukacji Narodowej.
ISBN 83-206-1596-8
© Copyright by Wydawnictwa Komunikacji i Łączności sp. z o.o.
Warszawa 2005
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.
Wydawnictwa Komunikacji i Łączności sp. z o.o.
ul. Kazimierzowska 52, 02-546 Warszawa
tel. (0-22) 849-27-51; fax (0-22) 849-23-22
Dział handlowy tel./fax (0-22) 849-23-45
tel. (0-22) 849-27-51 w. 555
Prowadzimy sprzedaż wysyłkową książek
Księgarnia firmowa w siedzibie wydawnictwa
tel. (0-22) 849-20-32 czynna pon.–pt. w godz. 10.00–18.00
e-mail: wkl@wkl.com.pl
Pełna oferta WKŁ w INTERNECIE http://www.wkl.com.pl
Wydanie 1. Warszawa 2005.
Spis treści
Przedmowa ...................................................................................................................................................... xi
Wykaz oznaczeń ............................................................................................................................................ xiii
Wykaz skrótów ............................................................................................................................................... xv
1. Sygnały i ich parametry ............................................................................................................................ 1
1.1.
Pojęcia podstawowe ....................................................................................................................... 1
1.2.
Klasyfikacja sygnałów ................................................................................................................... 2
1.3.
Sygnały deterministyczne ............................................................................................................... 4
1.3.1. Parametry ........................................................................................................................................ 4
1.3.2. Przykłady ........................................................................................................................................ 7
1.3.3. Sygnały zespolone ........................................................................................................................ 13
1.3.4. Rozkład sygnałów na składowe ................................................................................................... 14
1.3.5. Funkcja korelacji własnej i wzajemnej ........................................................................................ 14
1.3.6. Splot sygnałów ............................................................................................................................. 17
1.3.7. Transformacja Fouriera ................................................................................................................ 22
1.4.
Sygnały losowe ............................................................................................................................. 24
1.4.1. Zmienne losowe ............................................................................................................................ 24
1.4.2. Procesy losowe, stacjonarność, ergodyczność ............................................................................. 26
1.4.3. Funkcje korelacji i kowariancji, gęstość widmowa mocy ........................................................... 28
1.4.4. Estymatory parametrów i funkcji ................................................................................................. 30
1.4.5. Filtracja sygnałów losowych ........................................................................................................ 34
1.5.
Przykład ćwiczenia komputerowego ............................................................................................ 35
2. Podstawy matematyczne analizy sygnałów deterministycznych .......................................................
2.1.
Przestrzenie sygnałów deterministycznych ..................................................................................
2.2.
Dyskretne reprezentacje ciągłych sygnałów deterministycznych ................................................
2.3.
Ciągłe reprezentacje ciągłych sygnałów deterministycznych − przekształcenia całkowe ..........
2.4.
Reprezentacje sygnałów dyskretnych − przestrzenie wektorowe ................................................
2.5.
Przykład ćwiczenia komputerowego ............................................................................................
39
39
41
47
50
60
3. Szereg Fouriera .......................................................................................................................................
3.1.
Ortogonalne funkcje bazowe ........................................................................................................
3.2.
Harmoniczne zespolone funkcje bazowe .....................................................................................
3.3.
Harmoniczne rzeczywiste funkcje bazowe ..................................................................................
3.4.
Przykład obliczeniowy .................................................................................................................
3.5.
Przykład ćwiczenia komputerowego ............................................................................................
3.6.
Szereg Fouriera sygnałów dyskretnych − dyskretne przekształcenie Fouriera ...........................
63
63
65
66
67
68
71
4. Całkowe przekształcenie Fouriera ........................................................................................................
4.1.
Definicja .......................................................................................................................................
4.2.
Podstawowe właściwości .............................................................................................................
4.3.
Transformaty Fouriera wybranych sygnałów ..............................................................................
74
74
75
79
Spis treści
vi
4.4.
4.5.
4.6.
4.7.
Widmo iloczynu i splotu dwóch sygnałów .................................................................................. 87
Twierdzenie o próbkowaniu ......................................................................................................... 93
Widmo sygnału spróbkowanego .................................................................................................. 97
Przykład ćwiczenia komputerowego .......................................................................................... 101
5. Układy analogowe .................................................................................................................................
5.1.
Analogowe układy LTI ..............................................................................................................
5.2.
Transmitancja układu analogowego, zera i bieguny ..................................................................
5.3.
Przekształcenie Laplace’a, transmitancja Laplace’a ..................................................................
5.4.
Wykresy Bodego ........................................................................................................................
5.5.
Złożone układy analogowe LTI .................................................................................................
5.6.
Analiza matematyczna wybranych układów elektrycznych ......................................................
5.7.
Przykłady projektowania ............................................................................................................
5.8.
Przykład ćwiczenia komputerowego ..........................................................................................
103
103
107
112
116
118
120
124
129
6. Analogowe filtry Butterwortha i Czebyszewa ...................................................................................
6.1.
Ogólne zasady projektowania filtrów analogowych ..................................................................
6.2.
Transformacja częstotliwości .....................................................................................................
6.3.
Filtry Butterwortha .....................................................................................................................
6.4.
Filtry Czebyszewa typu I ...........................................................................................................
6.5.
Filtry Czebyszewa typu II ..........................................................................................................
6.6.
Sprzętowa implementacja filtrów analogowych ........................................................................
131
132
139
146
157
161
165
7. Dyskretyzacja sygnałów analogowych ...............................................................................................
7.1.
Podstawy ....................................................................................................................................
7.2.
Przetworniki analogowo-cyfrowe ..............................................................................................
7.3.
Przetworniki cyfrowo-analogowe ..............................................................................................
7.4.
Tor przetwarzania analogowo-cyfrowego i cyfrowo-analogowego ..........................................
173
173
179
184
185
8. Analiza częstotliwościowa sygnałów dyskretnych .............................................................................
8.1.
Widmo Fouriera sygnałów dyskretnych ....................................................................................
8.1.1. Przekształcenie Fouriera dla sygnałów ciągłych ........................................................................
8.1.2. Szereg Fouriera dla sygnałów ciągłych ......................................................................................
8.1.3. Przekształcenie Fouriera dla sygnałów dyskretnych .................................................................
8.1.4. Szereg Fouriera dla sygnałów dyskretnych, czyli dyskretne przekształcenie Fouriera.............
8.2.
Przykłady dyskretnych transformat Fouriera sygnałów .............................................................
8.3.
Interpretacja dyskretnego przekształcenia Fouriera ...................................................................
8.4.
Tor przetwarzania sygnałów podczas analizy częstotliwościowej ............................................
8.5.
Dyskretne okna czasowe ............................................................................................................
8.5.1. Okna nieparametryczne ..............................................................................................................
8.5.2. Okna parametryczne ...................................................................................................................
8.6.
Przykłady analizy częstotliwościowej z wykorzystaniem funkcji okien ...................................
8.7.
Szybkie wyznaczanie funkcji autokorelacji i funkcji gęstości widmowej mocy.......................
192
192
193
193
194
198
202
206
210
212
212
217
220
226
9. Algorytmy wyznaczania dyskretnej transformacji Fouriera ...........................................................
9.1.
Metoda bezpośrednia ..................................................................................................................
9.2.
Algorytm Goertzela ....................................................................................................................
9.3.
Rekurencyjne wyznaczanie sekwencji dyskretnych transformat Fouriera ................................
9.4.
Transformacja świergotowa − lupa w dziedzinie częstotliwości ...............................................
9.5.
Szybka transformacja Fouriera − algorytmy radix-2 .................................................................
9.5.1. Podział w dziedzinie czasu − DIT (Decimation in Time) ..........................................................
9.5.2. Podział w dziedzinie częstotliwości − DIF (Decimation in Frequency) ...................................
9.6.
Szybka transformacja Fouriera dla sygnałów rzeczywistych ....................................................
9.7.
Dwuwymiarowa dyskretna transformacja Fouriera ...................................................................
9.8.
Wyznaczanie DCT metodą szybkiej transformacji Fouriera .....................................................
231
231
234
236
239
241
241
252
255
257
258
Spis treści
vii
10.Układy dyskretne ..................................................................................................................................
10.1. Układy dyskretne LTI ................................................................................................................
10.2. Algorytm filtracji sygnałów za pomocą dyskretnych układów LTI ..........................................
10.3. Transformacja Z .........................................................................................................................
10.4. Odwrotna transformacja Z .........................................................................................................
10.5. Właściwości transformacji Z ......................................................................................................
10.6. Transmitancja układów dyskretnych .........................................................................................
10.7. Przykłady projektowania układów dyskretnych metodą „zer i biegunów” ...............................
10.8. Przykład ćwiczenia komputerowego ..........................................................................................
260
260
265
267
270
274
275
280
284
11.Projektowanie rekursywnych filtrów cyfrowych ..............................................................................
11.1. Wymagania stawiane filtrom cyfrowym ....................................................................................
11.2. Metoda Yule’a-Walkera .............................................................................................................
11.3. Metoda niezmienności odpowiedzi impulsowej ........................................................................
11.4. Metoda dopasowanej transformacji Z ........................................................................................
11.5. Metoda transformacji biliniowej ................................................................................................
11.6. Przykłady projektowania filtrów w języku Matlab ...................................................................
11.7. Przykład ćwiczenia komputerowego ..........................................................................................
288
289
291
291
293
293
297
304
12.Projektowanie nierekursywnych filtrów cyfrowych .........................................................................
12.1. Wprowadzenie ............................................................................................................................
12.2. Metoda próbkowania w dziedzinie częstotliwości ....................................................................
12.3. Metoda optymalizacji średniokwadratowej ...............................................................................
12.4. Metoda aproksymacji Czebyszewa (algorytm Remeza) ............................................................
12.5. Metoda okien ..............................................................................................................................
12.6. Filtry specjalne ...........................................................................................................................
12.6.1. Filtr Hilberta ...............................................................................................................................
12.6.2. Filtr różniczkujący .....................................................................................................................
12.6.3. Filtr interpolatora i decymatora cyfrowego ................................................................................
12.6.4. Przykład ćwiczenia komputerowego ..........................................................................................
12.7. Synchronizacja próbek wejściowych i wyjściowych filtra ........................................................
307
308
313
317
321
325
339
339
345
347
351
353
13.Algorytmy filtracji cyfrowej ................................................................................................................
13.1. Klasyczne struktury filtrów cyfrowych ......................................................................................
13.2. Struktura zmiennych stanu .........................................................................................................
13.3. Inne struktury filtrów cyfrowych ...............................................................................................
13.4. Splot liniowy i kołowy ...............................................................................................................
13.5. Algorytmy szybkiego splotu sygnałów dyskretnych .................................................................
13.6. Algorytmy sekcjonowanego szybkiego splotu sygnałów dyskretnych......................................
13.7. Przykład ćwiczenia komputerowego ..........................................................................................
356
356
361
363
364
371
373
376
14.Filtry adaptacyjne .................................................................................................................................
14.1. Wprowadzenie ............................................................................................................................
14.2. Podstawy filtracji adaptacyjnej ..................................................................................................
14.3. Filtracja optymalna − filtr Wienera ............................................................................................
14.4. Gradientowe filtry adaptacyjne ..................................................................................................
14.5. Filtry adaptacyjne LMS − filtry bez pamięci .............................................................................
14.6. Filtry adaptacyjne LS (RLS) − filtry z pamięcią .......................................................................
14.7. Przykłady zastosowań.................................................................................................................
14.8. Przykład ćwiczenia komputerowego − filtr adaptacyjny (N)LMS ............................................
379
379
380
382
384
386
388
391
394
15.Liniowa estymacja rekursywna ........................................................................................................... 399
15.1. Metoda najmniejszych kwadratów. Filtry RLS i WRLS ........................................................... 399
15.2. Metoda minimalno-średniokwadratowa. Filtr Kalmana ........................................................... 408
viii
Spis treści
16.Zaawansowane metody analizy częstotliwościowej sygnałów .........................................................
16.1. Wprowadzenie ............................................................................................................................
16.2. Modelowanie parametryczne AR, MA i ARMA .......................................................................
16.2.1. Podstawy ....................................................................................................................................
16.2.2. Model AR ...................................................................................................................................
16.2.3. Model MA ..................................................................................................................................
16.2.4. Model ARMA ............................................................................................................................
16.2.5. Podsumowanie ...........................................................................................................................
16.3. Metody podprzestrzeni ...............................................................................................................
16.3.1. Podstawy ....................................................................................................................................
16.3.2. Metoda Pisarenki ........................................................................................................................
16.3.3. Metody pochodne: MUSIC, EV i MV .......................................................................................
16.3.4. Metoda ESPRIT .........................................................................................................................
16.3.5. Metody podprzestrzeni sygnału (składowych głównych) .........................................................
16.4. Przykład ćwiczenia komputerowego ..........................................................................................
420
420
423
423
426
427
429
430
430
430
432
435
437
439
440
17.Metody czasowo-częstotliwościowej analizy sygnałów .....................................................................
17.1. Problem analizy czasowo-częstotliwościowej ...........................................................................
17.2. Transformacja Gabora ................................................................................................................
17.3. Krótkoczasowa transformacja Fouriera STFT ...........................................................................
17.4. Transformacja falkowa ...............................................................................................................
17.5. Transformacja Wignera-Ville’a .................................................................................................
17.6. Reprezentacje czasowo-częstotliwościowe z klasy Cohena ......................................................
17.7. Przykłady zastosowań ................................................................................................................
17.8. Przykład ćwiczenia komputerowego ..........................................................................................
443
444
450
455
459
472
477
486
493
18.Zespoły filtrów .......................................................................................................................................
18.1. Wprowadzenie ............................................................................................................................
18.2. Pojęcia podstawowe ...................................................................................................................
18.2.1. Decymator i interpolator .............................................................................................................
18.2.2. Dekompozycja polifazowa sygnałów ........................................................................................
18.2.3. Decymator i interpolator w zapisie polifazowym ......................................................................
18.3. Opis matematyczny zespołu filtrów ...........................................................................................
18.3.1. Analiza jednej gałęzi ..................................................................................................................
18.3.2. Analiza wszystkich gałęzi ..........................................................................................................
18.3.3. Zapis polifazowy zespołu filtrów ...............................................................................................
18.3.4. Warunek perfekcyjnej rekonstrukcji ..........................................................................................
18.4. Zespoły filtrów z modulacją zespoloną ......................................................................................
18.4.1. DFT jako modulowany zespół filtrów .......................................................................................
18.4.2. Krótkoczasowa transformacja Fouriera STFT jako modulowany zespół filtrów .....................
18.4.3. Uogólniony modulowany zespół filtrów oparty na DFT ...........................................................
18.5. Zespoły filtrów z modulacją kosinusową ...................................................................................
18.5.1. Równania, budowa .....................................................................................................................
18.5.2. Projektowanie filtrów prototypowych .......................................................................................
18.6. Implementacja programowa zespołu filtrów standardu MPEG audio .......................................
496
496
500
500
503
506
507
507
511
512
514
515
516
518
519
527
527
533
539
19.Projekt LPC-10: podstawy kompresji i rozpoznawania sygnału mowy .........................................
19.1. Wprowadzenie ............................................................................................................................
19.2. Model generacji sygnału mowy .................................................................................................
19.3. Układ decyzyjny „mowa dźwięczna/bezdźwięczna” ................................................................
19.4. Wyznaczanie filtra traktu głosowego .........................................................................................
19.5. Algorytm kodera i dekodera mowy standardu LPC-10 .............................................................
19.6. Przykład programu komputerowego ..........................................................................................
19.7. Od kodowania do rozpoznawania mowy ...................................................................................
545
545
549
551
557
563
566
569
Spis treści
ix
20.Projekt LPC-10: kompresja sygnału mowy − metody zaawansowane ...........................................
20.1. Metoda Durbina-Levinsona .......................................................................................................
20.2. Filtry kratowe .............................................................................................................................
20.3. Przykładowy program komputerowy .........................................................................................
577
577
581
590
21.Projekt MPEG AUDIO: psychoakustyczna kompresja dźwięku ....................................................
21.1 Wprowadzenie do standardu MPEG audio ...............................................................................
21.2. Podstawy modelowania psychoakustycznego ...........................................................................
21.3. Modele psychoakustyczne standardu MPEG audio ..................................................................
21.3.1. Model psychoakustyczny I .........................................................................................................
21.3.2. Model psychoakustyczny II .......................................................................................................
21.3.3. Program komputerowy ...............................................................................................................
21.4. Zespoły filtrów w standardzie MPEG audio ..............................................................................
21.5. Kodowanie dźwięku na poziomach MP1 i MP2 .......................................................................
21.5.1. Algorytm kompresji i dekompresji .............................................................................................
21.5.2. Program komputerowy ...............................................................................................................
592
593
594
603
603
604
612
618
631
631
638
22.Projekt OBRAZ: podstawy analizy i przetwarzania sygnałów dwuwymiarowych ......................
22.1. Wprowadzenie do świata 2D i 3D .............................................................................................
22.2. Transformacje ortogonalne 2D obrazów ....................................................................................
22.2.1. Dyskretna transformacja Fouriera ..............................................................................................
22.2.2. Dyskretna transformacja kosinusowa ........................................................................................
22.2.3. Dowolna transformacja ortogonalna − interpretacja współczynników .....................................
22.3.4. Program komputerowy ...............................................................................................................
22.3. Filtracja 2D obrazów ..................................................................................................................
22.3.1. Splot 2D ......................................................................................................................................
22.3.2. Projektowanie filtrów 2D ...........................................................................................................
22.3.3. Przykładowe filtry 2D ................................................................................................................
22.3.4. Program komputerowy ...............................................................................................................
22.4. Falkowa dekompozycja 2D obrazów .........................................................................................
22.4.1. Jednowymiarowa predykcyjna transformacja falkowa ..............................................................
22.4.2. Związki pomiędzy klasyczną a predykcyjną transformacją falkową ........................................
22.4.3. Program komputerowy do falkowej dekompozycji obrazów ....................................................
22.5. Przykłady zastosowań ................................................................................................................
22.5.1. Kompresja JPEG i MPEG ..........................................................................................................
22.5.2. Znaki wodne w obrazach ...........................................................................................................
22.5.3. Dopasowywanie do siebie obrazów cyfrowych .........................................................................
22.5.4. Detekcja linii w inżynierii materiałowej − transformacja Hougha ............................................
22.2.5. Algorytmiczna stabilizacja obrazu w zastosowaniach medycznych .........................................
22.5.6. Systemy nawigacji wspomagające zabiegi medyczne ...............................................................
647
649
658
658
663
665
668
670
670
674
683
686
690
691
697
700
707
707
715
718
730
733
737
23.Projekt MODEM ADSL: szybki dostęp do Internetu po linii telefonicznej ...................................
23.1 Podstawy modulacji ..................................................................................................................
23.2. Cyfrowe modulacje wielotonowe ...............................................................................................
23.3. Standard ADSL ..........................................................................................................................
23.4. Modulator-demodulator DMT ...................................................................................................
23.5 Źródła zniekształceń i zakłóceń .................................................................................................
23.6 Wybrane zagadnienia implementacyjne .....................................................................................
23.6.1. Identyfikacja odpowiedzi impulsowej kanału ...........................................................................
23.6.2. Korekcja czasowa kanału − skracanie czasu trwania odpowiedzi impulsowej .........................
23.6.3. Synchronizacja blokowa ............................................................................................................
23.6.4. Korekcja częstotliwościowa kanału ...........................................................................................
23.6.5. Estymacja przepływności bitowej ..............................................................................................
23.6.6. Właściwy dobór korektora czasowego .......................................................................................
23.7. Przykład ćwiczenia komputerowego ..........................................................................................
740
741
745
748
751
754
759
759
764
767
769
770
773
773
Spis treści
x
24.Projekt FAZA: estymacja chwilowego przesunięcia fazowego .......................................................
24.1. Estymatory proste .......................................................................................................................
24.2. Estymatory złożone ....................................................................................................................
24.3. Przykłady algorytmów ...............................................................................................................
24.4. Przykładowy program komputerowy .........................................................................................
778
778
781
782
786
25.EPILOG: implementacja algorytmów DSP na procesorach sygnałowych ....................................
25.1 Wprowadzenie do budowy i programowania procesorów DSP ................................................
25.2. Splot sygnałów na procesorze DSP ...........................................................................................
25.3. Wybrane zagadnienia implementacyjne .....................................................................................
25.3.1. Specyfika budowy i zastosowań procesorów sygnałowych ......................................................
25.3.2. Podstawy pisania i uruchamiania programów ...........................................................................
25.3.3. Zaawansowane narzędzia programowe ......................................................................................
25.3.4. Przykład projektowania filtra IIR ...............................................................................................
25.4. Przykładowa aplikacja procesora DSP ......................................................................................
25.4. Procesory DSP a układy programowalne FPGA .......................................................................
25.5. Przyszłość DSP − czy jesteśmy trendy? ....................................................................................
787
788
791
796
796
800
803
805
807
808
810
Literatura .................................................................................................................................................... 813
Dodatki ........................................................................................................................................................ 823
D.1.
D.2.
Wykaz programów ....................................................................................................................... 823
Wersja elektroniczna programów ................................................................................................ 824
Skorowidz .................................................................................................................................................... 825
Przedmowa
Celem niniejszej książki jest w miarę całościowe przedstawienie podstaw cyfrowego przetwarzania sygnałów. Ich znajomość jest niezwykle istotna w czasach, w których obserwuje się zdecydowane 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ładów peryferyjnych, takich jak przetworniki analogowo-cyfrowe i cyfrowo-analogowe) oraz zalet
przetwarzania cyfrowego nad analogowym (niezmienności czasowej sposobu przetwarzania danych, 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ładó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 arytmetycznych na liczbach, reprezentujących wartości chwilowe spróbkowanych sygnałów analogowych. Ten scenariusz jest powszechny wszędzie. Przykładem mogą być różnorakie systemy sterowania 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 przetwarzanie danych cyfrowych są nierozerwalnie związane z analizą i przetwarzaniem sygnałów analogowych. 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 przypadkach i ich właściwości wzajemnie się przy tym przenikają. Filtry cyfrowe wywodzą się z filtró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: elementy teorii sygnałów analogowych i obwodów elektrycznych (rozdziały 1 − 6), podstawowe (rozdziały 7 − 13) i bardziej zaawansowane (rozdziały 14 − 18) metody cyfrowej analizy i przetwarzania 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”
Przedmowa
xii
i „cyfrowego”. Równocześnie nacisk zostanie położony nie na istniejące „wzory mnemotechniczne”, dające inżynierowi gotowe recepty „jak żyć” dzisiaj, ale zamykające drogę dalszego rozwoju
jutro, tylko na staranne matematyczne wytłumaczenie rozpatrywanych kwestii, które pozwoli na
dalsze, samodzielne, świadome poruszanie się Czytelnika w dziedzinach dla niego nowych.
Pierwsze wytłumaczenie zawsze będzie jak najprostsze. Główną intencją autora jest „odczarowanie” tematów pozornie trudnych i „rzucenie mostów” pomiędzy brzegami z pozoru odległymi.
W książce tej nie ma nic nowego. Wszystko już było. W dużej części składa się ona z prostych wyprowadzeń i przekonywujących wytłumaczeń, które zostały wyłowione z setek książek i artykułów
− morza słów − i skrzętnie zapamiętane. Więc po co ją napisano? Autor z przykrością stwierdza,
że sam mozolnie całymi latami odkrywał niektóre proste prawdy. I tak jak podczas wspinaczki w
górach, po każdym „podejściu” odsłaniał mu się „nowy widok”. Wędrówka ta już trwa ponad
dwadzieścia lat. I na pewno do szczytu jest jeszcze bardzo daleko. Ale może warto pokazać innym
drogę „na skróty”, podjąć próbę dopasowania elementów „łamigłówki” oraz syntezy własnych
przemyśleń.
Książka jest podręcznikiem akademickim. W zamierzeniu autora każdy z rozdziałów stanowi
zamkniętą całość, odpowiednią do oddzielnej lektury, dlatego część przedstawionego materiału
będzie się w niewielkim stopniu powtarzać, ale zazwyczaj w nieco innej formie.
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 kieruje 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, niekwestionowanego 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 wprowadzenie 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 Twardowskiemu 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 profesorom: Markowi Domańskiemu, Andrzejowi Dziechowi, Januszowi Gajdzie, Zdzisławowi Papirowi, Ryszardowi Panuszce i Michałowi Szyperowi, Panom doktorom: Krzysztofowi Dudzie, Jerzemu Jurkiewiczowi, Przemysławowi Korohodzie, Pawłowi Turczy i Tomaszowi Twardowskiemu 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 zamierzenia. Dlatego z zawstydzeniem i pokorą przedstawia Czytelnikowi skromny wynik swojej pracy.
Kraków, wrzesień 2005
Tomasz P. Zieliński
Wykaz oznaczeń
arg(.)
A(s)
A(z)
A(Ω)
B(s)
B(z)
cxy(τ), Cxy(τ)
Ex
E[x]
f
fpr, fp
F = f / fpr
F(x)
h(n)
h(t)
H(s)
H(z)
H kI ( II ) ( z )
− kąt liczby zespolonej
− mianownik transmitancji układu analogowego H(s)
− mianownik transmitancji układu dyskretnego H(z)
− funkcja analityczna równa ± M(Ω)
− licznik transmitancji układu analogowego H(s)
− licznik transmitancji układu dyskretnego H(z)
− funkcja kowariancji wzajemnej sygnałów x(t) i y(t)
− energia sygnału x
− wartość oczekiwana zmiennej losowej x
– częstotliwość
− częstotliwość próbkowania
− częstotliwość unormowana
− dystrybuanta zmiennej losowej x
− odpowiedź impulsowa układu dyskretnego o transmitancji H(z)
− odpowiedź impulsowa układu analogowego o transmitancji H(s)
− transmitancja (funkcja przejścia) układu analogowego
− transmitancja (funkcja przejścia) układu dyskretnego
− transformata Z k-tej składowej polifazowej (typu I lub II) filtra h(n)
H lI, (kII ) ( z )
− transformata Z k-tej składowej polifazowej (typu I lub II) filtra hl(n)
Im(.), Imag(.)
M(ω) = | X(jω) |
M(Ω) = | X(ejΩ) |
p(n)
pT(t)
p(x)
Px
Pxy(f )
Re(.), Real(.)
rxy(τ), Rxy(τ)
s
sgn(t)
sinc(x)
Sx(t, f )
t
Unwrap( Φ(Ω) )
WN = exp(− j 2π / N )
– część urojona liczby zespolonej
− moduł transformaty Fouriera X(jω) sygnału x(t)
− moduł transformaty Fouriera X(ejΩ) sygnału x(n)
− filtr prototypowy w zespole filtrów
− okno prostokątne o czasie trwania [− T, T]
− funkcja gęstości prawdopodobieństwa zmiennej losowej x
− moc sygnału x
− funkcja wzajemnej gęstości widmowej mocy sygnałów x(t) i y(t)
– część rzeczywista liczby zespolonej
− funkcja korelacji wzajemnej sygnałów x(t) i y(t)
− zmienna transformacji Laplace’a
− sygnał (funkcja) znaku
− funkcja typu sin(x)/x
− reprezentacja czasowo-częstotliwościowa sygnału x(t)
– czas
– funkcja „uciąglająca” charakterystykę fazowo-częstotliwościową
− stała dyskretnej transformacji Fouriera DFT
Wykaz oznaczeń
xiv
x
x, x
X
x(n)
x(t)
X(ejΩ)
X(f )
X(jω)
X(s)
X(z)
z
− zmienna losowa
− wektor
− macierz
– sygnał czasu dyskretnego (dyskretny)
− sygnał czasu ciągłego (analogowy)
− transformata Fouriera sygnału x(n)
− transformata Fouriera sygnału
− transformata Fouriera sygnału x(t)
− transformata Laplace’a sygnału x(t)
− transformata Z sygnału x(n)
− zmienna transformacji Z
δ(n)
δ(t)
Φ(ω)
Φ(Ω)
σ2x
− dyskretny impuls jednostkowy (impuls Kroneckera)
− impuls Diraca
− faza transformaty Fouriera X(jω) sygnału x(t)
− faza transformaty Fouriera X(ejΩ) sygnału x(n)
− wariancja sygnału x
ω = 2πf
Ω = 2πf / fpr
− pulsacja analogowa
− pulsacja unormowana, pulsacja cyfrowa
(.)H
(.)T
(.)*
(.) ,
l,
(.)
− sprzężenie i transpozycja wektora lub macierzy (np. xH, XH)
− transpozycja wektora lub macierzy (np. xT, XT)
− sprzężenie zespolone liczby (np. x*)
− wartość średnia sygnału (np. x )
.
.
<>
⊗
)(.), ((.), ∠(.)
− wartość przybliżona, estymata sygnału (np. x̂ )
− moduł liczby zespolonej (np. |x |)
− norma sygnału (np. x )
− iloczyn skalarny dwóch sygnałów (<x, y>)
− operator splotu dwóch sygnałów (np. x ⊗ y)
− kąt liczby zespolonej (np. )X(jω), )X(ejΩ))
Wykaz skrótów
A/C
Analog/Cyfra
ADPCM Adaptive Differential Pulse Code
Modulation
ADSL
Asymmetric Digital Subscriber Line
AM
Amplitude Modulation
AMDF Average Magnitude Difference
Function
AR
Autoregressive
ARMA Autoregressive Moving Average
ASIC
Application-Specific Integrated
Circuits
AWGN Additive White Gaussian Noise
BIBO
Bounded Input Bounded Output
BP
Bandpass
BS
Bandstop
C/A
Cyfra/Analog
CCD
Charge-Coupled Devices
CTD
Charge Transfer Devices
CWT
Continuous Wavelet Transform
DCT
Discrete Cosine Transform
DFT
Discrete Fourier Transform
DIF
Decimation in Frequency
DIT
Decimation in Time
DMA
Direct Memory Access
DMT
Discrete MutiTone
DOA
Direction of Arrival
DP
Dolnoprzepustowy
DSB
Double Sideband
DSP
Digital Signal Processing
(Processor)
DST
Discrete Sine Transform
DTW
Dynamic Time Warping
DWT
Discrete Wavelet Transform
EV
Eigenvalue, Eigenvector
EVD
Eigenvalue Decomposition
ESPRIT Estimation of Signal Parameters via
Rotational Invariance Techniques
FB
Filter Bank
FDM
Frequency Division Multiplexing
FEQ
Frequency Equalizer
FEXT
Far End Crosstalk
FFT
FIR
FM
FPGA
HP
HSV
IDFT
IFFT
IIR
ILS
IMDCT
JPEG
KL
LFM
LMS
LOT
LP
LPC
LS
LSB
LSF
LSP
LTI
MA
MAC
MDCT
MLT
MMS
MN
MPEG
MSB
MUSIC
MV
NEXT
NLMS
NMT
OFDM
PCM
PER
Fast Fourier Transform
Finite Impulse Response
Frequency Modulation
Field Programmable Gate Array
Highpass
High-Speed Videoendoscopy
Inverse Discrete Fourier Transform
Inverse Fast Fourier Transform
Infinite Impulse Response
Iterative Least Squares
Inverse Modified Discrete Cosine
Transform
Joint Photographic Expert Group
Karhunen-Loeve (Transform)
Linear Frequency Modulation
Least Mean Squares
Lapped Orthogonal Transform
Lowpass
Linear Prediction Coding
Least Squares
Least Significant Bit
Line Spectrum Frequencies
Line Spectrum Pairs
Linear Time-Invariant
Moving Average
Multiply-And-Accumulate
Modified Discrete Cosine Transform
Modulated Lapped Transform
Minimum Mean Squares
Minimum Norm
Moving Pictures Expert Group
Most Significant Bit
Multiple Signal Classification
Minimum Variance
Near End Crosstalk
Normalised Least Mean Squares
Noise is Masking Tone
Orthogonal Frequency Division
Multiplexing
Pulse Code Modulation
Periodogram
Wykaz skrótów
xvi
PR
PTF
Perfect Reconstruction
Predykcyjna Transformacja
Falkowa
P&P
Próbkowanie z Podtrzymaniem
QAM
Quadrature Amplitude Modulation
QMF
Quadrature Mirror Filters
Radix-N Podstawa-N
RLS
Recursive Least Squares
SAW
Surface Acoustics Waves
SC
Suppressed Carrier
SCAL
Scalogram
SCC
Switched Capacitor Circuits
SCF
Scaling Factors
SCFI
Scaling Factors’ Information
SFM
Sinusoidal Frequency Modulation
SFM
Spectral Flatness Measure
SMR
SNR
SPEC
STFT
SVD
S&H
TDM
TEQ
TF
TMN
VDSL
VLI
WLS
WRLS
Signal-to-Mask Ratio
Signal-to-Noise Ratio
Spectrogram
Short-Time Fourier Transform
Singular Value Decomposition
Sample & Hold
Time Division Multiplexing
Time Equalizer
Time-Frequency
Tone is Masking Noise
Very high speed Digital Subscriber
Line
Variable Length Integers
Weighted Least Squares
Weighted Recursive Least Squares
WV
Wigner-Ville
1
Sygnały i ich parametry
Celem niniejszego rozdziału jest skrótowe wprowadzenie Czytelnika w szeroko rozumianą
problematykę analizy i przetwarzania sygnałów. Na wstępie zostanie w nim przeprowadzona
klasyfikacja sygnałów ze względu na różne kryteria, a następnie szczegółowo zostaną przedstawione klasy sygnałów deterministycznych i losowych wraz z typowymi dla nich „narzędziami” obliczeniowymi analizy i przetwarzania. W praktyce inżynierskiej analiza sygnałów
najczęściej sprowadza się do analizy częstotliwościowej (fourierowskiej) oraz korelacyjnej. Od
pierwszej z nich oczekuje się udzielenia odpowiedzi na pytanie o elementy składowe (częstotliwościowe) sygnału, natomiast od drugiej − pomocy w ustaleniu jego charakteu, np. okresowości. Najpowszechniejszą operacją przetwarzania sygnałów jest natomiast ich filtracja, czyli
odseparowywanie od siebie składowych sygnału lub jego odszumianie.
W pewnym sensie rozdział ten stanowi porządkujące, encyklopedyczne streszczenie wielu
zagadnień, które potem będą szczegółowo omawiane w dalszej części książki. Zebranych
w nim jest wiele nowych pojęć, definicji, własności. Jednak z powodu bogactwa treści i lapidarności formy sprawia on najczęściej „przygnębiające” wrażenie na Czytelniku, który bierze
książkę do ręki po raz pierwszy. Autor ma jednak nadzieję, że rozdział ten jest jak „stare
wino”, tym lepsze im później (częściej) do niego wracamy. Dlatego głowa do góry,
Czytelniku!
1.1. Pojęcia podstawowe
W rozumieniu niniejszej książki, w największym uproszczeniu, sygnał to zmienność dowolnej
wielkości fizycznej, która może być opisana za pomocą funkcji jednej f(x) lub wielu zmiennych f(x1, x2, x3, ...), przykładowo temperatury, ciśnienia, napięcia elektrycznego itp. W praktyce najczęściej interesują nas sygnały będące funkcjami czasu f(t) lub położenia w przestrzeni
f(x, y, z), np. f(t) = sin(2πft), f(t) = Aet, f(x,y) = exp(x2+y2). Sygnałem jest więc zmienność
jakiejś wielkości fizycznej w funkcji wybranego argumentu, np. temperatury lub natężenia fali
elektromagnetycznej w funkcji czasu lub chropowatości powierzchni w funkcji położenia.
Sygnały są generowane między innymi przez o b i e k t y b i o l o g i c z n e , s p o ł e c z n e
i t e c h n i c z n e , występujące w otaczającym nas świecie, i zazwyczaj zawierają informację
o tych obiektach. Przykładowo w sygnale mowy ludzkiej jest zawarta określona „treść”,
Sygnały i ich parametry
2
podobnie jak w zapisie sygnału elektrokardiogramu serca − informacja o aktualnym stanie
pacjenta. Wiele sygnałów jest także generowanych sztucznie przez samego człowieka i wykorzystywanych w różnych u k ł a d a c h t e c h n i c z n y c h . Wówczas sygnały te służą najczęściej
do przenoszenia informacji, tak jak ma to miejsce w transmisji radiowej lub telewizyjnej, lub
też do zbierania informacji o otaczającym nas świecie. Przykładem tego ostatniego może być
echografia impulsowa (np. utrasonografia medyczna, technika radarowa), w której wysyła się
sygnały impulsowe w stronę obiektu i analizuje sygnały od niego odbite.
Przez teorię sygnałów rozumie się zazwyczaj matematyczne podstawy opisu, analizy i przekształcania (przetwarzania) sygnałów jako specyficznych funkcji matematycznych. Analiza
sygnałów ma na celu wydobycie informacji zawartej w sygnałach, np. rozpoznanie treści
sygnału mowy, diagnozę stanu pacjenta na podstawie sygnału elektrokardiogramu lub obrazu
ultrasonograficznego, przewidywanie ruchów tektonicznych (trzęsień ziemi) z rejestrowanych
sygnałów geosejsmicznych, detekcję obiektów latających na podstawie sygnałów od nich
odbitych lub przez nie generowanych (np. szumowych, termicznych). Przetwarzanie sygnałów
to natomiast transformowanie sygnału z jednej postaci do drugiej, na przykład modulacja i demodulacja sygnałów w systemach teleinformatycznych, w szczególności modulacja AM i FM
sygnałów w radiostacjach i ich demodulacja w odbiornikach radiowych.
Celem niniejszej książki jest przedstawienie podstawowych metod opisu, analizy i przetwarzania sygnałów.
1.2. Klasyfikacja sygnałów
W niniejszym podrozdziale przedstawiono klasyczny podział sygnałów na oddzielne grupy
sygnałów o charakterystycznych właściwościach. Będą w nim przede wszystkim dyskutowane
sygnały czasowe, oznaczone przez x(t), ale funkcje innych argumentów klasyfikuje się w sposób analogiczny.
Schemat podstawowej klasyfikacji sygnałów jest przedstawiony na rysunku 1.1.
Sygnały
deterministyczne
okresowe
prawie okresowe
losowe
niestacjonarne
stacjonarne
nieergodyczne
ergodyczne
zmodulowane
rozkład równomierny
impulsowe o ograniczonej energii
o nieskończonym czasie trwania i ograniczonej energii
rozkład normalny
inne rozkłady
Rys. 1.1. Schemat blokowy podstawowej klasyfikacja sygnałów
Sygnały i ich parametry
3
Ogólnie wszystkie sygnały możemy podzielić na:
1) funkcje różnych argumentów, np. czasu lub położenia (odległości),
2) funkcje różnej liczby argumentów (wieloargumentowe), np. jedno-, dwu- lub
wielowymiarowe,
3) funkcje przyjmujące różne wartości, np. rzeczywiste lub zespolone,
4) sygnały ciągłe (analogowe) x(t) oraz dyskretne xk(t), x(n) i xk(n),
5) sygnały deterministyczne i losowe.
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-analogowego 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óbkowania 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 rozumieć 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óbkowania 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ładowo 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 numeru, ale wartości reprezentanta, przykładowo jako liczby zmiennoprzecinkowej. Przykładem sygnał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,
Sygnały i ich parametry
4
Sygnały stacjonarne dzielą się dodatkowo na sygnały ergodyczne i nieergodyczne. Podstawą
opisu właściwości sygnałów losowych nie jest jeden sygnał (jedna realizacja procesu losowego), lecz wiele sygnałów (nieskończony zbiór takich realizacji). Sygnały stacjonarne mają d l a
k a ż d e j c h w i l i c z a s o w e j takie same wartości podstawowych parametrów statystycznych
(typu średnia, wariancja) w zbiorze ich wielu realizacji, sygnały zaś niestacjonarne nie mają tej
właściwości. Dodatkowo dla stacjonarnych sygnałów ergodycznych podstawowe parametry
statystyczne typu średnia/wariancja dla jednej realizacji są takie same jak po zbiorze wielu
realizacji; wystarczy więc zarejestrować i analizować tylko jedną „realizację” sygnału, aby
wyciągnąć poprawne wnioski statystyczne.
Przykład. Na rysunku 1.2 są zaprezentowane przykładowe, charakterystyczne przebiegi czasowe sygnałów. Na rysunkach 1.2a−1.2d jest pokazany deterministyczny sygnał sinusoidalny,
odpowiednio sygnał ciągły czasu ciągłego, sygnał ciągły czasu dyskretnego (sygnał zdyskretyzowany „w czasie”), sygnał dyskretny czasu ciągłego (sygnał zdyskretyzowany „w wartościach”, czyli skwantowany) oraz sygnał dyskretny czasu dyskretnego, czyli cyfrowy (równocześnie zdyskretyzowany „w czasie” i „w wartościach”). Rysunek 1.2e przedstawia z kolei
sygnał losowy, a rysunek 1.2f − rzeczywisty sygnał mowy, odpowiadający sekwencji głosek
„sze”, który w swojej pierwszej części ma charakter „losowy”, a w drugiej − „zdeterminowany”.
Dalej przedstawiono skrótowo poszczególne rodzaje sygnałów.
1.3. Sygnały deterministyczne
1.3.1. Parametry
Jak już było powiedziane sygnały deterministyczne („zdeterminowane”) przyjmują w dowolnej
chwili czasowej wartości rzeczywiste, określone przez znane zależności matematyczne. Z sygnałami tymi wiąże się wiele parametrów, które mają charakteryzować (różnicować) ich
właściwości. Definicje podstawowych parametrów sygnałów deterministycznych są podane
w tabeli 1-1. Wariancja sygnału jest miarą jego „rozrzutu” wokół wartości średniej. W zależności od wartości, przyjmowanych przez poszczególne parametry, sygnały te dzielą się na
odrębne klasy. Jednymi z najbardziej podstawowych są klasy sygnałów o ograniczonej energii
(0 < Ex < ∞) oraz o ograniczonej mocy średniej (0 < Px < ∞).
Na podstawie wartości różnych parametrów sygnałów można dokonywać ich automatycznego
rozpoznawania i klasyfikacji.
Momenty z tabeli 1-1 opisują specyficzne cechy sygnału, np. jego położenie względem środka
osi czasu, punkt skupienia w osi czasu oraz „szerokość” czasu trwania. Praktyczna interpretacja poszczególnych momentów jest następująca:
τ 2x moment bezwładności, charakteryzujący „rozkład kształtu” sygnału wokół środka osi
czasu,
1
tx
odcięta środka ciężkości sygnału, czyli punkt czasu, wokół którego sygnał jest skupiony,
t x2
t x2
σ 2x
średni kwadrat odciętej środka ciężkości sygnału,
promień bezwładności sygnału,
wariancja sygnału wokół t x1 , czyli miara „rozrzutu” sygnału wokół jego środka ciężkości.
Sygnały i ich parametry
5
a) ciągły czasu ciągłego x(t)
b) ciągły czasu dyskretnego x(n)
1
1
0,5
0,5
0
0
-0,5
-0,5
-1
0
0,1
0,2
0,3
0,4
t
-1
0
4
Czas [s]
c) dyskretny czasu ciągłego (skwantowany) xk(t)
1
0,5
0,5
0
0
-0,5
-0,5
0
0,1
0,2
0,3
12
14
n
d) dyskretny czasu dyskretnego (cyfrowy) xk(n)
1
-1
8
Numer próbki
0,4
t
-1
0
4
Czas [s]
8
12
16
n
400
t
Numer próbki
e) losowy x(t)
f) rzeczywisty x(t) (mowa)
0,2
0,5
0,1
0
0
-0,5
-0,1
-0,2
0
0,1
0,2
0,3
Czas [s]
0,4
t
0
100
200
300
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 wariancji.
Sygnały i ich parametry
6
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
Wartość średnia
sygnału w przedziale
Sygnał ciągły x(t)
1
x=
t 2 − t1
Sygnał dyskretny x(n)
t2
x=
∫ x(t )dt
t1
1
+τ
N
1
x(n )
∑
N →∞ 2 N + 1 n =− N
1
Wartość średnia całego
x = lim
∫ x (t )dt
sygnału
τ→∞ 2τ τ
Wartość średnia
sygnału okresowego
Średnia bieżąca
xt =
x = lim
t0 +T
1
xT =
T
∫ x(t )dt , T − okres
t0
t0 + T
1
2T
Ex =
1
N
xN =
∫
xn =
x (τ )dτ , T − stała
t −T
+∞
Energia sygnału
n
2
1
x(n )
∑
n2 − n1 + 1 n = n
−∞
Moc średnia sygnału
w przedziale
Px (t1 , t2 ) = x 2 =
Moc średnia całego
sygnału (wartość
średniokwadratowa)
Px = x 2 = lim
Moc średnia sygnału
okresowego
PxT
Wartość skuteczna
sygnału
1
t2 − t1
t2
2
∫ x (t )dt
1
=x =
T
t0 +T
1
N
1
∑ x 2 (n )
N →∞ 2 N + 1 n =− N
PxN = x 2 =
t0
1 τ
2
∫ [ x (t ) − x ] dt
τ→∞ 2τ −τ
σ2x = lim
Wariancja sygnału w
przedziale (wokół x )
σ2x =
1
N
n 0 + ( N −1)
∑
x 2 (n ) , N − okres
n = n0
t
1 2
[ x(t ) − x ] 2 dt
t2 − t1 t∫
N
1
[ x (n) − x ] 2
∑
N →∞ 2 N + 1 n =− N
σ 2x = lim
σ2x =
1
+∞
k xm =
m
∫ t x(t )dt
−∞
+∞
(
)
m
Momenty centralne
δmx = ∫ t − τx1 x (t ) dt
rzędu m, m = 1, 2, 3, ...
−∞
Unormowane momenty
σmx =
centralne rzędu m
n
2
1
x 2 (n)
∑
n2 − n1 + 1 n = n
Px (n1 , n2 ) = x 2 =
Px
Wariancja całego
sygnału (wokół x )
Unormowane momenty m
tx =
zwykłe rzędu m
n = −∞
Px = x 2 = lim
∫ x (t )dt , T − okres
2
Px
Momenty zwykłe
τm =
rzędu m, m = 1, 2, 3, ... x
∞
∑ x 2 (n)
t1
τ
1
2
∫ x (t )dt
τ→∞ 2τ −τ
2
∑ x(n) , N − okres
n = n0
n+ N
1
∑ x(k ) , N − stała
2 N + 1 k =n − N
Ex =
2
∫ x (t )dt
n 0 + ( N −1)
+∞
+∞
−∞
+∞
−∞
m
∫ t x(t )dt
∫
−∞
(t − tx1 )
δmx =
n xm =
∫ x(t )dt
m
+∞
x (t )dt
∫
−∞
m
x (t )dt σ x =
n2
1
[ x (n) − x ] 2
∑
n2 − n1 + 1 n = n1
∞
∑ n m x(n)
n = −∞
∞
n − k x1 )
(
n =−∞
∑
m
∞
∑ n m x(n )
n = −∞
∞
n − n x1 )
(
n =−∞
∑
x(n)
∞
∑ x( n)
n = −∞
m
x(n)
∞
∑
n =−∞
x(n )
Sygnały i ich parametry
7
Tab. 1-1. cd.
Odcięta środka
ciężkości kwadratu
sygnału
t x12 =
Wariancja kwadratu
σ 2x 2 =
sygnału wokół
t x12
Szerokość
średniokwadratowa
σ 2x 2
+∞
+∞
−∞
−∞
2
∫ tx (t )dt
+∞
∫
−∞
( t − tx1 )
2
2
n x12 =
2
∫ x (t )dt
x 2 (t )dt
+∞
∫
−∞
x 2 (t )dt
σ2x 2 =
∞
∞
n = −∞
n = −∞
∑ nx 2 (n) ∑ x 2 (n)
∞
( n − nx1 )
n =−∞
∑
2
2
x 2 (n )
∞
∑
x 2 (n)
n =−∞
σ 2x 2
1.3.2. Przykłady
W tabeli 1-2 zestawiono równania i przebiegi czasowe przykładowych ciągłych sygnałów deterministycznych 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 wygenerowanie 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ą dzielone 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 oznacza 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 dowolnych 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 oczekiwaniom 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)]
Sygnały i ich parametry
8
Tab. 1-2. Definicje wybranych ciągłych sygnałów deterministycznych
Równania i przebiegi czasowe przykładowych sygnałów impulsowych o ograniczonej energii
Impuls prostokątny
0
dla

x (t ) = Π (t ) = 0.5 dla
1
dla

x(t)
1
t > 0.5
t = 0.5
t
t < 0.5
-0.5
0
Impuls trójkątny
x(t)
1
 0 dla t > 1
x (t ) = Λ (t ) = 
1 − t dla t ≤ 1
t
-1
0
Impuls kosinusoidalny (ω0 = 2πf0, f0 = 1/T)
t
-T/4
 t −T /2
x (t ) = e−αt Π 
 , α>0
 T 
1
x(t)
1
 t 
x (t ) = cos ω0t ⋅ Π 

 T /2
Impuls wykładniczy
0.5
0
T/4
x(t)
1
t
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ówny 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 sinusoidalnych 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
Tab. 1-2. cd.
Równania i przebiegi czasowe przykładowych sygnałów o nieskończonym czasie trwania
i ograniczonej energii
Wykładniczy malejący
x(t)
A
 Ae − αt dla t ≥ 0
, α>0
x(t ) = 
dla t < 0
0
t
0
Sinusoidalny malejący wykładniczo
x(t)
 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 ) = 
dla t = 0
1

miejsca zerowe dla t = kπ / ω0 , k = ..., −1, 0, 1,...
t
−4π/ω −2π/ω
Gaussowski
0
2π/ω0 4π/ω0
x(t)
x (t ) = e
−πt 2
1
t
Sygnały zmodulowane (patrz tabela 1-2) to sygnały harmoniczne postaci A(t)cos(ϕ(t)) =
= A(t)cos[ω0t+φ0+φ(t)] = A(t)cos[2πf0t+φ0+φ(t)], w których amplituda A i (lub) kąt ϕ charakteryzują się określoną zmiennością w czasie. W przypadku modulacji amplitudy mamy
A(t) = A[1+kam(t)], gdzie ka oznacza głębokość modulacji (0<ka≤1), m(t) jest zaś funkcją
modulującą (|m(t)|≤1). Modulację kąta ϕ(t) dzieli się na modulację częstotliwości (wówczas
φ(t ) = k f ∫ m (t )dt ) i fazy (wtedy φ(t) = kφm(t)). Dla szczególnych postaci funkcji modulującej
m(t) otrzymujemy modulację liniową i sinusoidalną. Im większe są wartości parametrów ka, kf
i kφ, tym większa jest głębokość modulacji. Pulsację ω0, równą 2πf0 (gdzie f0 to częstotliwość
wyrażona w hercach), nazywa się pulsacją nośną. W sygnałach z modulacją kąta c h w i l o w a
w a r t o ś ć p u l s a c j i ( c z ę s t o t l i w o ś c i ) dana jest następującym wzorem:
ω(t ) =
dϕ(t )
1 dϕ(t )
, f (t ) =
2π dt
dt
(1.1)
Sygnały i ich parametry
10
Tab. 1-2. cd.
Równania i przebiegi czasowe przykładowych sygnałów nieokresowych o ograniczonej mocy średniej
x(t)
Skok jednostkowy
1 dla t ≥ 0
x(t ) = 1(t ) = 
0 dla t < 0
Wykładniczy narastający
(
)
x(t ) = 1 − e −αt 1(t ) , α > 0
1
t
0
x(t)
1
t
0
x(t)
Funkcja znaku sgn(t)
 1 dla t > 0

sgn(t ) =  0 dla t = 0
− 1 dla t < 0

1
t
0
−1
x(t)
Całka z Sinc(t):
t
Si(t ) = ∫ Sinc( τ)dτ
t
0
0
2π/ω0
Dla modulacji fazy i częstotliwości odpowiednio otrzymujemy z niego (patrz tabela 1-2):
ωφ (t ) = ω0 + k φ
dm(t )
,
dt
ω f (t ) = ω0 + k f m(t )
(1.2) (1.3)
Jeśli zadajemy ωf(t), to wówczas znajdujemy kąt fazowy sygnału Acos(ϕ(t)) ze wzoru:
ϕ(t ) = ∫ d ϕ( t ) = ∫ ω f (t ) dt = ∫ [ω0 + k f m(t )] dt = ω0t + k f ∫ m(t ) dt + φ0
Przykład. Przykładowe przebiegi czasowe sygnałów deterministycznych. Na rysunku 1.3 pokazane są sygnały deterministyczne, będące modyfikacjami sygnałów sinusoidalnych. Kolejno
poziomo mamy (rysunki 1.3a do 1.3i):
• zwykły sygnał sinusoidalny x1(t) = sin(2π5t),
• sygnały okresowe będące sumą dwóch sygnałów sinusoidalnych:
x2(t) = sin(2π5t)+sin(2π10t) oraz x3(t) = sin(2π5t)+0,2sin(2π25t);
• sygnał prawie okresowy będący sumą dwóch sygnałów sinusoidalnych o niewymiernym
stosunku częstotliwości: x4(t) = sin(2π5t)+sin(2π(π)t);
• dwa sygnały sinusoidalne z modulacją amplitudy:
x5(t) = exp(−20(t−0,5)2)⋅sin(2π10t) oraz x6(t) = exp(−5t)⋅sin(2π20t);
Sygnały i ich parametry
11
Tab. 1-2. cd.
Równania i przebiegi czasowe przykładowych sygnałów okresowych
Sygnał sinusoidalny (ω0 = 2πf0, f0 = 1/T)
x(t)
1
x (t ) = A sin(ω0t )
t
0
T=2π/ω0
Fala prostokątna bipolarna
x(t)
A
 A dla t ∈ ( kT , kT + τ )

x(t ) = − A dla t ∈ ( kT + τ, kT + T )
 0 dla t = k ⋅ T , kT + τ

t
−A
τ
0
Fala prostokątna unipolarna
T
x(t)
 A dla t ∈ ( kT − τ / 2, kT + τ / 2 )

x(t ) =  A / 2 dla t = kT ± τ / 2

0 dla t pozostałych

A
t
−τ
0
τ
T
Równania i przebiegi czasowe przykładowych sygnałów zmodulowanych
• Modulacja amplitudy
x(t)
x (t ) = A[1 + ka ⋅ m(t )] ⋅ cos ( ω0t ) , 0 < ka ≤ 1
t
• Modulacja kąta (ogólnie)
x (t ) = A cos[ϕ(t )]
− modulacja fazy
x(t)
x (t ) = A cos  ω0t + φ0 + kφ ⋅ m(t ) 
t
− modulacja częstotliwości
x (t ) = A cos  ω0t + φ0 + k f ⋅ ∫ m(t )dt 
------------------------------------------------------------− liniowa modulacja fazy / częstotliwości
m(t ) = αt ;
1
∫ m(t )dt = 2αt
2
− sinusoidalna modulacja fazy / częstotliwości
m(t ) = cos(ωm t ) ;
1
∫ m(t )dt = ωm sin(ωm t )
x(t)
t
Sygnały i ich parametry
12
a)
2
1.2
0.8
0.4
0
-0.4
-0.8
-1.2
1
b)
-1
-2
0
c)
0.4
0.6
0.8
Czas [s]
1
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
Czas [s]
2
1
d)
0
-1
-2
0.2
0.4
0.6
0.8
Czas [s]
1
1.2
0.8
0.4
0
-0.4
-0.8
-1.2
0.2
0.4
0.6
0.8
Czas [s]
1
1.2
0.8
0.4
0
-0.4
-0.8
-1.2
0.2
0.4
0.6
0.8
Czas [s]
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
Czas [s]
1.2
0.8
0.4
0
-0.4
-0.8
-1.2
h)
0
Czas [s]
1.2
0.8
0.4
0
-0.4
-0.8
-1.2
f)
0
g)
0.2
1.5
1
0.5
0
-0.5
-1
-1.5
0
e)
0
1
Czas [s]
1.2
0.8
i)
0.4
0
-0.4
-5
-4
-3
-2
-1
0
Czas [s]
1
2
3
4
5
Rys. 1.3. Przykłady sygnałów deterministycznych, będących zmodyfikowanymi sygnałami sinusoidalnymi:
a) sin(2π5t), b) sin(2π5t)+sin(2π10t), c) sin(2π5t)+0,2sin(2π25t), d) sin(2π5t)+sin(2π(π)t), e) exp(−20⋅
⋅(t−0,5)2)⋅sin(2π10t), f) exp(−5t)⋅sin(2π20t), g) sin(2π(0,5⋅20t2)), h) sin(2π(10t+10sin(2π2t)/(2π2))),
i) sin(2πt) / (2πt). UWAGA: b), c) − okresowa suma dwóch sinusoid, d) prawie okresowa suma dwóch
sinusoid, e), f) − modulacja amplitudy, g), h) − modulacja częstotliwości
Sygnały i ich parametry
13
1
1
0.5
0.5
0
0
-2
-1
0
1
2
-2
-1
Czas [s]
0
1
2
Czas [s]
1
0.5
0.4
0.3
0.2
0.1
0
-0.1
0.8
0.6
0.4
0.2
0
-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.5
0
-0.5
0
-1
0
2
4
6
8
10
0
Czas [s]
2
4
6
8
10
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)
• dwa sygnały sinusoidalne z modulacją częstotliwości:
x7(t) = sin(2π(0,5⋅20t2)) oraz x8(t) = sin(2π(10t+10sin(2π2t)/( 2π2)));
• sygnał impulsowy o ograniczonej energii typu sin(x)/x: x9(t) = sin(2πt)/ (2πt).
Z kolei na rysunku 1.4 przedstawione są 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).
1.3.3. Sygnały zespolone
Sygnały deterministyczne (choć nie tylko one) mogą także przyjmować wartości zespolone
i mieć następującą postać:
z (t ) = x r (t ) + jxu (t )
(1.4)
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:
Ex =
∞
∫
−∞
2
x ( t ) dt , Px =
t
1 2
1
2
x (t ) dt , Px =
∫
t2 − t1 t
T
1
t0 +T
∫
t0
2
x(t ) dt
(1.5)
Sygnały i ich parametry
14
Najbardziej znanymi zdeterminowanymi sygnałami zespolonymi są:
• zespolony przebieg wykładniczy:
z ( t ) = e jωt = cos(ωt ) + j sin(ωt )
(1.6)
• tzw. sygnał analityczny:
z (t ) = xr ( t ) + jxu ( t ),
xu (t ) =
1 ∞
1
xr ( τ)
dτ
∫
t−τ
π −∞
(1.7)
gdzie xu(t) jest transformatą Hilberta sygnału xr(t).
1.3.4. Rozkład sygnałów na składowe
Sygnały deterministyczne można rozkładać na następujące składowe:
• rzeczywistą i urojoną:
xr (t ) = Re ( z (t ) ) =
1
z ( t ) + z* ( t )  ,

2
xu (t ) = Im ( z (t ) ) =
1
z (t ) − z * (t ) 

2
(1.8)
• stałą (wartość średnia x ) i zmienną ( ~
x (t ) = x (t ) − x ),
• parzystą i nieparzystą:
x p (t ) =
1
[x(t ) + x ( −t )] ,
2
xn (t ) =
1
[x(t ) − x( −t )]
2
(1.9)
Przykład. Na rysunku 1.5 przedstawiono rozkład sygnału x (t ) = e −t ⋅ 1(t ) na składową parzystą
xp(t) i nieparzystą xn(t).
a) sygnał
b) składowa parzysta
c) składowa nieparzysta
1
1
1
0.5
0.5
0.5
0
0
0
-0.5
-0.5
-6 -4 -2 0
Czas [s]
2
4
6
-0.5
-6 -4 -2 0
Czas [s]
2
4
6
-6 -4 -2 0
Czas [s]
2
4
6
Rys. 1.5. Rozkład sygnału x(t) = exp(−t) (a) na składową parzystą xp(t) (b) i nieparzystą xn(t) (c)
1.3.5. Funkcja korelacji własnej i wzajemnej
Obecnie, chwilowo, zawęzimy nasze rozważania do klasy s y g n a ł ó w o o g r a n i c z o n e j
e n e r g i i . Funkcja korelacji wzajemnej pomiędzy determistycznymi sygnałami x(t) i y(t) zdefiniowana jest w tej klasie jako:
Rxy ( τ) =
+∞
∫
x (t ) y * (t − τ) dt
−∞
funkcja zaś korelacji własnej sygnału x(t) dana jest wzorem:
(1.10)
Sygnały i ich parametry
Rxx ( τ) = Rx ( τ) =
15
+∞
∫
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 sygnał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ść maksymalną; 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 wyznaczania 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 echografii 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 ( − τ)
+∞
W2.
Rxx ( τ) ≤ Rxx (0) , Rxx (0) =
∫ x (t )
2
dt
(symetria)
(1.12a)
(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
Rxy ( τ) =
T
1
1
x (t ) y * (t − τ)dt , Rxx ( τ) = ∫ x (t ) x * (t − τ)dt
∫
T 0
T 0
(1.13)
dla klasy zaś s y g n a ł ó w o o g r a n i c z o n e j m o c y ś r e d n i e j jako
1
T → ∞ 2T
R xy ( τ) = lim
T
1
T → ∞ 2T
*
∫ x(t ) y (t − τ)dt, Rxx (τ) = lim
−T
T
∫ x(t ) x
*
(t − τ)dt
(1.14)
−T
Dla sygnałów dyskretnych o ograniczonej energii definicja funkcji korelacji własnej i wzajemnej jest następująca:
Sygnały i ich parametry
16
Rxy ( k ) =
∞
∑ x(n ) y* (n − k ),
n = −∞
Rxx ( k ) = Rx ( k ) =
∞
∑ x( n) x* (n − k )
(1.15)
n = −∞
Natomiast dla sygnałów okresowych o okresie N mamy:
1
N
Rxy ( k ) =
N −1
∑ x(n ) y* (n − k ), Rxx (k ) = Rx (k ) =
n =0
1
N
N −1
∑ x( n) x* (n − k )
(1.16)
n =0
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):
Rxy (k ) =
N −1− |k |
∑
x (n) y * (n − k )
(1.17)
n =0
Rxy (k ) =
1
N−|k |
Rxy (k ) =
1
N
N −1− |k |
N −1− |k |
∑
∑
x( n) y * ( n − k )
(1.18)
n =0
x (n) y * (n − k )
(1.19)
n =0
W zależności od wartości przesunięcia k liczba sumowanych, niezerowych elementów jest
różna, ponieważ analizujemy sygnały o skończonej długości. Wraz ze wzrostem |k| liczba
dodawanych składników jest coraz mniejsza, maleje więc także wartość Rxy(k), dana wzorem
(1.17). Dlatego wprowadza się normowanie tej wartości przez aktualną liczbę składników
występujących w sumie (1.18). Możliwe jest także dzielenie funkcji (1.17) przez długość
korelowanych sygnałów i otrzymanie (1.19). Korelację liczoną z wzoru (1.17) nazywa się
nieunormowaną, te wyznaczane zaś ze wzorów (1.18) i (1.19) − unormowanymi. Estymator
funkcji korelacji (1.18) jest nieobciążony, a estymator (1.19) − obciążony. Dalsze szczegóły
dotyczące tych estymatorów przedstawiono w kolejnym podrozdziale, poświęconym sygnałom
losowym.
Z definicji funkcji autokorelacji wynika, że funkcja ta dla sumy kilku sygnałów sinusoidalnych
o różnych częstotliwościach fk i dowolnych fazach φk:
M
x (t ) =
∑ Ak sin(2πf k t + φk ) ,
k =1
x (n) =
M

k =1

f
∑ Ak sin 2π f k
pr

n + φk 


(1.20a)
jest równa (wyprowadzenie pozostawiamy Czytelnikowi jako „zadanie domowe”)
R ( τ) =
M


A2
f
Ak2
cos(2 πf k τ) , R( m) = ∑ k cos 2π k m 

f pr 
k =1 2
k =1 2

M
∑
(1.20b)
Przykład. Na rysunkach 1.6a − 1.6d są przedstawione następujące sygnały sinusoidalne
x1(t) = sin(2π5t) i x2(t) = sin(2π5t)+0,5sin(2π10t)+0,25sin(2π30t) oraz ich funkcje autokorelacji Rx(τ), wyliczone ze wzoru (1.19) po uprzedniej dyskretyzacji sygnałów (∆t = 1 ms) i uwzględnieniu tylko jego N = 1000 próbek. Jak widać funkcje te są symetryczne względem
punktu τ = 0 oraz okresowe. W prosty sposób można z nich „odczytać” wartość okresu analizowanych sygnałów. Ponieważ funkcje te wyznaczono na podstawie skończonej liczby próbek
Sygnały i ich parametry
17
a) sygnał x1(t)
b) sygnał x2(t)
2
1.2
0.8
0.4
0
-0.4
-0.8
-1.2
1
0
-1
-2
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
Czas t [s]
0.6
0.8
1
Czas t [s]
c) funkcja autokorelacji Rx1(τ)
d) funkcja autokorelacji Rx2(τ)
0.5
1
0.5
0
0
-0.5
-0.5
-1
-0.8
-0.4
0
0.4
0.8
-0.8
-0.4
Przesunięcie τ [s]
0
0.4
0.8
Przesunięcie τ [s]
e) widmo Fouriera 2|X1(f)|
f) widmo Fouriera 2|X2(f)|
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
0
10
20
30
40
50
Częstotliwość f [Hz]
0
10
20
30
40
50
Częstotliwość f [Hz]
Rys. 1.6. Przykład analizy sygnałów deterministycznych: a), b) sygnały x1(t)= sin(2π5t) i x2(t)= sin(2π5t)+
+0,5sin(2π10t)+0,25sin(2π30t), c), d) ich funkcje autokorelacji Rxx(τ) (1.18) oraz e), f) moduły |.| częstotliwościowych widm amplitudowych Fouriera 2X(f) (1.27b)
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.
1.3.6. Splot sygnałów
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)
Sygnały i ich parametry
18
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) =
∞
∞
k = −∞
k = −∞
∑ x( k )h(n − k ) = ∑ h( k ) x (n − k )
y ( n ) = x( n ) ⊗ h (n ) = h(n ) ⊗ x(n )
(1.22a)
(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 pierwszym 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 transmisyjnego. 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 powoduje, ż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 sygnale 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, przedstawiającym moduły widm sygnałów X(f), H(f) i Y(f) w rozpatrywanym przypadku. Aby „postawić kropkę nad i” konieczne jest zdefiniowanie transformacji Fouriera i związanych z nią
widm częstotliwościowych sygnałów.
-2 -1 0
y0(t)
-2 -1 0
h(-τ)
1
1
1
3
2
3
t [s]
2
τ [s]
h(τ)
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
-2 -1 0
y0.5(t)
-2 -1 0
h(0.5-τ)
1.5
x(τ)
1
0.5
0
τ [s]
-0.5
2 3
-2 -1 0
1
1
1
3
2
3
t [s]
2
τ [s]
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
-2 -1 0
y1(t)
-2 -1 0
h(1-τ)
1.5
x(τ)
1
0.5
0
τ [s]
-0.5
2 3
-2 -1 0
1
1
1
3
2
3
t [s]
2
τ [s]
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
-2 -1 0
y2(t)
-2 -1 0
h(2-τ)
1.5
x(τ)
1
0.5
0
τ [s]
-0.5
2 3
-2 -1 0
1
1
1
3
2
3
t [s]
2
τ [s]
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
-2 -1 0
y3(t)
-2 -1 0
h(3-τ)
1.5
x(τ)
1
0.5
0
τ [s]
-0.5
2 3
-2 -1 0
1
1
1
3
3
3
t [s]
2
2
τ [s]
2
τ [s]
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
0.5
0
-0.5
1.5
1
0.5
0
-0.5
1.5
x(τ)
1
0.5
0
-0.5
-2 -1 0
-8 -4 0
y0(n)
-8 -4 0
h(-k)
-8 -4 0
x(k)
4
4
4
8 12
n
8 12
k
h(k)
8 12
k
6
4
2
0
-2
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
-8 -4 0
y2(n)
-8 -4 0
h(2-k)
-8 -4 0
x(k)
4
4
4
8 12
n
8 12
k
8 12
k
6
4
2
0
-2
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
-8 -4 0
y4(n)
-8 -4 0
h(4-k)
-8 -4 0
x(k)
4
4
4
8 12
n
8 12
k
8 12
k
6
4
2
0
-2
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
-8 -4 0
y8(n)
-8 -4 0
h(8-k)
-8 -4 0
x(k)
4
4
4
8 12
n
8 12
k
8 12
k
6
4
2
0
-2
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
-8 -4 0
y12(n)
-8 -4 0
h(12-k)
-8 -4 0
x(k)
4
4
4
8 12
n
8 12
k
8 12
k
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)
6
4
2
0
-2
1.5
1
0.5
0
-0.5
1.5
1
0.5
0
-0.5
1
-2 -1 0
-2 -1 0
1
h(τ)
h(-τ)
y0(t)
1
-2 -1 0
x(τ)
3
3
6
4
2
0
-2
-2 -1 0
h(0.5-τ)
-2 -1 0
x(τ)
1.5 y (t)
1 0.5
0.5
0
-0.5
-1
t [s] -1.5
2 3
-2 -1 0
2
τ [s]
2
1.5
1
0.5
0
-0.5
-1
-1.5
1
1
1
3
3
6
4
2
0
-2
-2 -1 0
h(1-τ)
-2 -1 0
x(τ)
1.5 y (t)
1 1
0.5
0
-0.5
t [s] -1
-1.5
2 3
-2 -1 0
2
τ [s]
2
1.5
1
0.5
0
-0.5
-1
-1.5
1
1
1
3
3
6
4
2
0
-2
-2 -1 0
h(2-τ)
-2 -1 0
x(τ)
1.5 y (t)
1 2
0.5
0
-0.5
t [s] -1
-1.5
2 3
-2 -1 0
2
τ [s]
2
1.5
1
0.5
0
-0.5
-1
-1.5
1
1
1
3
3
6
4
2
0
-2
-2 -1 0
h(3-τ)
-2 -1 0
x(τ)
1.5 y (t)
1 3
0.5
0
-0.5
t [s] -1
-1.5
2 3
-2 -1 0
2
τ [s]
2
1.5
1
0.5
0
-0.5
-1
-1.5
1
1
1
3
2
3
t [s]
2
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)
1.5
1
0.5
0
-0.5
-1
-1.5
6
4
2
0
-2
1.5
1
0.5
0
-0.5
-1
-1.5
Sygnały i ich parametry
22
1
1
|H(f)|
0.8
|Y(f)|
0.8
|X(f)|
0.6
0.6
0.4
0.4
0.2
0.2
0
0
0
2
4
6
8
10 12 14 16
0
Częstotliwość f [Hz]
2
4
6
8
10 12 14 16
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)
1.3.7. Transformacja Fouriera
Transformacja Fouriera jest podstawowym narzędziem analizy częstotliwościowej sygnałów
i będzie szczegółowo omawiana w następnych rozdziałach. Pomimo tego poświęcimy jej obecnie trochę miejsca, mając na uwadze kompletność prowadzonych w tym miejscu rozważań,
dotyczących klasycznych metod opisu i analizy sygnałów.
Prosta i odwrotna transformacja Fouriera są zdefiniowane następującą parą równań (milcząco
obecnie zakładamy istnienie poniższych całek dla transformowanego sygnału):
∞
X( f ) =
∫
x (t )e − j 2 π f t dt ,
−∞
∞
x(t ) =
∫ X ( f )e
j 2π f t
(1.24a, b)
df
−∞
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ęstotliwoś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 korelacji (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 )
X( f ) =
( Re( X ( f ) )2 + ( Im( X ( f ) )2 ,
)X ( f ) = arctg
(1.25a)
Im( X ( f )
Re( X ( f )
(1.25b)
W wyniku prostej transformacji Fouriera dokonujemy dekompozycji (rozłożenia) sygnału na
jego składowe o różnych częstotliwościach. Naturalnym więc jest, że z widma Fouriera sygnału można zsyntezować oryginalny sygnał za pomocą odwrotnej transformacji Fouriera − należy wówczas zsumować (scałkować) wszystkie sygnały harmoniczne ej2πft wzięte z wyznaczonymi wcześniej „wagami” X(f) (1.24b).
Sygnały okresowe o okresie T przedstawia się za pomocą szeregu Fouriera:
Sygnały i ich parametry
X ( kf 0 ) =
23
1T
− j 2 π ( kf 0 ) t
dt ,
∫ x (t )e
T0
x (t ) =
∞
∑
k =−∞
X ( kf 0 )e j 2 π( kf0 )t
(1.26)
ponieważ w tym przypadku w analizowanym sygnale występuje wyłącznie podstawowa
składowa harmoniczna o częstotliwości f0 = 1/T oraz jej wielokrotności.
Dla sygnałów dyskretnych x(n) para transformacji Fouriera (1.24) przyjmuje następującą
postać (−fpr/2 < f ≤ fpr/2):
X(f )=
+∞
∑
n =−∞
x ( n ∆t ) e
− j 2 π ( f / f pr ) n
, x ( n ∆t ) =
1
f pr
+ f pr / 2
∫
X ( f )e
j 2 π ( f / f pr ) n
df
(1.27a)
− f pr / 2
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
exp  − j 2π

f pr





f 
f
n  = exp  − j 2π
n  exp ( − j 2 πkn ) = exp  − j 2π
n



f pr 
f pr 



widmo X(f ) sygnału dyskretnego jest także okresowe i powtarza się co częstotliwość próbkowania 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):
X (kf 0 ) =
1
N
N −1
∑ x ( n ∆t ) e − j 2 π ( k / N ) n ,
n =0
x ( n ∆t ) =
N −1
∑
k =0
X ( kf 0 ) e j 2 π( k / N ) n
(1.27b)
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 odwrotnoś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).
Przykład. Na rysunkach 1.6e i 1.6f pokazane są przeskalowane, częstotliwościowe widma
Fouriera 2|X(f)| sygnałów sinusoidalnych z rysunków 1.6a i 1.6b, które wyliczono ze wzoru
(1.27b), po uprzedniej dyskretyzacji obu sygnałów z krokiem ∆t = 1 ms i przyjęciu N = 1000.
W tym przypadku f0 = 1/(N ∆t) = 1 Hz, w związku z czym obserwujemy w widmie „prążki” dla
k = 5; 10; 30 i mają one amplitudę 1; 0,5 i 0,25.
Sygnały i ich parametry
24
1.4. Sygnały losowe
Jak już było powiedziane w podrozdziale 1.2, dla sygnałów losowych (stochastycznych) x(t)
nie istnieje „przepis” matematyczny na wartości przyjmowane w kolejnych chwilach czasowych, tylko „przepis” na prawdopodobieństwo przyjęcia przez sygnał określonej wartości.
W teorii sygnałów losowych stosuje się pojęcia procesu (sygnału) losowego, jego konkretnych
realizacji czasowych oraz związanych z nimi zmiennych losowych. Po swoim wystąpieniu
konkretne realizacje czasowe procesu losowego są już sygnałami zdeterminowanymi. Ponieważ kluczowe jest tutaj pojęcie zmiennej losowej, od niego zaczniemy.
1.4.1. Zmienne losowe
Zmienna losowa x to zmienna przyjmująca wartości w sposób losowy (stochastyczny), ale
zgodnie ze z góry określonym prawdopodobieństwem. Dystrybuantą F(x0) zmiennej losowej
x jest nazywane prawdopodobieństwo przyjęcia przez nią wartości x mniejszej lub równej od
x0, tzn.
F ( x0 ) = Pr[ x ≤ x0 ]
(1.28)
Kiedy x0 → −∞, wówczas F(x0) → 0, a dla x0 → ∞ mamy F(x0) → 1. Jeżeli x0 przybiera
wartości ciągłe, to równoważnym do dystrybuanty opisem zmiennej losowej x jest jej funkcja
gęstości prawdopodobieństwa, definiowana jako pochodna dystrybuanty:
p ( x0 ) =
∂ F ( x0 )
∂ x0
(1.29)
Określa ona, jakie jest prawdopodobieństwo przyjęcia przez zmienną losową x wartości x0. Ponieważ zmienna losowa musi przyjąć jakąś wartość, prawdopodobieństwo przyjęcia dowolnej
wartości jest równe jedności:
∞
∫ p( x0 )dx0 = 1
(1.30)
−∞
Z definicji funkcji gęstości prawdopodobieństwa wynika, że:
F ( x0 ) =
x0
∫ p ( ζ ) dζ
(1.31)
−∞
Dla zmiennych losowych przyjmujących wartości dyskretne definiuje się masę prawdopodobieństwa:
p ( xk ) = Pr[ x = xk ] ,
∑ p ( xk ) = 1
(1.32)
k
Wartość oczekiwana zmiennej losowej x, przyjmującej wartości w zbiorze c i ą g ł y m , jest
określona zależnością:
+∞
x = E[ x ] =
∫ x0 p( x0 ) dx0
(1.33)
−∞
i jest to wartość, która jest przyjmowana przez zmienną losową z największym prawdopodo-
Sygnały i ich parametry
25
bieństwem (najbardziej „prawdopodobna”). Natomiast dla sygnałów o wartościach d y s k r e t n y c h mamy:
x = E [ x ] = ∑ xk p ( xk )
(1.34)
k
Z kolei wartości średniokwadratowe i wariancja σx2 zmiennej losowej x zdefiniowane są następująco:
E[ x 2 ] =
+∞
∫ x0 p( x0 ) dx0 ,
2
−∞
E[ x 2 ] = ∑ xk2 p( xk )
(1.35)
k
σ 2x = E [( x − x ) 2 ] = E[ x 2 ] − x 2
(1.36)
Funkcja korelacji wzajemnej dwóch zmiennych losowych x i y jest zdefiniowana jako:
+∞ +∞
R xy = E[ x y ] =
∫ ∫ xy p( xy ) dx dy
(1.37)
−∞ −∞
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 prawdopodobieństwa:
1) normalnym: p(x0) jest funkcją Gaussa o określonej wartości średniej x i wariancji σ2:
p ( x0 ) =
 ( x − x )2 
exp  − 0 2 
2σ
2πσ 2


1
(1.38)
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

p ( x0 ) =  b − a
 0
dla a ≤ x0 ≤ b
(1.39)
dla pozostałych x0
Dla rozkładu normalnego o w a r t o ś c i ś r e d n i e j r ó w n e j z e r o i w a r i a n c j i σ 2
r ó w n e j 1 , prawdopodobieństwo przyjęcia przez zmienną losową wartości z przedziału
[−1, 1] jest równe 0,682, wartości z przedziału [−2, 2] − 0,954, wartości zaś z przedziału
[−3, 3] − 0,997.
Przykład. Na rysunku 1.11 przedstawiono N = 1000 wartości dwóch dyskretnych zmiennych
losowych, uzyskanych z generatorów liczb pseudolosowych o rozkładzie normalnym i równomiernym (rys. 1.a i 1b) oraz teoretyczny kształt ich funkcji charakterystycznych: dystrybuant
(rys. 1c i 1d) i funkcji gęstości prawdopodobieństwa (rys. 1e i 1f). Otrzymane wartości potraktowano jak próbki ciągłej zmiennej losowej (sygnału losowego), zdyskretyzowanej w czasie
z krokiem ∆t = 1 ms. Kształt funkcji charakterystycznych odpowiada przypadkowi nieskończonego czasu obserwacji (nieskończonej liczbie obserwowanych wartości).
Sygnały i ich parametry
26
a) szum „gaussowski” x(t)
b) szum „równomierny” x(t)
1
3
2
1
0
-1
-2
-3
0.5
0
-0.5
-1
0
0.2
0.4
0.6
0.8
1
0
0.2
Czas t [s]
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
0.6
0.4
0.2
x
0
-4
-2
0
0.8
1
c) dystrybuanta szumu „równomiernego”
F(x)
0.8
0.6
Czas t [s]
c) dystrybuanta szumu „gaussowskiego”
1
0.4
2
4
e) f.g.p. szumu „gaussowskiego”
0.4
p(x)
0.3
F(x)
x
-2
-1
0
1
2
f) f.g.p. szumu „równomiernego”
0.6
p(x)
0.4
0.2
0.2
0.1
0
x
0
-4
-2
0
2
4
x
-2
-1
0
1
2
Rys. 1.11. Przykłady fragmentów sygnałów losowych o rozkładzie normalnym (a) i równomiernym (b) oraz
ich dystrybuanty (c, d) i funkcje gęstości prawdopodobieństwa (e, f)
1.4.2. Procesy losowe, stacjonarność, ergodyczność
Sygnały losowe związane są z tzw. procesami losowymi. Obserwowane sygnały są konkretnymi realizacjami („zapisami”, „próbami”) tych procesów. Aby określić rodzaj procesu losowego X, należy zebrać wiele jego realizacji, czyli sygnałów xk(t), k = 1, 2, 3,... Zbiór tych
realizacji określa właściwości generującego je procesu. Aby poznać te właściwości, należy
wyznaczyć i porównać podstawowe parametry statystyczne obserwowanych danych, uśrednionych po zbiorze wszystkich realizacji {xk(t), k = 1, 2, 3,...}, tzn. dla każdego t. Zakłada się, że
zbiór wszystkich wartości przyjmowanych przez proces X w chwili t w poszczególnych
realizacjach jest niezależną, dyskretną zmienną losową xt, mającą określoną dystrybuantę Ft(x)
i funkcję gęstości prawdopodobieństwa pt(x). Podstawowymi parametrami statystycznymi
zmiennej xt jest średnia x t i σ 2xt wariancja oraz współczynnik korelacji R xt xt + τ tej zmiennej
ze zmienną xt + τ , „oddaloną” od niej o czas τ. Procesem stacjonarnym w szerszym sensie jest
Sygnały i ich parametry
27
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
Rx t xt + τ = E[ xt xt + τ ] = const dla t = var
(1.40)
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):
1
x ( t0 ) =
T
t0 + T
∫ x(t )dt ,
Rx(t0 ) ( τ)
t0
1
=
T
t0 + T
∫ x(t ) x(t − τ)dt
(1.41)
t0
Przykład. Graficzny przykład podejścia do analizy sygnałów losowych jest przedstawiony na
rysunku 1.12. Przedstawione są na nim cztery realizacje x1(t), x2(t), x3(t), x4(t) procesu losowego X oraz zmienne losowe w trzech chwilach czasowych xt1, xt2, xt3. Proces jest stacjonarny,
jeśli parametry statystyczne zmiennych xt są takie same, niezależnie od chwili czasowej t,
xt1
xt2
τ
xt3
x4(t)
t
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 τ
Sygnały i ich parametry
28
a ergodyczny − kiedy jest on stacjonarny i parametry statystyczne każdej jego realizacji
czasowej są takie same jak wszystkich zmiennych losowych xt.
Dla dociekliwych. Oczywiście sygnały losowe są ciągłe i dyskretne. Zgodnie z twierdzeniem
Wolda każdy dyskretny sygnał (proces) losowy x(n), stacjonarny w szerokim sensie, może być
przedstawiony jako suma dwóch składowych: deterministycznej xd (n) oraz czysto losowej
xl (n):
x ( n ) = xd ( n ) + xl ( n )
(1.42)
Składowa deterministyczna jest idealnie (bez błędu) przewidywalna na podstawie nieskończonej przeszłości (historii) sygnału, tzn.
∞
xd ( n ) = − ∑ α k xd (n − k ) , α k − stałe predykcji.
(1.43)
k =1
Przykładem takiego sygnału może być suma sinusoidy o losowej fazie oraz szumu.
1.4.3. Funkcje korelacji i kowariancji, gęstość widmowa mocy
Funkcje korelacji R(.) i kowariancji C(.) definiuje się dla s t a c j o n a r n y c h sygnałów losowych x(t) i y(t) w następujący sposób:
sygnały ciągłe
sygnały dyskretne
Rxx ( τ) = E[ x (t ) x (t − τ)]
Rxx (m ) = E[ x (n ) x (n − m)]
Rxy ( τ) = E [ x(t ) y (t − τ)]
Rxy (m) = E[ x (n ) y ( n − m )]
C xx ( τ) = E[( x(t ) − xt )( x (t − τ) − xt − τ )]
C xx ( m) = E[( x( n ) − xn )( x (n − m) − xn − m )]
C xy ( τ) = E [( x(t ) − xt )( y (t − τ) − yt − τ )]
C xy (m ) = E [( x(n ) − xn )( y ( n − m ) − yn − m )]
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 −τ
dla sygnałów zaś stacjonarnych nie będącą funkcją czasu t, tylko „przesunięcia” τ:
(1.44a)
Sygnały i ich parametry
29
Rxy ( τ) = E[ x (t ) y (t − τ)] =
+∞ +∞
∫ ∫
−∞ −∞
(1.44b)
xt yt −τ p( xt yt −τ ) dxt dyt −τ
Przykładowo, obliczając Cxy(τ) należy najpierw wyznaczyć wartości oczekiwane xt i yt −τ
w chwilach czasowych t i t−τ dla obu zmiennych xt i yt−τ (czyli wartości „średnie” po zbiorach
realizacji w chwilach czasowych t i t−τ), a następnie odjąć je od obserwowanych zmiennych
losowych i obliczyć wartość oczekiwaną (po zbiorze realizacji) ich iloczynu. W tym celu
należy znać łączne prawdopodobieństwo p(xt yt−τ) wystąpienia określonej wartości iloczynu
xt yt−τ.
Do analizy częstotliwościowej sygnałów losowych stosuje się funkcję gęstości widmowej
mocy. Jest ona zdefiniowana jako transformacja Fouriera funkcji autokorelacji:
∞
Pxx ( f ) =
− j 2 πfτ
dτ ,
∫ Rxx (τ)e
Pxx ( f ) =
−∞
∞
∑ Rxx (m)e
− j 2 π ( f / f pr ) m
(1.45a)
m = −∞
W związku z powyższym, prawdziwe są „odwrotne” zależności:
Rxx ( τ) =
∞
j 2 πfτ
∫ Pxx ( f )e df ,
R xx (m ) =
−∞
1
f pr
f pr / 2
∫
Pxx ( f )e
j 2 π ( f / f pr ) m
df
(1.45b)
− f pr / 2
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:

1
Pxx ( f ) = lim E 
T → ∞  2T

T
∫ x ( t )e
−T
− j 2 πft
2
2
 1
 1

dt  = lim E 
X ( f )  = lim E 
X T ( f ) X T* ( f )
 T → ∞  2T T
 T → ∞  2T


(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:

2 π nf
−j
N
 1
f pr
Pxx ( f ) = lim E 
x ( n )e
∑
N →∞
2 N + 1 n =− N


 1

= lim E 
X N ( f ) X N* ( f )
N →∞  2N + 1

2

2
 1
E
XN ( f )  =
 = Nlim
→∞ 
2N + 1




(1.46b)
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.
Sygnały i ich parametry
30
Szum nazywa się białym, jeśli jego Pxx(f ) jest stałe i nie zależy od częstotliwości. Jeśli natomiast 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 wartość 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
R ( τ) = 
,
 0, τ ≠ 0
σ 2 , m = 0
R (m) = 
,
 0, m ≠ 0
Pxx ( f ) = σ 2
1.4.4. Estymatory parametrów i funkcji
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 wartość oczekiwana jest równa rzeczywistej wartości estymowanego parametru (tzn. jest najbardziej 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 granicy 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
Ts → 0 Ts
Pr [x ≤ x (t ) ≤ x + ∆x ] = lim
Jeśli dodatkowo szerokość przedziału wartości ∆x dąży do zera, to wówczas w granicy
uzyskuje się funkcję gęstości prawdopodobieństwa p(x) danego sygnału (procesu) losowego
x(t):
Pr[x ≤ x (t ) ≤ x + ∆x ]
p ( x ) = lim
∆x → 0
∆x
Sygnały dyskretne. Obecnie załóżmy, że mamy N próbek jednej realizacji dyskretnego sygnału
losowego x(n), n0 ≤ n ≤ n0+Ns−1. Prawdopodobieństwo przyjęcia przez ten fragment sygnału
wartości z przedziału (x, x+∆x) jest równe Nx/Ns, gdzie Nx jest liczbą próbek, których wartości
Sygnały i ich parametry
31
znajdują się w tym przedziale. W granicy dla Ns dążącego do nieskończoności otrzymujemy
prawdopodobieństwo przyjęcia przez całą realizację wartości z przedziału (x, x+∆x):
Pr [x ≤ x ( n ) ≤ x + ∆x ] = lim
N s →0
Nx
Ns
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):
p ( x ) = lim
∆x → 0
Pr[x ≤ x ( n ) ≤ x + ∆x ]
∆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 szerokoś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):
1
xˆ =
N
N
∑ xn
(1.47)
n =1
1
(1)
Rˆ xx
( m) =
N
(2)
Rˆ xx
( m) =
N −1− |m |
∑
x(n ) x ∗ (n − m)
(1.48a)
n =0
1
N−|m|
N −1− |m |
∑
x(n ) x ∗ (n − m)
(1.48b)
n =0
(1)
( 2)
Estymator Rˆ xx
( m) jest estymatorem obciążonym, Rˆ xx
(m) jest zaś estymatorem nieobciążo( 2)
(1)
nym. Jednak Rˆ xx
(m) charakteryzuje się większą wariancją niż Rˆ xx
( 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:
PˆN ( f ) =
N −1
∑ Rˆ xx (m) e
− j 2 π ( f / f pr ) m
(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-
Sygnały i ich parametry
32
lacji, tylko jego iloczyn z wybraną funkcją wagową w(n) (np. oknem Hanninga lub Hamminga), czyli transformuje się Rˆ xx (m ) w( m) :
PˆN ( f ) =
N −1
∑ w(m) Rˆ xx (m) e
− j 2 π ( f / f pr ) m
(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:
1
PˆM(i ) ( f ) =
Ew
M −1
∑x
(i )
(n ) w(n )e
n =0
− j 2 π ( f / f pr ) n
2
, Ew =
M −1
∑ w2 ( n )
(1.51)
n =0
Końcowy estymator funkcji gęstości widmowej mocy jest określony wzorem:
1 L −1
Pˆxxw ( f ) = ∑ PˆM(i ) ( f )
L i =0
(1.52)
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.
Przykład. Na rysunku 1.13 przedstawiono wyniki komputerowej analizy dwóch dyskretnych
sygnałów losowych, szumu o rozkładzie normalnym i równomiernym, tylko na podstawie ich
pojedynczych 1000-punktowych realizacji, pokazanych na rysunku 1.11a i 1.11b. Na rysunku
1.13 zaprezentowano następujące funkcje obu sygnałów: histogram, funkcję autokorelacji,
widmo amplitudowe Fouriera oraz estymatę funkcji gęstości widmowej mocy. Jak widać tylko
kształt histogramów rozróżnia je w sposób wyraźny: rozpoznajemy w nich bowiem kształt
zbliżony do funkcji Gaussa (rys. 1.9a) oraz funkcji prostokątnej (rys.1.9b). Ze względu na małą
liczbę analizowanych próbek, obserwowane rozkłady nie mają dużej wartości statystycznej
i znacznie odbiegają od zależności teoretycznych. Z kształtu funkcji autokorelacji obu przebiegów losowych wynika, że oba sygnały są dobrze skorelowane („same ze sobą”) tylko dla
przesunięcia równego zero, tzn. że ich kolejne próbki nie są ze sobą skorelowane
(przypomnijmy analogię do rzutu kostką do gry: wartości uzyskane w kolejnych rzutach nie
zależą od siebie). Natomiast widmo amplitudowe Fouriera wskazuje na obecność „wielu”
częstotliwości w całym obserwowanym zakresie pasma częstotliwościowego. Jednak wysokość
poszczególnych prążków widma nie jest jednakowa (nawet przy wzroście liczby próbek, które
posłużyły do jego wyznaczenia), co powoduje, że najwyższe „prążki” mogą być mylnie
interpretowane jako sygnały sinusoidalne, „zanurzone” w szumie. Aby uniknąć takiej pomyłki,
dzieli się obserwowany sygnał na krótsze fragmenty, wyznacza się widmo amplitudowe dla
każdego z nich, a następnie uśrednia się i normuje kwadraty modułów tych widm, otrzymując
w ten sposób estymatę funkcji gęstości widmowej mocy sygnału losowego. Chociaż w każdym
widmie amplitudowym wartości maksymalne i minimalne występują dla różnych wartości
Sygnały i ich parametry
33
a) histogram szumu „gaussowskiego” x1(t)
35
30
25
20
15
10
5
0
b) histogram szumu „równomiernego” x2(t)
20
hist(x)
16
hist(x)
12
8
4
x
-4
-2
0
2
x
0
4
-1
-0.5
0
0.5
1
c) estymata funkcji autokorelacji Rx1(τ)
d) estymata funkcji autokorelacji Rx2(τ)
1
0.75
0.5
0.25
0
-0.25
-0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
-1
-0.5
0
0.5
Przesunięcie τ [s]
1
-1
-0.5
x
0
0.5
1
Przesunięcie τ [s]
e) widmo Fouriera 2|X1(f)|
f) widmo Fouriera 2|X2(f)|
0.16
0.12
0.12
0.08
0.08
0.04
0.04
0
0
0
100
200
300
400
500
0
Częstotliwość f [Hz]
100
200
300
400
500
Częstotliwość f [Hz]
g) estymata gęstości widmowej mocyPx1(f)
h) estymata gęstości widmowej mocyPx2(f)
1.4
0.6
1.2
0.5
1
0.4
0.8
0.3
0.6
0.2
0.4
0.1
0
100
200
300
Częstotliwość f [Hz]
400
500
0
100
200
300
400
500
Częstotliwość [Hz]
Rys. 1.13. Przykładowe wyniki analizy sygnałów losowych z rysunku 1.11a i 1.11b: po lewej − szumu
o rozkładzie normalnym, po prawej − szumu o rozkładzie równomiernym, w pionie − histogram, estymata
funkcji autokorelacji (1.18), widmo amplitudowe Fouriera (1.27b) oraz estymata funkcji gęstości widmowej
mocy (1.52)
Sygnały i ich parametry
34
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ęstotliwości.
1.4.5. Filtracja sygnałów losowych
Obecnie skrótowo omówimy problem przejścia „ciągłych” sygnałów losowych x(t) przez
liniowe układy analogowe o odpowiedzi impulsowej h(t) (patrz równanie (1.21a)) oraz „dyskretnych” sygnałów losowych x(n) przez liniowe układy dyskretne o odpowiedzi impulsowej
h(n) (patrz równanie (1.22a)). Wyznaczmy wartości oczekiwane E[.] obu stron równań
(1.21a)(1.22a):
∞
∞
 ∞
y = E [ y ( t ) ] = E  ∫ h ( τ ) x (t − τ )d τ  = ∫ h ( τ) E [ x (t − τ) ] d τ = x ∫ h ( τ) d τ = x ⋅ H ( 0 )
−∞
 −∞
 −∞
(1.53a)
∞
∞
 ∞

y = E [ y (n )] = E  ∑ h(k ) x (n − k ) = ∑ h( k )E [x (n − k )] = x ∑ h( k ) = x ⋅ H (0)
k = −∞
k = −∞
 k = −∞
(1.53b)
Jak widać wartości średnie y sygnałów w y j ś c i o w y c h y(.) są równe iloczynowi wartości
średnich x sygnałów w e j ś c i o w y c h x(.) i wartości transformaty Fouriera (odpowiednio
(1.24a) i (1.27a)) odpowiedzi impulsowych h(.) dla częstotliwości f równej zero.
Następnie obliczmy korelację wzajemną Ryx(.) sygnałów y(.) i x(.) w obu przypadkach:
 ∞


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 =−∞


=
∞
∑
l =−∞
h(l ) E[ x (n + k − l ) x* ( n )] =
∞
∑
l =−∞
h( l ) Rxx ( k − l ) = Rxx ( k ) ⊗ h( k )
(1.54b)
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 przypadku 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 )
∞
∞
l = −∞
l = −∞
(1.55)
Sygnały i ich parametry
35
Wprowadźmy oznaczenie m = n − l. Wówczas:
R yy ( k ) =
∞
∑ h* (m) R yx (k + m) = R yx (k ) ⊗ h* (−k )
(1.56)
m = −∞
Łącząc (1.56) i (1.54b) mamy:
R yy (k ) = Rxx (k ) ⊗ h( k ) ⊗ h* ( −k )
(1.57)
Po wykonaniu transformacji Fouriera (1.27a) obu stron powyższego równania i skorzystaniu
z jej właściwości splotu (1.22)(1.23), otrzymujemy:
F [ Ryy (k )] = F [ Rxx ( k ) ⊗ h( k ) ⊗ h* (−k )] = F [ Rxx ( k ) ] ⋅ F [ h( k ) ⊗ h* (− k )] =
= F [ Rxx (k ) ] ⋅ F [ h(k ) ] ⋅ F [ h* ( −k ) ] = F [ Rxx (k ) ] ⋅ H ( f ) ⋅ H * ( f )
czyli po uwzględnieniu (1.45):
Pyy ( f ) = Pxx ( f ) | H ( f ) |2
(1.58)
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).
1.5. Przykład ćwiczenia komputerowego
Większość ilustracji tego podrozdziału wygenerowano za pomocą programu napisanego w języku Matlab, przedstawionego w tabeli 1-3, który po odpowiednich modyfikacjach może być
podstawą do własnych eksperymentów obliczeniowych Czytelnika.
Obecnie przedstawimy dodatkowy przykład analizy, podsumowujący rozważania, prowadzone
w niniejszym rozdziale. Za pomocą opisanych wyżej metod przeanalizujemy sygnał zdeterminowany postaci x(t) = sin(2π5t)+0,5sin(2π10t)+0,25sin(2π30t), występujący w obecności addytywnego szumu s(t) o rozkładzie normalnym (wartość średnia równa zero i odchylenie
standardowe równe 0,5 i 3). W tym przypadku funkcja autokorelacji, widmo amplitudowe
Fouriera oraz estymata funkcji gęstości widmowej mocy mają kształt, przedstawiony na rysunku 1.14. Należy je porównać z odpowiednimi funkcjami, otrzymanymi w przypadku oddzielnej
analizy sygnału zdeterminowanego x(t) (rysunki 1.6b, 1.6d, 1.6f) i szumu s(t) (rysunki 1.13a,
1.13c, 1.13e, 1.13g). Z rysunku 1.14 można wyciągnąć następujące wnioski.
• Z kształtu funkcji autokorelacji (rysunki 1.14c i 1.14d) wynika, że sygnał składa się ze zdeterminowanej składowej okresowej (o czym świadczy okresowość funkcji autokorelacji)
oraz z losowej składowej szumowej (skokowa zmiana wartości funkcji autokorelacji dla
zerowego przesunięcia), przy czym ich udział „procentowy” w analizowanych sygnałach
jest różny.
• Z widma amplitudowego Fouriera pierwszego sygnału wyraźnie można odczytać wartości
częstotliwości i amplitud składowych sygnału zdeterminowanego. Niestety nie jest już to
takie proste w przypadku drugiego, bardziej zaszumionego sygnału.
• Jednak estymata funkcji gęstości widmowej mocy pozwala na jednoznaczną „detekcję”
w obu przypadkach wszystkich składowych sinusoidalnych, występujących w sygnale.
Sygnały i ich parametry
36
a) sygnał x1(t)
b) sygnał x2(t)
10
3
2
1
0
-1
-2
-3
5
0
-5
-10
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
Czas t [s]
0.6
0.8
1
Czas t [s]
c) estymata funkcji autokorelacji Rx1(τ)
d) estymata funkcji autokorelacji Rx2(τ)
1
10
0.5
5
0
0
-0.5
-1
-5
-0.8
-0.4
0
0.4
0.8
-0.8
-0.4
Przesunięcie τ [s]
0
0.4
0.8
Przesunięcie τ [s]
e) widmo Fouriera 2|X1(f)|
f) widmo Fouriera 2|X2(f)|
1
1.2
0.8
0.8
0.6
0.4
0.4
0.2
0
0
0
10
20
30
40
50
0
Częstotliwość f [Hz]
10
20
30
40
50
Częstotliwość f [Hz]
g) estymata gęstości widmowej mocyPx1(f)
200
h) estymata gęstości widmowej mocy Px2(f)
200
160
160
120
120
80
80
40
40
0
0
0
10
20
30
Częstotliwość f [Hz]
40
50
0
10
20
30
40
50
Częstotliwość f [Hz]
Rys. 1.14. Przykład analizy sygnału x(t) = sin(2π5t)+0,5sin(2π10t)+0,25sin(2π30t) z rysunku 1.6b w przypadku występowania addytywnego szumu białego o rozkładzie normalnym o wartości średniej równej zero
i odchyleniu standardowym równym 0,5 (rys. a) i 3 (rys. b). Kolejno w pionie: estymata funkcji autokorelacji
Rx(τ) (1.18), przeskalowane widmo amplitudowe Fouriera 2|X(f)| (1.27b) oraz estymata funkcji gęstości
widmowej mocy Px(f) (1.52)
Sygnały i ich parametry
37
Z przeprowadzonego eksperymentu jasno wynika, że t y l k o na podstawie wizualnej analizy
przebiegu czasowego sygnału czasami jest bardzo trudno wyciągnąć poprawne wnioski, dotyczące jego składowych. Natomiast jest to o wiele prostsze, jeśli stosuje się mniej lub bardziej
zaawansowane metody analizy sygnałów, przykładowo analizę korelacyjną i częstotliwościową. Analiza taka jest więc bardzo przydatna, a znajomość jej kanonów − szczególnie wskazana.
W dalszej części pracy większość zasygnalizowanych do tej pory zagadnień będzie rozwinięta
w sposób bardziej szczegółowy.
Tab. 1-3. Przykładowe ćwiczenie komputerowe
% Ćwiczenie: Sygnały i ich parametry
% 1. Wygeneruj N=1000 próbek sygnału sinusoidalnego x(t)=Asin(2πfxt) o amplitudzie A=5 i o częstotliwości
%
fx=10 Hz, spróbkowanego z częstotliwością fp=1000 Hz. Narysuj ten sygnał.
N=1000; A=5; fx=10; fp=1000; % Parametry sygnału
dt=1/fp;
% Okres próbkowania
t=dt*(0:N-1);
% Wektor chwil próbkowania
x=A*sin(2*pi*fx*t);
% Sygnał
plot(t,x); grid; title(‘Sygnał x(t)’); xlabel(‘czas [s]’); pause
% Oblicz wartości parametrów sygnału:
x_sred1=mean(x), x_sred2=sum(x)/N
% wartość średnia
x_max=max(x)
% wartość maksymalna
x_min=min(x)
% wartość minimalna
x_std1=std(x), x_std2=sqrt(sum((x-mean(x)).^2) / (N-1)) % odchylenie standardowe
x_eng=dt*sum(x.^2)
% energia
x_moc=(1/N)*sum(x.^2)
% moc średnia
x_skut=sqrt(x_moc)
% wartość skuteczna
% Oblicz i narysuj funkcję autokorelacji R1, R2 i R3 sygnału x(n).
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
% Teraz sam wylicz R3
for k=0:N-1
R(k+1)= sum( x(1:N-k)*x(1+k:N) )/(N-k);
end
R = [ fliplr(R) R(2:N-1) ];
plot(tR,R); grid; title(‘Autokorelacja wyliczona’); pause
% Oblicz współczynniki zespolonego szeregu Fouriera dla tego sygnału.
% Narysuj część rzeczywistą, urojoną i moduł tych współczynników.
X = fft(x);
% szybka dyskretna transformacja Fouriera
df = 1/(N*dt);
% częstotliwość podstawowa f0 = df = 1/T = 1/(N*dt)
f = df * (0 : N-1);
% kolejne częstotliwości w szeregu Fouriera
subplot(311); plot(f,real(X)); grid; title('Real(X)'); xlabel(’Hz’); pause
subplot(312); plot(f,imag(X)); grid; title('Imag(X)'); xlabel(’Hz’); pause
subplot(313); plot(f,abs(X)); grid; title('Abs(X)'); xlabel(’Hz’); pause
clf;
plot(f(1:N/2+1),abs(X(1:N/2+1))/(N/2)); grid; title('Po wyskalowaniu'); pause
% Zsyntezuj sygnał na podstawie współczynników jego szeregu Fouriera i porównaj z oryginałem.
xs=ifft(X);
plot(t,real(x-xs)); grid; title('Różnica'); pause
% około 10^(−14)
Sygnały i ich parametry
38
% 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
ampl = exp(-10*t);
% eksponencjalna funkcja obwiedni amplitudy
y2 =ampl.*x;
% modulacja
plot(t,y2); 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
% częstotliwości − nośna, modulująca, głębokość modulacji
fx = 10; fm = 2; df = 10;
y4 = sin(2*pi*(fx*t + df * sin(2*pi*fm*t)/(2*pi*fm)));
plot(t,y4); grid; title(‘Sygnał z sinusoidalną modulacją częstotliwości’); pause
% 7. Sklej dwa sygnały.
y5 = [ y1 y4];
plot(y5); grid; title(‘Sygnał sklejony’); pause
% 8. „Spleć” ze sobą dwa sygnały, czyli dokonaj filtracji jednego z nich przez drugi
T = 5; N = 1000;
dt = T/N; t = dt*(0:N);
% czas trwania sygnałów, liczba próbek
% okres próbkowania, kolejne chwile czasowe
x = sin(2*pi*2*t)+0.5*sin(2*pi*8*t);
% sygnał filtrowany: sinusoidy 2 Hz + 8 Hz
h = sin( 2*pi*2*t).*exp(-4*t);
% sygnał filtrujący
y = conv(x,h);
% operacja filtracji (splot, konwolucja)
subplot(311); plot(t,x); title('Sygnał WE x(t)');
subplot(312); plot(t,h); title('Odp impulsowa h(t)');
subplot(313); plot(t,y(1:N+1)); title('Sygnał WY h(t)');
pause
% 9. Skwantuj sygnał x(t) z punktu 8
x_min=-1.5; x_max=1.5; x_zakres=x_max-x_min;
Nb=3; Nq=2^Nb;
dx=x_zakres/Nq;
xq=dx*round(x/dx);
clf; plot(t,xq);
%
%
%
%
%
minimum, maksimum, zakres
liczba bitów, liczba przedziałów kwantowania
szerokość przedziału kwantowania
kwantyzacja sygnału
pokaż sygnał po skwantowaniu
2
Podstawy matematyczne
analizy sygnałów
deterministycznych
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 teraz w sposób skrótowy.
W niniejszym rozdziale nie będziemy rygorystycznie przestrzegać formalizmu matematycznego 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.
2.1. Przestrzenie sygnałów deterministycznych
Sygnały, podobnie jak funkcje, tworzą przestrzenie, czyli zbiory o określonych właściwościach.
Przestrzenią metryczną nazywamy zbiór sygnałów, w którym jest zdefiniowana metryka, czyli
funkcjonał, przyporządkujący dowolnym dwóm sygnałom x i y nieujemną liczbę rzeczywistą
ρ(x,y) ≥ 0. Liczba ta może być interpretowana jako odległość pomiędzy tymi sygnałami.
Metryka powinna spełniać warunki: tożsamości (ρ(x, y) = 0 ⇔ x = y), symetrii (ρ(x, y) =
= ρ(y, x)) i nierówności trójkąta (ρ(x, y)+ρ(y, z) ≥ ρ(x,z)). Ciąg elementów przestrzeni metrycznej jest nazywany ciągiem Cauchy’ego, jeśli odległość pomiędzy wyrazami tego ciągu
maleje do zera wraz ze wzrostem numerów jego elementów. Przestrzeń metryczną nazywa się
zupełną, jeśli każdy jej ciąg Cauchy’ego jest zbieżny do jakiegoś elementu tej przestrzeni
(czyli ma granicę należącą do tej przestrzeni).
Przestrzenią liniową nazywamy zbiór sygnałów z operacjami dodawania sygnałów x (operacja
„+”) oraz mnożenia sygnałów przez liczbę α (operacja „⋅”), jeśli operacja dodawania jest
przemienna (x+y = y+x) i łączna ((x+y)+z = x+(y+z)), operacja zaś mnożenia − rozdzielna
względem dodawania (α⋅(x+y) = α⋅x+α⋅y, (α+β)⋅x = α⋅x+β⋅y) oraz łączna (α⋅(β⋅x) = (αβ)⋅x).
Podstawy matematyczne analizy sygnałów deterministycznych
40
W przestrzeni liniowej musi istnieć sygnał zerowy 0, taki że 0⋅x = 0, oraz skalar identycznościowy 1, taki że 1⋅x = x.
Przestrzeń liniowa unormowana to przestrzeń liniowa, w której zdefiniowane jest odwzorowanie, 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)
2)
3)
4)
⟨x, y⟩ = ⟨y, x⟩*
⟨α ⋅ x + β ⋅ y, z⟩ = α ⋅ ⟨x, z⟩ + β ⋅ ⟨y, z⟩
x ≠ 0 ⇒ ⟨x, x⟩ > 0
x = 0 ⇒ ⟨x, x⟩ = 0
(2.1)
(2.2)
(2.3)
(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 („prostopadłe”, czyli „⊥”), jeśli ⟨x, y⟩ = 0. Jeśli dodatkowo ⟨x, x⟩ = 1 i ⟨y, y⟩ = 1, to są one ortonormalne („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 ą .
Przykłady. Przestrzeniami metrycznymi zupełnymi są następujące przestrzenie sygnałów:
1) C(0, T) − zbiór X wszystkich sygnałów określonych w przedziale domkniętym [0, T] i ciągłych w tym przedziale, z metryką:
ρ( x, y ) = max x (t ) − y ( t ) ,
[ 0, T ]
x, y ∈ X
(2.5)
2) L(0, T) − zbiór X wszystkich sygnałów określonych w przedziale domkniętym [0, T] (utożsamiając ze sobą sygnały równe prawie wszędzie, tzn. oprócz przeliczalnej liczby punktów),
z metryką:
T
ρ( x, y ) = ∫ x (t ) − y (t ) dt ,
x, y ∈ X
(2.6)
0
przestrzeń ta często jest zwana w literaturze przestrzenią sygnałów bezwzględnie całkowalnych;
3) L2(0, T) − zbiór X wszystkich sygnałów określonych w przedziale domkniętym [0, T] (utożsamiając ze sobą sygnały równe prawie wszędzie), z metryką:
T
ρ( x, y ) =
∫ x (t ) − y (t )
0
2
dt , x, y ∈ X
(2.7)
Podstawy matematyczne analizy sygnałów deterministycznych
41
przestrzeń ta jest często zwana w literaturze przestrzenią sygnałów całkowalnych z kwadratem;
4) LT2 − zbiór X wszystkich sygnałów okresowych o okresie T z metryką:
T
1
T
ρ( x, y ) =
∫ x (t ) − y ( t )
2
(2.8)
dt
0
Ponieważ w przestrzeniach metrycznych C(0, T) i L(0, T) nie można wprowadzić odwzorowania spełniającego aksjomaty (warunki) iloczynu skalarnego, nie są to przestrzenie Hilberta,
natomiast przestrzenie L2(0, T) i LT2 są przestrzeniami Hilberta. Iloczyn skalarny i norma są
w nich zdefiniowane następująco:
T
x, y
x, y
2
L
L2T
= ∫ x (t ) y * (t )dt ,
x
0
=
1T
x (t ) y* ( t )dt ,
T 0∫
=
2
L
x
x, x
L2T
=
2
L
x, x
=
T
2
∫ | x(t ) |
dt
(2.9)
1T
| x(t ) |2 dt
T 0∫
(2.10)
0
L2T
=
Teoretycznie jest możliwe definiowanie przestrzeni sygnałów o nieskończonym czasie trwania.
My zajęliśmy się wyłącznie przykładami przestrzeni sygnałów określonych w przedziale czasu
(0, T), ponieważ w praktyce inżynierskiej są dostępne jedynie sygnały o skończonej długości.
Dodatkowo przedmiotem zainteresowania cyfrowego przetwarzania sygnałów nie są sygnały
ciągłe, tylko zdyskretyzowane w czasie, czyli ciągi liczb, także o skończonej długości − na
przykład N. Dla nich równania (2.9), (2.10) przyjmują następującą postać:
x, y
x, y
l2
l N2
=
N −1
∑ x( n) y* (n ),
x
n =0
=
1
N
N −1
∑ x (n) y* ( n),
l2
=
x
n =0
l N2
x, x
=
l2
x, x
=
N −1
∑ | x( n) |2
(2.11)
n =0
l N2
=
1
N
N −1
∑ | x(n ) |2
(2.12)
n =0
same zaś przestrzenie sygnałów mogą być traktowane jako N-wymiarowe p r z e s t r z e n i e
w e k t o r o w e , w których kolejne próbki sygnału stanowią kolejne współrzędne wektora:
[ x(0), x(1), x(2),...] = [ x0 , x1, x2 ,...]
(2.13)
W dalszej części rozdziału będziemy się koncentrować przede wszystkim na analizie matematycznej 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
w prosty sposób można rozszerzyć prowadzone rozważania na przestrzenie sygnałów dyskretnych.
2.2. Dyskretne reprezentacje ciągłych sygnałów
deterministycznych
Niech {xi(t): i = 1, 2,..., N} oznacza zbiór N sygnałów należących do przestrzeni liniowej X.
Wówczas każdy sygnał tej przestrzeni, postaci
Podstawy matematyczne analizy sygnałów deterministycznych
42
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 niezależnych sygnałów przestrzeni X zawiera co najwyżej N sygnałów, to przestrzeń ta jest nazywana 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 przestrzeni, 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 zapisać w postaci macierzowej:
Xα = x
(2.17a)
gdzie
 x1, x1

X=
 x1, xN
xN , x1 
 x, x1
 α1 

 , x=
,
=
α


 
 x, x N
xN , xN 
α N 




(2.17b)
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
α = X -1x = 

0
0
 x, x1
x=


 x, x N
1




(2.20a)
czyli
αi = x, xi , i = 1, 2, 3,..., N
(2.20b)
Jeśli
N
x (t ) = ∑ αi xi (t ),
y (t ) =
i =1
N
∑ β j x j (t )
(2.21)
j =1
a baza jest ortonormalna, to prawdziwa jest następująca zależność:
N N
N
i =1 j =1
i =1
x , y = ∑∑ αiβ*j xi , x j = ∑ αiβ*i = α, β
(2.22)
W przypadku tylko jednego sygnału otrzymujemy:
N
x , x = ∑ αi α*i = α, α
(2.23)
i =1
Dwa powyższe równania są znane jako tzw. równość Parsevala, zgodnie z którą iloczyn skalarny 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 oznacza N-wymiarową podprzestrzeń przestrzeni X, unitarnej i nieskończenie wymiarowej. Podprzestrzeń XN jest rozpięta na bazie {xi (t): i = 1, 2,..., N}. Dowolnemu sygnałowi x(t), należącemu 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)
Z twierdzenia o rzucie ortogonalnym wynika, że dla każdego x(t)∈X (przestrzeni nieskończex(t) ∈XN (przestrzeni N-wymiarowej) określony
nie wymiarowej) istnieje tylko jeden element ~
wyrażeniem:
N
N
N
i =1
i =1
i =1
~
x (t ) = ∑ x, xi xi (t ) = ∑ αi xi (t ) = ∑ vi (t )
(2.25)
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.
Podstawy matematyczne analizy sygnałów deterministycznych
44
Przykład. Przekonywującą ilustracją omawianego twierdzenia może być graficzne przedstawienie zadania aproksymacji wektora z przestrzeni trójwymiarowej w przestrzeni dwuwymiarowej, czyli na płaszczyźnie. Jest ono pokazane na rysunku 2.1. W takim przypadku najlepszym „przybliżeniem” wektora v:
v = v x + v y + v z = α xe x + α ye y + α ze z = α x [1, 0, 0] + α y [0, 1, 0] + α z [0, 0, 1]
(2.26)
na płaszczyźnie xy jest bowiem jego rzut prostopadły (ortogonalny) na tę płaszczyznę, czyli
v = v xy = v x + v y = α xe x + α ye y = α x [1, 0, 0] + α y [0, 1, 0]
(2.27)
Błąd aproksymacji wektora v na płaszczyźnie xy, czyli to co się na niej nie „mieści”, jest
równy:
v − v = v − v xy = v z = α ze z = α z [0, 0, 1]
(2.28)
Jest on prostopadły do tej płaszczyzny i zawiera trzeci, brakujący wymiar. W równaniach
(2.26)(2.27)(2.28) wektory:
e x = [1, 0, 0], e y = [0, 1, 0], e z = [0, 0, 1]
(2.29)
są ortonormalnymi wektorami bazowymi trójwymiarowej przestrzeni wektorowej, a liczby αx,
αy, αz stanowią wartości następujących iloczynów skalarnych (definicja (2.11) dla N = 3):
α x = v, e x , α y = v, e y , α z = v, e z
(2.30)
Z ortogonalności wektorów bazowych wynika, że:
e x , e y = 0,
e y , e z = 0,
ex ,ez = 0
(2.31)
natomiast ich ortonormalność dodatkowo implikuje:
e x , e x = 1,
e y , e y = 1,
ez ,ez = 1
(2.32)
Zachodzenie równości (2.31), (2.32) jest łatwo wykazać, uwzględniając definicje (2.11) oraz
(2.29).
z
y
vz
ez
v
vy
vxy
ey
ex
vx
x
Rys. 2.1. Przykład aproksymacji wektora v z przestrzeni 3D w przestrzeni xy, czyli 2D
W ogólnym przypadku rzutujemy ortogonalnie sygnał x(t) na każdą z osi układu współrzędnych, 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 funkcji 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ę ortonormalną przestrzeni XN:
1)
y1 (t ) = x1 (t )
2)
y 2 (t ) = x2 (t ) − x2 , y1( n ) y1( n ) (t )
3)
y3 (t ) = x3 (t ) − x3 , y 2( n ) y2( n ) (t ) − x3 , y1( n ) y1( n ) (t )
...
i)
i −1
yi (t ) = xi (t ) − ∑ xi , yk( n ) yk( n ) (t )
k =1
...
N) y N (t ) = x N (t ) −
N −1
∑
k =1
x N , yk( n ) yk( n ) (t )
gdzie
y k( n ) (t ) =
yk (t )
, k = 1, 2, 3,..., N
yk
Za pierwszą funkcję bazową y1(t) przyjmuje się x1(t). Następnie y1(t) normalizuje się i otrzymuje 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 normalizacji 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
yi , y j = 
 wi
dla
i≠ j
dla
i= j
(2.33)
to zbiór sygnałów {zn(t)}
z n (t ) =
yn (t ) yn (t )
=
, n = 1, 2, 3,...
yn
wn
(2.34)
jest zbiorem sygnałów ortonormalnych.
Zbiór zupełny. Niech X będzie przestrzenią Hilberta, a zbiór {x1(t), x2(t), x3(t),...} nieskończonym ortogonalnym (lub ortonormalnym) zbiorem sygnałów tej przestrzeni. Zbiór ten nazywany
jest zbiorem zupełnym wtedy i tylko wtedy, gdy nie istnieje nie należący do niego różny od
zera sygnał przestrzeni X ortogonalny (ortonormalny) do każdego sygnału xi(t), i = 1, 2, 3, ....
Przestrzeń X jest rozpięta na zbiorze {x1(t), x2(t), x3(t),...} wtedy i tylko wtedy, gdy jest on
zupełny. Wówczas zbiór ten stanowi bazę przestrzeni X. Zbiory ortonormalne zupełne istnieją
Podstawy matematyczne analizy sygnałów deterministycznych
46
jedynie w tzw. ośrodkowych przestrzeniach Hilberta, tzn. w takich przestrzeniach Hilberta,
w których istnieje przeliczalny zbiór gęsty.
Twierdzenie o zbieżności. Jeśli X jest przestrzenią Hilberta, a zbiór {x1(t), x2(t), x3(t),...} jest
nieskończonym zbiorem sygnałów ortonormalnych w tej przestrzeni, to dla każdego x(t)∈X
xn (t )} elementów aproksymujących postaci:
ciąg {~
n
~
xn (t ) = ∑ αi xi (t ), αi = x, xi
(2.35)
i =1
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 =1
αi = x, xi
(2.36)
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:
x
2
∞
= ∑ αi
2
(2.37)
i =1
Przykłady zbiorów ortonormalnych zupełnych
• funkcje harmoniczne rzeczywiste − trygonometryczny szereg Fouriera sygnału nieokresowego (przestrzeń L2(0, T) sygnałów całkowalnych w kwadracie):
 1
,

 T
2
 2π 
cos n t  ,
T
 T 
2
 2π 
sin n t  :
T
 T 

n = 1, 2, 3,...

(funkcje bazowe)
Kiedy współczynniki normujące 1 / T , 2 / T włącza się do współczynników szeregu,
otrzymuje się szereg o następującej postaci:
∞
x (t ) = a0 + ∑ (an cos(nω0t ) + bn sin (nω0t ))
(2.38a)
n =1
gdzie (ω0 = 2π/T):
T
T
a0 =
1
1
2
2
α0 = ∫ x(t )dt , an =
αn = ∫ x(t ) cos(nω0t )dt
T
T0
T
T0
bn =
2
2
βn = ∫ x(t ) sin( nω0t )dt
T
T0
(2.38b)
T
(2.38c)
Inna postać trygonometrycznego szeregu Fouriera będzie przedstawiona w rozdziale
trzecim.
Podstawy matematyczne analizy sygnałów deterministycznych
47
• funkcje harmoniczne rzeczywiste − trygonometryczny szereg Fouriera sygnału okresowego (przestrzeń LT2(0, T)): jak w poprzednim przykładzie tylko całkowanie od t0 do t 0 + T ;
• funkcje harmoniczne zespolone − zespolony szereg Fouriera sygnału nieokresowego
(przestrzeń L2(0, T)):
 1 jn 2 π t

e T : n = 0,± 1,± 2,...

 T

∞
∑
x (t ) =
n = −∞
αn
(funkcje bazowe)
*

2π
 1 jn 2 π t  

1 jn T t
1


T
e
, αn =  x (t ),
e
=


T
T
T

 


Po włączeniu współczynnika normującego
się:
∞
∑
x (t ) =
n =−∞
X n e jnω0t ,
Xn =
T
∫ x ( t )e
− jn
2π
t
T dt
(2.39a, b)
0
1/ T do współczynników szeregu, otrzymuje
1T
− jnω t
∫ x (t )e 0 dt ,
T0
ω0 =
2π
,
T
n = 0, ± 1, ± 2, ...
(2.40a, b)
• funkcje harmoniczne zespolone − zespolony szereg Fouriera sygnału okresowego (przestrzeń LT2(0, T)): jak wyżej tylko całkowanie od t0 do t 0 + T .
Innymi przykładami zbiorów ortonormalnych zupełnych są:
Czebyszewa pierwszego rodzaju w L2(−1, 1),
Hermite’a w L2(−∞, +∞),
Legendre’a w L2(−1, 1),
Laguerre’a w L2(0, +∞),
Bessela pierwszego rodzaju w L2(−1, 1),
Czebyszewa w L2(0, +∞),
Legendre’a w L2(0, +∞),
Haara w L2(0, 1),
Walsha w L2(0, 1).
• wielomiany:
• funkcje:
2.3. Ciągłe reprezentacje ciągłych sygnałów deterministycznych
− przekształcenia całkowe
Niech x(t) oznacza dowolny sygnał. Załóżmy, że istnieje para przekształceń całkowych
x(t) → X(s) i X(s) → x(t), takich że:
X ( s ) = ∫ x ( t )ϕ(t , s )dt , t ∈ Ω
(2.41a)
x (t ) = ∫ X ( s )ψ( s, t )ds, s ∈ Γ
(2.41b)
Ω
Γ
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):
Podstawy matematyczne analizy sygnałów deterministycznych
48
∫ ψ( s, t )ϕ( τ, s)ds = δ(t − τ)
(2.42)
Γ
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ą samosprzężone, jeśli ψ( s, t ) = ϕ* (t , s ).
Poniżej przedstawiono przykłady najbardziej znanych przekształceń całkowych.
Przykład 1 − przekształcenie Laplace’a (s − liczba zespolona):
ψ( s, t ) = e st , ϕ(t , s ) = e − st ,
∞
x (t ) e − st dt ,
∫
X ( s) =
x (t ) =
−∞
∞
∫
X ( s )e st ds
(2.44a, b)
−∞
gdzie X(s) oznacza transformatę Laplace’a sygnału x(t).
Przykład 2 − przekształcenie Fouriera (czyli przekształcenie Laplace’a dla s = j2πf = jω):
ψ( f , t ) = e j 2 πft , ϕ(t , f ) = e − j 2 πft ,
∞
X( f ) =
∫
x (t )e− j 2 πft dt ,
x(t ) =
−∞
ψ(ω, t ) = e jωt , ϕ( t , ω) = e − jωt ,
X (ω) =
∞
∫
∞
∫
X ( f ) e j 2 πft df
(2.45)
−∞
x (t )e − jωt dt ,
x (t ) =
−∞
1 ∞
jωt
∫ X ( ω)e d ω
2π −∞
(2.46)
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:
x
2
= X
2
↔
∞
∫
−∞
2
x (t ) dt =
∞
∫
2
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.
Przykład 3 − przekształcenie Hilberta (sygnał analityczny)
ψ ( s, t ) =
1
1
, ϕ( t , s ) = −
,
π( s − t )
π( t − s )
X (s) =
1 ∞ x (t )
1 ∞ X (s)
dt , x (t ) = − ∫
ds
∫
π −∞ s − t
π −∞ t − s
(2.49)
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
xˆ (t ) =
1 ∞ x ( τ)
1
d τ = ⊗ x (t ),
∫
π −∞ t − τ
πt
x(t ) = −
49
1 ∞ xˆ ( τ)
 1
d τ =  −  ⊗ xˆ ( t )
∫
π −∞ t − τ
 πt 
(2.50)
gdzie ⊗ oznacza operację splotu. Sygnały z przestrzeni L2 (Ω ) są transformowalne w sensie
Hilberta (podobnie sygnały o ograniczonej mocy średniej i wartości średniej). Przykłady par
transformat ( x (t ) ↔ xˆ (t ) ) :
cos(ω0t ) ↔ sin(ω0t ) ,
δ(t ) ↔
1
,
πt
sin (ω0t ) ↔ − cos(ω0t ) ,
sin(ω0t )
1 − cos(ω0t )
↔
ω0t
ω0t
1
1
↔
1 + t2
1 + t2
(2.51)
(2.52)
Sygnał analityczny jest definiowany jako sygnał zespolony: z (t ) = x (t ) + jxˆ (t ).
Przykład 4 − przekształcenie Hankela, kosinusowe i sinusowe przekształcenie Fouriera
W tym przypadku jądra są funkcjami zmiennej iloczynowej st:
ψ( s, t ) = ψ( st ), ϕ( t , s ) = ϕ( st ),
X (s) =
∞
∫
x ( t )ϕ( st )dt ,
x (t ) =
−∞
∞
∫
X ( s )ψ( st )ds
(2.53)
−∞
W szczególności otrzymujemy tzw. przekształcenie Hankela (Jr(α) − funkcja Bessela rzędu r):
∞
X ( s ) = ∫ x(t ) st J r ( st )dt ,
0
∞
x(t ) = ∫ X ( s ) st J r ( st )ds
(2.54)
0
Przypadek r = −1 / 2, s = ω (jednostronne przekształcenie Fouriera kosinusowe):
2
cos α,
πα
J −1/ 2 ( α) =
X (ω) =
2∞
∫ x (t ) cos( ωt )dt ,
π0
x (t ) =
2∞
∫ X (ω) cos(ωt )dt (2.55)
π0
Przypadek r = 1 / 2, s = ω (jednostronne przekształcenie Fouriera sinusowe):
2
sin α,
πα
J1/ 2 ( α) =
2∞
∫ x(t )sin(ωt )dt,
π0
X (ω) =
x(t ) =
2∞
∫ X (ω)sin(ωt )dt
π0
(2.56)
Przykład 5 − przekształcenie Mellina
∞
X M ( s ) = ∫ x (t )t s −1dt , x (t ) =
0
c + j∞
1
X ( s )t − s ds, t ≥ 0
2πj c −∫j∞
(2.57)
gdzie s − zmienna zespolona, c − odpowiednio dobrana rzeczywista stała dodatnia. Stosując
podstawienie t = e − τ otrzymujemy:
dt = − e − τdτ, t s −1 = e − τ( s −1) ,
(t → 0) ⇒ (τ → ∞ ), (t → ∞ ) ⇒ (τ → −∞ )
(2.58)
skąd
∞
X M (s) =
∫ x(e
−∞
−τ
)e − sτ dτ
(2.59)
Podstawy matematyczne analizy sygnałów deterministycznych
50
( )
czyli przekształcenie Mellina x(t ) jest równoważne przekształceniu Laplace’a x e − τ , czyli
funkcji oryginalnej z argumentem przeskalowanym nieliniowo. Jeśli dodatkowo podstawimy
s = jω w przekształceniu Laplace’a, to przekształcenie Mellina jest równoważne przekształceniu Fouriera funkcji przeskalowanej. Można wykazać, że moduł przekształcenia Laplace’a
nie zmienia się, kiedy sygnał jest przeskalowywany w osi czasu, gdyż:
x (t ) ↔ X M ( s ), x ( at ) ↔ a − s X M ( s )
(2.60)
Można więc go stosować do rozpoznawania sygnałów o tym samym kształcie, lecz przeskalowanych w osi czasu (lub położenia), tzn. „rozciągniętych” lub „ściśniętych”.
2.4. Reprezentacje sygnałów dyskretnych
− przestrzenie wektorowe
W praktycznych zastosowaniach cyfrowego przetwarzania sygnałów zawsze dysponujemy jedynie skończonym zbiorem próbek sygnału:
{x(1), x( 2), x(3),…, x ( N )}
(2.61)
Zbiór ten możemy traktować jako wektor w przestrzeni N-wymiarowej:
x = [x1, x2 , x3 ,…, x N ] = [x (1), x ( 2), x (3),…, x ( N )]
(2.62)
Najprostszym zbiorem funkcji bazowych rozpinających tę przestrzeń wektorową jest zbiór
postaci:
e1 = [1, 0, 0,..., 0]
e 2 = [0, 1, 0,..., 0]
e 3 = [0, 0, 1,..., 0]
..........................
(2.63)
e N = [0, 0, 0,..., 1]
analogiczny do zbioru [1, 0, 0], [0, 1, 0] i [0, 0, 1], rozpinającego przestrzeń trójwymiarową
(patrz rysunek 2.1). Wówczas każdy z wektorów bazowych w pełni „odpowiada” tylko za jeden wymiar wektora (2.61), gdyż zgodnie z równaniem analizy mamy:
x (k ) = x, e k =
N
∑ x(n)ek* (n)
(2.64)
n =1
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 bazowych ek:
x=
N
∑ xk e k
k =1
(2.66)
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):
bk , bl =
N
0, k ≠ l
k =l

(2.68)
0, k ≠ l
k =l

(2.69)
∑ bk (n )bl* (n ) = c,
n =1
lub ortonormalności:
bk , bl =
N
∑ bk (n )bl* (n ) = 1,
n =1
Wówczas:
x=
N
∑ αk b k
(2.70)
k =1
oraz
α k = x,b k =
N
∑ x(n)bk* (n )
(2.71)
n =1
gdzie k jest indeksem numeru funkcji bazowej, a n − indeksem jej próbki.
Najbardziej znany zbiór wektorów ortonormalnych, poza (2.63), stanowi unormowana, dyskretna baza Fouriera zespolonych sygnałów harmonicznych postaci (k = 1, 2,..., N, n = 1, 2,
..., N, j = − 1 ):
2π
bk (n ) =
1 j N ( k −1)⋅( n −1)
1   2π

 2π

e
cos ( k − 1) ⋅ ( n − 1)  + j sin (k − 1) ⋅ (n − 1) 
=
N
N   N

N

(2.72)
która po zmianie sposobu indeksowania na (k = 0, 1, 2,..., N−1, n = 0, 1, 2,..., N−1) jest zapisywana zwyczajowo jako:
2π
1 j N kn
1   2π 
 2 π 
=
cos kn  + j sin kn 
bk (n ) =
e

N
N
N  

N

(2.73)
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
 1 j ( 2 π / N )( k −1)( n −1)  1 j ( 2 π / N )( l −1)( n −1) 
e
e

 =
N
N
 N

n =1
∑ 
N
0, k ≠ l
k =l

∑ e j( 2π / N )( k −l )( n −1) = 1,
n =1
(2.74)
ponieważ
N
N −1
n =1
n =0
 0, k ≠ l
k =l

∑ e j( 2π / N )(k −l )( n −1) = ∑ e j( 2π / N )(k −l )n =  N ,
(2.75)
Podstawy matematyczne analizy sygnałów deterministycznych
52
Przykład
Dla N = 4 funkcje bazowe zespolonej, dyskretnej bazy Fouriera (2.72) mają następującą postać:
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 bazowych, 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
Uwzględniając (2.70), analizowany sygnał możemy więc przedstawić jako:
x = 52,8 ⋅ b1 + (0,7 + j 48) ⋅ b 2 − 51, 2 ⋅ b 3 + (0,7 − j 48) ⋅ b 4
Na rysunku 2.2 przedstawiono „próbki” wszystkich zespolonych funkcji bazowych Fouriera
dla N = 8.
Przykładami innych dyskretnych baz ortonormalnych są następujące bazy (numer bazy k =
= 0, 1, 2,..., N−1, numer próbki n = 0, 1, 2,..., N−1):
1) kosinusowa DCT:
 πk (2n + 1)
bk (n ) = c (k ) ⋅ cos
 , c (0) =
 2N
1
, dla k > 0 c (k ) =
N
2
N
(2.76)
2) sinusowa DST:
bk (n ) =
2
 π(k + 1)( n + 1) 
sin

N + 1 
N +1
(2.77)
1 
2π
2π 
 cos kn + sin kn 
N
N
N

(2.78)
M −1
1
( −1) f ( k , n ) , gdzie f ( k , n ) = ∑ ki ni , M = log 2 N
N
i =0
(2.79)
3) Hartleya:
bk (n ) =
4) Hadamarda:
bk (n ) =
k = k0 + 2k1 + ... + 2 M −1 k M −1 , n = n0 + 2n1 + ... + 2 M −1 nM −1 , ki , ni = 0, 1
Podstawy matematyczne analizy sygnałów deterministycznych
53
część rzeczywista
k=1
0.4
0.4
0
0
-0.4
k=2
6
7
8
-0.4
1
2
3
4
5
6
7
8
-0.4
0.4
0
0
1
2
3
4
5
6
7
8
-0.4
0.4
0.4
0
0
1
2
3
4
5
6
7
8
-0.4
0.4
0.4
0
0
1
2
3
4
5
6
7
8
-0.4
0.4
0.4
0
0
1
2
3
4
5
6
7
8
-0.4
0.4
0.4
0
0
-0.4
k=8
5
0.4
-0.4
k=7
4
0
-0.4
k=6
3
0
-0.4
k=5
2
0.4
-0.4
k=4
1
0.4
-0.4
k=3
część zespolona
1
2
3
4
5
6
7
8
-0.4
0.4
0.4
0
0
-0.4
1
2
3
4
5
6
7
8
-0.4
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
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
Podstawy matematyczne analizy sygnałów deterministycznych
54
5) Haara:
b0 ( n ) = 1 / N ,
q − 1 n q − 1/ 2

p/2
,
≤ <
 2
N
2p
2p

1 
q
−
1
/
2
n
q
p/2
bk ( n ) =
≤ < p ,
 −2 ,
p
N 2
N 
2
0, pozostałe n


N = 2m , k = 2 p + q − 1, 0 ≤ p ≤ m − 1 ,
p = 0 ⇒ q = 0, 1,
k = 1, 2,..., N − 1
(2.80)
p ≠ 0 ⇒ 1 ≤ q ≤ 2p
Przykładowo dla N = 4 mamy: k = 0, 1, 2, 3; p = 0, 0, 1, 1; q = 0, 1, 1, 2.
Bazę Hadamarda można w prosty sposób otrzymać z następującej zależności rekurencyjnej:
H(2) =
1 1 1 
1 H(n )
(2n )
=
H
,

2 1 − 1
2 H(n )
H(n ) 

− H(n ) 
w której H(n) oznacza macierz n-punktowej transformacji Hadamarda. Kolejne wiersze tej macierzy 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 zastosowanemu we wzorze (2.73), a nie (2.72);
3) baz kosinusowych i sinusowych nie uzyskano w wyniku „prostego” wzięcia części rzeczywistej i urojonej zespolonej bazy fourierowskiej (2.73); nie przeszkadza to jednak, że najprostsze „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 prostoką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 przedstawiono 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ółczynnikó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 „odtworzenia” 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-jedynkowych”.
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 fourierowskich. W pierwszym przypadku jedna z funkcji bazowych ma dokładnie taką samą częstotliwość 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
baza kosinusowa
k=0
0.5
1
0
0
0
0
0 1 2 3 4 5 6 7
-1
0 1 2 3 4 5 6 7
0
0
0
0
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-1
0.5
0.5
0.5
1
0
0
0
0
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-1
0.5
0.5
0.5
1
0
0
0
0
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-1
0.5
0.5
0.5
1
0
0
0
0
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-1
0.5
0.5
0.5
1
0
0
0
0
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-1
0.5
0.5
0.5
1
0
0
0
0
-0.5
k=7
-0.5
1
-0.5
k=6
0 1 2 3 4 5 6 7
0.5
-0.5
k=5
-0.5
0.5
-0.5
k=4
0 1 2 3 4 5 6 7
0.5
-0.5
k=3
baza Haara
0.5
-0.5
k=2
baza Hadamarda
0.5
-0.5
k=1
baza sinusowa
55
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-1
0.5
0.5
0.5
1
0
0
0
0
-0.5
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-0.5
0 1 2 3 4 5 6 7
-1
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
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
Podstawy matematyczne analizy sygnałów deterministycznych
56
analizowany sygnał x1(n)
1
analizowany sygnał x2(n)
0.5
0
0
-0.5
-1
1
5
10
15
n
1
część rzeczywista αk
0.2
0.5
0.1
1
5
10
15
k
0
1
1
1
0
0
-1
5
10
5
15
k
10
15
-1
1
5
moduł αk
2
15
n
k
część urojona αk
część urojona αk
1
10
część rzeczywista αk
1
0
5
10
15
k
moduł αk
1
1
0
0.5
1
5
10
15
k
0
1
5
10
15
k
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 obecna 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 niezerowych. Analogiczne zjawisko występuje także w przypadku stosowania baz ortogonalnych
o wartościach rzeczywistych, na przykład bazy sinusoidalnej lub kosinusoidalnej. Jednak wówczas 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ą „zsynchronizowana”, tzn. jest w stosunku do niej przesunięta w czasie. Wówczas konieczna jest obecność pozostałych funkcji bazowych w sumie rozwinięcia. Sytuacja taka jest pokazana na rysunku 2.5.
Podstawy matematyczne analizy sygnałów deterministycznych
57
x(n)
x(n)
0.2
a)
0.2
b)
0
-0.2
-0.2
0
5
10
15
n
5
10
15
10
15
n
αk
d)
0.5
0
0
0
αk
1
c)
0
0.5
0
5
10
15
k
0
5
k
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
analizowany sygnał x(n)
1
b)
a) 0.5
0
1
5
10
15
n
d)
0
-1
5
10
1
5
15
k
10
15
k
moduł αk
2
1
1
1
0
część urojona αk
c)
część rzeczywista αk
2
1
0
1
5
10
15
k
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
Na rysunku 2.6 pokazano natomiast dekompozycję fourierowską dyskretnego sygnału prostokątnego. W tym przypadku w celu rekonstrukcji sygnału zawsze jest konieczne użycie wielu
funkcji bazowych, gdyż ich kształt „nie pasuje” do analizowanego sygnału.
Bardziej szczegółowe rozważania dotyczące dyskretnej transformacji Fouriera DFT, związanej
z bazą (2.73), i jej zastosowania są przedstawione w dalszych rozdziałach. I tak w rozdziale
8 przedyskutowano różne aspekty zastosowania DFT do analizy częstotliwościowej sygnałów,
a w rozdziale 9 przedstawiono szybkie metody wyznaczania tej transformaty.
Dla dociekliwych − różne wersje dyskretnej transformacji kosinusowej. W literaturze definiuje się cztery rodzaje dyskretnych transformacji kosinusowych i sinusowych. Przykładowo
Podstawy matematyczne analizy sygnałów deterministycznych
58
funkcje bazowe transformacji kosinusowych mają zwyczajowo w takim przypadku następującą, zunifikowaną postać:
DCT-I:
 πkn 
, k , n = 0, 1, 2,..., N
bk (n ) = 2 / N ⋅ c ( k ) c ( n ) ⋅ cos 
 N 
DCT-II:
 πk (n + 1/ 2) 
bk (n ) = 2 / N ⋅ c ( k ) ⋅ cos 
 , k , n = 0, 1, 2,..., N − 1
N

DCT-III:
 π(k + 1/ 2)n 
bk (n ) = 2 / N ⋅ c ( n ) ⋅ cos 
 , k , n = 0,1, 2,..., N − 1
N

DCT-IV;
 π(k + 1/ 2)(n + 1/ 2) 
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:
 bk (1) 
 α1 
 x (1) 
 b ( 2) 
α 
 x ( 2) 
, α =  2
 , bk =  k
(2.82)
x=

 




 



 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 = 
λ k , k = l
Po uwzględnieniu (2.83), równanie (2.84) jest równoważne następującemu warunkowi:
(2.84)
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
k ≠l
(2.85)
k =l
Ponieważ dla dowolnych dwóch ortonormalnych funkcji bazowych bk i bl mamy:
0, k ≠ l
b kH ⋅ b l = 
 1, k = l
(2.86)
stąd (2.85) można zapisać jako:
R xx b k = λ k b k , k = 1, 2, 3,..., N
(2.87)
Wynika stąd, że w przypadku dekompozycji sygnałów losowych funkcje bazowe bk powinny
być równe wektorom własnym macierzy Rxx, zbudowanej z wartości funkcji autokorelacji
R xx (m ) = E[ x n x n* − m ] analizowanego sygnału:
R xx
 E[ x1 x1* ] E[ x1 x2* ]

E[ x2 x1* ] E[ x2 x2* ]
= E [xx H ] = 


*
*
 E[ x N x1 ] E[ x N x2 ]
Rxx ( −1)
E[ x1 x *N ]   Rxx (0)
*   R (1)
Rxx (0)
E [ x2 x N ]  
xx
=
 
 
E[ x N x *N ]  Rxx ( N − 1) Rxx ( N − 2)
Rxx ( −( N − 1)) 
Rxx ( −( N − 2))



Rxx (0)

(2.88)
Otrzymywana w ten sposób baza jest nazywana bazą Karhunena-Loevego (KL). Jest ona optymalnie „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):
R xx =
N
∑ λ k v k v kH ,
k =1
λ1 ≥ λ 2 ≥ λ 3 ≥ ... ≥ λ N
(2.89)
Optymalne funkcje bazowe bk są równe ortogonalnym wektorom własnym vk macierzy, otrzymanym w wyniku powyższej dekompozycji. Wartości własne i wektory własne zespolonej,
hermitowskiej macierzy kwadratowej Rxx spełniają równanie (2.87):
R xx v k = λ k v k
(2.90)
Ponieważ wartości własne są nieujemne i uporządkowane od największej do najmniejszej
(λ1 ≥ λ2 ≥ λ3 ≥...≥ λN), w wyniku dekompozycji sygnał może już być dobrze aproksymowany
przez kombinację liniową tylko kilku pierwszych wektorów własnych w (2.70) (np. M << N).
Ponieważ jednak wektory własne są zależne od sygnału, nie jest możliwe stworzenie szybkich
algorytmów obliczeniowych, gdyż wykorzystuje się w nich a priori specyficzne cechy funkcji
bazowych, a w tym przypadku funkcje te nie są znane. W szczególnym przypadku dyskretnych
autoregresyjnych sygnałów losowych postaci:
Podstawy matematyczne analizy sygnałów deterministycznych
60
x (n ) = ax(n − 1) + szum(n ) / 1 − a 2
(2.91)
generowanych przez procesy losowe AR(1) i mających funkcję autokorelacji daną wzorem
R (m) = a m
(2.92)
dyskretna baza kosinusowa DCT-II stanowi bardzo dobre przybliżenie optymalnych baz
Karhunena-Loevego dla wartości a bliskich 1, jest ona więc stosowana w przetwarzaniu
obrazów cyfrowych (standardy JPEG i MPEG), gdyż obrazy najczęściej modeluje się właśnie
za pomocą dwuwymiarowych modeli autoregresyjnych pierwszego rzędu AR(1,1):
x ( m, n ) = a1 x ( m − 1, n ) + a2 x ( m, n − 1) − a1a2 x ( m − 1, n − 1) + szum( m, n ) / (1 − a12 )(1 − a22 )
(2.93)
z a1 = a2 = 0,95, mających funkcję autokorelacji:
R( m, n ) = a1m a2n
(2.94)
W równaniach (2.91), (2.93) występuje szum normalny o wartości średniej równej zero i wariancji równej 1.
2.5. Przykład ćwiczenia komputerowego
W tabeli 2-1 jest przedstawiony przykładowy program, napisany w języku Matlab, który posłużył do wygenerowania wszystkich rysunków zaprezentowanych w tym rozdziale. Zdaniem
autora zainteresowany Czytelnik może go z powodzeniem wykorzystać do dalszych, samodzielnych eksperymentów.
Tab. 2-1. Przykładowe ćwiczenie komputerowe
% Ćwiczenie: Transformacje ortogonalne sygnałów
% Transformaty ortogonalne sygnałów
% 1) kształt dyskretnych baz: Fouriera, kosinusowej, sinusowej, Hadamarda, Walsha
% 2) dopasowanie bazy − przykładowa dekompozycja dwóch sygnałów
clear all; subplot(111);
N=4;
n=0:N-1;
NN=2*N;
% wybór liczby (długości) funkcji bazowych (wymiar przestrzeni wektorowej)
% indeksy wszystkich próbek poszczególnych funkcji bazowych
% zmienna pomocnicza
% Kształt funkcji bazowych dla transformacji kosinusowej i sinusowej
% n-ta próbka k-tej funkcji bazowej
1/sqrt(N);
% współczynnik normalizujący transformację Fouriera
[ sqrt(1/N) sqrt(2/N)*ones(1,N-1) ]; % współczynnik normalizujący transformację kosinusową
sqrt(2/(N+1));
% współczynnik normalizujący transformację sinusową
k=0:N-1
% wyznacz wszystkie próbki k-tej bazy
bf(k+1,n+1) = f
* exp(j*2*pi/N*k*n);
% transformacja Fouriera
bc(k+1,n+1) = c(k+1) * cos( pi*k*(2*l+n) / NN );
% transformacja kosinusowa
bs(k+1,n+1) = s
* sin( pi*(k+1)*(n+1) / (N+1) ); % transformacja sinusowa
% stem(bc(k+1,1:N)); title('k-ta funkcja bazowa'); pause
f =
c =
s =
for
end
% Kształt funkcji bazowych dla transformacji Hadamarda
% n-ta próbka k-tej funkcji bazowej
Podstawy matematyczne analizy sygnałów deterministycznych
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
% Kształt funkcji bazowych dla transformacji Haara
% n-ta próbka k-tej funkcji bazowej
c=sqrt(1/N); bHR(1,1:N)=c*ones(1,N);
for k=1:N-1
p=0;
while(k+1 > 2^p)
p=p+1;
end
p=p-1;
q=k-2^p+1;
for n=0:N-1
x=n/N;
if ( ( (q-1)/2^p <= x ) & ( x < (q-1/2)/2^p ) ) bHR(k+1,n+1)= c*2^(p/2);
elseif ( ( (q-1/2)/2^p <= x ) & ( x < q/2^p )) bHR(k+1,n+1)=-c*2^(p/2);
else bHR(k+1,n+1)=0;
end
end
% stem(bHR(k+1,1:N)); title('k-ta funkcja bazowa'); pause
end
% Sprawdzenie ortonormalności wybranych funkcji bazowych
for k=1:N
Tf(k,1:N)
Tc(k,1:N)
Ts(k,1:N)
THD(k,1:N)
THR(k,1:N)
end
T = THR;
I = T * T'
pause
=
=
=
=
=
bf(k,1:N);
bc(k,1:N);
bs(k,1:N);
bHD(k,1:N);
bHR(k,1:N);
%
%
%
%
%
%
zbudowanie macierzy transformacji
transformacja Fouriera
transformacja kosinusowa
transformacja sinusowa
transformacja Hadamarda
transformacja Haara
% wybierz transformację
% sprawdź, czy iloczyn jest macierzą diagonalną jednostkową
% Przykład analizy (dekompozycji) i syntezy sygnału
% Generacja sygnałów testowych
kk = 2;
fi = 0;
% testowy „indeks” częstotliwości, np. 1.35, 2, 2.5, 3
% przesunięcie fazowe 0, pi/8, pi/4, pi/2
n = 0 : N-1;
x1 = cos( (2*pi/N)*kk*n + fi );
x2 = cos( pi*kk*(2*n+1)/NN + fi
x3 = sin( pi*(kk+1)*(n+1)/(N+1)
x4 = cos( (2*pi/N)*2*n + fi ) +
x5 = [ ones(1,N/2) zeros(1,N/2)
x6 = [ -ones(1,N/4) ones(1,N/2)
% cz. rzeczywista bazy fourierowskiej
);
% wektor bazy kosinusowej
+ fi );
% wektor bazy sinusowej
cos( (2*pi/N)*4*n + fi );
];
-ones(1,N/4) ];
x = x6;
% wybór konkretnego sygnału do dekompozycji
T = THR;
% wybór transformacji: Tf, Tc, Ts, THD, THR
61
Podstawy matematyczne analizy sygnałów deterministycznych
62
a = T * x';
y = T' * a;
y = y';
% analiza w zapisie macierzowym
% synteza w zapisie macierzowym
% zamień wektor pionowy na poziomy
stem(l,x,'filled','-k'); axis tight; title('sygnał analizowany x(l)');
xlabel('numer próbki'); pause
stem(l,real(a),'filled','-k'); axis tight; title('wsp dekomopozycji alfa(k)');
xlabel('numer próbki'); pause
stem(l,y,'filled','-k'); axis tight; title('sygnał zsyntezowany x(l)');
xlabel('numer próbki'); pause
stem(l,y-x,'filled','-k'); axis tight; title('błąd syntezy 1: y(l)-x(l)');
xlabel('numer próbki'); pause
% Analiza i synteza w zapisie niemacierzowym
y=zeros(1,N);
for k = 0 : N-1
a(k+1) = sum( x .* conj(T(k+1,1:N)) );
end
for k = 0 : N-1
y = y + a(k+1) * T(k+1,1:N);
end
%
% ANALIZA: oblicz współczynniki
%
%
% SYNTEZA: odtwórz sygnał
%
%
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
Niniejszy rozdział stanowi kontynuację rozdziału poprzedniego, dotyczącego zagadnienia
aproksymacji sygnałów za pomocą zbioru funkcji bazowych. Przedstawiono w nim teorię
i przykłady zastosowań klasycznego szeregu Fouriera − najstarszego, ale zarazem najbardziej
popularnego i najczęściej stosowanego narzędzia dekompozycji (analizy) częstotliwościowej
sygnałów analogowych. Spojrzenie na równania definicyjne szeregu Fouriera jako na wynik
szczególnego zadania o p t y m a l i z a c j i p a r a m e t r y c z n e j wartości współczynników funkcji
aproksymującej badany sygnał jest bardzo kształcące (np. [Izyd99]).
Szereg Fouriera jest protoplastą dyskretnej transformacji Fouriera, niepodzielnie królującej
w świecie komputerowej analizy częstotliwościowej sygnałów. Dlatego nie może go zabraknąć
w naszym podręczniku. „Każdy Jaś o nim wiedzieć powinien”.
3.1. Ortogonalne funkcje bazowe
Załóżmy, że chcemy aproksymować sygnał okresowy x(t), przyjmujący wyłącznie wartości
r z e c z y w i s t e , należący do przestrzeni Hilberta LT2 wszystkich sygnałów okresowych o okresie T. Z poprzedniego rozdziału wiemy, że iloczyn skalarny ⟨x, y⟩ dowolnych dwóch r z e c z y w i s t y c h sygnałów x(t) i y(t), należących do tej przestrzeni, oraz norma ||x|| sygnału x(t)
są zdefiniowane następująco (patrz (2.10)):
x, y
L2T
=
1
T
t0 +T
∫
x (t ) y (t )dt ,
x
t0
L2T
=
x, x =
1
T
t0 + T
∫
| x( t ) |2 dt
(3.1)
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. funkcji spełniających warunek:
fi , f j =
1
T
t0 +T
∫ f i (t ) f j (t )dt = 0
t0
dla i ≠ j
(3.2)
Szereg Fouriera
64
Kryterium „jakości” aproksymacji jest błąd średniokwadratowej:
ε=
1
T
t0 + T
∫
to
2
∞


 x (t ) − ∑ ck f k (t ) dt
k = −∞


(3.3)
W celu znalezienia jej minimum należy przyrównać do zera pochodne cząstkowe funkcji
ε względem współczynników rozwinięcia ck, −∞ ≤ k ≤ ∞:
∂ε
∂ε
∂ε
∂ε
∂ε
=
=
=
=
... = 0
∂c0 ∂c1 ∂c−1 ∂c2 ∂c− 2
(3.4)
Dla dowolnego cn otrzymujemy:
2 
 t +T
∞
 
∂ 1 0 
 x (t ) − ∑ ck f k (t ) dt  = 0
∂cn  T t∫ 
k = −∞
 
0


2
t0 +T 

∞
 ∞
  
∂ 1
 x 2 (t ) − 2 x (t ) ∑ ck f k (t ) +  ∑ ck f k ( t )   dt  = 0
∫
∂cn  T t 
 k =−∞
  
k =−∞
0 

(3.5)
Ponieważ funkcje bazowe są ortogonalne (3.2), stąd:
t0 + T
∫
t0
2
t0 + T
 ∞

 ∞ 2 2 
 ∑ ck f k (t )  dt = ∫  ∑ ck f k ( t )  dt
 k =−∞


t0  k =−∞
(3.6)
i równanie (3.5) możemy zapisać w postaci:
∂ 1

∂cn  T

t0 +T
∫
t0
∞
∞
 2
 
2 2
 x (t ) − 2 x (t ) ∑ ck f k ( t ) + ∑ ck f k (t )  dt  = 0
k =−∞
k =−∞

 
(3.7)
Po wykonaniu różniczkowania względem współczynnika cn w (3.7) otrzymujemy (zamiana
kolejności różniczkowania i całkowania):
t0 + T
∫
t0
 −2 x (t ) f n (t ) + 2cn f n2 (t )  dt = 0


(3.8)
skąd
t0 +T
∫ x(t ) f n (t )dt
cn =
t0
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ą zależność na współczynniki rozwinięcia sygnału w uogólniony szereg Fouriera:
cn =
t0 + T
∫
t0
x(t ) f n* (t ) dt
t0 +T
∫
t0
f n (t ) f n* (t )dt
(3.10)
Szereg Fouriera
65
3.2. Harmoniczne zespolone funkcje bazowe
Załóżmy, że funkcje bazowe są zespolonymi sygnałami harmonicznymi postaci:
 2π 
 2π 
f k (t ) = e j (kω0 )t = e j 2 π (kf 0 )t = e j 2 π( k / T )t = cos
t  + j sin
t ,
T /k 
T /k 
j = −1
(3.11)
o pulsacjach kω0 (radiany na sekundę), częstotliwościach kf0 (herce, czyli okresy na sekundę)
i okresach T/k (sekundy), gdzie f0 = 1/T jest częstotliwością podstawową, zależną od wartości
okresu T analizowanego sygnału. Ponieważ funkcje sinus i kosinus mają okres 2π, okresem
funkcji cos(2πt/(T/k)) i sin(2πt/(T/k)) jest taka wartość zmiennej t, dla której 2πt/(T/k) = 2π,
czyli T/k. Jak widać dla kolejnych funkcji bazowych (rosnącego |k|) wartość ich okresu jest
coraz mniejsza, a ich częstotliwość coraz większa. Oczywiście tak zdefiniowane funkcje
bazowe są do siebie ortogonalne, czyli spełniają warunek (3.2), ponieważ pole całkowanej powierzchni iloczynu fi(t)⋅fj(t) dwóch funkcji dla i ≠ j jest równe zero (pola „dodatnie”, leżące
powyżej osi czasu, oraz „ujemne”, leżące poniżej tej osi, wzajemnie się znoszą). Jeśli połączymy pary funkcji bazowych o takiej samej wartości |k|, to otrzymamy (uwzględniając: cos(−φ) =
= cos(φ), sin(−φ) = −sin(φ)):
j kω t
− j kω t
g k ( t ) = f − k (t ) + f k (t ) = e ( 0 ) + e ( 0 ) = 2 cos ( ( k ω0 )t )
(3.12)
czyli nową funkcję bazową gk(t), przyjmującą tylko wartości rzeczywiste.
W przypadku harmonicznych funkcji bazowych szereg Fouriera jest zdefiniowany wzorem:
x (t ) =
∞
∑ ck e jkω t
(3.13)
0
k = −∞
i sygnał x(t) jest przedstawiany jako suma następujących składowych: składowej stałej (k = 0,
f0(t) = 1), pierwszej harmonicznej (k = ±1, f±1(t) = exp(j2π(±f0)t), drugiej harmonicznej (k = ±2,
f±2(t) = exp(j2π(±2f0)t) itd. Ponieważ sygnały bazowe są funkcjami harmonicznymi o różnych
częstotliwościach, rozłożenie sygnału na związany z nim szereg Fouriera jest metodą analizy
częstotliwościowej, ponieważ współczynniki rozwinięcia ck informują nas, jakie częstotliwości
występują w rozwinięciu, a jakie nie.
Mnożąc obustronnie równanie (3.13) przez exp(−jnω0) i całkując od t0 do t0+T, otrzymujemy
t0 + T
∫
x (t )e − jnω0t dt =
t0
t0 +T
∫
t0
∞
 ∞
j ( k − n ) ω0t 
 ∑ ck e
 dt = ∑ ck
k =−∞
 k =−∞

 t0 + T

 ∫ e j ( k − n ) ω0t dt 
 t0

(3.14)
Ponieważ po zastosowaniu reguły d’Hospitala i uwzględnieniu ω0 = 2π/T:
t0 + T
∫
t0
T
e j ( k − n )ω0t dt = ∫ e j ( k −n ) ω0t dt =
0
0 dla k ≠ n
T
 e j 2 π( k −n ) − 1 = 


j 2 π( k − n )
T dla k = n
(3.15)
stąd
t0 + T
∫ x ( t )e
− jnω0 t
dt = cnT
(3.16)
t0
Ostatecznie dla harmonicznych funkcji bazowych mamy:
t +T
t +T
1 0
1 0
− jnω0t
cn =
x
(
t
)
e
dt
,
c
=
0
∫
∫ x(t )dt
T t
T t
0
0
(3.17)
Szereg Fouriera
66
Identyczny wynik otrzymuje się podstawiając (3.11) do (3.17) i uwzględniając następującą zależność:
t0 + T
t0 + T
t0 + T
t0
t0
t0
∫
f n (t ) f n* (n )dt =
jnω t − jnω t
∫ e 0 e 0 dt =
∫ dt = T
(3.18)
Oczywiście współczynniki szeregu Fouriera są zespolone w przypadku harmonicznych funkcji
bazowych. W związku z tym można je zapisać w układzie biegunowym za pomocą promienia
i kąta (czyli modułu i fazy):
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 ) =
k =−∞
ck e j ( k ω0t +ϕk )
(3.20)
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.
3.3. Harmoniczne rzeczywiste funkcje bazowe
Załóżmy obecnie, że analizowany sygnał x(t) przyjmuje wyłącznie w a r t o ś c i r z e c z y w i s t e , tzn. że
x*(t) = x(t)
(3.21)
Wykonując sprzężenie zespolone obu stron równania (3.13) oraz zmieniając kierunek sumowania, otrzymujemy:
∞
∞
x * (t ) =
∑ ck* e − jkω t = ∑ c−* k e jkω t
0
(3.22)
0
k = −∞
k = −∞
Z równości (3.21) wynika, że
∞
∞
∑ c−* k e jkω t = ∑ ck e jkω t
x * (t ) = x ( t ) ⇒
0
k = −∞
(3.23)
0
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 +
∞
∞
∞
k =1
k =1
k =1
∑  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 
(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 )
k =1
k =1
(3.25)
Szereg Fouriera
67
Z kolei dla:
ck = ak − jbk ,
 −b 
ck = ak2 + bk2 , ϕk = arctg  k 
 ak 
(3.26)
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ż
ck =
t0 +T
1
T
∫
x (t )e − jk ω0t dt =
t0
1
T
t0 +T
∫
x( t ) cos( k ω0t ) dt − j
t0
1
T
t0 +T
∫
x (t )sin( k ω0t ) dt
(3.28)
t0
stąd uwzględniając zależność ck = ak − jbk, mamy:
ak =
1
T
t0 +T
∫
x (t )cos(k ω0 t ) dt , bk =
t0
1
T
t 0 +T
∫
x (t )sin( k ω0t ) dt
(3.29)
t0
3.4. Przykład obliczeniowy
Jako przykład zdekomponujmy w szereg Fouriera typowy sygnał prostokątny postaci
 0
 A

x(t ) = 
 0
− A
dla t = 0
dla 0 < t < T / 2
dla t = T / 2
dla T / 2 < t < T
przedstawiony na rysunku 3.1a. Obliczenia:
ck =
ck =
1
T
T /2
− jkω t
∫ Ae 0 dt +
0
1
A
( − A)e − jkω0 t dt = 
∫
T T2
T

A  −1   − jk ω0t

 e
T  jk ω0  
ck = j
T
T /2
0
− e − jk ω0t
T

T /2

=
T /2
T
0
T /2
− jkω t
∫ e 0 dt −
∫e
(
) (

dt 

)
A  jT   − jk π
− 1 − 1 − e − jk π 

 e

T  k 2π  
dla k parzystych
 0
A  − jk π

e
−1 =  2A

kπ 
 − j k π dla k nieparzystych
dla k = 2l
dla k = 2l
 0
 0
ck = 
, ϕk = 
2 A kπ dla k = 2l + 1
− π / 2 dla k = 2l + 1
dla k = 2l
 0
ak = 0, bk = 
2 A kπ dla k = 2l + 1
Ostatecznie z wzoru (3.27) otrzymujemy:
x (t ) =
− jkω0 t
4A 
1
1

 sin ω0t + sin 3ω0t + sin 5ω0t + ... 
π 
3
5

Szereg Fouriera
68
Tab. 3-1. Współczynniki szeregu Fouriera wybranych sygnałów
Sygnał
Prostokątny, bipolarny
rys. 3.1a
Współczynniki szeregu Fouriera
x (t ) =
4A 
1
1

 sin ω0t + sin 3ω0t + sin 5ω0t + ... 
π 
3
5

Prostokątny, unipolarny
wypełnienie 1/2
rys. 3.1b
x (t ) =
A 2A 
1
1

+
 cos ω0t − cos 3ω0t + cos 5ω0t − ... 
5
2 π 
3

Prostokątny, unipolarny,
wypełnienie dowolne
rys. 3.1c
x (t ) =
Aτ 2 Aτ ∞ sin( πk τ / T )
+
cos k ω0t
∑
T
T k =1 πk τ / T
Trójkątny, bipolarny 1
rys. 3.1d
x (t ) =
8A 
1
1

sin ω0t − 2 sin 3ω0t + 2 sin 5ω0t − ... 
2
π 
3
5

Trójkątny, bipolarny 2
rys. 3.1e
x (t ) =
2A 
1
1

 sin ω0t − sin 2ω0t + sin 3ω0t − ... 
π 
2
3

Trójkątny, unipolarny 1
rys. 3.1f
x (t ) =
A 4A ∞
1
−
cos(2k + 1)ω0t
∑
2 π2 k =0 (2k + 1)2
Trójkątny, unipolarny 2
rys. 3.1g
x (t ) =
A A ∞ sin k ω0t
− ∑
2 π k =1
k
Sinusoidalny wyprostowany
dwupołówkowo
rys. 3.1h
x (t ) =
2A 4A ∞
1
−
cos2k ω0t
∑
π
π k =1 4k 2 − 1
Sinusoidalny wyprostowany
jednopołówkowo
rys. 3.1i
x (t ) =
A A
2A ∞
1
+ sin ω0t −
cos2k ω0 t
∑
π 2
π k =1 4k 2 − 1
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 deterministycznych, których przebiegi czasowe są przedstawione na rysunku 3.1.
3.5. Przykład ćwiczenia komputerowego
Przedstawimy teraz przykład komputerowej dekompozycji w szereg Fouriera dyskretnych
wersji sygnałów z rysunków 3.1a i 3.1f (T = 1 sekunda, f0 = 1 Hz). Wykorzystamy do tego celu
program, napisany w języku Matlab, przedstawiony w tabeli 3-2. Uzyskane wyniki są zaprezentowane na rysunku 3.2.
Szereg Fouriera
69
x1(t)
A
x2(t)
t
a)
-A
0
T/2
A
b)
T
t
-T/2
x3(t)
0
t
x6(t)
A
t
T/2
e)
0
t
T
-A
T
x5(t)
A
T
T/2
d)
-τ/2 τ/2 T/2
T/2
x4(t)
A
A
c)
0
f)
T
t
0
-A
x7(t)
T
2T
x8(t)
A
g)
h)
A
t
t
0
T
0
2T
T/2
T
x9(t)
i)
A
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
% Ćwiczenie: Szereg Fouriera − aproksymacja wybranych przebiegów czasowych
clear all; clf; subplot(111);
% Parametry programu
T=1;
N=1000;
dt=T/N;
t=0:dt:(N-1)*dt;
A=1;
NF=30;
%
%
%
%
%
%
okres przebiegu prostokątnego [sekundy]
liczba próbek przypadających na ten okres
odległość między próbkami
kolejne chwile czasowe odpowiadające próbkom sygnału
amplituda sygnału [−A, +A]
liczba współczynników szeregu Fouriera do wyznaczenia (mniejsza lub równa N/2)
Szereg Fouriera
70
isygnal=1;
% numer sygnału testowego
f0=1/T;
% częstotliwość podstawowa szeregu Fouriera
% Wygenerowanie jednego okresu sygnału
if
if
if
if
if
if
(isygnal==1)
(isygnal==2)
(isygnal==3)
(isygnal==4)
(isygnal==5)
(isygnal==6)
x=[0 A*ones(1,N/2-1) 0 -A*ones(1,N/2-1)]; end
x=[A*ones(1,N/4) 0 -A*ones(1,N/2-1) 0 A*ones(1,N/4-1)]; end
x=[A*ones(1,N/8) 0 -A*ones(1,5*N/8-1) 0 A*ones(1,2*N/8-1)]; end
x=(A/T)*t; end
x=[(2*A/T)*t(1:N/2+1) (2*A/T)*t(N/2:-1:2)]; end
x=sin(2*pi*t/(T)); end
% Dodaj inne sygnały ...
% if (isygnal==7) x=?; end
plot(t,x); grid; title('Sygnał analizowany'); xlabel('czas [sek]'); pause
% Wyznaczenie współczynników rozwinięcia sygnału w szereg Fouriera
for k=0:NF-1
ck=cos(2*pi*k*f0*t); % plot(t,ck); grid; title('cosinus'); pause % k-ty cosinus
sk=sin(2*pi*k*f0*t); % plot(t,sk); grid; title('sinus'); pause
% k-ty sinus
a(k+1)=sum(x.*ck)/N;
% współczynnik kosinusa
b(k+1)=sum(x.*sk)/N;
% współczynnik sinusa
% F(k+1,1:N)=(ck-j*sk)/sqrt(N);
% w celach testowych dla małego N
end
% I = F * F'
% pause
% test ortonormalności bazy Fouriera dla małego N
f=0 : f0 : (NF-1)*f0;
subplot(211); stem(f,a,'filled'); xlabel('[Hz]'); title('Współczynniki cos');
subplot(212); stem(f,b,'filled'); xlabel('[Hz]'); title('Współczynniki sin');
pause
% Porównanie ze współczynnikami teoretycznymi − dodaj dla pozostałych
if (isygnal==1) % funkcja asymetryczna (tylko sinusy)
at=[]; bt=[];
for k=1:2:NF
at=[at 0 0];
bt=[bt 0 (2*A)/(pi*k)];
end
subplot(211); plot(f,a-at(1:NF)); grid; xlabel('[Hz]'); title('Różnica cos');
subplot(212); plot(f,b-bt(1:NF)); grid; xlabel('[Hz]'); title('Różnica sin');
pause
end
% Porównanie z dyskretną transformacją Fouriera
X = fft(x,N)/N;
X = conj(X);
% funkcje bazowe exp(-jwt) a nie exp(j*wt),
% czyli dla sygnałów rzeczywistych x mamy sprzężenie
subplot(211); plot( f, a-real(X(1:NF)) ); grid; title('Różnica z DFT - COS');
subplot(212); plot( f, b-imag(X(1:NF)) ); grid; title('Różnica z DFT - SIN');
pause
% Synteza sygnału ze współczynników rozwinięcia
subplot(111);
a(1)=a(1)/2; y=zeros(1,N);
for k=0:NF-1
y = y + 2*a(k+1)*cos(k*2*pi*f0*t) + 2*b(k+1)*sin(k*2*pi*f0*t);
plot(t,y); grid; title('Suma = k pierwszych funkcji bazowych'); pause
end
plot(t,y); grid; title('Całkowity sygnał zsyntezowany'); xlabel('czas [sek]'); pause
plot(t,y-x); grid; title('Sygnał błędu'); xlabel('czas [sek]'); pause
Szereg Fouriera
71
współczynniki sinusów
1
a)
-0.1
b)
0.5
0
współczynniki sinusów
0
-0.2
-0.3
0
5
10
15
0
20
suma 5 harmonicznych
0
d)
-1
0
0.5
0
1
20
0
0.5
1
czas [s]
suma 10 harmonicznych
suma 10 harmonicznych
1
1
0
f)
-1
0
0.5
0.5
0
1
0
czas [s]
0.5
1
czas [s]
suma 30 harmonicznych
suma 30 harmonicznych
1
1
g)
15
0.5
czas [s]
e)
10
suma 5 harmonicznych
1
1
c)
5
f [Hz]
f [Hz]
0
h)
-1
0.5
0
0
0.5
1
0
czas [s]
0.5
1
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
3.6. Szereg Fouriera sygnałów dyskretnych
− dyskretne przekształcenie Fouriera
Obecnie t y l k o w c e l a c h p o g l ą d o w y c h wyznaczymy w sposób uproszczony odpowiedniki równań (3.13), (3.17) dla sygnałów dyskretnych. Załóżmy, że dysponujemy N prób-
Szereg Fouriera
72
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ęstotliwość 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 wynosi 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
ck =
1 N −1
1
x(n∆t )e− jk ω0 ( n ∆t ) ∆t =
∑
N ∆t n = 0
N
N −1
∑ x ( n )e
−j
2 πk
( n∆t )
N ∆t
,
k = 0, ± 1, ± 2, ...
(3.30)
n=0
skąd po uproszczeniu wyrażenia znajdującego się w eksponencie otrzymujemy:
ck =
1
N
N −1
∑ x ( n )e
−j
2π
kn
N ,
k = 0, ± 1, ± 2, ...
(3.31)
n =0
Ponieważ jednak funkcja eksponencjalna występująca w powyższym wzorze jest okresowa ze
względu na k i ma okres równy N :
e
−j
2π
(k + N )n
N
=e
−j
2π
kn
N
(3.32)
stąd funkcje bazowe są identyczne dla k i k+N i współczynniki szeregu Fouriera sygnału dyskretnego wystarczy obliczyć tylko dla 0 ≤ k ≤ N − 1 . Ostatecznie współczynniki szeregu Fouriera są w tym przypadku równe:
ck =
1
N
N −1
∑ x ( n )e
−j
2π
kn
N ,
k = 0, 1, 2, ..., N − 1
(3.33)
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
Re(ck ) =
1
N
N −1
 2π

∑ x(n) cos N kn ,
n =0
Im(ck ) = −
1
N
N −1
 2π

∑ x(n) sin N kn 
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 
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 
(3.34)
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 
N
N
N
N








(3.35)
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)
c N / 2 + k = (c N / 2 − k )*
(3.36b)
czyli
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)symetryczne. 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 zależ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ęstotliwoś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 indeksach k oraz k + mN są dokładnie takie same.
Dygresja. Podobne problemy z „kształtem” muszą także dotyczyć analizowanego sygnału.
Wynika stąd, że po spróbkowaniu sygnału analogowego x(t) z częstotliwością fp, w jego wersji
dyskretnej x(n) nie możemy rozróżnić częstotliwości f i mfp−f oraz f i mfp+f. Należy więc
ograniczyć tak pasmo częstotliwościowe sygnału, aby nie występował w nim ten problem.
Najczęściej filtruje się sygnał filtrem dolnoprzepustowym, usuwającym z niego składowe
o częstotliwości równej lub większej od połowy częstotliwości próbkowania. Dlaczego eliminuje się także połowę fp? Ponieważ w przypadku sygnału (ko)sinusoidalnego o tej częstotliwości można mieć pecha i podczas próbkowania „trafiać” wyłącznie w miejsca zerowe
„funkcji” sygnału i uzyskać składową stała, a to musi zakończyć się „fatalnym zauroczeniem”
prostotą sygnału i diagnostyczną katastrofą.
Traktując współczynniki ck szeregu Fouriera jako widmo amplitudowe X(k) analizowanego
sygnału x(n) (patrz rozdział 1), ostatecznie otrzymuje się na podstawie (3.33) parę równań
szeregu Fouriera dla sygnałów dyskretnych:
1
X (k ) =
N
N −1
∑ x (n)e
n =0
−j
2π
kn
N
,
x( n) =
N −1
∑ X ( k )e
j
2π
kn
N
(3.37a, b)
k =0
Powszechnie w literaturze powyższa transformacja sygnału jest nazywana dyskretną transformacją Fouriera. Jest to transformacja ortogonalna, ponieważ funkcje bazowe „rozpinające”
sygnał są wzajemnie do siebie ortogonalne, lecz nie ortonormalne (patrz rozdz. 2.4).
Problemowi analizy częstotliwościowej sygnałów z wykorzystaniem wzoru (3.37a) w całości
poświęcono rozdział ósmy.
4
Całkowe przekształcenie Fouriera
Przypomnijmy, sygnały cyfrowe powstają w wyniku dyskretyzacji w czasie i kwantowania
wartości sygnałów analogowych. Jak związane są ze sobą ich widma częstotliwościowe? Czy
w wyniku operacji próbkowania nie tracimy bezpowrotnie ważnych informacji o sygnale analogowym? Jak należy dobierać częstotliwość próbkowania? Celem niniejszego rozdziału jest
próba udzielenia prostej i przekonywającej odpowiedzi na powyższe, fundamentalne pytania.
Możliwe jest to na gruncie całkowego przekształcenia Fouriera. Jak się okaże przekształcenie
to jest bardzo użyteczne do interpretacji wielu ważnych zjawisk obserwowanych podczas
analizy częstotliwościowej sygnałów analogowych i dyskretnych.
4.1. Definicja
Całkowe przekształcenie Fouriera jest określone parą następujących transformacji:
∞
X ( jω) =
∫ x(t )e
−∞
− jωt
∞
dt , x(t ) =
1
j ωt
∫ X ( jω)e d ω
2π −∞
(4.1a, b)
wiążących sygnał x(t) z jego widmem Fouriera X(jω). Pierwsze równanie jest równaniem „analizy” (wyznaczenie współczynników Fouriera), a drugie − równaniem „syntezy” (zsyntezowanie 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 (funkcji uogólnionych), których wynikiem może być także dystrybucja.
Całkowe przekształcenie Fouriera jest wyprowadzane jako graniczny przypadek szeregu Fouriera:
Całkowe przekształcenie Fouriera
1) x (t ) =
∞
∑
k =−∞
ck e jk ω0t =
75
∞  2π 1 T / 2
 1 T /2


x ( τ)e − jk ω0 τ d τ  e jk ω0t = ∑ 
x ( τ)e− jk ω0 τ d τ  e jk ω0t

∫
∫



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
1 ∞
 2π  1
− jk ω0 τ
jωt
d τ  e jk ω0t   =
x( τ)e − jωτd τ  e jωt d ω =
 ∫ x ( τ)e

∑
∫
∫
∫ X ( jω)e d ω


T →∞ 2 π k =−∞
2 π −∞
 T  2 π −∞  −∞
 −T / 2


lim
(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ω) e j
X ( jω)
(4.5)
i przedstawić równanie odwrotnego przekształcenia Fouriera (4.1b) jako:
x (t ) =
1 ∞
j ( ωt +
∫ X ( jω) e
2π −∞
X ( j ω) )
dω
(4.6)
Wynika z niego, że podczas operacji syntezy wynikowy sygnał x(t) powstaje w wyniku sumowania nieskończonej liczby sygnałów harmonicznych ejωt, z których każdy ma swoją amplitudę
|X(jω)| i przesunięcie fazowe X(jω).
4.2. Podstawowe właściwości
Wyprowadzimy teraz niektóre podstawowe właściwości przekształcenia Fouriera, które będą
przez nas wykorzystywane w następnych rozdziałach. Ponieważ większość tych właściwości
ma także dyskretna wersja przekształcenia Fouriera, która będzie dyskutowana później, mają
one podstawowe znaczenie dla swobodnego poruszania się „w meandrach” analizy i przetwarzania sygnałów, tak analogowych jak i cyfrowych. Stanowią podstawowy zbiór tego, „co
każdy ... znawca teorii sygnałów ... wiedzieć powinien”.
Oznaczmy przez F(.) proste przekształcenie Fouriera, przez F −1(.) zaś przekształcenie odwrotne. Dodatkowo niech X(jω), Y(jω) i Z(jω) oznaczają transformaty Fouriera sygnałów x(t),
y(t) i z(t), tzn. x(t)↔X(jω), y(t)↔Y(jω), z(t)↔Z(jω).
Całkowe przekształcenie Fouriera
76
1) Liniowość: ax (t ) + by (t ) ↔ aX ( jω) + bY ( jω)
(4.7)
Dowód. Własność ta bezpośrednio wynika z faktu, że całkowanie jest operacją liniową (całka z sumy dwóch funkcji jest równa sumie całek każdej z nich z osobna).
2) Symetria (dualność): X(jt) ↔ 2πx(−ω)
(4.8)
Dowód. Po podstawieniu t = Ω, otrzymujemy
F ( X ( jt ) ) =
∞
 1 ∞

X ( jt )e− jωt dt = 2π 
X ( jΩ) e jΩ ( −ω) d Ω  = 2πx ( −ω)
 2π ∫

−∞
 −∞

∫
3) Przeskalowanie: x( at ) ↔
1  ω
X  , a > 0
a a
(4.9)
Dowód. Po podstawieniu τ = at, otrzymujemy t = τ/a, dt = dτ/a oraz
F ( x ( at ) ) =
∞
− jωt
∫ x(at )e dt =
−∞
∞
∫
x ( τ) e
− jω
τ
a
−∞
∞
ω
−j τ
dτ 1
1  ω
= ∫ x ( τ ) e a dτ = X  
a a −∞
a a
Wniosek. Jak widać przeskalowanie sygnału w osi czasu prowadzi do odwrotnego przeskalowania 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 przedtem dla ω = 1. Właściwość ta ma podstawowe znaczenie w tzw. analizie czasowo-częstotliwoś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 bezwzglę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 ))
Dowód.
∞
∫
−∞
(
)
e ± jω0t x (t ) e − jωt dt =
∞
∫
−∞
(4.11)
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ω), przesuniętemu do pulsacji ±ω0 (częstotliwości ±f0). Przykładowo, po wymnożeniu sygnału x(t)
Całkowe przekształcenie Fouriera
1
77
1
x(t)
0.5
0.5
0
0
-0.5
x(2t)
-0.5
t [s]
-1
0
0.16
0.5
1
t [s]
-1
1.5
0
0.16
X(f)
0.12
0.12
0.08
0.08
0.04
0.5
1
X(f/2)/2
0.04
f [Hz]
0
0
10
20
1.5
f [Hz]
0
30
0
10
20
30
Rys. 4.1. Przykładowy sygnał x(t) oraz jego wersja przeskalowana x(2t) oraz widma obu sygnałów (odpowiednio): X(f) oraz
1 f 
X 
2 2
X(ω+ω0)
X(ω)
X(ω−ω0)
ω
-ω0
ω0
0
Rys. 4.2. Widma X(ω+ω0), X(ω) i X(ω−ω0)
sygnałów x(t)exp(−jω0t), x(t), x(t)exp(+jω0t)
(modulacja zespolona)
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ęstotliwościowych” operacji modulacji zespolonej.
6) Modulacja rzeczywista:
1
[ X (ω − ω0 ) + X (ω + ω0 )]
2
−j
x (t )sin( ω0t ) ↔
[ X (ω − ω0 ) − X (ω + ω0 )]
2
x (t ) cos(ω0t ) ↔
(4.12a)
(4.12b)
Dowód. Jest to konsekwencja właściwości 5 (modulacja zespolona), liniowości przekształcenia Fouriera oraz wzoru Eulera:
[
]
cos(ω0 t ) =
1 jω0t
1
e
+ e − jω0t = [(cos(ω0 t ) + j sin(ω0 t ) ) + (cos(ω0 t ) − j sin(ω0 t ) )]
2
2
sin( ω0 t ) =
1 jω0t
1
[(cos(ω0t ) + j sin(ω0t ) ) − (cos(ω0t ) − j sin(ω0t ) )]
e
− e − jω0t =
2j
2j
[
]
W powyższych równaniach uwzględniono, że cos(−φ) = cos(φ), sin(−φ) = −sin(φ). X(ω+ω0)
oznacza widmo X(ω) sygnału x(t) przesunięte do pulsacji −ω0, a X(ω−ω0) − widmo X(ω)
przesunięte do pulsacji ω0.
Całkowe przekształcenie Fouriera
78
∞
7) Splot sygnałów: z (t ) = x(t ) ⊗ y (t ) =
∫ x(τ) y (t − τ)dτ
↔
Z ( jω) = X ( jω)Y ( jω)
(4.13)
−∞
Dowód. Po wprowadzeniu nowej zmiennej ξ = t−τ, otrzymujemy t = ξ+τ, dt = dξ+dτ oraz
∞
∞  ∞


∞
 ∞

x ( τ) y (t − τ)d τ e − jωt dt = ∫  ∫ x( τ)e− jωτ d τ  y ( ξ)e− jωξ ( d ξ + d τ ) =  ∫ x( τ)e− jωτ d τ  ∫ y (ξ)e − jωξ d ξ 






−∞  −∞
−∞  −∞


 −∞
 −∞


∞
∫  ∫
Wniosek. S p l o t s y g n a ł ó w w d z i e d z i n i e c z a s u j e s t r ó wn o wa ż n y i l o c z y n o wi
i c h t r a n s f o r m a t F o u r i e r a w d z i e d z i n i e c z ę s t o t l i wo ś c i . Kształtując więc
odpowiednio widmo Y(jω) sygnału y(t) można za pomocą splotu modyfikować widmo X(jω)
sygnału x(t), czyli filtrować ten sygnał. „Jedynki” w widmie Y(jω) „przepuszczają” wybrane
pulsacje z X(jω), a „zera” − usuwają je. Jak widać w praktyce operację splotu dwóch
sygnałów w dziedzinie czasu można zastąpić serią trzech przekształceń Fouriera, dwóch
„prostych” (X(jω) = F(x(t)) i Y(jω) = F(y(t))) i jednego „odwrotnego” (z(t) = F−1( X(jω)⋅
⋅Y(jω))).
∞
8) Iloczyn sygnałów: z (t ) = x(t ) y (t ) ↔ Z ( jω) =
1
X ( jν)Y ( j ( ω − ν) )dν = X ( jω) ⊗ Y ( jω)
2π −∫∞
(4.14)
Dowód. Po wprowadzeniu nowej zmiennej Ω = ω−ν , otrzymujemy ω = Ω+ν oraz
z(t ) =

 1 ∞
 1 ∞

1 ∞ 1 ∞
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 sygnałó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)
−∞
Dowód. Analogiczny jak w przypadku splotu (podstawienie ξ = τ − t, stąd t = τ − ξ oraz
dt = dτ − dξ):
∞
∞  ∞
∞
 − jωt
 *
∞
 ∞

− jωτ
− jωτ
− jωξ
*
jωξ
∫  ∫ x( τ) y ( τ − t )dτ e dt = ∫  ∫ x( τ)e dτ  y ( ξ)e (dτ − dξ) =  ∫ x ( τ)e dτ  ∫ y (ξ)e dξ 
−∞  −∞
−∞  −∞


 −∞
 − ∞

*
Wniosek. W przypadku sygnałów i funkcji dyskretnych, powyższa zależność może być wykorzystana do szybkiego wyznaczenia funkcji autokorelacji sygnału w dziedzinie częstotliwości za pomocą sekwencji trzech transformacji Fouriera: 1) dwóch transformacji prostych − X(jω) = F(x(t)), Y(jω) = F(y(t)), 2) iloczynu X(jω)Y*(jω), 3) jednej transformacji odwrotnej − 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.
10) Pochodna:
d n x(t )
dt
n
↔ ( jω) n X ( jω),
dx (t )
dt
↔
jωX ( jω)
(4.16)
Całkowe przekształcenie Fouriera
79
Dowód. Po zróżniczkowaniu obu stron równania (4.1b) otrzymujemy:
d n x (t )
dt
n
=
1 ∞
1 ∞
n
jωt
( jω) n X ( jω)e jωt d ω =
∫
∫ ( jω) X ( jω)  e d ω
2 π −∞
2π −∞ 
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
11) Całka:
∫ x ( τ ) dτ
1
X ( jω) + πX (0)δ(ω)
jω
↔
−∞
(4.17)
Uwaga. Potem zobaczymy, że właściwość ta jest istotna podczas analizy częstotliwościowej układów, opisanych równaniami całkowymi.
12) Równość Parsevala:
∞
∫
2
x (t ) dt =
−∞
1 ∞
2
X ( jω) d ω
∫
2 π −∞
(4.18)
Dowód. Podstawienie odwrotnej transformacji Fouriera za x(t) i zmiana kolejności całkowania:
∞
∫
−∞
x (t ) x * (t )dt =
∞
 1
∞
∫  2π ∫ X ( jω)e
−∞ 
jωt
−∞
∞
∞

∞

1
1
*
dω  x * (t )dt =
X ( jω) ∫ x * (t )e jωt dt dω =
∫
∫ X ( jω) X ( jω)dω



2
π
2
π
−∞
−∞

 −∞

Wniosek. Przekształcenie Fouriera zachowuje energię sygnału.
4.3. Transformaty Fouriera wybranych sygnałów
Ponieważ podstawową rolę w teorii przekształcenia Fouriera odgrywa specyficzny „sygnał”
zwany impulsem (deltą) Diraca, jej definicję i transformatę Fouriera podano na początku. Impuls ten nie jest funkcją w tradycyjnym znaczeniu, tylko tzw. dystrybucją, czyli funkcją uogólnioną. Jest on zdefiniowany w sposób następujący:
 = 0 dla t ≠ 0
δ( t ) 
,
 ≠ 0 dla t = 0
∞
∫ δ(t )dt = 1
(4.19), (4.20)
−∞
i reprezentuje sobą nieskończenie krótki impuls o nieskończonej amplitudzie i jednostkowym
polu. Impulsem Diraca jest przykładowo granica następującego ciągu funkcyjnego:
δ(t ) = lim g T (t ),
T →0
g T (t ) =
 πt 2 
1
exp − 2 
T
 T 
(4.21)
czyli granica funkcji gaussowskiej dla T dążącego do zera. Innym przykładem impulsu Diraca
może być sygnał „graniczny” postaci:
δ(t ) = lim
1
T →0 2T
pT (t ),
 0 dla t > T
pT (t ) = 
 1 dla t ≤ T
(4.22)
Oba sygnały (4.21) i (4.22), aproksymujące impuls Diraca, są przedstawione na rysunku 4.3.
Liczba 1 na rysunku 4.3c oznacza jednostkowe pole powierzchni impulsu Diraca.
Całkowe przekształcenie Fouriera
80
a)
b)
gT(t)
1/T3
pT(t)/2
T3
c)
δ(t)
T1>T2>T3
1
T2
T1
t
t
t
-T2 -T3 0 T3 T2
-T1
T1
0
Rys. 4.3. Aproksymacja sygnału delty Diraca δ(t) za pomocą: a) funkcji gaussowskich, b) impulsów prostoką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):
∞
∫ x(t )δ(t )dt = x(0)
(4.23a)
−∞
lub ogólniej
∞
∫ x(t )δ(t − τ)dt = x(τ)
(4.23a)
−∞
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
∞
∞
k = −∞
k = −∞
∑ δ(t − kT ) = ∑
c k e jkω0t =
1 ∞ jkω0t
2π
∑ e , ω0 = T
T k = −∞
(4.24)
ponieważ z (4.20) wynika, że współczynniki rozwinięcia ck są równe:
ck =
1
T
T /2
∫
δ(t )e − jkω0t dt =
−T / 2
1
T
(4.25)
Teraz wyprowadzimy transformaty Fouriera wybranych sygnałów. Na rysunku 4.4 graficznie
przedstawiono kształty przebiegów czasowych rozpatrywanych sygnałów i ich widm Fouriera,
z wyjątkiem sygnału harmonicznego (sygnał numer 6).
 0 dla t > T
1) Impuls prostokątny: pT (t ) = 
 1 dla t ≤ T
↔ 2
sin ωT
ω
(4.26)
Dowód.
∞
∫
−∞
pT (t )e − jωt dt =
T
∫
−T
e − jωt dt =
1 − jωt
e
− jω
T
=
−T
e − jωT − e jωT
sin ωT
sin ωT
=2
= 2T
= 2T sinc( ω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
2) Impuls sinc: 2
sin Ωt
t
81
 0 dla ω > Ω
↔ 2πPΩ ( −ω), PΩ (ω) = PΩ ( −ω) = 
 1 dla ω ≤ Ω
(4.27)
Wynika z (4.26) i z właściwości symetrii (dualności) przekształcenia Fouriera.
3) Impuls Diraca: δ(t ) ↔ 1
(4.28)
Dowód. Wykorzystując właściwość (4.23) sygnału delty Diraca otrzymujemy:
∞
∫ δ(t )e
− jωt
dt = e − jω⋅0 = 1
−∞
Przykładowo dla sygnału (4.22), stosując regułę d’Hospitala, mamy:
T 1

sin ( ωT )
1


pT (t )  e − jωt dt = lim  ∫
pT (t )e− jωt dt  = lim
=1
 Tlim


T →0
→0 2T

−∞ 
 −T 2T
 T →0 ωT
∞
∫
4) Sygnał stały: 1 ↔ 2πδ(ω)
(4.29)
Wynika z (4.28) i właściwości symetrii (dualności) przekształcenia Fouriera.
5) Szereg impulsów Diraca: δ T (t ) =
∞
∞
k = −∞
k = −∞
∑ δ(t − kT ) ↔ ω0 ∑ δ(ω − kω0 ) ,
gdzie ω0 =
2π
(4.30)
T
Dowód. Z (4.24) otrzymujemy:
∞

∞

∞

−∞ 
∞
1

1
∞

∞

1
∞
jkω t
jkω t − jωt
− jωt
− jωt
∫  ∑ δ(t − kT ) e dt = ∫  T ∑ e e dt = T ∑  ∫ e e dt  = T ∑ 2πδ(ω − kω0 )
− ∞  k = −∞
0

k = −∞
0
k = −∞  −∞

k = −∞
Wniosek. Jak się później okaże, z właściwości tej będziemy korzystać podczas wyprowadzenia twierdzenia o próbkowaniu sygnałów analogowych, gdyż operacja próbkowania o okresie 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 =
1 jω0t
e
+ e− jω0t
2
sin ω0t =
1
e jω0t − e − jω0t
2j
(
↔
)
1
( 2πδ(ω − ω0 ) + 2πδ(ω + ω0 ) )
2
↔ −
j
( 2πδ(ω − ω0 ) − 2πδ(ω + ω0 ) )
2
(4.32a)
(4.32b)
Wynika z (4.31) i właściwości liniowości przekształcenia Fouriera.
− 1 dla t < 0

8) Sygnał znaku: x (t ) = sgn(t ) =  0 dla t = 0 ↔
 1 dla t > 0

X ( jω) =
2
jω
(4.33)
Całkowe przekształcenie Fouriera
82
∞
Dowód.


−ε t
−ε t
F {sgn(t )} = F  lim e
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  ε − jω ε + jω  jω
0
 −∞
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
↔
9) Sygnał skoku jednostkowego: x (t ) = u(t ) = 
 1 dla t ≥ 0
X ( jω) = πδ(ω) +
1
jω
(4.34)
1 2 
1 1
 1
Dowód. F {u(t )} = F  + sgn(t )  = (2πδ( ω) ) +  
2  jω 
2 2
 2
10) Sygnał gaussowski: x (t ) = e −at
2
π −ω2 /( 4 a )
e
a
↔
(4.35)
Dowód: Stosując podstawienie β = t a + jω /(2 a ) (skąd dβ = a dt ) oraz uwzględniając, że (c+d)2 = c2+d2+ 2cd oraz
∞
∫e
− β2
dβ = π , otrzymujemy:
−∞
∞
2
2
−ω
− at − jωt
∫ e e dt = e
/( 4 a )
∞
a + jω /( 2 a )) 2
−( t
∫e
 0
11) Sygnał eksponencjalny: x(t ) =  − at
e
∞
∞
− at − jωt
− ( a + jω) t
dt =
∫ e e dt = ∫ e
0
e −ω
−∞
−∞
Dowód.
2
dt =
0
dla t < 0
↔
dla t ≥ 0
/( 4 a ) ∞
a
−∞
H ( jω) =
1
e − ( a + jω)t
− ( a + jω)
2
−β
∫ e dβ =
∞
=
0
2
e −ω
/( 4 a )
a
1
, (a>0)
a + jω
π
(4.36)
1
a + jω
12) Sygnał sinusoidalny z obwiednią eksponencjalną:
0
dla t < 0

x (t ) =  − at
↔
sin
Ae
ω
t
dla t ≥ 0
0

∞
Dowód.
∞
X ( jω) =
− at
− j ωt
− ( a + j ω) t
∫ Ae sin(ω0t )e dt = A∫ e
0
∞
0
Aω0
(a + jω) 2 + ω20
, (a>0)
(4.37)
1 j ω0t
[e
− e− jω0t ]dt =
2j
∞
=

A
−[ a + j ( ω−ω0 ) ]t
− a + j ( ω+ω0 ) ]t
dt − ∫ e [
dt  =
∫e

2 j  0
0

=
A
1
1
− a + j ( ω−ω0 ) )t ∞
− a + j ( ω+ω0 ) )t ∞ 
e (
e (
−

=
0 − ( a + j (ω + ω0 ) )
0 
2 j  − ( a + j (ω − ω0 ) )
=
 A
2 jω0
Aω0
A
1
1

=
−
=
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
13) Sygnał kosinusoidalny z obwiednią eksponencjalną:
0
dla t < 0

x (t ) =  − at
↔
 Ae cos ω0 t dla t ≥ 0
X ( jω) = A
a + jω
(a + jω) 2 + ω20
, (a>0)
(4.38)
Dowód. Analogiczny jak w pkt 12. Podstawienie: cos(ω0t) = 1/2(exp(jω0t)+exp(−jω0t)).
14) Fragment sygnału kosinusoidalnego wycięty przez okno prostokątne :
cos(ω0 t ) ⋅ pT (t ) ↔
sin((ω − ω0 )T ) sin (( ω + ω0 )T )
+
ω + ω0
ω − ω0
(4.39)
Dowód: Zależność ta w prosty sposób wynika z właściwości 8 całkowego przekształcenia
Fouriera iloczynu sygnałów (patrz równanie (4.14)) oraz z osobnych widm sygnałów
cos(ω0t) i pT(t). Widmo sygnału pT(t), czyli 2sin(ωT)/ω, zostaje przesunięte do pulsacji ω0
oraz −ω0 oraz wymnożone z deltami Diraca πδ(ω−ω 0) i πδ(ω+ω 0) widma sygnału kosinusoidalnego, a następnie podzielone przez 2π (przeskalowanie występujące w całce splotowej).
15) Fala prostokątna unipolarna:
x (t ) = pT (t ) ⊗ δ 4T (t ) ↔
X ( ω) = 2
∞
π 
sin( ωT ) 2π ∞ 
2π 
2
kπ 
⋅
δ ω − k
 = ∑ sin δ ω − k

∑
ω
4T k = −∞ 
4T  k = −∞ k
2 
2T 
(4.40)
Dowód: Unipolarna fala prostokątna może być przedstawiona jako splot (operacja ⊗) impulsu prostokątnego pT(t) i szeregu impulsów Diraca δ4T(t). Zgodnie z właściwością 7 całkowego przekształcenia Fouriera konsekwencją splotu sygnału w dziedzinie czasu jest iloczyn ich widm w dziedzinie częstotliwości. A widma poszczególnych sygnałów obliczyliśmy powyżej. Jak widać widmo fali prostokątnej jest rzeczywiste, czyli do odtworzenia
sygnału wystarczą tylko funkcje kosinus (odwrotne przekształcenie Fouriera):
x (t ) =
=
1 ∞  ∞ 2  kπ  
1 ∞ 2  kπ 
π   jωt
 kπ 
∑ k sin  2  exp  j 2T t  =
  e dt =
 ∑ sin   δ  ω − k
∫
2π −∞  k =−∞ k
2
2
T
2
π
  

 


k =−∞
∞ 4
1 
 kπ 
 π
 π + ∑ sin   cos  k
2π 
k
2


 2T
k =1
 1 2 ∞ 1  kπ 
 π 
t   = + ∑ sin   cos  k
t
  2 π k =1 k
 2 
 2T 
Uzyskaliśmy rezultat identyczny jak w tabeli 3-1 pozycja 2 (szereg Fouriera), ponieważ
dla k = 1, 2, 3, 4, 5, 6, 7,... mamy:
1
1
1  kπ 
1
sin  = 1, 0, − , 0, , 0, − , ...
7
5
k  2 
3
Na podstawie powyższych właściwości można także wyprowadzić równość znaną jako suma
Poissona:
∞
∑
x (t + kT ) =
k = −∞
1 ∞ jkω0t
∑ e X ( jkω0 ) ,
T k = −∞
gdzie ω0 =
2π
T
(4.41)
W szczególności:
∞
∑
k = −∞
x ( kT ) =
1 ∞
∑ X ( jkω0 ) dla t = 0
T k = −∞
(4.42)
Całkowe przekształcenie Fouriera
84
X(ω)
2T
x(t)
1
a)
ω
t
-T
0
T
-4π/T -2π/T
2π/T 4π/T
0
x(t)
2Ω
X(ω)
2π
b)
t
ω
-4π/Ω -2π/Ω 0
2π/Ω 4π/Ω
-Ω
Ω
0
x(t)
X(ω)
1
1
c)
t
ω
0
0
X(ω)
x(t)
2π
1
d)
ω
t
0
0
X(ω)
x(t)
e)
2π/T
1
ω
t
-2T
-T
0
T
2T
-4π/T
-2π/T
0
2π/T
4π/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
2π/ω0
85
x(t)
1
X(ω)
t
f)
π
π
t
0
-ω0
2π/ω0
ω0
Imag{X(ω)}
x(t)
1
π
t
ω0
t
g)
-ω0
0
−π
Imag{X(ω)}
x(t)
1
ω
t
h)
0
0
-1
Real{X(ω)}
ω
x(t)
i)
1
t
Imag{X(ω)}
0
x(t)
π/a
1
X(ω)
j)
t
ω
Rys. 4.4. (cd.) f) sygnał kosinusoidalny, g) sygnał sinusoidalny, h) sygnał znaku, i) sygnał skoku jednostkowego, j) sygnał gaussowski
Całkowe przekształcenie Fouriera
86
1/a
x(t)
1
π/2
|X(ω)|
Re{X(ω)}
k)
ω
a
ω
-a
t
X(ω)
Im{X(ω)
-1/(2a)
0
-π/2
x(t)
-π
Im{X(ω)}
l)
|X(ω)|
Re{X(ω)}
ω
ω
t
ω20 − a 2
≈ ω0
≈ −ω0±a
X(ω)
π
x(t)
Re{X(ω)}
m)
π/2
t
|X(ω)|
X(ω)
ω
≈ ω0
≈ −ω0±a
ω
ω02 + a 2
Im{X(ω)}
x(t)
-π/2
2πT
1
X(ω)
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ą eksponencjalną (≈ 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 )  =
∑ F e jk ω0t = T 0 ∑ 2πδ(ω − k ω0 ) =ω0 ∑ X ( jk ω0 )δ(ω − k ω0 )
T
T
k =−∞
k =−∞
k =−∞
 k =−∞

{
}
4.4. Widmo iloczynu i splotu dwóch sygnałów
W podrozdziale tym przyjrzymy się bliżej widmom iloczynu i splotu dwóch sygnałów ciągłych
ze względu na szczególne znaczenie, jakie te dwie operacje odgrywają w przetwarzaniu sygnałów.
Widmo iloczynu dwóch sygnałów
Analiza częstotliwościowa sygnałów ciągłych sprowadza się do wykonywania na nich całkowego przekształcenia Fouriera. Ponieważ jednak w praktyce nie można zrealizować całkowania od minus do plus nieskończoności, sygnał x(t) całkuje się od jakiejś chwili czasowej t0
do chwili t0+T. Jest to równoważne całkowaniu od plus do minus nieskończoności fragmentu
sygnału xw(t), otrzymanego w wyniku wymnożenia sygnału x(t) z funkcją prostokątnego „okna”
czasowego w(t), równego jeden w przedziale [t0, t0+T] oraz zeru poza nim:
X w (ω) =
t0 +T
∫
t0
x (t )e − jωt dt =
∞
∫ [ x(t ) w(t )] e
− jωt
dt
(4.43)
−∞
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(ω):
X w ( ω) =
1 ∞
∫ X ( ν )W ( ω − ν) d ν
2π −∞
(4.44)
Oczywiście od kształtu W(ω) zależy wielkość „deformacji” widma X(ω). Na rysunku 4.5 przedstawiono graficzną ilustrację rozważanej sytuacji: sygnał kosinusoidalny jest mnożony przez
okno prostokątne. Ponieważ w tym przypadku X(ω) = π[δ(ω−ω0)+δ(ω+ω0)], więc:
X w ( ω) =
1 ∞
1
∫ π [δ( ν − ω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 żargonie 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.
Całkowe przekształcenie Fouriera
88
x(t)=cos(ω0t)
X(ω)
π
π
t
ω
0
-ω0
w(t)
ω0
W(ω)
2T
1
2π/T
ω
t
-T
0
T
xw(t)=x(t)w(t)
Xw(ω)=X(ω)⊗W(ω)
1
2πT
t
-T
T
2π/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
Rysunek 4.6 stanowi ilustrację problemu rozdzielczości częstotliwościowej i amplitudowej
analizy częstotliwościowej realizowanej metodą ciągłego przekształcenia Fouriera. Im listek
główny widma okna jest węższy, tym lepiej są rozróżnialne w Xw(ω) składowe harmoniczne
o pulsacjach leżących blisko siebie (rys. 4.6a: rozdzielczość częstotliwościowa). Natomiast im
poziom listków bocznych widma okna jest mniejszy, tym większa może być różnica amplitud
poszczególnych składowych harmonicznych, które są obserwowane (rozróżnialne) w Xw(ω)
(rysunek 4.6b: rozdzielczość amplitudowa).
Rozdzielczość częstotliwościową analizy można polepszyć zwiększając długość okna, co jest
przedstawione na rysunku 4.7. Z właściwości przeskalowanie (4.9) całkowego przekształcenia
Fouriera wynika bowiem, że kiedy długość okna rośnie (dłuższy jest czas, w którym jest ono
„różne” od zera), jego widmo staje się węższe, czyli szerokość listka głównego maleje
niezależnie od rodzaju okna. Rozdzielczość amplitudową analizy można natomiast zmienić
wybierając okno, charakteryzujące się wymaganym poziomem „oscylacji bocznych” widma.
Poziom ten jest stały i charakterystyczny dla poszczególnych okien.
Szczegóły analizy częstotliwościowej sygnałów będą dokładnie przedstawione w rozdziale 8.
Obecnie zostaną jedynie podane definicje kilku wybranych okien ciągłych w(t), stanowiących
najczęstszą alternatywę dla okna prostokątnego, oraz zależności analityczne ich widm Fouriera
Całkowe przekształcenie Fouriera
89
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 przypadku (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)
2T
1
W(ω)
t
-T
ω
T
W(ω)
w(t)
1
t
T
ω
T/2
-T/2
W(ω)
w(t)
1
t
-T/4
T/2
ω
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)
Całkowe przekształcenie Fouriera
90
Tab. 4-1. Definicje okien ciągłych w(t) i analityczne wzory ich widm W(ω)
Nazwa okna
w(t)
Prostokątne
 1 dla t ≤ T
pT (t ) = 
 0 dla t > T
1 − t / T
qT (t ) = 
 0
Trójkątne (Bartletta)
W(ω)
dla t ≤ T
dla t > T
2
sin ωT
ω
 sin (ωT / 2 ) 
T
 ωT / 2 
π 2 sin(ωT )
2
Hanninga (Hanna)
0,5 + 0,5cos ( πt / T ) pT (t )
Hamminga
0,54 + 0,46cos ( πt / T ) pT (t )
(1,08π2 − 0,16T 2ω2 ) sin(ωT )
ω ( π2 − T 2 ω2 )
Blackmana
 0,42 + 0,5cos ( πt / T ) + 0,08cos ( 2πt / T ) pT (t )
−−
Parzena
3
qT / 2 (t ) ⊗ qT / 2 (t ) , ⊗ oznacza splot
T
3T  sin(ωT / 4 ) 
4  ωT / 4 
(
ω π 2 − T 2 ω2
)
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)
∞
2) w(0) =
1
W (ω)dω = 1
2π −∫∞
(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 przykład dla okna Hanna mamy:
WH (ω) = 0,5WR (ω) + 0,25WR (ω − π / T ) + 0,25WR (ω + π / T )
(4.47a)
co na podstawie (4.11) odpowiada w dziedzinie czasu dodaniu następujących „okien”:
wH (t ) = 0,5wR (t ) + 0,25wR (t ) e jπt / T + 0,25wR ( t )e − jπt / T
(4.47b)
Otrzymujemy stąd zależność:
wH (t ) = [0,5 + 0, 25( e jπt / T + e − jπt / T )] wR (t ) = [0,5 + 0,5cos( πt / T )] wR (t )
(4.47c)
przedstawioną w tabeli 4-1. Do wpływu wyboru okna na kształt „obserwowanego” widma
sygnałów spróbkowanych w czasie wrócimy jeszcze w podrozdziale 4.6 (rysunki 4.16, 4.17
i 4.18).
Całkowe przekształcenie Fouriera
91
a)
b)
wH(t)
wB(t)
t
-T
T
t
-T
WH(ω)
T
WB(ω)
ω
π 2π
T
0 T
ω
π 2π
T
0 T
Rys. 4.8. Graficzna ilustracja w dziedzinie częstotliwości zasady konstrukcji okien kosinusoidalnych: a) okno 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 przeskalowanych w amplitudzie i przesuniętych w częstotliwości widm PT(ω) okna prostokątnego pT(t)
Modulacja amplitudowa jest drugim przykładem praktycznego zastosowania mnożenia sygnałów. Znając sygnał modulowany x(t) (nośna) i modulujący m(t), widmo Fouriera ich iloczynu wyznaczamy splatając widma X(ω) i M(ω) obu sygnałów. Na rysunku 4.9 przedstawiono
graficzną ilustrację dwóch prostych rodzajów takiej modulacji:
1) d w u w s t ę g o w e j z f a l ą n o ś n ą (ang. AM − Amplitude Modulation lub DSB −
Double Sideband):
x (t ) = cos(ω0t ), m(t ) = 1 + A cos(ωm t ) ( A > 0)
X ( ω) = π [δ(ω − ω0 ) + δ(ω + ω0 ) ], M ( ω) = 2 πδ(ω) + πA[δ( ω − ωm ) + δ(ω + ωm ) ]
2) d w u w s t ę g o w e j b e z f a l i n o ś n e j (ang. AM-SC lub DSB-SC, SC − Suppressed
Carrier): x(t) − jak wyżej, m(t) − dowolny sygnał rzeczywisty o |M(ω)| = 0 dla ω > ωmax.
Modulacja tego typu jest stosowana w radiofonii AM (fale długie, średnie i krótkie), gdzie m(t)
jest sygnałem dźwiękowym (audycja), a x(t) jest sygnałem nośnym, przesuwającym widmo
M(ω) w określony zakres częstotliwości, oddzielny dla każdej radiostacji.
Widmo splotu sygnałów
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-
Całkowe przekształcenie Fouriera
92
M(ω)
2π
m(t)
π/2 π/2
t
-ωm ωm
Xm(ω)=X(ω)⊗M(ω)
π
xm(t)
t
π/4
π/4
ω
-ω0
π/2
ω0-ωm
ω0
Xm(ω)=X(ω)⊗M2(ω)
Xm(ω)=X(ω)⊗M1(ω)
π/2
ω
-ω0
ω0+ωm
ω0-ωm
ω0
ω0+ωm
ω
-ω0
ω0
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
da iloczynowi widm sygnałów: Y(ω) = X(ω)H(ω). Odpowiednio kształtując funkcję przejścia
układu h(t) wpływamy na H(ω) = |H(ω)|⋅exp(j H(ω)), a ono z kolei decyduje jak w amplitudzie (|H(ω)|) i fazie ( H(ω)) zostaną zmodyfikowane (przefiltrowane) poszczególne częstotliwości ω sygnału wejściowego. Przykładowo |H(ω1)| = 0 powoduje, że na wyjściu układu nie
pojawi się składowa sygnału wejściowego o pulsacji ω1, a |H(ω2)| = 1 decyduje o tym, że składowa o pulsacji ω2 zostanie bez zmian „przeniesiona” przez układ. Z kolei kąty H(ω1)
i H(ω2) informują o przesunięciu fazowym wprowadzanym przez układ dla pulsacji ω1 i ω2.
Na rysunku 4.10 przedstawiono graficzną ilustrację operacji splotu dwóch sygnałów, czyli
filtracji jednego sygnału (x(t) = x1(t)+x2(t) = cos(0,5t)+cos(2t)) przez drugi (h(t)). 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ω) i w wyniku
splotu z sygnału zostaje usunięta składowa x2(t).
Całkowe przekształcenie Fouriera
93
h(t)
H(ω)
1
t
ω
-1
x(t)=x1(t)+x2(t)
1
0
X(ω)
π
π
t
ω
-2
-0.5
y(t)=x(t)⊗h(t)=x1(t)
t
π
0.5
2
Y(ω)=X(ω)H(ω)
=X1(ω)
ω
-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)
4.5. Twierdzenie o próbkowaniu
Wyobrażam sobie teraz minę większości Czytelników: z pewnością gości na niej znużenie
i zniechęcenie. Ale mogę Państwa pocieszyć: po wyczerpującej „wspinaczce” (matematycznej)
powoli zbliżamy się „do szczytu” (czyli słodkiej degustacji „owoców” swojej wiedzy). Pierwszym przyjemnym „ciasteczkiem”, które „połkniemy” w mgnieniu oka będzie tzw. twierdzenie o próbkowaniu. Jak się później okaże, w zasięgu naszej ręki jest teraz o wiele więcej
„przysmaków” cyfrowego przetwarzania sygnałów.
W sposób t e o r e t y c z n y równomierne (okresowe) próbkowanie sygnałów analogowych
może być przedstawione jako ich wymnożenie z sumą impulsów Diraca (pamiętajmy o jednostkowym polu powierzchni tych impulsów):
xδ ( t ) = x ( t )
∞
∑
δ(t − kT )
(4.48)
k =−∞
Ponieważ iloczyn w dziedzinie czasu jest równoważny splotowi w dziedzinie częstotliwości −
pulsacji (i odwrotnie), więc widmo Fouriera sygnału po spróbkowaniu jest równe:
Całkowe przekształcenie Fouriera
94
∞
∞
 1 

1 
 X ( jω) ⊗ ω p ∑ δ(ω − k ω p )  =
ω p ∑ X ( jω) ⊗ δ(ω − k ω p )  =
2π 
k =−∞
 2π  k =−∞

∞

1 
=
(4.49)
 ω p ∑ X j ( ω − kω p ) 
2π  k = −∞

(
X δ ( jω) =
(
)
)
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 przesunię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
F X δ ( jω) ⋅ Π ωg ( jω)
ωp
(4.50)
Iloczyn widm jest równoważny splotowi sygnałów czasowych, stąd (przy założeniach:
ωp = 2ωm, ωg = ωm):
xˆ (t ) =
π
ωm
∞
 ∞

sin(ωm t ) 
sin (ωm (t − kT ) )
 ∑ x (kT )δ(t − kT )  ⊗ 

  πt  = ∑ x ( kT ) ω (t − kT )
m
k = −∞
 k = −∞

(4.51)
ponieważ odwrotne przekształcenie Fouriera widma filtra jest równe:
ω
1 ∞
1 m jωt
1 1 jωt
Π ωm ( jω)e jωt d ω =
∫
∫ e d ω = 2π jt e
2π −∞
2π −ω
m
ωm
−ωm
=
1 1  jωm t
1 1
e
2 j sin( ωm t ) )
− e− jωm t  =
 2π jt (
2π jt 
czyli jego odpowiedź impulsowa wynosi (rysunek 4.12):
h (t ) =
sin(ωm t )
πt
(4.52)
Filtr (4.52) jest nazywany filtrem rekonstruującym, gdyż jego zastosowanie w (4.51) umożliwia dokładne odtworzenie sygnału analogowego x(t) na podstawie jego próbek x(kT) (wła-
Całkowe przekształcenie Fouriera
95
X(ω)
a)
ω
-ωmax 0
ωmax
Xp1(ω)
b)
ω
-2ωp1
-ωp1
Hp1(ω)
1
c)
2ωp1
ωp1
0
ω
-2ωp1
-ωp1 -ωp1/2
0
ωp1/2
2ωp1
ωp1
Xp1(ω)Hp1(ω
)
d)
ω
Xp2(ω)
e)
ω
-3ωp2
-2ωp2
-ωp2
0
ωp2
2ωp2
3ωp2
Xp2(ω)Hp2(ω
)
f)
-3ωp2
-2ωp2
-ωp2
0
ωp2
ω
2ωp2
3ωp2
Rys. 4.11. Ilustracja graficzna konsekwencji częstotliwościowych próbkowania ciągłych sygnałów dolnopasmowych 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
Całkowe przekształcenie Fouriera
96
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-1
-0.8
-0.6
-0.4
-0.2
0
Czas [s]
0.2
0.4
0.6
0.8
1
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
1
0.5
0
-0.5
-1
0
0.1
0.2
0.3
0.4
0.5
Czas [s]
0.6
0.7
0.8
0.9
1
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 ) 
2
sin (ωm (t − kT ) )
 = T

sinc( ωm (t − kT )) =
= 
ωp
π
ωm (t − kT )
(t − kT )
(t − kT )
T
2
i dla t = mT, m ≠ k, mamy
sinc(ωm (mT − kT ) ) =
sin (π(m − k ) )
=0
π( m − k )
(4.53)
(4.54)
Dla k = m funkcja przyjmuje wartość 1. Wynika stąd, że funkcja rekonstruująca sinc() przesunię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 wszystkich 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 poprzesuwane „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
Opisane rozważania można w prosty sposób uogólnić na przypadek sygnałów pasmowych.
Zgodnie bowiem z (4.49) jedynym warunkiem rekonstrukcji sygnału analogowego z równo
odległych próbek tego sygnału, jest niewystępowanie „nakładania” się przesuniętych „kopii”
oryginału. A warunek ten można spełnić także dla sygnałów pasmowych, nawet dla przypadku
ωm > ωp/2. Wówczas stosuje się (4.50) i filtrem dolnoprzepustowym wycina się w okolicy
pulsacji zerowej nie widmo oryginalne tylko jego „czystą” kopię. Ale i z niej można odtworzyć
poprawny sygnał analogowy, odpowiednio modulując (wymnażając z odpowiednim sygnałem
harmonicznym) sygnał otrzymany z (4.51) i w ten sposób „przesuwając” go w poprawny
zakres częstotliwości. Oczywiście można także zastosować od razu odpowiednio dobrany filtr
pasmowoczęstotliwościowy w równaniu (4.50), pozostawiający jedynie widmo oryginalne
a usuwający wszystkie „kopie”, i wykorzystać jego odpowiedź impulsową jako ciągłą funkcję
rekonstruującą w (4.51).
Przypadek próbkowania i rekonstrukcji sygnałów pasmowych według pierwszego, dolnopasmowego scenariusza jest przedstawiony na rysunkach 4.14 i 4.15. Jedynym niepożądanym
zjawiskiem, które może wystąpić i na które należy zwrócić szczególną uwagę, jest ewentualna
zamiana miejscami widma „ujemnego” i „dodatniego” w okolicy częstotliwości zerowej, tzn.
widmo sygnału pasmowego dla częstotliwości dodatnich po operacji „kopiowania” może
wystąpić w miejscu częstotliwości ujemnych, i odwrotnie (rysunek 4.15c). Zjawisko to zależy
od położenia pasma częstotliwościowego zajmowanego przez sygnał oryginalny oraz od przyjętej częstotliwości próbkowania. Jeśli ono występuje, to należy spróbkowany sygnał pomnożyć (zmodulować) przez sygnał harmoniczny o częstotliwości równej połowie częstotliwości próbkowania, czyli przez s(kT) = exp(j(ωp/2)kT) = exp(j(π/T)kT) = ejπk = (−1)k. W ten
sposób przesuwa się jego widmo o ωp/2 i zamienia miejscami widma „ujemne” i „dodatnie”
w okolicy zera, tzn. umieszcza się je na właściwych pozycjach.
Wyciągając wnioski z powyższych rozważań, można stwierdzić, że w ogólnym przypadku
częstotliwość próbkowania powinna być dwa razy większa niż szerokość pasma częstotliwości
dodatnich, zajmowanego przez ten sygnał. Więcej szczegółów poświęconych próbkowaniu
sygnałów pasmowych poznamy w rozdziale 19, poświęconym decymowanym zespołom
filtrów.
Najgorsze już chyba mamy za sobą !
4.6. Widmo sygnału spróbkowanego
Co prawda w rozdziale 8 szczegółowo przedstawiono problem analizy częstotliwościowej
sygnałów zdyskretyzowanych w czasie, ale już teraz możemy się pokusić o pierwsze uwagi
natury jakościowej. W sytuacji kiedy dyskretyzacja sygnałów zostanie przeprowadzona
zgodnie z twierdzeniem o próbkowaniu, to spowoduje jedynie dodatkowe okresowe powtarzanie się ciągłych widm sygnałów, na przykład tych przedstawionych na rysunkach 4.5 i 4.6.
Rysunki 4.16 i 4.17 stanowią ilustrację powyższej konstatacji. Na pierwszym z nich przedstawiono widmo fragmentu ciągłego sygnału kosinusoidalnego, wyciętego przez okno prostokątne, i spróbkowanego, na drugim rysunku pokazano przypadek kiedy zastosowano okno
Hanninga. Ponieważ obserwowane widma są okresowe, cała informacja o nich jest zawarta
w ich jednym okresie, przedstawionym na rysunku 4.18. Dodatkowo z (4.4) pamiętamy, że
widmo Fouriera sygnału przyjmującego wartości rzeczywiste ma właściwość (a)symetrii:
XR(−ω) = XR(ω) i XI(−ω) = −XI(ω), z której wynika, że już wartości widma z przedziału
[0, ωp/2] wystarczą do jego pełnej „identyfikacji”.
Całkowe przekształcenie Fouriera
98
X(ω)
a)
ω
-2ω p
ωp
0
-ω p
2ω p
Xp(ω)
b)
ω
-2ω p
ωp
0
-ω p
Hp(ω)
1
c)
2ω p
ω
-2ωp
-ωp
-ωp/2
0
ωp/2
2ωp
ωp
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 pasmowych i możliwości ich rekonstrukcji z sygnałów dyskretnych w czasie: przypadek bez inwersji częstotliwości
X(ω)
a)
ω
-2ω p
-ω p
ωp
0
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 pasmowych 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(ω)
t
ω
- ω0 ω0
w(t)
W(ω)
t
-T
T
ω
Xw(ω)=X(ω)⊗W(ω)
xw(t)=x(t)w(t)
t
ω
-ω0 ω0
Xw(n)(ω)
xw(n)
n
ω
-2ωp
-ωp
0
ωp
2ωp
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 mniejszego 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 nietrafieniem podczas próbkowania w maksima widma.
Podsumujmy, obserwowane przez nas, zdyskretyzowane widmo sygnału jest odbiciem „idealnego” (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”.
Całkowe przekształcenie Fouriera
100
x(t)
X(ω)
t
ω
-ω0 ω0
w(t)
W(ω)
t
-T
T
ω
xw(t)=x(t)w(t)
Xw(ω)=X(ω)⊗W(ω)
t
ω
-ω0 ω0
Xw(n)(ω)
xw(n)
n
ω
-2ωp
0
-ωp
ωp
2ωp
Rys. 4.17. Przykładowe widmo fragmentu sygnału kosinusoidalnego, „wyciętego” przez okno Hanninga
i potem spróbkowanego
Xw(n)(ω)
Xw(n)(ω)
b)
a)
ω
ω
-ω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) okno Hanninga
Całkowe przekształcenie Fouriera
101
4.7. Przykład ćwiczenia komputerowego
W tabeli 4-2 jest przedstawiony kod źródłowy programu w języku Matlab, stanowiący ilustrację twierdzenia o próbkowaniu i rekonstrukcji sygnału na podstawie jego próbek.
Tab. 4-2. Przykład programu, ilustrującego twierdzenie o próbkowaniu
% Ćwiczenie: Twierdzenie o próbkowaniu
% 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
clear all; clf; hold off;
fx
fps
N =
K =
= 1;
= 100;
200;
10;
% częstotliwość sygnału [Hz]
% stara częstotliwość próbkowania [Hz]
% liczba próbek sygnału spróbkowanego z częstotliwością fps (stara)
% ile razy zmniejszyć częstotliwość próbkowania
% Generacja sygnału spróbkowanego z częstotliwością fps
dts = 1/fps;
% stary okres próbkowania
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
% Przejście z częstotliwości większej na mniejszą: xs(n) -> xn(n)
fpn = fps/K;
% nowa częstotliwość próbkowania = zmniejszona stara częstotliwość
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
% Powrót z częstotliwości mniejszej na większą: xn(n) -> y(n)
% Funkcja aproksymująca
t = -(N-1)*dts : dts : (N-1)*dts;
f = 1/(2*dtn);
fa = sin(2*pi*f*t)./(2*pi*f*t);
fa(N)=1;
tz = [ -fliplr(tn) tn(2:M)];
z = [zeros(1,M-1) 1 zeros(1,M-1)];
% czas trwania funkcji aproksymującej
% częstotliwość „zer” w funkcji aproksymującej
% funkcja aproksymująca
% wartość w zerze (dzielenie 0/0)
%
%
plot(t,fa,'b',tz,z,'o'); grid; title('Sinc - funkcja aproksymująca'); pause
% 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);
plot(ty,y,'b'); grid; title('Sygnał odtworzony'); pause
plot(ty,xs(1:N)-y(1:N),'b'); grid; title('Różnica między sygnałami'); pause
5
Układy analogowe
Przed przystąpieniem do dyskusji metod analizy i przetwarzania sygnałów cyfrowych, poświęcimy obecnie chwilę układom analogowym, tzn. układom przetwarzania sygnałów ciągłych.
Dlaczego? Z dwóch ważnych powodów. P o p i e r w s z e , zazwyczaj przed spróbkowaniem
sygnału analogowego, tzn. przed przetwornikiem analog → cyfra, ogranicza się sztucznie pasmo częstotliwościowe sygnału analogowego, dostosowując je do zadanej częstotliwości próbkowania. Przypomnijmy, zgodnie z twierdzeniem o próbkowaniu maksymalna częstotliwość
występująca w sygnale analogowym, która ma być przeniesiona przez przetwornik A/C, musi
być więcej niż dwa razy mniejsza od częstotliwości próbkowania. Należy więc zaprojektować
filtr analogowy, który usunie z sygnału niepożądane częstotliwości jeszcze po stronie analogowej. I trzeba praktycznie umieć to robić. P o d r u g i e , jak się później okaże, umiejętność
projektowania filtrów analogowych może być także wykorzystana do projektowania filtrów
cyfrowych. Filtry analogowe (transmitancje Laplace’a H(s) zmiennej zespolonej s) można
bowiem przekształcić na filtry cyfrowe (transmitancje Z H(z) zmiennej zespolonej z) metodą
np. transformacji biliniowej.
Umiejętność projektowania filtrów analogowych jest więc bardzo korzystna: „dwa w jednym”
− metoda jedna, a zastosowania podwójne, w świecie analogowym i cyfrowym.
5.1. Analogowe układy LTI
Układy LTI (ang. Linear Time-Invariant) to układy liniowe niezmienne w czasie. Stanowią one
najprostszą, ale dostatecznie efektywną grupę układów przetwarzania sygnałów, tak analogowych jak i cyfrowych. My zajmiemy się obecnie układami analogowymi.
Niech x(t) oznacza sygnał wejściowy, a y(t) sygnał wyjściowy z układu analogowego. Układ
jest liniowy kiedy:
jeśli x1 (t ) → y1 (t ) i x2 (t ) → y 2 (t ) , to ax1 (t ) + bx2 (t ) → ay1 (t ) + by 2 (t )
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 przesunięcie w czasie) kiedy dla każdego t0 mamy:
jeśli x (t ) → y (t ) , to x (t − t0 ) → y (t − t0 )
Układy analogowe
104
a)
x(t)
y(t)
h(t)
X(jω)
H(jω)
Y(jω)
∞
y (t ) =
∫ h( τ) x(t − τ)dτ
−∞
Y(jω)=H(jω)X(jω)
b)
δ(t)
h(t)
∆(jω)
H(jω)
y(t)=h(t)
Y(jω)=H(jω)
∞
y (t ) =
∫ h( τ)δ(t − τ)dτ = h(t )
−∞
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 ) →
∫ h(τ) x(t − τ)dτ
y (t ) =
(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 poprzednim 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 przeskalowanych w amplitudzie (wymnożonych przez liczbę x(τ): x(τ)δ(t−τ)). Ponieważ rozpatrywany 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(τ))
∫ x(τ)δ(t − τ)d τ → ∫ x(τ)h(t − τ)d τ
(sumowanie wielu opóźnień, liniowość)
x(t ) → y (t )
(uogólnienie na podstawie (5.3))
Układy analogowe
105
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 ustalone 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 analogowych 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 (przenoszonych) przez układ oraz równym zero dla pulsacji usuwanych (tłumionych). Oczywiście najproś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ź impulsową h(t) filtra rekonstruującego sygnał analogowy z jego próbek. Na rysunku 1.10 przedstawiono 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ł harmoniczny x(t) = exp(jωt) i interesujemy się jego wyjściem. Zmieniając pulsację ω jesteśmy w stanie przebadać zachowanie się układu dla różnych interesujących nas zakresów częstotliwości.
Oto co otrzymujemy:
y (t ) =
∞
∫
−∞
h ( τ) x ( t − τ ) d τ =
∞
∞

jω( t −τ )
− jωτ
τ
τ
=
h
(
)
e
d
d τ  e jωt = H ( jω)e jωt
 ∫ h ( τ)e
∫
 −∞

−∞
(5.7)
Układy analogowe
106
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ę charakterystyką amplitudowo-częstotliwościową układu analogowego, a Φ(ω) − jego charakterystyką fazowo-częstotliwościową. Samo H(jω) często nazywa się odpowiedzią częstotliwościową układu. Na rysunku 5.2a zostały przedstawione różne typy charakterystyk amplitudowo-częstotliwościowych M(ω): dolnoprzepustowa LP (ang. LowPass), górnoprzepustowa HP (ang.
HighPass), pasmowoprzepustowa BP (ang. BandPass) i pasmowozaporowa BS (ang. BandStop). Na rysunku 5.2b pokazano natomiast dwie przykładowe charakterystyki fazowo-częstotliwościowe Φ(ω): liniową (L) i nieliniową (NL).
M(ω)
LP
ω
Φ(ω)
BP
HP
BS
L
ω
NL
Rys. 5.2. Przykład różnych charakterystyk amplitudowo-częstotliwościowych M(ω) i fazowo-częstotliwościowych Φ(ω) układów analogowych. Oznaczenia: LP − układ dolnoprzepustowy (ang. LowPass), HP −
układ górnoprzepustowy (ang. HighPass), BP − układ pasmowoprzepustowy (ang. BandPass), BS − układ
pasmowozaporowy (ang. BandStop), L − liniowa charakterystyka fazowa, NL − nieliniowa charakterystyka
fazowa
Φatan2(ω)
π
π
ω
unwrap( Φatan2(ω) )
ω
-π
-π
Rys. 5.3. Ilustracja problemu wyznaczania charakterystyki fazowo-częstotliwościowej układu ze wzoru
Φ(ω) = arctg( Im(H(jω)) / Re(H(jω)) ) z dodatkowym uwzględnieniem znaku dzielnej i dzielnika (funkcja
atan2( imag(H), real(H)) w języku Matlab)
Układy analogowe
107
Ważną, pożądaną, często podkreślaną właściwością układów jest l i n i o wa c h a r a k t e r y s t y k a f a z o wa , tzn. charakterystyka fazowa postaci: Φ(ω) = −αω. Cóż w niej jest takiego
wyjątkowego? Jeśli przez układ jest przetwarzany sygnał harmoniczny x(t) = exp(jωt), taki jak
poprzednio, to na jego wyjściu otrzymujemy:
y ( t ) = M ( ω) e j ( ωt + Φ ( ω)) = M ( ω)e jω( t − α)
(5.10a)
czyli sygnał opóźniony w czasie o α sekund. W przypadku sumy dwóch sygnałów o różnych
pulsacjach ω1 i ω2 mamy (liniowość układu):
y ( t ) = M ( ω1 ) e jω1 ( t − α) + M ( ω2 )e jω 2 ( t − α)
(5.10b)
Wynika stąd, że liniowość fazy zapewnia j e d n a k o we o p ó ź n i e n i e c z a s o we wszystkich
składowych sygnału na wyjściu, niezależnie od ich częstotliwości. A to z kolei powoduje, że
jeśli tylko M(ω1) = M(ω2) = ... itd., to układ n i e z m i e n i a k s z t a ł t u p r z e n o s z o n e g o
s y g n a ł u . Jest to właściwość bardzo istotna. Przykładowo lekarze kardiolodzy potrafią odczytać bardzo wiele z kształtu sygnału EKG. Przetwarzanie tego sygnału, mające na celu redukcję
ewentualnych zakłóceń sieciowych lub drgań mięśni, a prowadzące dodatkowo do zmiany jego
kształtu, jest więc niedopuszczalne.
Opóźnienie czasowe sygnału o pulsacji ω na wyjściu układu liniowego o transmitancji H(jω) =
= M(ω)ejΦ(ω) jest określone następującym wzorem:
τ(ω) = −
dΦ ( ω)
dω
(5.11)
Funkcja τ(ω) jest nazywana funkcją opóźnienia grupowego. Dla Φ(ω) = −αω mamy τ(ω) = α.
W tym miejscu należy zwrócić uwagę na trudności występujące w „pomiarze” charakterystyki
fazowo-częstotliwościowej układów analogowych. Jeśli przesunięcie fazowe jest kątem liczby
zespolonej, to w płaszczyźnie zespolonej jest możliwe tylko rozróżnienie kątów z przedziału
[0,2π) lub (−π,π]. A przecież przesunięcie fazowe układu rzeczywistego może leżeć poza tym
przedziałem, np. w układach z liniowo malejącą charakterystyką fazową ciągle maleje. Jeśli
wyznaczamy charakterystykę fazową takiego układu z funkcji arctg(Im(H(jω)) / Re(H(jω)))
(np. funkcja atan2() w języku Matlab), to wówczas otrzymujemy zawsze wynik z przedziału
(−π,π] i obserwujemy skoki tej charakterystyki o +2π radianów (patrz rysunek 5.3a). Jeśliby
jednak przeprowadzać detekcję natury skoków charakterystyki fazowej i wprowadzać jej
korektę, dodając do obserwowanych zmian skokowe przesunięcie równe k*2π (funkcja
unwrap() w języku Matlab), wówczas charakterystyka ta jest poprawna (patrz rysunek 5.3b).
Problem ten dotyczy także układów cyfrowych i jest także poruszony podczas ich omawiania.
5.2. Transmitancja układu analogowego, zera i bieguny
Układy analogowe LTI najczęściej są opisywane za pomocą zależności wiążącej sygnał wyjściowy y(t) z układu, i jego kolejne pochodne, z sygnałem wejściowym x(t), i jego pochodnymi:
aN
N
d N y (t )
dt
∑ an
n =0
N
+ a N −1
d n y (t )
dt n
=
d N −1 y ( t )
dt
M
N −1
∑ bm
m=0
+ ... + a1
d m x (t )
dt m
dy (t )
d M x (t )
d M −1 x ( t )
dx (t )
+ a 0 y ( t ) = bM
+ bM − 1
+ ... + b1
+ b0 x (t )
M
dt
dt
dt
dt M −1
(5.12)
Układy analogowe
108
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 konkretnych 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ść pochodnej przekształcenia Fouriera (rozdz. 4.2). Transformując obie strony równania (5.12) i korzystają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
H ( jω) =
M
M −1
1
+ ... + b1 ( jω) + b0
Y ( jω) bM ( jω) + bM −1 ( jω)
=
=
−
N
N
1
X ( jω) a N ( jω) + a N −1 ( jω)
+ ... + a1 ( jω)1 + a 0
∑ bm ( jω) m
m=0
N
(5.14)
∑ 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):
h (t ) = Fourier −1 (H ( jω) )
(5.15)
Widzimy, że współczynniki an i bm równań różniczkowych są równocześnie współczynnikami
wielomianów zmiennej zespolonej (jω) odpowiedzi częstotliwościowej H(jω): współczynniki
bm pochodnych sygnału wejściowego są współczynnikami wielomianu licznika H(jω), a współczynniki an pochodnych sygnału wyjściowego są współczynnikami wielomianu mianownika.
Dobierając wartości an i bm wpływamy na H(jω).
Obecnie zajmiemy się metodologią projektowania układów analogowych o zadanej odpowiedzi częstotliwościowej H(jω). Równanie (5.14) można zapisać jako:
H ( jω) =
Y ( jω)
b ( jω − z1 )( jω − z2 )...( jω − z M )
= M
X ( jω) a N ( jω − p1 )( jω − p2 )...( jω − p N )
(5.16)
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
H ( jω) =
Y ( jω)
=
X ( jω)
bM ∏ ( jω − zm )
m =1
N
(5.17)
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 sprowadza 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
H ( jω) = M ( ω)e jΦ ( ω) =
bM
∏ Bm e jθ
m =1
N
M
m
a N ∏ An e jϕ n
n =1
=
B ( jω)
, M ( ω) =
A( jω)
bM
∏ Bm
m =1
N
a N ∏ An
, Φ ( ω) =
M
N
m =1
n =1
∑ θm − ∑ ϕ n
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 wzmocnienia 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ęzyku Matlab). Jednak w charakterystyce fazowej są obserwowane także skoki o +π, które zazwyczaj 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 +π.
Układy analogowe
110
Im(s)
a)
s
z1
Im(s)
b)
z1
z2
z2
p1
z3
p1
p2
s
p 1*
z3
p2 *
*
p1 *
z 2*
z 2*
z 1*
z 1*
s = jω
jω
c)
Re(s)
p2
Re(s)
s
s = jω
jω
d)
s
z1
jω0
p1
jω0
r=A1
σ
p1 *
p1 *
σ
ϕ1
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ą” odpowiednie 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ω
Projektowanie H(jω) o zadanych właściwościach sprowadza się więc do umieszczenia w odpowiednim miejscu płaszczyzny zespolonej zer i biegunów H(jω), czyli, odpowiednio, zer licznika i mianownika. Z teorii układów analogowych wynika, że aby układ był stabilny (odpowiedzią na sygnał wejściowy o ograniczonej amplitudzie jest zawsze s y g n a ł wy j ś c i o wy
o o g r a n i c z o n e j a m p l i t u d z i e ) rząd wielomianu mianownika H(jω) musi być co najmniej
taki jak rząd licznika (czyli N ≥ M) oraz bieguny H(jω) (zera mianownika, parami sprzężone
liczby zespolone) mogą leżeć tylko w lewej półpłaszczyźnie płaszczyzny liczb zespolonych.
Zera H(jω) (zera licznika) mogą natomiast leżeć w dowolnym miejscu tej płaszczyzny. Jeśli
jednak i one leżą w lewej półpłaszczyźnie płaszczyzny liczb zespolonych, to układ odwrotny
do H(jω), czyli 1/H(jω), jest także zawsze stabilny, jeśli tylko M = N. Układ taki nazywa się
minimalnofazowym.
Układy analogowe
111
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:
H ( jω) =
bM
aN
 c1
c2
ck
cN

+
+ ... +
+ ... +
jω − pk
jω − p N
 jω − p1 jω − p2



(5.21)
Jest to możliwe kiedy wszystkie bieguny transmitancji są j e d n o k r o t n e . Ponieważ założyliśmy, że współczynniki bm i an w transmitancji (5.14) są rzeczywiste, więc bieguny pk są liczbami rzeczywistymi lub liczbami zespolonymi parami sprzężonymi. W związku z tym współczynniki ck, k = 1, 2, 3, ..., N, są liczbami rzeczywistymi dla biegunów rzeczywistych oraz liczbami zespolonymi dla biegunów zespolonych. Jeśli bieguny są sprzężone, to związane z nimi
współczynniki ck także są sprzężone. Po sprowadzeniu (5.21) do wspólnego mianownika, rząd
wielomianu licznika zmiennej jω jest zawsze mniejszy od rzędu mianownika. Z rozdziału 4.3
wiemy, że każda z transmitancji prostych jest wynikiem całkowego przekształcenia Fouriera
sygnału eksponencjalnego postaci:
 0
hk (t ) =  pk t
ck e
dla t < 0
dla t ≥ 0
(5.22)
Oczywiście odpowiedź impulsowa układu jest sumą wszystkich sygnałów hk(t):
h (t ) =
N
∑ hk (t )
(5.23)
k =1
Zapiszmy biegun k-tej transmitancji prostej jako:
pk = σ k + jωk
(5.24)
gdzie σk i ωk to dowolne liczby rzeczywiste. Wówczas z (5.22) mamy:
0

hk (t ) = 
( σk + jωk ) t
 ck e
dla t < 0
dla t ≥ 0
(5.25)
Ponieważ bieguny zespolone występują w parach sprzężonych, stąd mamy dla nich (dla t≥0):
hk (t ) + hk(*) (t ) = ck e( σk + jωk ) t + ck* e( σk − jωk ) t
(5.26)
Rozważmy obecnie możliwe przypadki.
P r z y p a d e k 1 − σk < 0. Jeśli biegun jest r z e c z y wi s t y (ωk = 0), to odpowiedź impulsowa
układu jest równa:
hk (t ) = ck e σ k t
(5.27)
i maleje asymptotycznie do zera wraz ze wzrostem czasu. Jeśli biegun jest z e s p o l o n y (ωk≠0),
to dla ck = uk+jvk mamy z (5.26):
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)
Układy analogowe
112
czyli odpowiedź impulsowa reprezentuje tłumione kosinusoidalne oscylacje, także malejące
w czasie asymptotycznie do zera. W obu przypadkach odpowiedź impulsowa jest ograniczona, a więc układ jest stabilny.
P r z y p a d e k 2 − σk = 0. Przeprowadzając analizę jak poprzednio otrzymujemy:
ωk = 0
⇒ hk (t ) = ck
ωk ≠ 0
⇒ hk (t ) + hk(*) (t ) = ck e( σk + jωk ) t + ck* e( σk − jωk )t = 2 uk2 + vk2 ⋅ cos ( ωk t + β k )
(5.29)
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 nieskoń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 dopuś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ępowania biegunów wielokrotnych transmitancja H(jω) nie może być przedstawiona za pomocą wzoru (5.21), tylko w następującej postaci:
H ( jω) =
ckn
( jω − z1 )( jω − z2 )...( jω − zM )
bM
bM  K kK
=
 ∑ ∑
k
k
k
K
1
2
a N ( jω − p1 ) ( jω − p2 ) ...( jω − pK )
a N  k =1 n =1 ( jω − pk )n



(5.30)
przykładowo:
H ( jω) =
jω − z1
( jω − p1 )
2
=
c11
c12
+
jω − p1 ( jω − p1 ) 2
(5.31)
Dodatkowo jest prawdziwa następująca para transformat Fouriera:
x (t ) =
1
t n −1e − at
( n − 1)!
⇔
X ( jω) =
1
( jω + a ) n
(5.32)
w szczególności dla n = 2 mamy:
x (t ) = te − at
⇔
X ( jω) =
1
(5.33)
( jω + a ) 2
W związku z tym z podwójnym biegunem zespolonym pk = σk+jωk jest związana składowa odpowiedzi impulsowej równa:
(
)
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.
5.3. Przekształcenie Laplace’a, transmitancja Laplace’a
W literaturze technicznej poświęconej rachunkowi operatorowemu z sygnałem analogowym
x(t) wiąże się jego dwustronną transformatę Laplace’a H(s):
Układy analogowe
113
∞
∫ x ( t )e
X ( s) =
− st
(5.35)
dt
−∞
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ω
x (t ) =
1
X ( s )e st ds
2πj c −∫j∞
(5.37)
gdzie (5.37) oznacza całkę w płaszczyźnie zespolonej i c jest liczbą rzeczywistą, leżącą w obszarze 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
Jednostronne i dwustronne przekształcenie Fouriera są takie same dla sygnałów przyczynowych (x(t) = 0 dla t < 0). Jednostronne przekształcenie Laplace’a ma wszystkie podstawowe
właściwości jednostronnego przekształcenia Fouriera, w tym właściwości splotu, iloczynu
i pochodnej. Wynika stąd, że:
z(t ) =
∞
∫
x ( τ) y (t − τ) d τ ↔ Z ( s ) = X ( s )Y ( s )
(5.39)
−∞
z ( t ) = x (t ) y ( t ) ↔ Z ( s ) =
1 c +∞
∫ X (r )Y ( s − r ) dr
2πj c −∞
(5.40)
dx(t )
↔ sX ( s ) − x (0+ )
dt
d n x(t )
dt n
(5.41)
= s n X ( s ) − s n −1 x (0+ ) − s n − 2 x (1) (0+ ) − ... − x ( n −1) (0+ )
(5.42)
gdzie x(i)(0+), i = 1, 2, 3, ..., n−1, oznacza i-tą pochodną sygnału x(.) w chwili czasowej 0+.
W tabeli 5-1 przedstawiono transformaty Laplace’a dla kilkunastu wybranych sygnałów.
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):
H ( s) =
Y ( s ) bM s M + bM −1s M −1 + ... + b1s1 + b0 bM ( s − z1 )( s − z 2 )...( s − z M )
=
=
X ( s ) a N s N + a N −1s N −1 + ... + a1 s1 + a 0 a N ( s − p1 )( s − p2 )...( s − p N )
(5.43a)
Układy analogowe
114
Tab. 5-1. Przykłady transformat Laplace’a dla wybranych sygnałów
∞
Transformata X ( s ) =
Sygnał x(t), 0 ≤ t ≤ ∞
Lp.
∫ x (t ) e
− st
dt
−∞
δ(t )
0 dla t < 0
u (t ) = 
1 dla t ≥ 0
1
2
3
t n dla n > 0
4
e − at
5
te − at
6
t n −1e − at
( n − 1)!
7
8
(
s
)
1
e − at − e −bt , a ≠ b
b−a
1
−
ae − at − be− bt , a ≠ b
b−a
(
)
sin ωt
10
cos ωt
11
e − at sin ωt
12
e − at cos ωt
14
n!
a 2 + ω2
 ω
sin(ωt + ϕ), ϕ = arctg 
ω
a
ω0
1 − ξ2
n +1
1
s+a
1
( s + a )2
1
( s + a )n
9
13
1
1
s
(
)
e −ξω0t sin ω0 1 − ξ2 t ,
ξ <1
1
( s + a )( s + b)
s
( s + a )( s + b)
ω
2
s + ω2
s
2
s + ω2
ω
( s + a ) 2 + ω2
s+a
( s + a ) 2 + ω2
s+a
s 2 + ω2
ω02
s 2 + 2ξω0 s + ω02
M
H ( s) =
Y ( s)
=
X ( s)
bM ∏ ( s − zm )
m =1
N
(5.43b)
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ęstotliwoś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ę Laplace’a i związany z nią rachunek operatorowy do obliczenia odpowiedzi układu na zadane pobudzenie. 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 Laplace’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 poszczegó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 elektrycznych z elementami pasywnymi R, L, C (odpowiednio: rezystancja − opór, indukcyjność
i pojemność) stosuje się następujące podstawienia:
R → R, L → sL, C →
1
sC
(5.44)
Obecnie tylko w celu ilustracji powyższych słów, przedstawimy dwa proste przykłady wykorzystania rachunku operatorowego do analizy analogowych układów elektrycznych.
R
a)
x(t)
R
C
R
b)
y(t)
L
R
C
x(t)
1
sC
X(s)
y(t)
X(s)
Y(s)
sL
1
sC
Y(s)
Rys. 5.5. Analizowane analogowe układy elektryczne
Przykład. Wyznaczmy na podstawie tabel odpowiedź impulsową układu całkującego, przedstawionego na rysunku 5.5a, czyli jego odpowiedź na impuls Diraca δ(t). Załóżmy, że x(t) oznacza napięcie wejściowe, a y(t) − napięcie wyjściowe. Dodatkowo niech impedancja wejściowa
układu obciążającego analizowany czwórnik jest bardzo duża, wówczas układ ten jest prostym
dzielnikiem napięcia:
H ( s) =
1
sC
1
R+
sC
=
1
1
1
=
sRC + 1 RC s + 1
RC
W przypadku kiedy x(t) = δ(t), mamy X(s) = 1 i wówczas (sygnał numer 4 w tabeli 5-1):
Y ( s ) = H ( s ),
y (t ) = h (t ) =
1 − t / RC
e
, t≥0
RC
Analogicznie dla układu rezonansowego z rysunku 5.5b mamy (sygnał numer 14 w tabeli 5-1):
Układy analogowe
116
1
sC
1
ω02
LC
H ( s) =
=
=
= 2
2
1
sRC + s LC + 1 s 2 + s R + 1
s + 2ξω0 s + ω20
R + sL +
sC
L LC
h (t ) =
1
ω0
e − ξω0 t sin ω0 1 − ξ 2 t , ω0 =


1− ξ
2
1
R/L
, ξ=
, t≥0
2 ω0
LC
Przykład. W przypadku kiedy interesuje nas odpowiedź czwórnika z rysunku 5.5a na skok
jednostkowy, mamy:
Y ( s) = H ( s) X ( s) =
A
B
1 / RC 1
⋅ =
+
s + 1 / RC s s + 1 / RC s
gdzie
A = Y ( s )( s + 1 / RC )
B = Y ( s)s
s=0
s = −1 / RC
= −1
=1
W związku z tym z tabeli 5-1 otrzymujemy (dla t≥0):
y ( t ) = Ae −t / RC + Bu( t ) = u( t )(1 − e − t / RC )
5.4. Wykresy Bodego
W zastosowaniach inżynierskich często stosuje się tzw. wykresy Bodego. Nazywa się w ten
sposób charakterystykę amplitudowo-częstotliwościową M(ω) = |H(jω)| = |H(s)|s=jω układu
(5.43), w której oś pulsacji ω = 2πf (lub częstotliwości f) jest przedstawiona w skali logarytmicznej, a wzmocnienie układu jest wyrażone w decybelach:
bM
20log10 H ( jω) = 20log10
M
∏
m =1
N
j ω − zm
a N ∏ jω − pn
= 20log10
M
N
bM
+ ∑ 20log10 jω − zm − ∑ 20log10 jω − pn
a N m =1
n =1
n =1
(5.45)
Jeśli |jω| jest dużo większe od |zm| = |σm+jωm| (czyli |ω| >> |σm| oraz |ω| >> |ωm|), to wówczas
|jω−zm| = |j(ω−ωm)−σm| ≈ |jω| = |ω|. Ta sama zależność zachodzi dla dowolnego bieguna pn =
= σn+jωn. Tak więc dla pulsacji ω, znacznie większej od modułu wszystkich zer i biegunów,
w przybliżeniu otrzymujemy:
20log10 H ( jω) ≈ 20log10
M
N
bM
+ ∑ 20log10 ω − ∑ 20log10 ω
a N m =1
n =1
(5.46)
Wówczas, jeśli pulsacja zwiększy się 10 razy (czyli o dekadę), to każde zero transmitancji spowoduje 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:
*
2
2
( s − z m )( s − z m
) = (s − (σ m + jωm ))(s − (σ m − jωm )) = s 2 − 2σ m s + (σ m
+ ωm
)
(5.47)
czyli współczynniki występujące przed potęgami zmiennej s są rzeczywiste. W takim przypadku:
*
2
2
20 log10 ( s − z m )( s − z m
) = 20 log10 s 2 − 2σ m s + ( σ m
+ ωm
)
(5.48)
oraz dla s = jω i dostatecznie dużego ω mamy:
*
20log10 ( jω − zm )( jω − zm
) ≈ 20log10 ω
a)
0
2
= 40log10 ω
(5.49)
20log10M(ω) [dB]
-20
-40
-60
0.001
0.01
0.1
1
ω [rd/s]
10
100
1000
20log10M(ω) [dB]
b)
0 dB/dek
80
+20 dB/dek
60
+40 dB/dek
40
20
-20 dB/dek
-40 dB/dek
+20 dB/dek
0
-20
-60 dB/dek
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 pojedynczy 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
Układy analogowe
118
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 rzeczywistych 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, charakteryzują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}
ωm = {0,1; 1}, ωn = {10; 100; 1000; 10000}
H2(jω):
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 pulsacji ω z przedziału [0,1; 1].
5.5. Złożone układy analogowe LTI
Z analizy przedstawionej w tym rozdziale wynika, że prosty układ analogowy LTI ma odpowiedź impulsową h(t), odpowiedź częstotliwościową H(jω), transmitancję H(s) oraz realizuje
funkcję przetwarzania sygnału, określoną splotem (5.6). Z układów prostych można budować
jednak układy bardziej złożone, łącząc je szeregowo, jeden za drugim, lub równolegle. Czy
otrzymane w ten sposób układy są także typu LTI i jaką mają one wypadkową odpowiedź impulsową?
Jako pierwsze rozpatrzmy połączenie równoległe dwóch układów prostych o odpowiedziach
impulsowych h1(t) i h2(t) (rysunek 5.8a). Sygnał wejściowy x(t) wchodzi niezależnie na wejście
każdego z nich, a sygnały wyjściowe z obu układów są sumowane. Wówczas:
y ( t ) = y1 (t ) + y2 (t ) =
∞
∫
−∞
x ( τ)h1 (t − τ) d τ +
∞
∫
−∞
x ( τ)h2 ( t − τ) d τ =
∞
∫
−∞
x( τ) [ h1 (t − τ ) + h2 (t − τ) ] d τ
(5.50)
czyli otrzymujemy układ LTI o odpowiedzi h(t), równej sumie odpowiedzi h1(t) i h2(t):
h (t ) = h1 ( t ) + h2 (t )
(5.51)
Ponieważ całkowe przekształcenia Fouriera i Laplace’a są liniowe, stąd:
H ( jω) = H 1 ( jω) + H 2 ( jω),
H ( s) = H1 ( s ) + H 2 ( s )
(5.52)
W konsekwencji transmitancja H(s) otrzymanego układu jest równa sumie transmitancji
H1(s) i H2(s) układów składowych.
Układy analogowe
119
a) transmitancja H1(jω)
b) transmitancja H2(jω)
0
0
-20
-20
-40
M( ω ) [dB]
M( ω ) [dB]
-40
-60
-80
-80
-100
-100
-120 -1
10
-60
-120
10
0
10
1
10
2
ω [rd/s]
10
3
10
4
10
-140 -1
10
5
c) transmitancja H1s(jω)
0
10
1
10
2
ω [rd/s]
10
3
10
4
10
5
0
-20
-40
M( ω ) [dB]
-40
M( ω ) [dB]
0
d) transmitancja H2s(jω)
-20
-60
-60
-80
-100
-80
-120
-100
-140
-120
-140 -1
10
10
-160
10
0
10
1
10
2
ω [rd/s]
10
3
10
4
10
-180 -1
10
5
10
0
10
1
10
2
ω [rd/s]
10
3
10
4
10
5
Rys. 5.7. Wykresy Bodego czterech wybranych transmitancji, charakteryzujących się następującymi wartoś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}
h1(t)
x(t)
y(t)
x(t)
a)
H(s)=H1(s)+H2(s)
y(t)
h(t)=h1(t)+h2(t)
h2(t)
x(t)
b)
y(t)
h1(t)
x(t)
H(s)=H1(s)H2(s)
h(t)=∫ h1(τ)h2(t-τ)dτ
h2(t)
Rys. 5.8. Równoległe (a) i szeregowe (b) połączenie układów LTI
x(t)
y(t)
X(s)
Y(s)
h1(t)
H1(s)
h2(t)
H2(s)
Rys. 5.9. Przykład układu LTI ze sprzężeniem zwrotnym
y(t)
Układy analogowe
120
Z kolei dla połączenia szeregowego (kaskadowego) (rysunek 5.8b) wyjście z pierwszego
układu stanowi wejście drugiego układu, czyli jego odpowiedź impulsowa jest równa splotowi
odpowiedzi impulsowych obu układów:
δ(t ) → [ h1 (t )] → h1 ( t ) → [ h2 (t )] → h (t ) =
∞
∫
−∞
h1 ( τ)h2 ( t − τ) d τ
(5.53)
Z właściwości splotu całkowego przekształcenia Fouriera i Laplace’a wynika natomiast, że:
H ( jω) = H 1 ( jω) H 2 ( jω),
H ( s) = H1 ( s ) H 2 ( s)
(5.54)
W wyniku połączenia równoległego i szeregowego układów LTI także uzyskujemy układy
LTI, czyli liniowe i niezmienne w czasie, ponieważ odpowiedź układu złożonego na sumę
dwóch sygnałów jest równa sumie odpowiedzi na każdy z nich z osobna, oraz odpowiedź układu na sygnał przesunięty w czasie jest równa przesuniętej odpowiedzi na pobudzenie oryginalne (dowód pozostawiamy Czytelnikowi).
Ważną klasę układów LTI stanowią układy ze sprzężeniem zwrotnym. Jeden z najprostszych
jest przedstawiony na rysunku 5.9. Układ ten jest opisany następującą zależnością:
Y ( s ) = H 1 ( s )[X ( s ) − H 2 ( s )Y ( s )]
z której wynika, że jego transmitancja jest równa:
H ( s) =
H1 ( s )
Y ( s)
=
X ( s ) 1 + H1 ( s ) H 2 ( s )
Odpowiedź impulsową tego układu można wyznaczyć za pomocą odwrotnego przekształcenia
Laplace’a (5.37) z H(s) (np. metodą rezidułów) lub też rozkładając transmitancję H(s) na sumę
transmitancji prostych oraz znajdując w tabelach odpowiedzi impulsowe tych transmitancji.
5.6. Analiza matematyczna wybranych układów elektrycznych
Obecnie jako przykład zastosowania przedstawionego do tej pory aparatu matematycznego
przeanalizujemy dwa proste analogowe układy elektryczne LTI (rysunek 5.10), opisywane za
pomocą równań różniczkowo-całkowych. Pierwszy z nich jest szeregowym połączeniem rezystancji R i pojemności C (układ RC) z wymuszeniem napięciowym, a drugi − szeregowym połączeniem rezystancji R, indukcyjności L i pojemności C (układ RLC) także z wymuszeniem
napięciowym.
Schemat ideowy p i e r w s z e g o u k ł a d u jest przedstawiony na rysunku 5.10a. Jego wejściem
jest napięcie u(t) ze źródła napięciowego (u(t) = 0 dla t < 0), wyjściem zaś − napięcie uC(t) na
pojemności C. Układ ten jest opisany równaniem różniczkowym postaci (i(t) = = C⋅duC(t)/dt):
1
u (t ) = uR (t ) + uC (t ) = Ri (t ) + ∫ i ( t ) dt
C
wynikającym z prawa Kirchhoffa równości napięć w konturze zamkniętym. Po wykonaniu
przekształcenia Fouriera obu stron otrzymujemy:
U ( jω) = U R ( jω) + U C ( jω) = RI ( jω) +

1
1 
I ( jω) =  R +
 I ( jω)
jωC
jωC 

stąd transmitancja częstotliwościowa H(jω) układu jest równa:
Układy analogowe
a)
121
uR(t)
i(t)
b)
i(t)
R
u(t)
uR(t)
R
C
uC(t)
u(t)
uL(t)
L
C
vC(t)
Rys. 5.10. Schematy analizowanych, szeregowych układów elektrycznych: a) układRC, b) układ RLC
1
I ( jω)
U C ( jω)
1
jωC
=
H ( jω) =
=
U ( jω)
1 + jωRC

1 
 R +
 I ( jω)
jωC 

a jego odpowiedź impulsową h(t) można wyznaczyć z H(jω) metodą odwrotnego przekształcenia Fouriera:
∞
h (t ) =
∞
∞
1
1
1
1 / RC
1
H ( jω)e jωt dω =
e jωt dω =
e jωt dω
2π −∫∞
2 π −∫∞ 1 + jωRC
2π −∫∞ 1 / RC + jω
Uwzględniając równanie (4.36) (przekształcenie Fouriera sygnału eksponencjalnego), otrzymujemy:
h (t ) =
1 −t /( RC )
e
, t≥0
RC
Na rysunku 5.11 są przedstawione charakterystyki częstotliwościowe rozpatrywanego układu
RC oraz jego odpowiedź impulsowa i skokowa przy założeniu R = 1 [MΩ], C = 1 [µF]. Ponieważ jest to układ o transmitancji (5.43b) (s = jω) bez żadnego zera i tylko z jednym biegunem o wartości p = −1/RC = −1, na rysunku obserwujemy spadek charakterystyki amplitudowej o 3 decybele dla ω = 1 (gdyż 20log10(1/ 1 + 1 ) = −3 dB) oraz jej opadanie 20 decybeli na
dekadę dla ω >> 1, zgodnie z rozważaniami przeprowadzonymi w rozdziale 5.4.
Schemat ideowy d r u g i e g o u k ł a d u , szeregowego połączenia elementów RLC, jest
przedstawiony na rysunku 5.10b. Podobnie jak poprzednio wejściem układu jest napięcie ze
źródła napięciowego u(t) (u(t) = 0 dla t < 0), wyjściem zaś − napięcie uC(t) na kondensatorze
C. Z prawa Kirchhoffa równości napięć w konturze zamkniętym otrzymujemy (i(t) =
= C⋅duC(t)/dt):
Ri (t ) + L
di (t ) 1
+ ∫ i (t ) dt = uR (t ) + uL (t ) + uC (t ) = u( t )
dt
C
Zakładając zerowe napięcie początkowe na kondensatorze, po obliczeniu przekształcenia Fouriera obu stron powyższego równania uzyskujemy:

1 
 R + jωL + jωC  I ( jω) = U ( jω)


Ponieważ tylko dla napięcia na kondensatorze mamy:
1
1
i (t )dt = uC (t ) ,
I ( jω) = U C ( jω)
C∫
jωC
Układy analogowe
122
Charakterystyka fazowa
0
-10
-20
Φ(jω) [deg]
20log10|H(jω)| [dB]
Charakterystyka amplitudowa
0
-20
-30
-40
-60
-40
-80
-50
0.01
0.1
1
10
-100
0.01
100
0.1
ω [rd/s]
Odpowiedź impulsowa
10
100
Odpowiedź skokowa
1
1
0.8
0.8
0.6
0.6
u(t)
h(t)
1
ω [rd/s]
0.4
0.2
0.4
0.2
0
0
0
2
4
6
8
10
0
t [s]
2
4
6
8
10
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
stąd transmitancja częstotliwościowa rozpatrywanego układu jest dana wzorem:
1
1
U C ( jω)
1
jωC
LC
= H ( jω) =
=
=
2
1
R
1
U ( jω)
2
LC
(
j
ω
)
+
RC
(
j
ω
)
+
1
R + jωL +
( jω) + ( jω) +
jωC
L
LC
Wprowadzając oznaczenia (pulsacja rezonansowa drgań własnych nietłumionych, tłumienie):
ω0 = 1
LC , ξ = ( R / L) /(2ω0 )
otrzymujemy:
H ( jω) =
ω02
2
( jω) + j 2ξω0 ω + ω20
=
1
− (ω / ω0 ) 2 + j 2ξ(ω ω0 ) + 1
czyli transmitancję częstotliwościową klasycznego układu rezonansowego RLC. Transmitancję
tę także można zapisać jako:
H ( jω) =
Aω1
2
( a + jω) +
ω12
,
A=
ω0
1 − ξ2
, ω1 = ω0 1 − ξ 2 , a = ξω0
i jest ona transformatą Fouriera sygnału postaci (patrz równanie (4.37) w podrozdziale 4.3):
Układy analogowe
123
Charakterystyka fazowa
0
0
-40
Φ(jω) [deg]
20log10|H(jω)| [dB]
Charakterystyka amplitudowa
20
-20
-40
-60
-80
-120
-160
-80
0.01
0.1
1
10
-200
0.01
100
0.1
ω [rd/s]
Odpowiedź impulsowa
10
100
Odpowiedź skokowa
0.8
1.5
0.6
1.25
0.4
1
u(t)
h(t)
1
ω [rd/s]
0.2
0.75
0
0.5
-0.2
0.25
-0.4
0
0
10
20
30
40
t [s]
0
10
20
30
40
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
 Ae − at sin ω1t
h (t ) = 
0

dla t ≥ 0
dla t < 0
Pulsacja ω1 jest pulsacją drgań tłumionych, różną od ω0 dla ξ≠0. Na rysunku 5.12 są przedstawione 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łumienia 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 przeprowadzonymi 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.
Układy analogowe
124
Charakterystyka fazowa
Charakterystyka amplitudowa
6
0
ξ = 0,1
ξ = 0,1
4
Φ(jω) [rd]
|H(jω)|
5
ξ = 0,3
3
ξ = 0,5
2
1
-1
ξ = 0,3
ξ = 0,5
-2
-3
0
0
0.5
1
1.5
2
2.5
3
0
0.5
ω [rd/s]
u(t)
h(t)
ξ = 0,3
10
20
2
2.5
3
Odpowiedź skokowa
ξ = 0,1
0
1.5
ω [rd/s]
Odpowiedź impulsowa
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
1
30
40
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
ξ = 0,1
ξ = 0,3
0
10
t [s]
20
30
40
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)
5.7. Przykłady projektowania
Przykład 1: rozmieszczenie zer i biegunów transmitancji
Załóżmy, że chcemy zaprojektować układ analogowy odpowiednio rozmieszczając na płaszczyźnie zespolonej jego zera i bieguny. Przyjmijmy, że interesuje nas filtr pasmowoprzepustowy, przenoszący tylko sygnał o pulsacji w przybliżeniu równej 10 radianów na sekundę. Z tego
powodu podejmujemy decyzję, że układ będzie miał trzy bieguny w okolicy tej pulsacji blisko
osi urojonej jω (w lewej półpłaszczyźnie):
p1,2 = −0,5 ± j 9,5;
p3,4 = −1 ± j10;
p5,6 = −0,5 ± j10,5
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ę:
H ( s) =
( s − j5)( s + j5)( s − j15)( s + j15)
( 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
Jej charakterystyki częstotliwościowe i czasowe są przedstawione na rysunku 5.14. Jak widać
założony cel został osiągnięty: otrzymaliśmy filtr pasmowoprzepustowy. Aby układ nie wzmacniał silnie pulsacji w pobliżu 10 rd/s, w ostatnim wzorze można wprowadzić czynnik skalujący, np. 1/2.
Jak widać charakterystyka fazowa Φ(ω) uzyskana z (5.8) jest bardzo nieliniowa. Obserwowane
w niej skoki o π radianów występują dla pulsacji zer leżących na osi urojonej, czyli w miejscach gdzie „zeruje się” charakterystyka amplitudowa M(ω). Bardziej szczegółowego omówienia zasad interpretacji charakterystyki fazowej dokonamy w następnym przykładzie. Odpowiedź impulsowa układu ma kształt zmodulowanego w amplitudzie sygnału sinusoidalnego
o częstotliwości 10 [rd/s] / 2π [rd] ≈ 1,59 Hz, czyli okresie równym 0,63 sekundy. Zanika ona
stosunkowo wolno do zera. W konsekwencji tego także odpowiedź układu na skok jednostkowy 1(t) jest silnie oscylacyjna i powoli się ustala na wartości 0,0056. Jest to zgodne z charakterystyką amplitudową układu, która dla pulsacji ω = 0 jest równa M(ω) = 0,0056 (−45 dB).
Przykład 2: znajdowanie zer i biegunów transmitancji
Załóżmy obecnie, że mamy określoną transmitancję i chcemy wyznaczyć jej zera i bieguny,
czyli miejsca zerowe wielomianu licznika i mianownika.
H ( s) =
0,66667 s 2 + 1
0,66667 ⋅ ( s 2 + 1,5000)
=
=
2
4,0001s + 5,0081s + 3,1650s + 1 4,0001 ⋅ ( s + 0,6260)( s 2 + 1,6260s + 0,3994)
= 1,667
3
( s + j1,2247)( s − j1,2247)
( s + 0,6260)( s + 0,3130 + j 0,5490)( s + 0,3130 − j 0,5490)
Na rysunku 5.15 przedstawiono położenie zer i biegunów transmitancji H(s) na płaszczyźnie
zespolonej zmiennej s oraz związane z nim charakterystyki częstotliwościowe {M(ω), Φ(ω)}
i czasowe {h(t), u(t)} układu. Jak widać jest to układ dolnoprzepustowy, co jest spowodowane
faktem, że bieguny występują dla pulsacji ω = 0 i ω = ±0,5490, a zera dla ω = ±1,2247.
Z przykładu wynika, że jest wskazane usunięcie skoków charakterystyki fazowej o 360 stopni
(jej „uciąglanie”), uzyskanej ze wzoru Φ(ω) = arctg(Imag(H(jω)), Real(H(jω))) (5.8), na przykład poprzez zastosowanie funkcji unwrap() w programie Matlab. Dopiero po tej operacji
można bez problemów interpretować zachowanie układu jako „przesuwnika” fazowego. Zwrócić należy także uwagę, że pozostawiony skok fazy o 180 stopni występuje dla pulsacji, w której transmitancja ma zero. Charakterystyka fazowa jest nieliniowa, ale w przedziale „przepuszczania” jest najbardziej zbliżona do linii prostej.
Przykład 3: projekt filtra górnoprzepustowego
Obecnie spróbujemy zastosować zdobytą do tej pory wiedzę do zaprojektowania metodą „zer
i biegunów” filtra górnoprzepustowego. Z rozdziału dotyczącego wykresów Bodego wiemy, że
każde zero powoduje zwiększenie nachylenia charakterystyki amplitudowo-częstotliwościowej
o 20 decybeli na dekadę, każdy biegun zmniejsza zaś to nachylenie o 20 decybeli na dekadę.
Jeśli filtr ma być górnoprzepustowy, to dla pulsacji ω dążącej do nieskończoności nachylenie
charakterystyki amplitudowej musi dążyć do zera, skąd wynika, że jego transmitancja powinna
mieć taką samą liczbę zer i biegunów. Jeśli chcemy aby filtr nie przenosił pulsacji
zerowej, jego transmitancja powinna mieć zero z1 w środku układu współrzędnych z1 = 0+j0.
W związku z tym musi mieć ona także biegun p1 „kompensujący” częstotliwościowo zero z1,
na przykład p1 = −1 + j0. Aby „wyzerować” pewien zakres niskich częstotliwości, umiesz-
Układy analogowe
20
4
10
2
Φ(jω) [rd]
Imag(s)
126
0
-10
0
-2
-4
-20
-1
-0.5
0
0
5
20log10|H(jω)| [dB]
2.5
|H(jω)|
2
1.5
1
0.5
0
0
5
10
15
20
0
h(t)
u(t)
8
12
t [s]
20
5
10
15
20
ω [rd/s]
1.5
1
0.5
0
-0.5
-1
-1.5
4
15
20
0
-20
-40
-60
-80
-100
ω [rd/s]
0
10
ω [rd/s]
Real(s)
16
20
0.15
0.1
0.05
0
-0.05
-0.1
-0.15
0
4
8
12
16
20
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 „kompensujemy” te zera biegunami: pk+1 = −1±jk, k = 1, 2, 3. Ostatecznie otrzymuje się transmitancję o następującej postaci:
H ( s) =
s ⋅ ( s + j )( s − j ) ⋅ ( s + j 2)( s − j 2) ⋅ ( s + j 3)( s − j 3)
( s + 1) ⋅ ( s + 1 + j )( s + 1 − j ) ⋅ ( s + 1 + j 2)( s + 1 − j 2) ⋅ ( s + 1 + j 3)( s + 1 − j 3)
Na rysunku 5.16 przedstawiono położenie zer i biegunów powyższej transmitancji na płaszczyźnie zespolonej zmiennej s oraz związane z nim charakterystyki częstotliwościowe
{M(ω), Φ(ω)} oraz czasowe {h(t), u(t)} układu. Jak widać zaprojektowaliśmy filtr górnoprzepustowy, którego wzmocnienie dąży do 1 dla pulsacji rosnącej do nieskończoności.
Projektowanie filtrów metodą „zer i biegunów” jest intuicyjnie bardzo proste, ale dosyć czasochłonne, gdyż realizuje się je wielokrotnie powtarzając próby. Uzyskanie tym sposobem filtrów, spełniających bardzo ostre wymagania projektowe (duża liniowość pasma przepusto-
Imag(s)
Układy analogowe
127
1.5
1
0.5
0
-0.5
-1
-1.5
-0.8 -0.6 -0.4 -0.2
Real(s)
0
0.2
1
20log10|H(jω)| [dB]
0
|H(jω)|
0.8
0.6
0.4
0.2
0
1
2
3
ω [rd/s]
4
5
0
1
2
3
4
5
ω [rd/s]
4
0
2
-1
Φ(jω) [rd]
Φ(jω) [rd]
-40
-60
0
0
-2
-4
-2
-3
-4
0
1
2
3
ω [rd/s]
4
5
0.25
0.2
0.15
0.1
0.05
0
-0.05
u(t)
h(t)
-20
0
5
10
t [s]
15
20
25
0
1
2
0
5
10
3
4
5
15
20
25
ω [rd/s]
1.2
1
0.8
0.6
0.4
0.2
0
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
Układy analogowe
Imag(s)
128
3
2
1
0
-1
-2
-3
-1
-0.8 -0.6 -0.4 -0.2
Real(s)
0
1
20log10|H(jω)| [dB]
0
|H(jω)|
0.8
0.6
0.4
0.2
-10
-20
-30
-40
0
-50
4
8
12
ω [rd/s]
16
20
0
4
4
2
2
0
-2
8
12
16
20
0
-2
-4
-4
-6
0
4
8
12
ω [rd/s]
16
20
2
0
-2
u(t)
h(t)
4
ω [rd/s]
Φ(jω) [rd]
Φ(jω) [rd]
0
-4
-6
-8
0
1
2
t [s]
3
4
5
0
4
8
0
1
2
12
16
20
3
4
5
ω [rd/s]
1
0.8
0.6
0.4
0.2
0
-0.2
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 nastę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.
5.8. Przykład ćwiczenia komputerowego
W tabeli 5-2 jest przedstawiony przykładowy program napisany w języku Matlab, posłużył on
do wygenerowania wszystkich rysunków zaprezentowanych w przykładach. Zainteresowany
Czytelnik może go wykorzystać do dalszych, samodzielnych eksperymentów.
Tab. 5-2. Przykładowe ćwiczenie komputerowe
% Ćwiczenie: Projektowanie transmitancji H(s) układów analogowych metodą zer i biegunów
przyklad = 1;
% Wybór przykładu
% ================================================================
% 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
Układy analogowe
130
% ===============================
% CZEŚĆ WSPÓLNA - prezentacja wyników
% ===============================
plot(real(z), imag(z), ’or’, real(p), imag(p),’xb’); grid;
title(’Zera (o) i bieguny (x)’); xlabel(’Real’); ylabel(’Imag [rd/s]’);
pause
w = 0 : 0.01 : WMAX;
[b,a] = zp2tf(z',p',1);
H = freqs(b,a,w);
Hm = abs(H); HmdB = 20*log10(Hm);
Hf = angle(H); Hfu = unwrap(Hf);
%
%
%
%
%
wybrane pulsacje widma
zera, bieguny -> wspólczynniki wielomianów
wyznaczenie widma transmitancji dla zadanego w
moduł transmitancji
faza transmitancji
plot(w,Hm,'k'); grid; title('Ch-ka amplitudowa'); xlabel('w [rd/s]'); pause
plot(w,HmdB,'k'); grid; title('Ch-ka amplitudowa w dB'); xlabel('w [rd/s]'); pause
plot(w,Hf,'k'); grid; title('Ch-ka fazowa'); xlabel('w [rd/s]'); ylabel('[rd]'); pause
plot(w,Hfu,'k'); grid; title('Ch-ka fazowa unwrap'); xlabel('w [rd/s]'); ylabel('[rd]');
pause
% Odpowiedź impulsowa
h = impulse(b,a,TMAX);
% funkcja z przybornika CONTROL
dt = TMAX/(length(h)-1); th = 0 : dt : TMAX;
plot(th,h,'k'); grid; title('Odpowiedź impulsowa'); xlabel('t [s]'); pause
% Odpowiedź na skok jednostkowy
u = step(b,a,TMAX);
% funkcja z przybornika CONTROL
dt = TMAX/(length(u)-1); tu = 0 : dt : TMAX;
plot(tu,u,'k'); grid; title('Odpowiedź skokowa'); xlabel('t [s]'); pause
6
Analogowe filtry
Butterwortha i Czebyszewa
W podrozdziale 5.2 wykazaliśmy, że projektowanie analogowych układów liniowych niezmiennych w czasie LTI (ang. Linear Time-Invariant) sprowadza się do wyboru wartości
współczynników an i bm, n = 0, 1, ..., N, m = 0, 1, ..., M, równań różniczkowych, opisujących te
układy. Współczynniki te są równocześnie współczynnikami wielomianu licznika i mianownika ich transmitancji (5.14), (5.43a) i wpływają na ich właściwości częstotliwościowe. Z kolei
w podrozdziale 5.4 zapoznaliśmy się z najprostszymi pasywnymi układami analogowymi, zbudowanymi z rezystancji, indukcyjności i pojemności oraz stwierdziliśmy, że w praktycznych
realizacjach wartości tych współczynników zależą od konfiguracji układu i wartości użytych
elementów R, L i C. Dalej dokładniej przyjrzymy się problemowi doboru wartości współczynników transmitancji układów LTI, natomiast w ostatnim podrozdziale pokażemy, w jaki
sposób w praktyce realizuje się te transmitancje za pomocą aktywnych układów RLC ze wzmacniaczami operacyjnymi.
Nasze rozważania w tym rozdziale będą opierały się na podstawowym twierdzeniu z teorii
obwodów [Papo88], iż dowolną funkcję wymierną o współczynnikach rzeczywistych postaci
(5.43) można zrealizować za pomocą sumatorów, układów mnożących oraz układów różniczkujących lub całkujących, one zaś z kolei mogą być zrealizowane za pomocą pasywnych
i aktywnych układów RLC o parametrach skupionych.
Dla dociekliwych. Nie należy jednak zapominać, że filtracja sygnałów analogowych może być
także realizowana innymi metodami. Najlepszym tego przykładam są filtry analogowe z akustyczną falą powierzchniową SAW (ang. Surface Acoustics Waves), które zostały wdrożone do
masowej produkcji w połowie lat siedemdziesiątych i znalazły powszechne zastosowanie w torze przetwarzania pośredniej częstotliwości w odbiornikach telewizyjnych [Maja89]. Jako
ciekawostkę, ilustrującą skalę ich zastosowań, można podać, że już w roku 1986 tylko firma
Siemens wyprodukowała ponad 18 milionów filtrów telewizyjnych z akustyczną falą powierzchniową SAW w około 40 odmianach. Filtry SAW składają się z nadajnika i odbiornika.
Każdy z nich jest zbudowany z dwóch metalowych elektrod, mających kształt zachodzących na
siebie grzebieni (tzw. przetwornik międzypalczasty), które są naniesione na podłoże piezoelektryczne. Przyłożenie zmiennego napięcia elektrycznego do elektrod nadajnika wprawia go
w drgania mechaniczne. W ich wyniku wzdłuż powierzchni materiału rozchodzą się fale akustyczne, stanowiące przemieszczające się pole naprężeń i odkształceń. Po dotarciu do odbiornika powodują one powstanie napięcia elektrycznego na jego elektrodach. Własności fil-
Analogowe filtry Butterwortha i Czebyszewa
132
tracyjne takiego układu zależą od geometrii elektrod obu przetworników, nadawczego i odbiorczego.
Zagadnienie projektowania transmitancji H(s) (5.43) (czyli dobór jej zer zm i biegunów zn), takiej aby iloczyn H(jω)H(−jω) był równy zadanemu |H(jω)|2, nosi nazwę faktoryzacji widmowej.
6.1. Ogólne zasady projektowania filtrów analogowych
Projektowanie układów analogowych najczęściej sprowadza się do projektowania filtrów częstotliwościowych, tzn. układów modyfikujących widmo częstotliwościowe przechodzących
przez nie sygnałów. Definiuje się cztery podstawowe typy filtrów, w zależności od pasma częstotliwości, przepuszczanego przez układ (patrz rysunki 6.1a i 6.1.b):
1) filtry dolnoprzepustowe (LP − Low Pass):
1 − δ pass ≤ H LP ( jω) ≤ 1 + δ pass , dla ω ≤ ω pass

0 ≤ H LP ( jω) ≤ 1 + δ pass , dla ω pass < ω < ωstop


0 ≤ H LP ( jω) ≤ δ stop , dla ωstop ≤ ω

(6.1)
2) filtry górnoprzepustowe (HP − High Pass):

0 ≤ H HP ( jω) ≤ δ stop , dla ω ≤ ωstop

0 ≤ H HP ( jω) ≤ 1 + δ pass , dla ωstop < ω < ω pass


1 − δ pass ≤ H HP ( jω) ≤ 1 + δ pass , dla ω pass ≤ ω
(6.2)
3) filtry pasmowoprzepustowe (BP − Band Pass):
1 − δ pass ≤ H BP ( jω) ≤ 1 + δ pass , dla ω pass1 ≤ ω ≤ ω pass 2

(6.3)
0 ≤ H BP ( jω) ≤ δ stop , dla ω ≤ ωstop1 lub ωstop 2 ≤ ω


0 ≤ H BP ( jω) ≤ 1 + δ pass , dla ωstop1 < ω < ω pass1 lub ω pass 2 < ω < ωstop 2

4) filtry pasmowozaporowe (BS − Band Stop):
1 − δ pass ≤ H BS ( jω) ≤ 1 + δ pass , dla ω ≤ ω pass1 lub ω pass 2 ≤ ω

0 ≤ H BS ( jω) ≤ δ stop , dla ωstop1 ≤ ω ≤ ωstop 2
(6.4)

.

0 ≤ H BS ( jω) ≤ 1 + δ pass , dla ω pass1 < ω < ωstop1 lub ωstop 2 < ω < ω pass 2

W skrótach nazw oraz parametrów wykorzystano terminologię anglojęzyczną, ponieważ przyjęto założenie, że środowiskiem programowym, w którym będą przeprowadzane projektowe
eksperymenty symulacyjne, będzie język Matlab, a on niestety nie jest spolszczony i raczej nie
będzie. Powyższe wzory definicyjne dokładnie określają przedział wartości, jakie może przyjąć charakterystyka amplitudowa M(ω) = |H(jω)| dla dowolnej pulsacji ω dla każdego typu
filtra. Wynika z nich, że wartości funkcji M(ω) powinny leżeć w „tunelach”, zaznaczonych
białym kolorem na rysunkach 6.1a, 6.1b i określonych przez przyjęte wartości parametrów
ωpass, ωstop, δpass, δstop. Oczywiście, zdefiniowane wyżej charakterystyki filtrów należą do
najbardziej podstawowych. W praktyce często projektuje się i stosuje filtry o innych, bardziej
Analogowe filtry Butterwortha i Czebyszewa
133
MLP(ω)
LP
1+δp
1
1-δp
δs
ωp ωs
0
0
fp
ω [rd⋅Hz]
f [Hz]
fs
Rys. 6.1a. Orientacyjny kształt charakterystyki amplitudowo-częstotliwościowej M(ω) = |H(jω)| (biały
„tunel”) dla cyfrowego filtra dolnoprzepustowego (LP). Zastosowano skrócone oznaczenia: „p” − pass, „s”
− stop
MLP(ω)
MHP(ω)
LP
1+δp
1+δp
1
1
1-δp
1-δp
δs
δs
ωp
0
ωs
ω
MBP(ω)
1
1
1-δp
1-δp
δs
δs
ωp1
ωp2
ωs1
ωp
MBS(ω)
BP
1+δp
ωs1
ωs
0
1+δp
0
HP
ω
0
ωp1
ωs1
ω
BS
ωs2
ωp1
ω
Rys. 6.1b. Orientacyjny kształt charakterystyk amplitudowo-częstotliwościowych (białe „tunele”) dla czterech podstawowych typów filtrów: dolnoprzepustowego (LP), górnoprzepustowego (HP), pasmowoprzepustowego (BP) i pasmowozaporowego (BS). Zastosowano skrócone oznaczenia: „p” − pass, „s” − stop
Analogowe filtry Butterwortha i Czebyszewa
134
M(ω) [dB]
0
-10
-20
-30
-40
-50
f [MHz]
24
26
28
30
32
34
36
38
40
42
44
Rys. 6.1c. Przybliżone pole tolerancji charakterystyki amplitudowo-częstotliwościowej dwustandardowego
filtra telewizyjnego pośredniej częstotliwości, pracującego w standardach B/G− D/K [Maje89]
wymyślnych charakterystykach amplitudowo-częstotliwościowych. Dla przykładu na rysunku
6.1c przedstawiono charakterystykę filtra pośredniej częstotliwości, pracującego w dwustandardowych odbiornikach telewizyjnych B/G-D/K. Jest to co prawda filtr pasmowoprzepustowy, ale pole tolerancji jego charakterystyki nie jest „prostokątne”, „zero-jedynkowe”
(tłumienie, przepuszczanie), tak jak w filtrach z rysunku 6.1b.
Powyższe równania definicyjne filtrów należy interpretować w następujący sposób: w paśmie
przepustowym moduł odpowiedzi częstotliwościowej powinien się mieścić w zakresie [1−δp,
1+δp], w paśmie zaś zaporowym − w zakresie [0, 0+δs]. Im jest mniejsze δp (np. 0,01; 0,001;
0,0001), tym filtr mniej zniekształca amplitudę przenoszonych sygnałów składowych, natomiast dla mniejszego δs (np. 0,01; 0,001; 0,0001) − bardziej tłumi sygnały, o częstotliwościach
leżących w paśmie zaporowym. Dla wygody w projektowaniu filtrów stosuje się miarę logarytmiczną wyrażoną w decybelach, tzn. wartości wzmocnienia 1−δp i δs przelicza się z jednostek bezwzględnych (np. 0,7071; 0,1; 0,01; 0,001; 0,0001) na decybele (odpowiednio: −3 dB,
−20 dB, −40 dB, −60 dB, −80 dB), stosując następujący wzór:
G p = 20 log10 (1 − δ p ), Gs = 20 log10 ( δ s )
(6.5)
gdzie Gp i Gs oznaczają wzmocnienie filtra w paśmie przepustowym i zaporowym,
wyrażone w decybelach. Wprowadza się także pojęcie tłumienia układu jako odwrotności
wzmocnienia. W mierze decybelowej tłumienie to jest równe:
Ap = 20 log10
1
= −G p ,
(1 − δ p )
As = 20 log10
1
= −Gs
δs
(6.6)
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:
X dB = 10log10
A2
B2
zapisywany także jako:
A
X dB = 20log10 ,
B
( )
= 10log10 X 2
X dB = 20log10 ( X )
(6.7a)
(6.7b)
Analogowe filtry Butterwortha i Czebyszewa
135
Jeśli w równaniach (6.7a) i (6.7b) mnożniki 10 i 20 zastąpimy odpowiednio przez 1 i 2, to trzymamy wynik w belach, a nie w decybelach. Wybór wzoru zależy od tego, czy wartość pod
logarytmem jest „w kwadracie”, czy też nie. Przykładowo jeśli |H(jω)|2 = |B(jω)|2/|A(jω)|2 = 0,5,
to wówczas z (6.7a) otrzymujemy 10log10(0.5) = −3,0103dB ≈ −3dB, czyli −3 decybele odpowiadają k wa d r a t o wi m o d u ł u wz m o c n i e n i a równemu 1/2, czyli samemu wz m o c n i e n i u równemu 1 / 2 = 0,7071. Natomiast dla |H(jω)| = |B(jω)|/|A(jω)| = 0,7071 z (6.7b) mamy 20log10(0,7071) ≈ −3 dB, czyli tyle samo co poprzednio.
Do realizacji każdego z filtrów LP, HP, BP i BS można zastosować j e d e n z c z t e r e c h
r o d z a j ó w a p r o k s y m a c j i wymaganej charakterystyki amplitudowo-częstotliwościowej. Jej
wybór narzuca określone położenie zer i biegunów ich transmitancji (5.17), (5.43b) (np. na
okręgach lub elipsach), powodujące występowanie lub brak zafalowań w paśmie przepustowym i/lub zaporowym charakterystyk amplitudowych filtrów oraz wpływające na szerokość
zboczy ich pasm przejściowych. Potocznie aproksymacje te nazywa się prototypami. Ich pochodzenie wyjaśniono w dalszej części tego rozdziału (podrozdziały 6.3, 6.4 i 6.5). Są to
prototypy: Butterwortha, Czebyszewa typu I i typu II oraz prototyp eliptyczny. Dla filtrów
dolnoprzepustowych, poza wyżej wymienionymi, można także dodatkowo zastosować prototyp
Bessela. Oczywiście istnieją także inne prototypy. Charakterystyki poszczególnych prototypów
są przedstawione w sposób poglądowy na rysunku 6.2, lecz tylko dla filtrów dolnoprzepustowych. I tak:
1) prototyp Butterwortha (maksymalnie płaski) − nie ma zafalowań w paśmie przepustowym
i zaporowym oraz ma charakterystykę fazową najbardziej zbliżoną do liniowej, ale za to
odznacza się najmniej stromymi zboczami pasm przejściowych (przy takim samym rzędzie
filtra),
2) prototyp Czebyszewa typu I − ma zafalowania w paśmie przepustowym, nie ma zafalowań
w paśmie zaporowym, ma węższe pasmo przejściowe niż prototyp Butterwortha, lecz okupione bardziej nieliniową charakterystyką fazową,
3) prototyp Czebyszewa typu II − charakteryzuje się zafalowaniami w paśmie zaporowym
a nie przepustowym,
4) prototyp eliptyczny − ma zafalowania w obu pasmach, ale przy takim samym rzędzie filtra
odznacza się największą stromością zboczy pasm przejściowych i najbardziej nieliniową
charakterystyką fazową,
5) prototyp Bessela − może być stosowany tylko dla filtrów dolnoprzepustowych; nie ma zafalowań, ma bardzo szerokie pasmo przejściowe, odznacza się najbardziej liniową fazą ze
wszystkich prototypów.
Wybór prototypu jest podyktowany specyfiką zastosowania i jej wymaganiami: dopuszczalnym
stopniem zafalowań charakterystyki amplitudowej, pożądaną selektywnością filtrów i związaną
z nimi szerokością pasm przejściowych, wymaganym stopniem liniowości charakterystyki
fazowej oraz dopuszczalną złożonością układową (rząd filtra).
Na rysunku 6.2 przedstawiono charakterystyki amplitudowe filtrów prototypowych, zaprojektowanych dla następujących wartości parametrów: ωpass = 1 rd/s, ωstop = 2 rd/s, Apass = 3 dB
(Gpass = −3 dB, 1−δpass = 0,7071), Astop = 40 dB (Gstop = −40 dB, δstop = 0,01). Jak widać różnym kształtom odpowiedzi częstotliwościowych odpowiada różna liczba i położenie zer i biegunów transmitancji H(s). Transmitancje dolnoprzepustowych filtrów prototypowych Butterwortha i Czebyszewa nie mają zer. Bieguny pierwszego z nich leżą na okręgu, a drugiego na
elipsie. Z kolei dolnoprzepustowe filtry prototypowe Czebyszewa typu II i eliptyczny mają nie
tylko bieguny, ale także zera.
Analogowe filtry Butterwortha i Czebyszewa
136
Każdy z filtrów LP, HP, BP i BS można zaprojektować z wykorzystaniem dowolnego prototypu. Na rysunku 6.3 przedstawiono rozkład zer i biegunów oraz charakterystyki amplitudowe i fazowe dla przykładowych filtrów LP, HP, BP, BS Czebyszewa typu II (brak zafalowań
w paśmie przepustowym, oscylacje w paśmie zaporowym, nie tylko bieguny ale także zera
transmitancji). Jak widać rozłożenie zer i biegunów transmitancji nie jest trywialne i trudno je
znaleźć metodą „prób i błędów”. Należy zwrócić uwagę, że w każdym przypadku charakterystyka fazowa jest nieliniowa w paśmie przepustowym, ale jej skoki o +π radianów
występują tylko w paśmie zaporowym w miejscu występowania zer leżących na osi urojonej.
a)
0.8
|H(jω)|
0.5
Imag(s)
0
20log10|H(jω)| [dB]
1
1
0
0.6
0.4
-0.5
0.2
-1
0
-1
-0.8 -0.6 -0.4 -0.2
-40
-60
-80
-100
0
0
-20
1
2
3
4
5
0
1
2
ω [rd/s]
Real(s)
3
4
5
4
5
ω [rd/s]
b)
0.8
|H(jω)|
0.5
Imag(s)
0
20log10|H(jω)| [dB]
1
1
0
0.6
0.4
-0.5
0.2
-1
0
-1
-0.8 -0.6 -0.4 -0.2
-40
-60
-80
-100
0
0
-20
1
2
3
4
5
0
1
2
ω [rd/s]
Real(s)
3
ω [rd/s]
c)
0.8
|H(jω)|
2
Imag(s)
0
20log10|H(jω)| [dB]
1
4
0
0.6
0.4
-2
0.2
-4
0
-1.6
-1.2
-0.8
-0.4
-40
-60
-80
-100
0
0
-20
1
2
3
4
5
6
0
1
2
ω [rd/s]
Real(s)
3
4
5
6
4
5
6
ω [rd/s]
0
20log10|H(jω)| [dB]
1
3
2
1
0
-1
-2
-3
0.8
|H(jω)|
Imag(s)
d)
0.6
0.4
0.2
0
-0.4
-0.3
-0.2
Real(s)
-0.1
0
-20
-40
-60
-80
-100
0
1
2
3
ω [rd/s]
4
5
6
0
1
2
3
ω [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 wymagania: ωpass = 1 rd/s, ωstop = 2 rd/s, Apass = 3 dB, Astop = 40 dB)
Analogowe filtry Butterwortha i Czebyszewa
137
a) filtr dolnoprzepustowy (LP)
b) filtr górnoprzepustowy (HP)
0
20log10|H(jω)| [dB]
20log10|H(jω)| [dB]
0
-20
-40
-60
-80
-100
-20
-40
-60
-80
-100
10
100
1000 10000 100000
10
100
f [Hz]
-2
Φ(jω) [rd]
Φ(jω) [rd]
0
-4
-6
10
100
6
5
4
3
2
1
0
1000 10000 100000
10
2000
2000
1000
1000
0
-1000
-4000
100
1000 10000 100000
f [Hz]
Imag(s/(2π))
Imag(s/(2π))
f [Hz]
-2000
-6000
1000 10000 100000
f [Hz]
-2000
Real(s)
0
0
-1000
-2000
-8000 -6000 -4000 -2000
0
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)
Projektowanie transmitancji Hxx(s) filtra analogowego przebiega według następującego scenariusza (xx = LP, HP, BP lub BS):
1) przeanalizowanie wymagań częstotliwościowych stawianych filtrowi Hxx(s) i wybór odpowiedniego rodzaju filtra prototypowego: Butterwortha, Czebyszewa typu I, Czebyszewa
typu II, eliptycznego lub Bessela;
2) przeliczenie wymagań projektowych stawianych filtrowi Hxx(s) na wymagania, które powinien spełniać odpowiadający mu dolnoprzepustowy filtr prototypowy HLP(p)(s), który
umiemy zaprojektować;
3) zaprojektowanie transmitancji prototypu HLP(p)(s) danego typu;
4) transformacja transmitancji HLP(p)(s) na transmitancję Hxx(s ′), spełniającą wymagania projektowe, za pomocą tzw. transformacji częstotliwości (transformacja ta polega na podstawieniu za s w HLP(p)(s) odpowiedniej funkcji s = f(s ′), w wyniku czego otrzymujemy docelową
transmitancję Hxx(s ′));
Analogowe filtry Butterwortha i Czebyszewa
138
c) filtr pasmowoprzepustowy (BP)
d) filtr pasmowozaporowy (BS)
0
20log10|H(jω)| [dB]
20log10|H(jω)| [dB]
0
-20
-40
-60
-80
-100
-20
-40
-60
-80
-100
10
100
1000 10000 100000
10
100
0
-2
-4
-6
-8
-10
-12
10
100
6
4
2
0
-2
-4
-6
1000 10000 100000
10
100
f [Hz]
10000
Imag(s/(2π))
Imag(s/(2 π))
1000 10000 100000
f [Hz]
20000
0
-10000
-20000
-32000 -24000 -16000 -8000
1000 10000 100000
f [Hz]
Φ(jω) [rd]
Φ(jω) [rd]
f [Hz]
0
15000
10000
5000
0
-5000
-10000
-15000
-60000 -40000 -20000
Real(s)
0
Real(s)
Rys. 6.3. (cd.) c) filtr pasmowoprzepustowy (BP), d) filtr pasmowozaporowy (BS)
5) sprawdzenie właściwości zaprojektowanego układu Hxx(s ′): jego charakterystyki amplitudowo-częstotliwościowej M(ω) i fazowo-częstotliwościowej Φ(ω) oraz kształtu odpowiedzi
impulsowej h(t) i skokowej u(t); w przypadku filtrów dolnoprzepustowych z odpowiedzi
skokowej u(t) (odpowiedzi układu na sygnał skoku jednostkowego) wyznacza się także dodatkowe parametry:
czas ustalania − czas, po którym u(t) nie różni się więcej niż o 5% od wartości ustalonej
(jest równe 0,95 ÷ 1,05 tej wartości),
czas narastania − czas narastania h(t) od 0,1 do 0,9 wartości ustalonej.
W zależności od rodzaju filtra docelowego transformacja transmitancji prototypu HLP(p)(s) na
transmitancję końcową H xx ( s' ) (xx = LP, HP, BP lub BS) jest przeprowadzana za pomocą
następujących podstawień:
1) LP(p) → LP − filtr dolnoprzepustowy:
2) LP
(p)
→ HP − filtr górnoprzepustowy:
s = s' ω0 , ω0 = ω pass
(6.8)
s = ω0 s' , ω0 = ω pass
(6.9)
Analogowe filtry Butterwortha i Czebyszewa
3) LP(p) → BP − f. pasmowoprzepustowy: s =
4) LP(p) → BS − filtr pasmowozaporowy: s =
139
s' 2 + ω02
, ω0 = ω p1ω p 2 , ∆ω = ω p 2 − ω p1 (6.10)
∆ω⋅ s'
∆ω⋅ s'
s' 2 + ω02
, ω0 = ω p1ω p 2 , ∆ω = ω p 2 − ω p1 (6.11)
W powyższych wzorach podano przykładowe, intuicyjne podstawienia wartości parametrów ω0
i ∆ω. W praktyce podstawienia te zależą od rodzaju użytego filtra prototypowego. W przypadku filtrów BP i BS ω0 jest pulsacją środka pasma przepustowego (dla BP) lub zaporowego
(dla BS) (średnia geometryczna pulsacji granicznych), a ∆ω − szerokością pasma przepustowego (BP) lub zaporowego (BS). W ich wyniku wielomiany zmiennej s transmitancji HLP(p)(s)
są zastępowane przez inne wielomiany, w wyniku czego powstaje nowa, docelowa transmitancja Hxx(s ′).
Kończąc to krótkie wprowadzenie należy jeszcze raz podkreślić, że w praktyce często projektuje się także filtry analogowe, mające inne kształty („tunele”) charakterystyki amplitudowo-częstotliwościowej niż te przedstawione na rysunku 6.1b. Przykładem mogą być filtry,
wstawiane do toru przetwarzania sygnałów, o charakterystyce nieliniowej, których zadaniem
jest korygowanie nieliniowej charakterystyki pasma przepustowego innych elementów tego
toru, na przykład czujników pomiarowych lub kanałów transmisyjnych. Ciekawym przykładem
filtra o innej charakterystyce amplitudowo-częstotliwościowej niż LP, HP, BP i BS jest
wspomniany już filtr pośredniej częstotliwości, stosowany w torze przetwarzania sygnału
w odbiornikach telewizyjnych, który został zaprezentowany na rysunku 6.1c.
Powinniśmy teraz przystąpić do przedstawienia metod projektowania transmitancji dolnoprzepustowego filtra prototypowego HLP(p)(s), stosowanych w punkcie trzecim opisanego powyżej algorytmu. Postąpimy jednak inaczej. Najpierw w rozdziale 6.2 omówimy metodę transformacji częstotliwości, a następnie w kolejnych rozdziałach 6.3, 6.4 i 6.5 przedstawimy różne
metody projektowania dolnoprzepustowego filtra HLP(p)(s) oraz przedstawimy liczne przykłady
jego transformacji w filtr dowolnego typu (LP, HP, BP i BS).
6.2. Transformacja częstotliwości
Postaramy się teraz uzasadnić użyteczność opisanych powyżej transformacji częstotliwości,
stosowanych podczas projektowania filtrów analogowych. Ich idea jest prosta: stosując podstawienie s = f(s ′) w funkcji prototypowej HLP(p)(s), otrzymujemy funkcję Hxx(s ′), xx = LP, HP,
BP lub BS, zmiennej s ′, która przyjmuje takie same wartości w punkcie s ′ jak funkcja HLP(p)(s)
w punkcie s:
(
)
( p)
H xx ( s' ) = H xx f −1 ( s ) = H LP
( 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 pasmowozaporowym (BS). Przyjmijmy podstawienia:
s = jω, s' = jv
(6.13)
oraz rozpatrzmy kolejno wszystkie transformacje. Załóżmy, że wymagania projektowe stawiane 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 unormowanego prototypu dolnoprzepustowego jest dana następującym wzorem:
Analogowe filtry Butterwortha i Czebyszewa
140
( p)
H LP
( s) =
bM
M
∏ ( s − zm )
m =1
N
(6.14)
a N ∏ ( s − pn )
n =1
1) Transformacja częstotliwości LP → LP (rysunek 6.4a). W tym przypadku otrzymujemy:
s=
s'
ω0
⇒
jω =
jv
ω0
⇒ ω=
v
ω0
(6.15)
czyli zwykłe przeskalowanie pulsacji pokazane na rysunku 6.4a. Jeśli przyjmiemy ω0 = vpass, to
filtr dolnoprzepustowy HLP(s ′) o pulsacjach „granicznych” {vpass, vstop} jest związany z filtrem
dolnoprzepustowym HLP(p)(s) o pulsacjach „granicznych” {ωpass = 1, ωstop = vstop/vpass}. W związku z tym projektujemy filtr HLP(p)(s) spełniający wymagania {ωpass = 1, ωstop = vstop/vpass, δpass,
δstop}, czyli znajdujemy jego zera zm i bieguny pk, i stosując podstawienie (6.15) w (6.14) otrzymujemy transmitancję HLP(s ′):
bM ω0N − M
H LP ( s' ) =
M
∏ ( s' − ω0 zm )
m =1
(6.16)
N
a N ∏ ( s' − ω0 pn )
n =1
HLP(p)(s)
jest stabilny, to także filtr HLP(s ′) ma tę właściwość, gdyż jego bieguny są
Jeśli filtr
przeskalowanymi biegunami prototypu i mają taki sam znak jak one.
2) Transformacja częstotliwości LP → HP (rysunek 6.4b). W tym przypadku stosujemy podstawienie:
ω
s= 0
(6.17)
s'
i po uwzględnieniu (6.13) otrzymujemy:
jω =
ω0
jv
⇒ ω=−
ω0
v
⇒ v=−
ω0
ω
(6.18)
Z zależności (6.18) wynika, że pulsacje ω→0 są przekształcane na pulsacje v→∞. I odwrotnie,
jeśli ω→∞, to v→0, czyli filtr dolnoprzepustowy o pulsacji granicznej ωpass jest transformowany na filtr górnoprzepustowy o pulsacji granicznej vpass = ω0/ωpass. Jeśli przyjmiemy ω0 =
= vpass, to otrzymamy ωpass = 1 i wówczas projektujemy filtr prototypowy HLP(p)(s) spełniający
warunki {ωpass = 1, ωstop = vpass/vstop, δpass, δstop}. W powyższych rozważaniach zaniedbaliśmy
znak minus występujący w równaniu (6.18), ponieważ |HLP(p)(ω)| = |HLP(p)(−ω)| oraz |HHP(v)| =
= |HHP(−v)|.
Łatwo wykazać, że transmitancja filtra po przekształceniu jest dana wzorem:
M
H HP ( s' ) =
∏ ( − zm )
bM m =1
⋅
⋅
aN N
(
−
p
)
∏ n
n =1
( s' ) N − M
M
∏ ( s' − ω0 zm−1 )
m =1
N
∏ ( s' − ω0 pn−1 )
n =1
(6.19)
Analogowe filtry Butterwortha i Czebyszewa
141
a) transformacja LP → LP
ω
LP ⇒ LP
ωs
ωp
|HLP(p)(ω)|
1
vp
vs
v
1
|HLP(v)|
b) transformacja LP → HP
ω
LP ⇒ HP
ωs
|HLP(p)(ω)|
ωp
1
vs
vp
v
1
|HHP(v)|
Rys. 6.4. Ilustracja zasady transformacji częstotliwości stosowanej podczas projektowania filtrów analogowych. Transformacja: a) LP → LP, b) LP → HP. W unormowanych prototypach dolnoprzepustowych
HLP(p)( ω) pulsacja ωp jest równa 1
Analogowe filtry Butterwortha i Czebyszewa
142
c) transformacja LP → BP
ω
LP ⇒ BP
ωs
ωp
|HLP(p)(ω)|
v
1
vp1
vp2
1
|HBP(v)|
d) transformacja LP → BS
ω
LP ⇒ BS
ωs
|HLP(p)(ω)|
ωp
v
1
vp1
vp2
1
|HBS(v)|
Rys. 6.4. (cd.) Transformacja częstotliwości: c) LP → BP, d) LP → BS
Analogowe filtry Butterwortha i Czebyszewa
143
ponieważ dowolny składnik wielomianu licznika i mianownika transmitancji (6.14) po podstawieniu (6.17) przyjmuje postać:
( s − zm ) =
− zm ( s' − ω0 zm−1 )
− pn ( s' − ω0 pn−1 )
, ( s − pn ) =
s'
s'
(6.20)
Bieguny transmitancji (6.19) są równe:
ω0 pn−1 = ω0 ( σ n + jωn ) −1 =
ω0 σ n
σ 2n
−j
+ ω2n
ω0 ωn
(6.21)
σ 2n + ω2n
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).
3) Transformacja częstotliwości LP → BP (rysunek 6.4c). Stosujemy podstawienie:
s=
( s' )2 + ω02
, ω0 = v p1v p 2 , ∆ω = v p 2 − v p1
∆ω⋅ s'
(6.22)
które prowadzi do następującej zależności pulsacji układów przed i po transformacji:
jω =
( jv ) 2 + ω02
∆ω ⋅ jv
⇒ ω=
v 2 − ω02
∆ω ⋅ v
(6.23)
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:
v 2p1 − ω02
∆ω ⋅ v p1
=
v 2p1 − v p1v p 2
( v p 2 − v p1 ) ⋅ v p1
= −1,
v 2p 2 − ω02
∆ω ⋅ v p 2
=
v 2p 2 − v p1v p 2
( v p 2 − v p1 ) ⋅ v p 2
=1
(6.24)
Analogicznie pulsacje graniczne pasma zaporowego vs1 i vs2 są transformowane na pulsacje:
ωs1 =
v s21 − v p1v p 2
( v p 2 − v p1 ) ⋅ v s1
, ωs 2 =
v s22 − v p1v p 2
( v p 2 − v p1 ) ⋅ v s 2
(6.25)
Jako ωstop filtra prototypowego, projektowanego w trzecim kroku algorytmu, przyjmuje się:
ωstop = min{ ωs1 , ωs 2
}
(6.26)
czyli bardziej strome zbocze.
W tym przypadku transmitancja filtra po przekształceniu jest dana wzorem:
H BP ( s' ) =
bM
⋅
aN
( ∆ω) N − M ( s' ) N − M
M
∏  ( s' )2 − ( zm ∆ω) s' + ω20 
m =1
N
∏  ( s' ) − ( pn ∆ω) s' + ω02 
n =1
2
(6.27)
Analogowe filtry Butterwortha i Czebyszewa
144
ponieważ dowolny składnik wielomianu licznika i mianownika transmitancji (6.14) po podstawieniu (6.22) przyjmuje postać:
( s − uk ) =
( s' )2 + ω20
( s' ) 2 − (uk ∆ω) s' + ω02
− uk =
∆ω⋅ s'
∆ω⋅ s'
(6.28)
gdzie uk oznacza dowolne zero zm lub biegun pn transmitancji (6.14).
Jeśli s = σ+jω i s ′ = ρ+jv, to z zależności (6.22) wynika także, że:
s = σ + jω =
(ρ + jv )2 + ω02
∆ω ⋅ (ρ + jv )
=
ω2 
ω2 
ρ 
v 
1+ 2 0 2  + j
1− 2 0 2 
∆ω  ρ + v 
∆ω  ρ + v 
(6.29)
czyli σ i ρ mają zawsze taki sam znak. Wynika stąd, że części rzeczywiste biegunów transmitancji (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 ′).
4) Transformacja częstotliwości LP → BS (rysunek 6.4d). W ostatnim rozpatrywanym przypadku jest stosowane podstawienie:
s=
∆ω⋅ s'
( s' )2 + ω02
, ω0 = v p1v p 2 , ∆ω = v p 2 − v p1
(6.30)
prowadzące do następującej zależności pulsacji układów przed i po transformacji:
jω =
∆ω ⋅ jv
⇒ ω=
( jv ) 2 + ω02
∆ω ⋅ v
(6.31)
ω02 − v 2
przedstawionej graficznie na rysunku 6.4d. Obecnie pulsacja graniczna ωpass = 1 jest związana
z dwiema pulsacjami vp1 i vp2, stanowiącymi „granice” pasma przepustowego filtra pasmowozaporowego HBS(s ′), gdyż zgodnie z zależnością (6.31) mamy:
∆ω ⋅ v p1
v 2p1
− ω02
=
( v p 2 − v p1 ) ⋅ v p1
v 2p1
− v p1v p 2
= −1,
∆ω ⋅ v p 2
v 2p 2
− ω02
=
(v p 2 − v p1 ) ⋅ v p 2
v 2p 2 − v p1v p 2
=1
(6.32)
Analogicznie pulsacje graniczne pasma zaporowego vs1 i vs2 są transformowane na pulsacje:
ωs1 =
(v p 2 − v p1 ) ⋅ v s1
v s21
− v p1v p 2
, ωs 2 =
( v p 2 − v p1 ) ⋅ v s 2
v s22 − v p1v p 2
(6.33)
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 pasmowozaporowego jest dana wzorem:
M
∏ ( − zm )
b
⋅
H BS ( s' ) = M ⋅ mN=1
aN
−
(
p
)
∏ n
n =1
 ( s' )2 + ω20 


N
N −M M
∏  ( s' )2 − ( zm−1∆ω) s' + ω20 
m =1
∏  ( s' )2 − ( pn−1∆ω) s' + ω02 
n =1
(6.35)
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’)
% Ćwiczenie: Transformacje częstotliwości filtrów analogowych
function [zz,pp,wzm] = lp2lpTZ(z,p,wzm,w0)
% LowPass to LowPass TZ
zz = []; pp = [];
for k=1:length(z)
zz = [ zz z(k)*w0 ];
wzm = wzm/w0;
end
for k=1:length(p)
pp = [ pp p(k)*w0 ];
wzm = wzm*w0;
end
--------------------------------------------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
Analogowe filtry Butterwortha i Czebyszewa
146
ponieważ dowolny składnik wielomianu licznika i mianownika transmitancji (6.14) po podstawieniu (6.30) przyjmuje postać:
( s − uk ) =
∆ω⋅ s '
( s ')2 + ω02
− uk =
( −uk )  ( s ')2 − (uk−1∆ω) s '+ ω02 


( s ')2 + ω02
(6.36)
gdzie uk oznacza dowolne zero zm lub biegun pn transmitancji (6.14).
Pozostaje nam jeszcze rozpatrzenie problemu stabilności transmitancji HBS(s ′). Jeśli podobnie
jak poprzednio przyjmiemy oznaczenia s = σ+jω i s ′ = ρ+jv, to z zależności (6.30) otrzymamy:
s = σ + jω =
∆ω⋅ (ρ + jv )
(ρ + jv )
2
+ ω02
=
∆ω  2
∆ω  2
ω0 + (ρ2 + v 2 )  ρ + j
ω0 − (ρ2 + v 2 )  v


ξ 
ξ 
(6.37)
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 transmitancji (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 komputerowych, 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 filtrów Butterwortha oraz Czebyszewa typu I i II.
6.3. Filtry Butterwortha
Dolnoprzepustowy, znormalizowany (ω3dB = 1 rd/s) filtr Butterwortha rzędu N to filtr mający
transmitancję postaci:
N
H B, N ( s ) = ∏ ( − pk )
k =1
N
∏ ( s − pk )
(6.39)
k =1
która spełnia następujące równanie:
2
H B, N ( jω) = H B, N ( jω) H B, N ( − jω) =
1
1
1
1
=
=
=
A( jω) A( − jω) L( ω2 ) c0 + c1ω2 + ... + c N ω2 N 1 + ω2 N
(6.40)
Uzasadnienie wzoru (6.40) jest następujące [Anto93]. Niech A(jω) = a0+a1(jω)+a2(jω)2+...
+aN(jω)N oznacza wielomian rzędu N o współczynnikach rzeczywistych, będący mianownikiem
transmitancji HB,N(jω). Wówczas A(−jω) = A*(jω) i iloczyn A(jω)A(−jω) = A(jω)A*(jω) = |A(jω)|2
jest zawsze równy wielomianowi L(ω2) = c0+c1ω2+c2ω4+...+cNω2N. Jeśli |HB,N(jω)|2 ma być maksymalnie płaskie, to wymagamy, aby spełniony był warunek
lim L( ω2 ) = 1
ω2 →0
(6.41)
Analogowe filtry Butterwortha i Czebyszewa
147
w maksymalnie płaskim sensie (wytłumaczenie poniżej). Zapiszmy funkcję L(x+h), gdzie
x = ω2, w postaci szeregu Taylora:
L( x + h ) = L( x ) + h
dL( x )
h k d k L( x )
+ ... +
dx
k! dx k
(6.42)
Wielomian L(x) dąży do jedności maksymalnie płasko dla x→0, kiedy jego pierwszych N pochodnych (pierwsza, druga, ..., N-ta) względem zmiennej x jest równych zero w punkcie x = 0.
Wymagamy więc od niego spełnienia następujących warunków:
L(0) = 1,
d k L( x )
dx k
x =0 = 0
dla
k≤N
(6.43)
stąd
c0 = 1, c1 = c2 = ... = c N −1 = 0
(6.44)
skąd otrzymujemy
L ( ω2 ) = 1 + c N ω2 N
(6.45)
Ponieważ dodatkowo chcemy, aby dla ω = 1 spełniony był warunek L(1) = 2 (trzydecybelowy
spadek |HB,N(jω)|2), mamy cN = 1. Ostatecznie:
L ( ω2 ) = 1 + ω 2 N
(6.46)
Podstawiając do powyższego równania ω = s/j możemy go zapisać jako:
2N
 e j ( 2 k −1) π / 2 N
L( − s 2 ) = 1 + ( − s 2 ) N = ∏ ( s − sk ), sk =  j ( k −1) π / N
k =1
e
dla N parzystego
dla N nieparzystego
(6.47)
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ównaniem (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 , korzystając ze znajomości wzoru na jego dolnoprzepustowy prototyp unormowany. Danymi wejściowymi 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 )

1

= δ stop
 1 + (ω stop / ω3dB ) 2 N

(6.49)
Analogowe filtry Butterwortha i Czebyszewa
148
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 wielomianu 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


2N
= 20log 10 (δ stop ) = − Astop
 −10log10 1 + ( ωstop / ω3dB )

(6.50)
Następnie dzielimy obie strony równań przez −10 oraz wykorzystujemy je jako potęgę liczby
10 (10 log10(x) = x):
A
/ 10
2N
1 + (ω
= 10 pass
pass / ω0 )

Astop / 10
2N
 1 + (ω stop / ω0 ) = 10
(6.51)
Potem przenosimy jedynki na prawą stronę, dzielimy oba równania stronami i logarytmujemy
wynik dzielenia:
 ωstop
2 N log10 
 ω pass

 Astop / 10 − 1 


 = log10  10

 10 Apass / 10 − 1 



(6.52)
skąd ostatecznie otrzymujemy:
 10 Astop / 10 − 1 
ω
 2 log (Ω ), Ω = stop
N = M  , M = log10  A / 10
10
 10 pass

ω pass
−1

(6.53)
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):
ω3dB =
(10
ωstop
Astop /10
)
−1
1/ 2 N
(6.54)
Ostatecznie bieguny transmitancji dolnoprzepustowego, unormowanego (ω3dB = 1 rd/s) filtra
Butterwortha są dane wzorem:
π 
 π π
pk = e jφk = exp  j  +
+ (k − 1)   , k = 1, 2, 3,..., N
N 
  2 2N
(6.55)
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
2
2
N
N



W obu przypadkach transmitancja filtrów jest równa:
(6.56)
Analogowe filtry Butterwortha i Czebyszewa
N
H B, N ( s ) = ∏ ( − pk )
k =1
149
N
∏ ( s − pk )
(6.57)
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) dolnoprzepustowego 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 liczbą 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.
1
p1
Imag(s)
1
p1
Imag(s)
∆φ/2 ∆φ/2
∆φ/2 ∆φ/2
p2
p2
∆φ
∆φ
∆φ
Real(s)
∆φ/2
∆φ
∆φ
1
∆φ/2
∆φ/2 ∆φ/2
∆φ
∆φ
∆φ
∆φ/2
Real(s)
∆φ/2
1
p 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)
Powyższe rozważania dotyczyły zagadnienia projektowania dolnoprzepustowych (LP) filtrów
Butterwortha, spełniających wymagania {ωpass, ωstop, δpass, δstop}. Obecnie uogólnimy je na
wszystkie typy filtrów, czyli także na filtry górnoprzepustowe (HP), pasmowoprzepustowe
(BP) i pasmowozaporowe (BS). W przypadku filtrów HP również określa się {ωpass, ωstop, δpass,
δstop}, natomiast w przypadku filtrów BP i BS specyfikuje się {ωp1, ωp2, ωs1, ωs2, δp1, δp2,
δs1, δs2}. W celu dopasowania się do konwencji oznaczeń stosowanych w rozdziale 6.2 (transformacje częstotliwości) załóżmy, że użytkownik podaje wartości pulsacji vpass, vstop, vp1, vp2,
vs1, vs2, oznaczenie ω jest zaś zarezerwowane dla pulsacji filtra LP. Kolejność postępowania
dla pozostałych filtrów jest następująca.
ALGORYTM 1. Projektowanie filtrów Butterwortha HP, BP i BS.
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 unormowanego (ω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:
Analogowe filtry Butterwortha i Czebyszewa
150
(HP): ω0 = v pass ,
(BP)(BS): ω0 = v p1v p 2 , ∆ω = v p 2 − v p1
W wyniku tego pulsacje graniczne pasma przepustowego vpass (lub pasm przepustowych 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 |)
Przelicz δpass, δstop na Apass, Astop, stosując (6.50).
Krok 4. Zaprojektuj dolnoprzepustowy prototyp LP Butterwortha HLP(p)(s):
a) wykorzystując wyznaczone wartości parametrów, oblicz ze wzoru (6.53) rząd N
filtra HLP(p)(s), gwarantujący spełnienie wymagań {ωpass = 1, ωstop, Apass, Astop};
b) oblicz ze wzoru (6.54) pulsację ω3dB filtra HLP(p)(s);
c) znając N i ω3dB oblicz bieguny pk prototypu na podstawie wzoru (6.56);
d) wyznacz transmitancję filtra HLP(p)(s) ze wzoru (6.57).
Krok 5. Dokonaj transformacji częstotliwościowej filtra HLP(p)(s) na Hxx(s), stosując wzory
(6.19), (6.27), (6.35) z wartościami parametrów ω0 i ∆ω, takimi jak w kroku 2. Bieguny pn zostały wyznaczone w kroku 4c, w przypadku zaś prototypu Butterwortha
transmitancja HLP(p)(s) nie ma zer zm.
W programie Matlab istnieje gotowy program butter(...,’s’), służący do projektowania
analogowych filtrów LP, HP, BP i BS typu Butterwortha. Wykorzystuje on programy
buttord(...,’s’) i buttap(). Pierwszym z nich wyznacza się konieczny rząd filtra N,
drugim zaś projektuje analogowy prototyp Butterwortha rzędu N o pulsacji ω3dB = 1 rd/s.
Następnie w programie butter() przekształca się zaprojektowany prototyp LP na filtr LP,
HP, BP lub BS, wykonując transformację częstotliwości programami lp2lp(), lp2hp,
lp2bp() lub lp2bs(). W stosunku do zaprezentowanego wyżej podejścia w Matlabie projektuje się i dalej przekształca unormowany (ω3dB = 1 rd/s) filtr prototypowy LP Butterwortha
HLP(n)(s). Takie podejście wymaga modyfikacji algorytmu 1.
ALGORYTM 2. Projektowanie filtrów Butterwortha LP, HP, BP i BS w programie Matlab.
Krok 1 ÷ Krok 4b. Jak w algorytmie 1.
Krok 5. Oblicz trzydecydelowe pulsacje v3dB filtra Hxx(s), związane z pulsacją ω3dB filtra
HLP(p)(s), stosując wzory (6.15), (6.18), (6.23), (6.31):
(LP):
v3dB = ω3dBv pass
(HP):
v 3dB =
(BP):
(1)
v3dB
= 0,5  ω3dB ∆ω + (ω3dB )2 ( ∆ω)2 + 4ω02 


v pass
ω3dB
(2)
v3dB
= 0,5  ω3dB ∆ω − (ω3dB )2 ( ∆ω)2 + 4ω02 


Analogowe filtry Butterwortha i Czebyszewa
(BS):
151
(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 prototypowego HLP(p)(s), mającego ωpass = 1 rd/s, oraz pulsacje v3dB projektowanego filtra Hxx(s), odpowiadają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 wymagania 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
(BP)(BS):
(2)
(1)
(2)
(1)
(2)
ω0 = | v3(1)
dB || v 3dB |, ∆ω = max(| v 3dB |, | v 3dB |) − min(| v 3dB |, | v 3dB |)
Bieguny pn wyznaczono w kroku 6, a zer zm transmitancja HLP(n)(s) nie ma.
Obecnie zaprojektujemy kilka konkretnych filtrów analogowych wykorzystując algorytm 1
i jego implementację programową, zaprezentowaną w tabeli 6-2. Poświęcimy temu zagadnieniu więcej uwagi, ponieważ zdobyte doświadczenia okażą się potem bardzo przydatne podczas projektowania filtrów cyfrowych.
Przykłady
Przykład 1 − Projekt obliczeniowy (bez transformacji częstotliwości − wzory (6.53), (6.54),
(6.56)).
Wymagania: filtr dolnoprzepustowy:
Apass = 2 dB; ωpass = 1 rd/s
Astop = 25 dB; ωstop = 3 rd/s
Obliczenia: N = 2,862530 = 3; R = ω0 = ω3dB = 1,0935045
∆φ = 2π/6; φ1 = π/2+∆φ/2 = 2π/3; φ2 = φ1+∆φ = π; φ3 = φ2+∆φ = 4π/3
bieguny (6.56): p1,2 = −0,546752±j0,947003; p3 = −1,0935045
1,0935045 ⋅ 1,195752
H LP ( s) =
( s + 1,0935045)( s 2 + 1,0935045s + 1,195752)
Rozłożenie biegunów transmitancji jest pokazane na rysunku 6.5a. Promień okręgu powinien
być równy R = ω0 = ω3dB = 1,0935045 a nie 1.
152
Analogowe filtry Butterwortha i Czebyszewa
Przykład 2 − Projekt obliczeniowy (bez transformacji częstotliwości − wzory (6.53), (6.54),
(6.56)).
Wymagania: filtr dolnoprzepustowy:
Apass = 0,5 dB, ωpass = 1 rd/s
Astop = 15 dB, ωstop = 2 rd/s
Obliczenia: N = 3,985681 = 4, R = ω0 = ω3dB = 1,300759
∆φ = 2π/8, φ1 = π/2+∆φ/2, φ2 = φ1+∆φ, φ3 = φ2+∆φ, φ4 = φ3+∆φ
bieguny (6.56): p1,2 = −0,497779±j1,201745, p2,3 = −1,201745±j0,497779
1,691974 ⋅ 1,691974
H LP ( s) = 2
( s + 0,995558s + 1,691974)( s 2 + 2,403489s + 1,691974)
Rozłożenie biegunów transmitancji jest pokazane na rysunku 6.5b, z tą różnicą, że promień
okręgu powinien być równy R = ω0 = ω3dB = 1,300759 a nie 1.
Przykład 3 − Projekt obliczeniowy (z transformacją częstotliwości)
Wymagania: filtr górnoprzepustowy:
Astop=20 dB; vstop= 1 rd/s
Apass=0,5 dB; vpass=2 rd/s
Obliczenia: transformacja częstotliwości: ωpass = 1; ωstop = 2
N = 4,83 = 5; R = ω0 = ω3dB = 1,2632
bieguny (6.55): p1,2 = −0,3090±j0,9511; p3,4 = −0,8090±j0,5878; p5 = −1
1
(n)
H LP
( s) = 5
4
3
s + 3,2361s + 5, 2361s + 5,2361s 2 + 3,2361s + 1
bieguny (6.56): p1,2 = −0,3903±j1,2014; p3,4 = −1,0219±j0,7425; p5 = −1,2632
3,2161
( p)
H LP
(s) = 5
4
3
s + 4,0877 s + 8,3548s + 10,5537 s 2 + 8,2392s + 3,2161
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
4
3
s + 5,1237 s + 13,126 s + 20,7824s 2 + 20,3363s + 9,9499
Rozłożenie zer i biegunów zaprojektowanej transmitancji HHP(s) oraz jej charakterystyka amplitudowo-częstotliwościowa są pokazane na rysunku 6.6a. Punkty zadanych wymagań projektowych są zaznaczone na charakterystyce za pomocą „o”. Jak widać filtr spełnia przyjęte założenia.
Przykład 4 − Projekt obliczeniowy (z transformacją częstotliwości)
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 = 3,92 = 4; R = ω0 = ω3dB = 1,1303
bieguny (6.55): p1,2 = −0,3827±j0,9239; p3,4 = −0,9239±j0,3827
1
(n)
H LP
(s) = 4
3
s + 2,6131s + 3,4142s 2 + 2,6131s + 1
bieguny (6.56): p1,2 = −0,4325±j1,0443; p3,4 = −1,0443±j0,4325
Analogowe filtry Butterwortha i Czebyszewa
153
1,6322
s + 2,9536s + 4,3619s 2 + 3,7735s + 1,6322
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 +
( p)
H LP
(s) =
4
3
+ 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 amplitudowo-częstotliwościowa są pokazane na rysunku 6.6b. Punkty zadanych wymagań projektowych są zaznaczone na charakterystyce za pomocą „o”. Jak widać filtr spełnia przyjęte założenia.
Przykład 5 − Projekt obliczeniowy (z transformacją częstotliwości)
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
Obliczenia: transformacja częstotliwości: ωpass = 1; ωstop = 1,6
N = 3,81 = 4; R = ω0 = ω3dB = 1,14198
bieguny (6.55): p1,2 = −0,3827±j0,9239; p3,4 = −0,9239±j0,3827
1
(n)
H LP
(s) = 4
s + 2,6131s 3 + 3,4142s 2 + 2,6131s + 1
bieguny (6.56): p1,2 = −0,4370±j1,05505; p3,4 = −1,05505±j0,4370
1,7007
( p)
H LP
(s) = 4
3
s + 2,9841s + 4,4525s 2 + 3,8917 s + 1,7007
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 amplitudowo-częstotliwościowa są pokazane na rysunku 6.6c. Punkty zadanych wymagań projektowych 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 charakterystyki 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”.
Analogowe filtry Butterwortha i Czebyszewa
154
0
1.5
1
0.5
0
-0.5
-1
-1.5
20log10|H(jω)| [dB]
Imag(s)
a)
-5
-10
-15
-20
-1.6
-1.2
-0.8
-0.4
0
0
1
5
4
5
4
5
-5
-10
-15
-0.4
-0.2
0
0
1
2
3
ω [rd/s]
Real(s)
0
4
3
2
1
0
-1
-2
-3
-4
20log10|H(jω)| [dB]
Imag(s)
4
-20
-0.6
c)
3
0
3
2
1
0
-1
-2
-3
20log10|H(jω)| [dB]
Imag(s)
b)
2
ω [rd/s]
Real(s)
-5
-10
-15
-20
-1
-0.8 -0.6 -0.4 -0.2
Real(s)
0
0
1
2
3
ω [rd/s]
Rys. 6.6. Rozłożenie zer „z” i biegunów „³” oraz charakterystyki amplitudowo-częstotliwościowe transmitancji 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
% Ćwiczenie: Projektowanie transmitancji analogowych filtrów LP, HP, BP i BS Butterwortha
clear all; subplot(111);
% Podaj wymagania projektowe
typ = 1;
apass = 1;
astop = 50;
% rodzaj filtra: 1 = LowPass, 2 = HighPass, 3 = BandPass, 4 = BandStop
% nieliniowość pasma przepustowego w dB („zwis”)
% tłumienie w paśmie zaporowym
% Podaj częstotliwości graniczne
if (typ==1)
fpass = 1000;
fstop = 4000;
ws = fstop/fpass;
end
%
%
%
%
FILTR DOLNOPRZEPUSTOWY
częstotliwość pasma przepustowego odpowiadająca apass
częstotliwość pasma zaporowego odpowiadająca astop
transformacja częstotliwości: s=s'/w0, w0=2*pi*fpass
Analogowe filtry Butterwortha i Czebyszewa
3000
2000
1000
0
-1000
-2000
-3000
-15000
0
20log10|H(jω)| [dB]
Imag(s/(2π))
a)
155
-20
-40
-60
-80
-100
-10000
-5000
0
1000 2000 3000 4000 5000
Real(s)
3000
2000
1000
0
-1000
-2000
-3000
-20000 -15000 -10000 -5000
0
20log10|H(jω)| [dB]
Imag(s/(2π))
b)
f [Hz]
-20
-40
-60
-80
-100
0
1000 2000 3000 4000 5000
Real(s)
4000
3000
2000
1000
0
-1000
-2000
-3000
-4000
-4000 -3000 -2000 -1000
0
20log10|H(jω)| [dB]
Imag(s/(2π))
c)
f [Hz]
-20
-40
-60
-80
-100
0
1000 2000 3000 4000 5000
Real(s)
4000
3000
2000
1000
0
-1000
-2000
-3000
-4000
-8000 -6000 -4000 -2000
Real(s)
0
20log10|H(jω)| [dB]
Imag(s/(2π))
d)
f [Hz]
-20
-40
-60
-80
-100
0
1000 2000 3000 4000 5000
f [Hz]
Rys. 6.7. Rozłożenie zer „z” i biegunów „³” oraz charakterystyki amplitudowo-częstotliwościowe przykładowych, zaprojektowanych transmitancji Hxx(s): a) filtr LP, b) filtr HP, c) filtr BP, d) filtr BS
if (typ==2)
fstop = 2000;
fpass = 3000;
ws = fpass/fstop;
end
%
%
%
%
FILTR GÓRNOPRZEPUSTOWY
częstotliwość pasma przepustowego odpowiadająca astop
częstotliwość pasma zaporowego odpowiadająca apass
transformacja częstotliwości: s=w0/s', w0=2*pi*fpass
Analogowe filtry Butterwortha i Czebyszewa
156
if (typ==3)
fs1 = 1500;
fp1 = 2000;
fp2 = 3000;
fs2 = 3500;
%
%
%
%
%
FILTR PASMOWOPRZEPUSTOWY
dolna częstotliwość stop
dolna częstotliwość pass
górna częstotliwość pass
górna częstotliwość stop
ws1t = (fs1^2 - fp1*fp2) / (fs1*(fp2-fp1)); % transformacja częstotliwości
ws2t = (fs2^2 - fp1*fp2) / (fs2*(fp2-fp1)); % transformacja częstotliwości
ws = min( abs(ws1t), abs(ws2t) );
end
if (typ==4)
% FILTR PASMOWOZAPOROWY
fp1 = 1500;
% dolna częstotliwość filtra pasmowego
fs1 = 2000;
% dolna częstotliwość filtra pasmowego
fs2 = 3000;
% górna częstotliwość filtra pasmowego
fp2 = 3500;
% górna częstotliwość filtra pasmowego
ws1t = (fs1*(fp2-fp1)) / (fs1^2 - fp1*fp2); % transformacja częstotliwości
ws2t = (fs2*(fp2-fp1)) / (fs2^2 - fp1*fp2); % transformacja częstotliwości
ws = min( abs(ws1t), abs(ws2t) );
end
% Przelicz decybele na wartość bezwzględną, np. 40 dB = 0.01
wzm_p = 10^(-apass/20);
wzm_s = 10^(-astop/20);
% Oblicz parametry pomocnicze
if( (typ==1) | (typ==2) )
vp = 2*pi*fpass;
vs = 2*pi*fstop;
f_ps = [fpass, fstop]; wzm_ps = [wzm_p, wzm_s]; wzmdB_ps = [-apass, -astop];
end
if( (typ==3) | (typ==4) )
vp = 2*pi*[ fp1 fp2 ];
vs = 2*pi*[ fs1 fs2 ];
vc = 2*pi*sqrt(fp1*fp2);
% pulsacja środka
dv = 2*pi*(fp2-fp1);
% szerokość filtra wokół vc
f_ps = [fp1,fp2,fs1,fs2];
wzm_ps = [wzm_p, wzm_p, wzm_s, wzm_s];
wzmdB_ps = [-apass, -apass, -astop, -astop];
end
% Oblicz parametry filtra: N i w0
% MATLAB: [N,w0] = buttord( 2*pi*fpass, 2*pi*fstop, -apass, -astop, 's' );
wp = 1;
N = ceil( log10( (10^(astop/10)-1) / (10^(apass/10)-1) ) / (2*log10(ws/wp)) )
w0 = ws / (10^(astop/10)-1)^(1/(2*N))
pause
% Oblicz bieguny transmitancji dolnoprzepustowego filtra prototypowego i jej współczynniki
% MATLAB: [z,p,k] = buttap(N); [b,a] = zp2tf(z,p,k);
dfi0 = (2*pi)/(2*N);
% kąt „kawałka tortu”
fi = pi/2 + dfi0/2 + (0 : N-1)*dfi0;
% kąty biegunów
p = w0*exp(j*fi);
% bieguny
z = [];
% zera
wzm = real( prod(-p) );
% wzmocnienie
a = poly(p);
% bieguny --> wsp wielomianu mianownika A(z)
b = wzm;
% wielomian licznika B(z)
z, p, b, a, pause
plot( real(p), imag(p), 'x' ); grid; title('Położenie biegunów');
xlabel('real'); ylabel('imag'); pause
% Porównaj z funkcjami Matlaba
[NN,ww0] = buttord( vp, vs, apass, astop, 's' );
blad_N = N-NN
pause
Analogowe filtry Butterwortha i Czebyszewa
157
% Oblicz charakterystykę częstotliwościową H(w)=B(w)/A(w)
w = 0 : 0.005 : 2;
% zakres pulsacji unormowanej; pulsacja granicy pasma przepustowego = 1
H = freqs(b,a,w);
% alternatywa: H = polyval( b,j*w)./polyval(a,j*w);
plot(w,abs(H)); grid; title('Moduł prototypu LPass'); xlabel('pulsacja [rad/sek]');
pause
plot(w,20*log10(abs(H))); grid; title('Moduł prototypu LowPass w dB');
xlabel('pulsacja [rad/sek]'); ylabel('dB'); pause
% Transformata częstotliwości filtra analogowego: prototyp unormowany --> wynikowy filtr
if (typ==1) [z,p,wzm] = lp2lpTZ(z,p,wzm,vp); end
% LowPass to LowPass: s=s/w0
if (typ==2) [z,p,wzm] = lp2hpTZ(z,p,wzm,vp); end
% LowPass to HighPass: s=w0/s
if (typ==3) [z,p,wzm] = lp2bpTZ(z,p,wzm,vc,dv); end % LowPass to BandPass: s=(s^2+wc^2)/(dw*s)
if (typ==4) [z,p,wzm] = lp2bsTZ(z,p,wzm,vc,dv); end % LowPass to BandStop: s=(dw*s)/(s^2+wc^2)
b=wzm*poly(z); a=poly(p);
% Pokaż zera i bieguny po transformacji częstoliwości
plot( real(z), imag(z), 'o',real(p),imag(p),'x' ); grid;
title('Położenie biegunów'); xlabel('real'); ylabel('imag'); pause
p, z, pause
a, b, pause
printsys(b,a,'s'); pause
% Końcowa charakterystyka częstoliwościowa
NF = 1000;
% ile punktów
fmin = 0;
% dolna częstotliwość
fmax = 5000;
% górna częstotliwość
f = fmin : (fmax-fmin)/(NF-1) : fmax; % wszystkie częstotliwości
w = 2*pi*f;
% wszystkie pulasacje
H = freqs(b,a,w);
% alternatywa: H = polyval( b,j*w)./polyval(a,j*w);
plot( f,abs(H), f_ps,wzm_ps,'ro');
grid; title('Moduł'); xlabel('freq [Hz]'); pause
plot(f,20*log10(abs(H)), f_ps,wzmdB_ps,'ro'); axis([fmin,fmax,-100,20]);
grid; title('Moduł dB'); xlabel('freq [Hz]'); ylabel('dB'); pause
plot(f,unwrap(angle(H))); grid; title('FAZA'); xlabel('freq [Hz]'); ylabel('[rad]');
pause
6.4. Filtry Czebyszewa typu I
W przypadku filtra Czebyszewa typu I wymagamy, aby
(
)
H CI , N j ( ω / ω 0 ) =
1
(6.58)
2
1 + ε C N2 (ω / ω 0 )
gdzie CN(ω/ω0) oznacza wielomian Czebyszewa N-tego rzędu:
cos[ N cos−1 (ω / ω0 ) ],
C N ( ω / ω0 ) = 
−1
cosh[ N cosh (ω / ω0 ) ],
ω / ω0 ≤ 1
ω / ω0 > 1
(6.59)
Cechą charakterystyczną wielomianów Czebyszewa jest następująca zależność:
C N ( x ) ≤ 1 dla
x ≤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.
Analogowe filtry Butterwortha i Czebyszewa
158
CN(x)
1.5
N=3
1
N=2
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
Dla dociekliwych. Przykładowo, wielomian Czebyszewa czwartego rzędu ma postać:
C4 ( x ) = 1 − 8 x 2 + 8 x 4
Wielomiany Czebyszewa można wyznaczyć z zależności rekurencyjnej:
C0 (Ω) = 1, C1 (Ω) = Ω, Cn (Ω) = 2ΩCn −1 (Ω) − Cn − 2 (Ω), n ≥ 2
lub analitycznej:
C N ( Ω) =
N
2
N / 2
∑
k =0
( −1) k ( N − k − 1)!
( 2Ω ) N − 2 k
k!( N − 2k )!
We wzorach (6.58), (6.59) ω0 jest graniczną pulsacją pasma przepustowego, parametr ε kontroluje 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 mamy CN2(ω/ω0) = 1 i H(ω/ω0) = 1/(1+ε2), dlatego zazwyczaj zadaje się pożądaną wartość parametru ε (nieliniowość pasma przepustowego) i przyjmuje się ω0 = ωpass (czyli szerokość tego
pasma). Jeśli jednak zamiast ε, specyfikuje się wartość parametru δpass, zdefiniowanego w sposób następujący:
1
1
(6.60)
=
= 1 − δ pass
2 2
1 + ε C N ( ω pass / ω pass )
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):
− 10 log10 (1 + ε 2 ) = 20 log10 (1 − δ pass ) = − Apass
log10 (1 + ε 2 ) = Apass / 10
1 + ε2 = 10
ε = 10
Apass / 10
Apass / 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+ ε
2
C N2 (ωstop
/ ω pass )
=
1
{
(
)
1 + ε2 cosh  N cosh −1 ωstop / ω pass 


}
2
= δ stop
(6.62)
Analogowe filtry Butterwortha i Czebyszewa
159
Imag(s)
Imag(s)
p1
p1
∆φ/2 ∆φ/2
p2
∆φ/2 ∆φ/2
p2
∆φ
∆φ
∆φ
∆φ
∆φ
Real(s)
∆φ
∆φ
∆φ
∆φ
∆φ
R1
R2
Real(s)
R2
∆φ/2 ∆φ/2
R1
p2 *
∆φ/2 ∆φ/2
p1
*
p 1*
Rys. 6.8b. Graficzna ilustracja wyznaczania położenia biegunów „³” dolnoprzepustowego filtra Czebyszewa typu I trzeciego i czwartego rzędu (N = 3 lub 4)
skąd po uwzględnieniu (6.61) otrzymujemy (−Astop = 20log10(δstop)):

cosh −1 

N =  M  , M =
(10
Astop /10
) (10
−1
(
Apass /10
cosh −1 ωstop ω pass
)
)

−1 

(6.63)
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 Butterwortha. 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). Promienie tych okręgów wynoszą:
R1 = sinh( D )
(okrąg wewnętrzny)
(6.64a)
R2 = cosh( D )
(okrąg zewnętrzny)
(6.64b)
gdzie
D=
sinh −1 ( ε −1 )
N
(6.65)
Cóż należy zatem zrobić? Nic prostszego. Podobnie jak w przypadku filtrów Butterwortha należ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
2 2N
N
(6.66)
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
(R1)
a potem na podstawie biegunów pk
pk:
pk = Re{ pk( R1) }+ j Im{ pk( R 2 ) }
i pk
(R2)
(6.67)
utworzyć nowe, tym razem „wynikowe” bieguny
(6.68)
Analogowe filtry Butterwortha i Czebyszewa
160
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 biegunó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
∏ ( − pk ), N parzyste
 10
H0

k =1
I
H C ,N ( s) = N
, H0 = 
N

N nieparzyste
∏ ( s − pk )
∏ ( − pk ),

k =1

k =1
(6.69)
Tab. 6-3. Program w języku Matlab, służący do zaprojektowania transmitancji filtrów LP, HP, BP i BS
Czebyszewa typu I
% Ćwiczenie: Projektowanie transmitancji analogowych filtrów LP, HP, BP i BS Czebyszewa typu I
% ... to samo co w tabeli 6-2 (projektowanie filtrów Butterwortha)
% Wyznacz bieguny dolnoprzepustowego filtra prototypowego
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
dfi0 = (2*pi)/(2*N);
fi = pi/2 + dfi0/2 + (0 : N-1)*dfi0;
p1 = R1*exp(j*fi);
p2 = R2*exp(j*fi);
p = real(p1) + j*imag(p2);
z = [];
wzm = prod(-p);
%
%
%
%
%
%
%
kąt „kawałka tortu”
kąty biegunów
bieguny na R1
bieguny na R2
bieguny wypadkowe
zera
wzmocnienie
a = poly(p);
% bieguny --> wsp wielomianu mianownika A(z)
b = wzm;
% wielomian licznika B(z)
if (rem(N,2)==0) b = b*10^(-apass/20); end
p, b, a, pause
% Porównaj z funkcjami Matlaba
[NN,ww0] = cheb1ord( vp, vs, apass, astop, 's' );
blad_N = N-NN
pause
% Zera/bieguny prototypu
plot( real(p), imag(p), 'xb' ); grid; title('Położenie biegunów');
xlabel('real'); ylabel('imag'); pause
% ... to samo co w tabeli 6-2 (projektowanie filtrów Butterwortha)
Analogowe filtry Butterwortha i Czebyszewa
161
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
0,38923
( p)
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
5
4
s + 0,84022s + 19,103s + 10,4719s3 + 114,6179s 2 + 30,2481s + 216
Rozłożenie zer i biegunów transmitancji prototypowej HLP(p)(s) i docelowej transmitancji
HBP(s) oraz ich charakterystyki częstotliwościowe są pokazane na rysunku 6.9. Punkty zadanych wymagań projektowych są zaznaczone na charakterystyce za pomocą „o”. Jak widać filtr
spełnia przyjęte założenia. Zwróćmy także uwagę na fakt, że zaprojektowany filtr Czebyszewa
typu I ma mniejszy rząd niż filtr Butterwortha spełniający te same wymagania projektowe.
6.5. Filtry Czebyszewa typu II
Filtry Czebyszewa typu II nie mają oscylacji w paśmie przepustowym, tylko w paśmie zaporowym. Ponieważ w paśmie tym sygnał jest silnie tłumiony, kształt tego pasma ma dla nas drugorzędne znaczenie. Dla filtrów tych charakterystyka częstotliwościowa dolnoprzepustowego
prototypu analogowego jest dana równaniem:
1
H CII, N ( j (ω / ω0 ) ) =
1+
(6.70)
1
γ 2C N2 ( ω0 / ω)
Jego pasmo zaporowe rozciąga się od Ω = ω/ω0 = 1 do Ω = ∞ oraz
1
γ=
Apass / 10
10
−1
(6.71)
Transmitancja tego prototypu jest równa:
N
H CII, N ( s ) = H 0
∏ ( s − 1/ zk )
k =1
N
∏ ( s − 1/ pk )
k =1
N
zk
p
k =1 k
, H0 = ∏
(6.72)
Analogowe filtry Butterwortha i Czebyszewa
162
1.5
1
0.5
0
-0.5
-1
-1.5
20log10|HLP(p)(jω)| [dB]
Imag(s)
a) filtr prototypowy HLP(p)(s)
-0.5 -0.4 -0.3 -0.2 -0.1
0
-5
-10
-15
-20
-25
0
0
0.5
1
1.5
2
4
5
4
5
ω [rd/s]
Real(s)
3
2
1
0
-1
-2
-3
-0.25 -0.2 -0.15 -0.1 -0.05
Φ(jω) [rd]
Imag(s)
b) filtr HBP(s)
0
-2
-4
-6
-8
-10
-12
0
0
1
20log10|HBP(jω)| [dB]
1
|HBP(jω)|
0.8
0.6
0.4
0.2
0
0
1
2
3
ω [rd/s]
4
5
2
3
ω [rd/s]
Real(s)
0
-20
-40
-60
0
1
2
3
ω [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
Obliczenia:
163
transformacja częstotliwości: ωpass = 1; ωstop = 1,6
N = 2,367 = 3; R1 = 0,7413; R2 = 1,2448
bieguny R1: p1,2 = −0,3706±j0,6420; p3 = −0,7413
bieguny R2: p1,2 = −0,6224±j1,0780; p3 = −1,2448
bieguny pk: p1,2 = −0,3706±j1,0780; p3 = −0,7413
z1,2 = ±j0,8660; z3 = j1,225*10−16
zera zk:
bieguny 1/pk: p1,2 = −0,28522±j0,82955; p3 = −1,34897
z1,2 = ±j1,1547; z3 = −j8,1656*1015
zera 1/zk:
H0 :
H0 = −j9,5342*10−17
0,77853s 2 + 1,038
( p)
H LP
(s) = 3
s + 1,9194s 2 + 1,539s + 1,038
filtr docelowy:
zera:
z1 = ±j2,05446; z2 = ±j2,44949; z3 = ±2,92048
bieguny:
p1,2 = −0,1454±j1,96254; p3,4 = −0,22526±j3,04057
p5,6 = −0,37065±j2,42128
s 6 + 18,75s 4 + 112,5s 2 + 216
H BP ( s ) = 6
s + 1,4826s 5 + 19,8491s 4 + 18,7548s 3 + 119,0945s 2 + 53,3742s + 216
Rozłożenie zer i biegunów transmitancji prototypowej HLP(p)(s) i docelowej transmitancji
HBS(s) oraz ich charakterystyki częstotliwościowe są pokazane na rysunku 6.10. Punkty zadanych wymagań projektowych są zaznaczone na charakterystyce za pomocą „o”. Jak widać filtr
spełnia przyjęte założenia. Zwróćmy także uwagę na fakt, że zaprojektowany filtr Czebyszewa
typu II ma mniejszy rząd niż filtr Butterwortha spełniający te same wymagania projektowe.
Tab. 6-4. Program w języku Matlab, służący do zaprojektowania transmitancji filtrów LP, HP, BP i BS
Czebyszewa typu II
% Ćwiczenie: Projektowanie transmitancji analogowych filtrów LP, HP, BP i BS Czebyszewa typu II
% ... to samo co w tabeli 6-2 (projektowanie filtrów Butterwortha)
% Wyznacz bieguny dolnoprzepustowego filtra prototypowego
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
dfi0 = (2*pi)/(2*N);
fi = pi/2 + dfi0/2 + (0 : N-1)*dfi0;
p1 = R1*exp(j*fi);
p2 = R2*exp(j*fi);
p = real(p1) + j*imag(p2)
z = j*sin(fi)
pause
wzm = prod(-z)/prod(-p);
%
%
%
%
%
kąt „kawałka tortu”
kąty biegunów
bieguny na R1
bieguny na R2
bieguny wypadkowe
Analogowe filtry Butterwortha i Czebyszewa
164
1.5
1
0.5
0
-0.5
-1
-1.5
20log10|HLP(p)(jω)| [dB]
Imag(s)
a) filtr prototypowy HLP(p)(s)
-1.5
-1
-0.5
0
-20
-40
-60
-80
0
0
0.5
1
1.5
2
ω [rd/s]
Real(s)
4
3
2
1
0
-1
-2
-3
-4
Φ(jω) [rd]
Imag(s)
b) filtr HBS(s)
-0.4
-0.3
-0.2
-0.1
3
2
1
0
-1
-2
-3
0
0
1
20log10|HBS(jω)| [dB]
1
|HBS(jω)|
0.8
0.6
0.4
0.2
0
0
1
2
3
4
2
3
4
5
4
5
ω [rd/s]
Real(s)
5
0
-10
-20
-30
-40
-50
0
ω [rd/s]
1
2
3
ω [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
z=1./z
% podstawowa różnica w stosunku
p=1./p
% do filtrów Czebyszewa typu I
pause
% wielomian licznika B(z)
b = wzm*poly(z)
a = poly(p)
% bieguny --> wsp wielomianu mianownika A(z)
pause
printsys(b,a,'s'), pause
% Porównaj z funkcjami Matlaba
[NN,ww0] = cheb2ord( vp, vs, apass, astop, 's' );
blad_N = N-NN, pause
% Zera/bieguny prototypu)
plot( real(p), imag(p), 'xb' ); grid; title('Położenie biegunów');
xlabel('real'); ylabel('imag'); pause
% ... to samo co w tabeli 6-2 (projektowanie filtrów Butterwortha)
Analogowe filtry Butterwortha i Czebyszewa
165
6.6. Sprzętowa implementacja filtrów analogowych
W tym rozdziale projektowaliśmy już specyficzne transmitancje H(s) układów analogowych.
Jednak jeszcze nie umiemy praktycznie realizować ich „sprzętowo”, to znaczy za pomocą pasywnych lub aktywnych układów RLC. Przykładową analizę transmitancyjną i częstotliwościową wybranych, najprostszych układów (filtrów) RLC przeprowadziliśmy już w rozdziale
piątym. Przypomnijmy, w rachunku operatorowym impedancja elementów R, L, C, czyli stosunek transformaty Laplace’a U(s) napięcia u(t) na elemencie do transformaty Laplace’a I(s) prądu i(t) płynącego przez ten element, jest następująca:
Z R ( s) =
1
U ( s)
U ( s)
U R (s)
= R, Z L ( s ) = L
= sL, Z C ( s ) = C
=
I C ( s ) sC
I L ( s)
I R ( s)
(6.73)
Obecnie naszym zadaniem jest takie połączenie różnych elementów R, L, C, aby stosunek
transformaty Uwy(s) napięcia wyjściowego uwy(t) otrzymanego układu do transformaty Uwe(s)
napięcia wejściowego uwe(t) tego układu był równy zaprojektowanej transmitancji H(s):
U wy ( s )
U we ( s )
= H ( s ) = f ( R, L, C )
(6.74)
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 „rozpracowuje” się dokładnie układy realizujące wielomiany (transmitancje) niskich rzędów, najczęściej pierwszego i drugiego, a następnie łączy się je kaskadowo, zakładając, że poszczegó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 rezystancji 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órnoprzepustowy pierwszego i drugiego rzędu.
Na rysunku 6.12 pod schematami ideowymi poszczególnych układów zostały podane wyrażenia 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 )
gdzie
I R1 ( s ) =
U ( s ) − U wy ( s )
U we ( s ) − U1 ( s )
U ( s) − U 2 ( s )
, I R 2 ( s) = 1
, I C1 ( s ) = 1
R1
R2
1 / sC1
(6.75)
(6.76)
Analogowe filtry Butterwortha i Czebyszewa
166
funkcja
elementów
R, L, C
uwe(t)
uwy(t)
H ( s) =
Uwe(s)
R
R
Uwe(s)
1/sC
H ( s) =
Uwy(s)
1 sC
1 / RC
=
R + 1 sC s + 1 / RC
U wy ( s )
U we ( s )
sL
Uwe(s)
1/sC
H ( s) =
Uwy(s)
Uwy(s)
1 sC
1 / LC
= 2
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
a) filtr LP pierwszego rzędu
b) filtr HP pierwszego rzędu
R
Uwe
C
C
Uwe
Uwy
H ( s) =
R
1 RC
s + 1 RC
Uwy
H ( s) =
c) filtr LP drugiego rzędu
s
s + 1 RC
d) filtr HP drugiego rzędu
C1
R1
Uwe
C1
R2
C2
Uwy
RA
H ( s) =
R1
Uwe
RB
K R1 R2 C1C 2
 1
1
1− K 
1
s2 + 
+
+
s + R R C C
1 2 1 2
 R1C1 R2 C1 R2 C 2 
C2
R2
Uwy
RA
H (s) =
RB
Ks 2
 1
1
1− K 
1
s2 + 
+
+
s +
R1 R 2 C1C 2
 R 2 C 2 R 2 C1 R1C1 
Rys. 6.12. Przykład realizacji układowych filtrów analogowych dolnoprzepustowych (LP) oraz górnoprzepustowych (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
R2
R1
Uwe
U1
U2
C2
Rx
U3
RA
Uwy
Ry
Uwy
'
RB
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:
U wy ( s ) =
R A + RB
U 2 (s)
RA
(6.77)
Dodatkowo napięcia U1 i U2 są ze sobą związane następującą zależnością:
U 2 ( s) =
1 / sC2
U1 ( s )
R2 + 1 / sC2
(6.78)
Ze wzorów (6.77) i (6.78) otrzymujemy zależność wiążącą napięcia U2 i U1 z napięciem Uwy:
U 2 ( s) =
RA
U wy ( s )
R A + RB
(6.79)
U1 ( s ) =
R2 + 1 / sC2
R + 1 / sC2 R A
U 2 ( s) = 2
U wy ( s )
1 / sC2
1 / sC2 R A + RB
(6.80)
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
(6.81)
=K
H ( s) =
U we ( s )
 1
1
1− K 
1
+
+
+
s2 + 
s

R1R2C1C2
 R1C1 R2C1 R2C2 
gdzie
K=
R A + RB
R
= 1+ B
RA
RA
(6.82)
Po przyjęciu równości R1 = R2 i C1 = C2 transmitancja (6.81) jest równa:
1
R C2
H ( s) = K
3
−
K
1
s2 +
s+ 2 2
RC
RC
2
(6.83)
Załóżmy, że za pomocą układu o transmitancji (6.83) chcemy praktycznie zrealizować transmitancję Hteor(s), daną wzorem (b0 = a0):
Analogowe filtry Butterwortha i Czebyszewa
168
H teor ( s ) = G
b0
2
a2 s + a1s + a0
=G
a0
2
a2 s + a1s + a0
(6.84)
wówczas muszą zachodzić następujące równości:
a2 = 1, a1 =
3− K
1
, a0 = 2 2
RC
RC
(6.85a, b, c)
Jeśli arbitralnie wybierzemy wartość pojemności C, to wówczas z (6.85c) mamy:
R=
1
(6.86)
C a0
a z (6.85b) po uwzględnieniu (6.86) otrzymujemy:
a1 =
3− K 3− K
=
RC
1/ a0
(6.87)
skąd
3− K =
a1
a0

R 
a
⇒ 3 − 1 + B  = 1
R
a0
A

⇒
RB
a
=2− 1
RA
a0
(6.88)
Z porównania równań (6.81) i (6.84) wynika, że zrealizowany układ ma wzmocnienie K, zdeterminowane przez warunek (6.88) i zależne od wartości współczynników a0 i a1, podczas gdy
układ teoretyczny ma wzmocnienie G. Należy więc na wyjściu zaprojektowanego układu dodatkowo dołączyć korektor, składający się z rezystancji Rx i Ry (patrz rysunek 6.13). Wartości
tych rezystancji muszą być tak dobrane, aby:
K
Ry
=G
Rx + R y
(6.89)
Dodatkowo dołączenie dzielnika napięcia wyjściowego powoduje, że mamy teraz wpływ na
wartość impedancji wyjściowej całego układu (z dzielnikiem). Ponieważ na wyjściu wzmacniacza operacyjnego znajduje się „idealne” sterowane źródło napięcia o zerowej impedancji,
dlatego zwiera ono rezystancję Rx do masy i impedancja całego układu jest rezystancją równą:
Rwy =
Rx R y
Rx + R y
(6.90)
Po zadaniu wartości K, G i Rwy, z równań (6.89), (6.90) otrzymujemy:
Rwy = Rx
Ry
G
= Rx
Rx + R y
K
⇒ Rx =
KR y = G (Rx + R y ) ⇒ R y =
K
Rwy
G
G
K
Rwy
Rx =
K −G
K −G
(6.91)
(6.92)
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 elektrycznych, na przykład metoda potencjałów węzłowych. My staraliśmy się wybrać i zastosować 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
H (s) =
3 042 184 930 ⋅ 3 042 184 930 ⋅ 55156
( s 2 + 34088,3s + 3 042 184 930)( s 2 + 89244,3s + 3 042 184 930)( s + 55156)
Na rysunku 6.14 jest pokazany rozkład biegunów oraz charakterystyki częstotliwościowe zaprojektowanej transmitancji H(s). Jak widać spełniają one założone
wymagania, oznaczone symbolem „o”. Należy zwrócić uwagę na fakt, że oś
urojona zmiennej zespolonej s została podzielona przez 2π i częstotliwość jest
na niej wyrażona w hercach.
Jak widać do praktycznej realizacji filtra potrzebujemy dwóch sekcji LP drugiego rzędu i jednej pierwszego rzędu (rysunek 6.15).
Przyjmujemy:C11 = C12 = C21 = C22 = C3 = C = 1 nF; R1A = R2A = RA = 10 kΩ; Rwy = 10 kΩ
R11 = R12 = R1; R21 = R22 = R2
Obliczenia: sekcja 1 (bieguny p1,2): R1 = 18,13 kΩ; R1B = 3,82 kΩ; K1 = 2,3820
sekcja 2 (bieguny p3,4): R2 = 18,13 kΩ; R2B = 3,82 kΩ; K2 = 1,3820
sekcja 3 (bieguny p5): R3 = 18,13 kΩ; K3 = 1
K = K1⋅K2⋅K3 = 3,2918; G = 1; Rx = 32,92 kΩ; Ry = 14,36 kΩ
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ższymi” rezystancjami, które są w sprzedaży.
Tab. 6-5. Program w języku Matlab, służący do zaprojektowania układu elektronicznego dolnoprzepustowego filtra Butterwortha
% Ćwiczenie: Zaprojektowanie układu elektronicznego dolnoprzepustowego 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
Analogowe filtry Butterwortha i Czebyszewa
Imag(s/(2π))
170
12000
8000
4000
0
-4000
-8000
-12000
-60000
-40000
-20000
0
0
0
-20
-2
Φ(jω) [rd]
20log10|H(jω)| [dB]
Real(s)
-40
-60
-80
-100
-4
-6
-8
0
20000
40000
0
20000
f [Hz]
40000
f [Hz]
Rys. 6.14. Rozkład biegunów „³” oraz charakterystyka amplitudowo-częstotliwościowa i fazowo-częstotliwościowa zaprojektowanego układu
C21
C11
R11
Uwe
R12
R21
C12
R22
C22
R1A
Uwe
R2A
R2B
Ry
Uwy
Ry
Uwy
1 pF
R1
R2
1 pF
10 kΩ
Rx
C3
R1B
1 pF
R1
R3
R2
R3
1 pF
R1B
10 kΩ
1 pF
R2B
Rx
Rys. 6.15. Przykład realizacji filtra dolnoprzepustowego piątego rzędu: (góra) schemat ogólny, (dół) schemat 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
ZASTOSOWANIE FUNKCJI WBUDOWANYCH MATLABA
[N,w0] = buttord( 2*pi*fpass, 2*pi*fstop, -apass, -astop, 's' );
[z,p,k] = buttap(N);
[b,a] = zp2tf(z,p,k);
wzm_p = 10^(-apass/20)
%
wzm_s = 10^(-astop/20)
%
pause
%
ws = fstop/fpass;
%
vp = 2*pi*fpass; vs = 2*pi*fstop;
f_ps = [fpass, fstop]; wzm_ps = [wzm_p,
tłumienie pass -> wzmocnienie pass
tłumienie stop -> wzmocnienie stop
pauza
transformacja częstotliwości: s=s'/w0, w0=2*pi*fpass
wzm_s];
wzmdB_ps = [-apass, -astop];
disp('======= PROTOTYP ANALOGOWY =======')
wp = 1;
Nreal = log10( (10^(astop/10)-1) / (10^(apass/10)-1) ) / (2*log10(ws/wp))
N = ceil( Nreal )
w0 = ws / (10^(astop/10)-1)^(1/(2*N))
pause
% Oblicz bieguny filtra
% Bieguny --> współczynniki wielomianu mianownika A(z)
% Oblicz stałą w liczniku, taką aby H(0)=B(0)/A(0)=1
dfi0 = (2*pi)/(2*N);
fi = pi/2 + dfi0/2 + (0 : N-1)*dfi0;
p = w0*exp(j*fi)
z = []
wzm = real(prod(-p))
pause
%
%
%
%
%
kąt „kawałka tortu”
kąty biegunów
bieguny
zera
wzmocnienie
plot( real(p), imag(p), 'xb' ); grid; title('Położenie biegunów');
xlabel('real'); ylabel('imag'); pause
b = wzm;
a = poly(p);
% wielomian licznika B(z)
% bieguny --> wsp wielomianu mianownika A(z)
b, a, pause
printsys(b,a,'s'), pause
% Porównaj z funkcjami Matlaba
[NN,ww0] = buttord( vp, vs, apass, astop, 's' );
blad_N = N-NN, pause
% Oblicz charakterystykę częstotliwościową H(w)=B(w)/A(w)
w = 0 : 0.005 : 2; % zakres pulsacji unormowanej; pulsacja granicy pasma przepustowego = 1
H = freqs(b,a,w); % alternatywa: H = polyval( b,j*w)./polyval(a,j*w);
plot(w,abs(H)); grid; title('Moduł prototypu LP'); xlabel('pulsacja [rad/sek]'); pause
plot(w,20*log10(abs(H))); grid; title('Moduł prototypu LowPass w dB');
xlabel('pulsacja [rad/sek]'); ylabel('dB'); pause
% Transformata częstotliwości filtra analogowego: prototyp unormowany --> wynikowy filtr
[z,p,wzm] = lp2lpTZ(z,p,wzm,vp); % LowPass to LowPass: s=s/w0
b=wzm*poly(z); a=poly(p);
% Pokaż zera i bieguny po transformacji częstoliwości
plot( real(z), imag(z), 'or',real(p),imag(p),'xb' ); grid;
title('Położenie biegunów'); xlabel('real'); ylabel('imag');
pause
disp('======= FILTR DOCELOWY PO TRANSFORMACJI FREQ =======')
z, p, pause
b, a, pause
printsys(b,a,'s'), pause
% Końcowa charakterystyka częstoliwościowa
NF = 1000;
fmin = 0;
fmax = 50000;
% ile punktów charakterystyki
% dolna częstotliwość
% górna częstotliwość
Analogowe filtry Butterwortha i Czebyszewa
172
f = fmin : (fmax-fmin)/(NF-1) : fmax; % wszystkie częstotliwości
w = 2*pi*f;
% wszystkie pulasacje
H = freqs(b,a,w);
% alternatywa: H = polyval( b,j*w)./polyval(a,j*w);
plot( f,abs(H), f_ps,wzm_ps,'ro');
grid; title('Moduł'); xlabel('freq [Hz]'); pause
plot(f,20*log10(abs(H)), f_ps,wzmdB_ps,'ro'); axis([fmin,fmax,-100,20]);
grid; title('Moduł dB'); xlabel('freq [Hz]'); ylabel('dB'); pause
plot(f,unwrap(angle(H))); grid; title('FAZA'); xlabel('freq [Hz]'); ylabel('[rd]');
pause
disp('======= WZMACNIACZ RLC =======')
% Oblicz elementy układu ze wzmacniaczami operacyjnymi
p(1), p(2), p(4), pause
p1 = [ p(1) conj(p(1)) ];
p2 = [ p(2) conj(p(2)) ];
p3 = p(4);
aw1 = poly(p1), aw2 = poly(p2), aw3 = poly(p3), pause
C = 10^(-9); RA=10^4;
Rwy = 10^4;
disp('=== Układ 1===')
a = aw1;
a2=a(1); a1=a(2); a0=a(3);
R = 1/(C*sqrt(a0))
RB = (2-a1/sqrt(a0)) * RA
K1 = 1+RB/RA
pause
disp('=== Układ 2 ===')
a = aw2;
a2=a(1); a1=a(2); a0=a(3);
R = 1/(C*sqrt(a0))
RB = (2-a1/sqrt(a0)) * RA
K2 = 1+RB/RA
pause
disp('=== Układ 3 ===')
a = aw3;
a1=a(1); a0=a(2);
R=1/(C*a0)
K3=1
pause
disp('=== Obciążenie ===')
K=K1*K2*K3
G=1
Rx = (K/G)*Rwy
Ry = (G/K)/(1-G/K)*Rx
pause
7
Dyskretyzacja
sygnałów analogowych
W rozdziale siódmym skrótowo przedstawiono zagadnienia związane z dyskretyzacją sygnałów analogowych. Ponieważ większość z nich jest szeroko opisana w powszechnie dostępnej
literaturze, skupiono się tylko na rzeczach najistotniejszych. Rozdział ten ma jedynie charakter
poglądowy i ma stanowić pomost pomiędzy światem „analogowym” i „cyfrowym”.
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 przetwarzania 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 przesunię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. Zwyczajowo 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 przyjmowanych wartości i kodowaniu − sygnałami cyfrowymi. Przybliżmy obecnie dokładniej zagadnienia 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łego x(t) jego „próbek” w wybranych, najczęściej równoodległych, chwilach czasowych. Opera-
Dyskretyzacja sygnałów analogowych
174
a) ciągły
b) spróbkowany (dyskretny w czasie)
1
1
x(t)
0,5
0
0
−0,5
−0,5
−1
0
0,1
0,2
0,3
0,4
x(n⋅∆t)
0,5
∆t
−1
0
0,1
t [s]
0,3
0,4
t [s]
c) skwantowany (dyskretny w wartościach)
d) spróbkowany i skwantowany (cyfrowy)
1
1
xq(t)
0,5
0
−0,5
−0,5
0,1
0,2
t [s]
0,3
0,4
xq(n⋅∆t)
0,5
0
−1
0
0,2
−1
0
∆t
0,1
0,2
0,3
0,4
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” funkcyjnym 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ślonego 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 − idealnego, po prawej − nieidealnego (występowanie nieliniowości i histerezy). Całe przedziały wartości przyjmowanych przez zmienną x mają tylko jednego reprezentanta xq
przetwornika analogowo-cyfrowego przed wprowadzeniem „danych” do komputera oraz z faktu, że w komputerze wszystkie liczby, a więc także i „próbki” sygnału, są przechowywane
w określonej liczbie bitów (8, 16, 24, 32, 48, 64) w jednym z możliwych formatach zapisu.
Formaty te zaś mają ograniczoną precyzję i nie umożliwiają przedstawienia dowolnej liczby
rzeczywistej. Wybór określonego formatu oraz zapis liczby skwantowanej w tym formacie
nazywa się kodowaniem.
Jak już było powiedziane, sygnał ciągły równocześnie zdyskretyzowany „w czasie” i skwantowany „w wartości” nosi nazwę sygnału cyfrowego xq(n) (rysunek 7.1d).
Dla dociekliwych. W tym miejscu należy zwrócić uwagę, że w powszechnym zastosowaniu
znajdują się także układy operujące na sygnałach zdyskretyzowanych tylko w osi argumentu
(przestrzennie), a nie w osi wartości. Ich przedstawicielem są przyrządy z przenoszeniem
ładunku (ang. CTD − Charge Transfer Devices), w szczególności przyrządy ze sprzężeniem
ładunkowym (ang. CCD − Charge-Coupled Devices). Przyrządy te stanowią realizację pamięci
analogowej izolowanych próbek sygnału (analogowych, a więc o wartościach nieskwantowanych), z możliwością ich przesuwania metodą linii opóźniającej oraz przetwarzania. Najbardziej znanym przyrządem CCD są kamery amatorskie i telewizyjne.
Wszystkie liczby w komputerze są zapisywane w dwóch formatach: stałoprzecinkowym lub
zmiennoprzecinkowym.
W formacie stałoprzecinkowym na dodatnią liczbę całkowitą przeznacza się określoną liczbę
bitów i zapisuje ją w systemie dwójkowym pozycyjnym bez znaku w następujący sposób:
N −1
x = bN −1 2 N −1 + ... + b2 2 2 + b1 21 + b0 = ∑ bi 2i
i =0
⇔
x = bN −1bN −2 ...b2 b1b0
(7.1)
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
Dyskretyzacja sygnałów analogowych
176
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:
x = ( −1)bN −1 [bN − 2 2 N − 2 + ... + b2 22 + b1 21 + b0 ] = ( −1)bN −1 ⋅
N −2
∑ 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ą odpowiednio równe:
= 6
00000110 = (−1)0 ⋅ [ 22 + 21 ]
= −5
+ 10000101 = (−1)1 ⋅ [ 22 + 20 ]
-----------------------------------------------------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
natomiast liczby ujemne są otrzymywane przez zanegowanie wszystkich bitów odpowiadającej
im liczby dodatniej (największa negowana liczba dodatnia to 2N−1, czyli 1000...000) oraz doda~
nie binarne liczby 1 do ostatniej, tj. „najmłodszej”, pozycji wyniku negacji ( bk oznacza negację bitu bk):
~ ~
~ ~~
bN −1bN −2 ...b2 b1b0 + 00.. 001 − liczba ujemna
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
Przykład. Jeśli N = 8, to w kodzie U2 liczby całkowite 6 i −5 oraz ich suma są odpowiednio
równe:
Dyskretyzacja sygnałów analogowych
00000110 = 6
177
00000101 = 5
-----------11111010
+
1
----------------11111011 = −5
00000110 = 6
+ 11111011 = −5
---------------------1|00000001 = −1
Sekwencję bitów, odpowiadającą liczbie ujemnej −5, można zdekodować na podstawie (7.3)
w następujący sposób:
11111011 = −27 + 26 + 25 + 24 + 23 + 21 + 20 = −128 + (64+32+16+8+2+1) = −128+123 = −5
W końcowym wyniku dodawania liczb 6 i −5 nie uwzględnia się najstarszego bitu przeniesienia (ang. carry).
Liczby całkowite zapisane w kodzie znak-moduł i U2 można także interpretować jako liczby
ułamkowe (ang. fractional):
(ZM)
b
b
b
b 
b
x = bN −1bN −2 ...b2 b1b0 = ( −1)bN −1  N −2 + N −3 + N −4 ... + N1−2 + N0−1 
4
8
2
2 
 2
(U2)
x = bN −1bN −2 ...b2 b1b0 = −
(7.4)
bN −1 bN −2 bN −3 bN −4
b
b
... + N1−2 + N0−1
+
+
+
1
2
4
8
2
2
(7.5)
Liczby ułamkowe zapisane w kodach ZM i U2 leżą odpowiednio w przedziałach:
1 
1

(ZM)  − 1 + N −1 , 1 − N −1  ,
2
2


(U2)
1 

 − 1, 1 − 2 N −1 
i są kwantowane z krokiem 1/(2N−1). Interpretacja ułamkowa liczb zapisanych w kodzie U2 jest
stosowana powszechnie w stałoprzecinkowych procesorach sygnałowych firmy Analog Devices, Motorola i Texas Instruments. W wyniku mnożenia dwóch takich liczb otrzymujemy liczbę, która nie ma większej wartości bezwzględnej niż liczby mnożone, nie wystąpi więc przepełnienie akumulatorów. W ogólności można za pomocą N = K+M bitów zakodować w trybie
ZM lub U2 liczbę ułamkową mającą także część całkowitą:
x = ( −1)bM −1 [bM −2 2 M −2 + ... + b2 2 2 + b1 21 + b0 + b−1 2 −1 + b−2 2−2 + ... + b− K 2− K ] = (−1)bM −1 ⋅
x = −bM −1 2 M −1 + bM −2 2 M −2 + ... + b1 21 + b0 + b−1 2 −1 + b−2 2 −2 + ... + b−K 2 −K = −bM −1 2 M −1 +
M −2
∑
i =− K
M −2
bi 2i
∑b 2
i=− K
i
i
Wartości parametrów K i M (czyli położenie przecinka) wybiera się w zależności od potrzeb
(przyjętej arytmetyki). Podczas dekodowania muszą być one znane.
Przykład. Jeśli N = 8, to zapisane w kodzie U2 (7.5) liczby ułamkowe 00000110 oraz
11111011 są odpowiednio równe:
1 
3
 1
00000110 = 0 +  +  = +
32
64
64


123
5
1
1 
1 1 1 1
11111011 = −1 +  + + + +
=−
+
 = −1 +
128
128
2
4
8
16
64
128


Dyskretyzacja sygnałów analogowych
178
W drugim przypadku mamy także:
1
1
1
1
1
1
1 
5

11111011 = −00000101 = − 0 + 0 ⋅ + 0 ⋅ + 0 ⋅ + 0 ⋅ + 1 ⋅ + 0 ⋅ + 1 ⋅
=−
2
4
8
16
32
64
128 
128

Z kolei w zapisie zmiennoprzecinkowym, liczby rzeczywiste są przedstawiane jako:
x = ( −1) z ⋅ 2 c ⋅ m
gdzie „z” oznacza znak (równy 0 lub 1), „c” jest cechą (wykładnikiem, eksponentą), będącą binarną 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ę:
x = z1 | c8( p ) | m23 ≡ bz | b7( c ) b6( c ) ...b0( c ) | b−( 1m ) b−( m2 ) ...b−( m23)
gdzie
c8( p ) = c + 127, − 126 ≤ c ≤ 127
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:
c11( p ) = c + 1023, − 1022 ≤ c ≤ 1023
Przykład. Załóżmy, że następująca sekwencja 32 bitów reprezentuje liczbę zmiennoprzecinkową zakodowaną zgodnie ze standardem IEEE SP (podkreślono bity cechy oraz wytłuszczono
bity mantysy):
10110000 | 010100000 | 00000000 | 00000000
Wynika stąd, że:
z =1
c ( p ) = 01100000 = 2 6 + 25 = 64 + 32 = 96, c = c ( p ) − 127 = −31
1 1 1 1 5
m = 10100000000000000000000 = 1 + 3 = + = = 0,625
2 8 8
2 2
czyli zakodowana w ten sposób liczba to:
5
x = (−1)1 ⋅ 2−31 ⋅ = −0,625 ⋅ 2−31 ≈ −2,91038305 ⋅ 10−10
8
Dla dociekliwych. Precyzję komputerowych obliczeń zmiennoprzecinkowych określa maksymalna wartość liczby P, dla której wartość wyrażenia (1+10−P), wyznaczona przez jednostkę
arytmetyczno-logiczną procesora, jest jeszcze różna od 1 (lub 10−P jest jeszcze różne od zera).
Decyduje o tym liczba bitów mantysy. Dla obliczeń prowadzonych z pojedynczą precyzją (23
bity mantysy) P jest równe 6 (czyli sześć cyfr jest znaczących), a dla podwójnej precyzji (52
bity mantysy) − P jest równe 12. Wynikiem dodawania przez procesor dwóch liczb różniących
się o mniej niż o 10−P będzie zawsze większa z tych liczb. Tragedia!
Dyskretyzacja sygnałów analogowych
179
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 (monitorowania 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 mantysa). 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 twierdzenia 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 zawsze występuje. Dodatkowo, w przypadku liczb zmiennoprzecinkowych, błąd bezwzględny zaokrą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 diagnostycznych. Wniosek: decyzję o liczbie bitów oraz o częstotliwości próbkowania należy podjąć w zależności od właściwości sygnału i celów analizy.
Obecnie skrótowo, tylko w celu zaznajomienia mniej „wtajemniczonego” Czytelnika, przedstawimy praktyczną stronę konwersji sygnałów analogowych na cyfrowe, czyli budowę typowych,
najczęściej stosowanych przetworników analogowo-cyfrowych i cyfrowo-analogowych.
7.2. Przetworniki analogowo-cyfrowe
Przetworniki analogowo-cyfrowe (A/C) zamieniają wejściowe napięcie analogowe na odpowiadającą mu liczbę całkowitą ze znakiem, która jest zapisana na określonej liczbie bitów
w wybranym formacie, np. w kodzie uzupełnień do dwóch (7.3). W uproszczeniu można przyjąć, że liczba ta stanowi numer przedziału kwantowania, do którego należy aktualna wartość
napięcia wejściowego Ux, zawierająca się w przedziale [−Uzakres, Uzakres]. Ujemne wartości
oznaczają numery przedziałów, odpowiadające napięciom ujemnym. Jak już wiemy liczbę
zapisaną w kodzie U2 można także odczytywać w sposób ułamkowy (7.5) i wówczas zawiera
się ona zawsze w przedziale [−1, 1). Z kolei przetwornik cyfrowo-analogowy (C/A) zamienia
numer przedziału kwantowania (liczbę zapisaną bitowo) na odpowiadające mu napięcie
Dyskretyzacja sygnałów analogowych
180
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 (mierzone 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}
b2={0,1}
b1={0,1}
b0={0,1}
Przetwornik
A/C
Ux
b3={0,1}
b2={0,1}
b1={0,1}
b0={0,1}
Przetwornik
C/A
U
Rys. 7.3. Sygnały wejściowe i wyjściowe przetworników A/C i C/A
a)
Uzakres
Ux
Uzakres
K
b)
Uzakres
Nr=7
A/C=111
Nr=6
A/C=110
Nr=5
A/C=101
Nr=4
A/C=100
U3
Nr=3
A/C=011
U2
Nr=2
A/C=010
U1
Nr=1
A/C=001
U0
Nr=0
A/C=000
0
∆U
R
K
0
K
1
R
Ux
Ux
R
K
1
R
K
1
R
0
Rys. 7.4. Ilustracja zasady pracy przetwornika A/C z bezpośrednim porównaniem napięć: a) schemat układowy, b) schemat logiczny
Przetwornikiem A/C, który realizuje operację kwantowania sygnału w sposób najbardziej naturalny, 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 wynosi ∆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 kwantowania. Podstawową ich wadą jest jednak duży błąd rozdzielczości oraz wysoka cena, wynikają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-bitowego 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ż przetworniki 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 przedziałó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 szybszy układ z kompensacją wagową. Opiera się on na znanej od starożytności metodzie „połowienia 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. Oczywiś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 liniowej 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 wykonujemy 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 kombinacji 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 czterobitowego (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 odpowiadają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 binarna 1011.
Opisany powyżej przetwornik A/C powszechnie jest nazywany przetwornikiem kompensacyjno-wagowym, ponieważ w trakcie procesu przetwarzania napięcie UC/A stara się zrównać z napię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 stabilności, realizacja dużej liczby bitów jest podstawowym problemem we wszystkich typach przetworników A/C.
Poza wymienionymi powyżej powszechne zastosowanie znajdują także przetworniki typu sigma-delta (zwłaszcza w sprzęcie audio i wibroakustyce) oraz podwójnie całkujące (w cyfrowych 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 chwilowych napięcia, które umożliwiają eliminację (odfiltrowanie) analogowych zakłóceń okresowych podczas samego przetwarzania A/C.
Podsumujmy nasze dotychczasowe rozważania, na temat przetworników A/C, uwzględniając
w poniższych wnioskach nie opisane w tym rozdziale przetworniki typu sigma-delta oraz
przetworniki całkujące:
Dyskretyzacja sygnałów analogowych
183
a) A/C z kompensacją liniową
Ux
Ux
0/1
K
Ulicznika
b) A/C z kompensacją wagową
UC/A
0
0
1
1
0
Stop
Ulicznika
0
1
1
Stop
Układ logiki
Licznik/Generator
Start
UREF
C/A
UREF
C/A
0/1
K
Start
UC/A
Uzakres
Uzakres
3/4Uz
Ux
Ux
1/2Uz
1/4Uz
stan licznika
0000
0001
0010
0011
0100
•••
0
1
2
3
nr bitu C/A
Rys. 7.5. Ilustracja budowy i zasady działania kompensacyjnych przetworników A/C
• przetworniki bezpośredniego porównania („drabinka” rezystorów = 2Nb, drabinka „komparatorów = 2Nb −1, porównanie równoległe): są bardzo szybkie, lecz dość drogie, gdyż wymagają dużej liczby komparatorów;
• przetworniki kompensacyjne równomierne (jeden komparator, l i n i o wo przestrajane napięcie porównywane z napięciem przetwarzanym): są bardzo wolne, gdyż wymagają aż
2Nb −1 porównań, ale za to są bardzo tanie (praktycznie nie są stosowane);
• przetwornik kompensacyjne wagowe (jeden komparator, wa g o wo przestrajane napięcie
porównywane z napięciem przetwarzanym): są bardzo szybkie, gdyż potrzebują tylko Nb
porównań, oraz względnie tanie;
• przetworniki typu sigma-delta (w u p r o s z c z e n i u : próbkowanie jednobitowe o bardzo
dużej częstotliwości np. 6,4 MHz, a potem uśrednianie/całkowanie i pozostawianie co M-tej
próbki, co prowadzi do wzrostu liczby bitów przypadających na jedną próbkę i do zmniejszenia częstotliwości próbkowania sygnału): są bardzo szybkie i tanie; umożliwiają budowę
przetworników o dużej liczbie bitów; ich podstawową wadą jest zdecydowanie mniejsza
dokładność przetwarzania składowej stałej sygnału;
• przetworniki całkujące, w szczególności podwójnie całkujący (całkowanie sygnału wejściowego na kondensatorze w zadanym czasie T, równym wielokrotności okresu zakłóceń
nTz, a następnie rozładowywanie kondensatora stałym prądem; powoduje to, że czas rozładowania jest proporcjonalny do poziomu naładowania kondensatora, czyli do wa r t o ś c i
ś r e d n i e j sygnału wejściowego; wynik przetwarzania jest liczbą impulsów generatora
wzorcowego zliczonych w czasie rozładowywania kondensatora): są wolne, przeznaczone
do przetwarzania napięć wolnozmiennych, ale mają bardzo istotną zaletę − znacznie eliminują zakłócenia z sygnału już na etapie konwersji analogowo-cyfrowej, poprzez „scałkowanie” zakłóceń okresowych w fazie ładowania kondensatora.
Dyskretyzacja sygnałów analogowych
184
a)
LSB
k=0
i/8
1
8R
k=1
i/4
1
4R
k=2
i/2
0
2R
k=3
i
0
R
MSB
UREF
is
Rs
Wzm
Uwy
2R
b)
LSB
i/8
2R
1
R
i/4
2R
1
R
i/2
2R
0
R
i
2R
0
UREF
MSB
is
Rs
Wzm
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
7.3. Przetworniki cyfrowo-analogowo
Nadszedł teraz czas na przyjrzenie się „drugiej stronie medalu”, czyli budowie przetworników
cyfrowo-analogowych (C/A). Istnieje wiele różnych typów przetworników C/A, lecz my zapoznamy się tylko z wybranymi układami z sumowaniem prądów. Schemat najprostszego
takiego układu jest pokazany na rysunku 7.6a. Rezystory o wartościach Rk = 2kR są po prawej
stronie połączone z wejściem odwracającym wzmacniacza operacyjnego, po lewej stronie zaś
ze stabilnym źródłem napięcia referencyjnego UREF. W gałęzi każdego rezystora znajduje się
klucz, który jest otwarty lub zamknięty, w zależności od wartości związanego z nim bitu liczby
binarnej, przetwarzanej na napięcie analogowe. Na rysunku jest przetwarzana liczba binarna
0011, czyli liczba 3 w systemie dziesiętnym, dlatego dwa górne klucze są zamknięte, a dwa
dolne − otwarte. Napięcie na wejściu odwracającym („−”) wzmacniacza jest w przybliżeniu
równe napięciu na jego wejściu nieodwracającym („+”), czyli ma wartość w przybliżeniu
równą zero, dlatego prądy płynące w poszczególnych gałęziach „zwartej” drabinki są równe
UREF/R, UREF/2R, UREF/4R i UREF/8R, czyli w kolejnych gałęziach są o połowę mniejsze i odpowiednio równe i, i/2, i/4, i/8. Napięcie na wyjściu wzmacniacza ma więc następującą
wartość:
Dyskretyzacja sygnałów analogowych
 Nb −1

 Nb −1 U
U wy = −is Rs = −  ∑ bk ik  Rs = −  ∑ bk REF
2k R
 k =0

 k =0
185

 Rs

(7.6)
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 przekracza wartość rezystora małego. W praktyce preferuje się więc przetworniki C/A z sumowaniem 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 zdecydowanie 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.
7.4. Tor przetwarzania analogowo-cyfrowego i cyfrowo-analogowego
Na koniec tego krótkiego wprowadzenia do praktycznych rozwiązań stosowanych w torach
przetwarzania A/C i C/A, m.in interfejsów komputerowych, dokonamy jeszcze niezbędnego
podsumowania oraz zwrócimy uwagę na kilka bardzo istotnych faktów, godnych zapamiętania.
Z dotychczasowych rozważań, przeprowadzonych w tym rozdziale oraz rozdziałach poprzednich, jasno wynika, że (patrz rysunek 7.7):
1) przed przetwornikiem A/C powinien się znajdować dolnoprzepustowy (DP) filtr analogowy, który dostosowywałby pasmo częstotliwościowe sygnału próbkowanego do częstotliwości próbkowania zgodnie z twierdzeniem o próbkowaniu − częstotliwość próbkowania
musi być co najmniej dwa razy większa niż maksymalna częstotliwość występująca w sygnale. Projektowanie i sprzętową realizację filtrów tego typu omówiono w poprzednim
rozdziale. W układach uniwersalnych istnieje możliwość przestrajania częstotliwości próbkowania oraz analogowych filtrów antyaliasingowych, w tym przypadku zbudowanych
z przełączanych pojemności (ang. SCC − Switched Capacitor Circuits). Jest też możliwe
nieprzestrajanie przetwornika, nadpróbkowanie sygnału i przeprowadzenie decymacji sygnału (usunięcie części próbek) już po stronie cyfrowej (patrz podrozdział 12.6.3);
Dyskretyzacja sygnałów analogowych
186
x(n)
x(t)
Filtr
DP
xf(t)
xp(t)
Układ
P&P
y(n)
µP
A/C
C/A
Gotów
Gotów
Start
Start
Układ logiki
yq(t)
yp(t)
Układ
P&P
y(t)
Filtr
DP
Układ logiki
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 (rekonstruujący)
a) faza próbkowania
b) faza podtrzymania
R1
Uwe
R2
R1
C
Uwe
Uwy
R2
C
Uwy
c) d) dwa układy P&P ze wzmacniaczami operacyjnymi
C
Uwe
C
Uwy
Uwe
Uwy
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ą
2) dodatkowo przed przetwornikami kompensacyjnymi należy stosować układy próbkowania
z podtrzymaniem (P&P) (ang. S&H − Sample and Hold), które mają zapewnić niezmienność przetwarzanego napięcia podczas procesu kompensacji. Najczęściej napięcie chwilowe
„zapisuje się” na kondensatorze. Bardzo szybko ładuje się go w fazie „próbkowania”
i bardzo wolno rozładowuje w fazie „podtrzymania” (patrz rysunek 7.8);
3) po przetworniku C/A również powinien znajdować się układ próbkowania z podtrzymaniem P&P, „przechwytujący” i podtrzymujący napięcie analogowe wytwarzane przez przetwornik C/A, jeśli on sam tego nie robi. W związku z próbkowaniem w czasie i ze skończoną liczbą bitów tego przetwornika napięcie to ma kształt „schodkowy”, podobny do
przedstawionego na rysunku 7.3c;
4) w związku z tym za wyjściowym układem P&P należy umieścić dolnoprzepustowy filtr
rekonstruujący, który „wygładzi” sygnał yp(t). Przykładowo po tej operacji sygnał „schodkowy” z rysunku 7.1c przechodzi w prawie gładki sygnał sinusoidalny.
Dyskretyzacja sygnałów analogowych
187
a) kilka kanałów A/C − wersja 1
x1(t)
Filtr
DP
Układ
P&P
A/C
xx(t)
2(t)
Filtr
DP
Układ
P&P
A/C
x3(t)
Filtr
DP
Układ
P&P
A/C
Multi
plekser
cyfrowy
x(n)
µP
Start
Układ logiki
b) kilka kanałów A/C − wersja 2
x1(t)
Filtr
DP
Układ
P&P
xx(t)
2(t)
Filtr
DP
Układ
P&P
x3(t)
Filtr
DP
Układ
P&P
Multi
plekser
analogowy
A/C
x(n)
µP
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 wielofazowego 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)
Często występuje konieczność przetwarzania na postać cyfrową wielu sygnałów równocześnie.
Przykładem może być wielokanałowy rejestrator sygnałów elektrograficznych EKG. Powstaje
pytanie jak należy to robić? Alternatywne rozwiązania są przedstawione na rysunkach 7.9a,
7.9b i 7.9c. Oczywiście, najprościej jest „zrównoleglić” tor wejściowy z rysunku 7.7
i zastosować przed mikroprocesorem cyfrowy układ przełączający (czyli multiplekser cyfrowy)
(rysunek 7.9a). Wadą takiego rozwiązania jest jego wysoka cena, a zaletą − duża szybkość
działania, umożliwiająca zastosowanie dużej częstotliwości próbkowania. W takim układzie
jest także możliwe równoczesne „zbieranie” próbek sygnałów w poszczególnych kanałach,
czyli niewprowadzanie przez układ przesunięć fazowych pomiędzy rejestrowanymi sygnałami.
Brakiem ww. przesunięcia charakteryzuje się także nieco tańsze rozwiązanie, przedstawione na
rysunku 7.9b, w którym zastosowano analogowy układ przełączający (multiplekser analogowy) i tylko jeden przetwornik A/C. Wadą takiego rozwiązania są niższe częstotliwości próbko-
Dyskretyzacja sygnałów analogowych
188
c) kilka kanałów A/C − wersja 3
x1(t)
Filtr
DP
x2(t)
Filtr
DP
x3(t)
Multi
plekser
analogowy
Układ
P&P
x(n)
µP
A/C
Filtr
DP
Start
Układ logiki
d) wielofazowe próbkowanie jednego sygnału
x(t)
Filtr
DP
Układ
P&P
A/C
Układ
P&P
A/C
Układ
P&P
A/C
Multi
plekser
cyfrowy
x(n)
µP
Start
Układ logiki
Rys. 7.9. (cd.)
wania możliwe do osiągnięcia. Ostatnia rozpatrywana możliwość realizacji układowej wielokanałowego próbkowania A/C jest pokazana na rysunku 7.9c. Jest to najtańszy wariant. Przełączanie napięć odbywa się w niej na samym początku toru. Oczywistym więc jest, że wszystkie
napięcia są próbkowane w różnych chwilach czasowych. Sygnały cyfrowe xk(n) są więc opóźnione względem siebie o stałą jednostkę czasu. Na rysunku 7.9d przedstawiono z kolei schemat
blokowy układu do wielofazowego próbkowania jednego sygnału, który jest stosowany w oscyloskopach cyfrowych, gdyż podwyższa maksymalną częstotliwość próbkowania całego
systemu.
Oczywiście na rysunku 7.7 zakładamy, że interesujący nas sygnał x(t) jest napięciem analogowym. Ale przecież wcale tak być nie musi. Może to być temperatura powietrza, naprężenie
w metalu, prędkość samochodu. Dlatego przed przystąpieniem do realizacji toru przetwarzania
sygnałów, przedstawionego na rysunku 7.7, musimy zaprojektować i wykonać układ „wstępnego” przetwarzania, czyli układ pomiaru interesującej nas wielkości fizycznej oraz jej zamiany na napięcie elektryczne (wybór: czujnika, układu pomiarowego, wzmacniacza). Przykładem
niech będzie pomiar temperatury, realizowany za pomocą czujnika termorezystancyjnego, oraz
pomiar naprężenia, wykonany za pomocą tensometru znajdującego się w układzie mostkowym
(patrz rysunek 7.10).
Dyskretyzacja sygnałów analogowych
189
a)
b)
Rtensometr
Rtemp
UREF
i
UREF
RREF
Uwy
Ra
Rc
Uwy
Rb
wzmacniacz
pomiarowy
Rys. 7.10. Przykład akwizycji dwóch wielkości fizycznych: a) pomiar temperatury za pomocą termorezystora, 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 podawane 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 zmienia się także długość tensometru i jego rezystancja. Ponieważ tensometr znajduje się w układzie 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 temperatury 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 czujnika, który nie jest wrażliwy na zmianę napięcia zasilającego Uz. Osiągnięto to poprzez wykorzystanie 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 fizycznej, 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 jedności dla częstotliwości 300 kHz ÷ 100 MHz, w zależności od modelu). Z powodu bardzo du-
Dyskretyzacja sygnałów analogowych
190
a) wzmacniacz odwracający
Wzm=-R2/R1
b) wzmacniacz nieodwracający
R2
Uwe
R1
Uwe
Uwy
R3
c) wzmacniacz różnicowy
Uwy
R2
R1
Wzm=1+R2/R1
d) pomiarowy wzmacniacz różnicowy
Wzm=R4/R3⋅(1+2R2/R1)
Wzm=R2/R1
R3
R2
R4
R1
Uwe
R1
R2
Uwy
Uwe
R1
R2
R2
Uwy
R3
R4
Rys. 7.12. Stosowane układy wzmacniaczy, wykorzystujące wzmacniacze operacyjne: a) wzmacniacz odwracają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 wynosi −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łączone 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
Tab. 7-1. Charakterystyka właściwości układów wzmacniaczy operacyjnych
Właściwość
Duża impedancja
wejściowa
Wejście
Wzmacniacz
operacyjny
Wzmacniacz
odwracający
Wzmacniacz
nieodwracający
Wzmacniacz
różnicowy
Wzmacniacz
pomiarowy
TAK
NIE
TAK
NIE
TAK
TAK
NIE
NIE
TAK
TAK
NIE
TAK
TAK
TAK
TAK
różnicowe
Określone
wzmocnienie
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 przetwarzania sygnałów cyfrowych x(n) będą przedmiotem naszego zainteresowania w następnych
rozdziałach.
8
Analiza częstotliwościowa
sygnałów dyskretnych
Analiza sygnałów najczęściej sprowadza się do ich analizy częstotliwościowej. Częstotliwości
zawarte w sygnałach występujących samoistnie w przyrodzie wiele nam mówią o właściwościach lub stanach obiektu, który je wygenerował. Przykładem mogą być różne sygnały biomedyczne, np. elektrokardiograficzne, świadczące o aktualnym stanie pacjenta.
W wielu urządzeniach technicznych, np. służących do transmisji sygnałów za pomocą fal
elektromagnetycznych, człowiek sam dzieli dostępne pasmo częstotliwościowe na podpasma
oraz generuje w nich sygnały użytkowe o różnych częstotliwościach, np. radiowe, telewizyjne
i telefoniczne.
W niniejszym rozdziale zajmiemy się problemem właściwego przeprowadzania analizy częstotliwościowej sygnałów dyskretnych (spróbkowanych) z wykorzystaniem transformacji Fouriera
oraz poprawnej interpretacji uzyskiwanych wyników.
8.1. Widmo Fouriera sygnałów dyskretnych
W rozdziale czwartym oznaczaliśmy sygnały dyskretne (spróbkowane) przez xδ(t), natomiast
w rozdziale siódmym − jako x(n) (n − indeks lub numer próbki). Na początku załóżymy, że
sygnały te powstały z sygnałów ciągłych x(t) zgodnie z regułami sztuki „kulinarnej” (inżynierskiej), przedstawionymi w podrozdziale 4.5 (4.48)(4.49):
xδ (t ) = x ( n ) = x (t ) ⋅
X δ ( jω) =
∞
∑ δ(t − n∆t )
(8.1)
n = −∞
∞
 ωp
1 
 X ( jω) ⊗ ω p ∑ δ(ω − kω p ) =
2π 
k = −∞
 2π
∞
∑ X ( j ( ω − kω p ) )
(8.2)
k = −∞
tzn. że częstotliwość próbkowania fp = 1/∆t dobrano zgodnie z tzw. twierdzeniem o próbkowaniu (Nyquista, Shannona, Kotielnikowa), czyli minimum dwa razy większą od maksymalnej
częstotliwości występującej w sygnale. W równaniach (8.1) i (8.2) ∆t oznacza okres próbkowania, δ(t) jest impulsem Diraca, a ωp = 2πfp. Widmo częstotliwościowe Xδ(jω) sygnału spróbkowanego xδ(t) jest więc sumą poprzesuwanych w częstotliwości „kopii” widma sygnału
ciągłego X(jω). Dysponując jedną z tych kopii oraz znając pasmo częstotliwościowe oryginału
Analiza częstotliwościowa sygnałów dyskretnych
193
jesteśmy w stanie zsyntezować z niej ciągły sygnał oryginalny x(t). W tym celu należy wyznaczyć 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 podrozdział 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 widmo 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 mianowicie 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 powtórzymy także definicję całkowego przekształcenia Fouriera.
8.1.1. Przekształcenie Fouriera dla sygnałów ciągłych
Para prostego i odwrotnego ciągłego przekształcenia Fouriera zdefiniowana jest następującym
układem równań (exp(jωt) = cos(ωt)+jsin(ωt), ω = 2πf, ω − pulsacja, f − częstotliwość):
X ( jω) =
+∞
∫ x(t )e
−∞
− jωt
dt ,
x (t ) =
+∞
1
X ( jω)e jωt dω
2π −∫∞
(8.3a, b)
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ównaniu (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 przedstawiony jako suma nieskończonej liczby blisko siebie leżących drgań zespolonych o amplitudzie 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 Fouriera 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.
8.1.2. Szereg Fouriera dla sygnałów ciągłych
Kiedy analizowany sygnał jest sygnałem okresowym o okresie T, mogą w nim występować tylko pulsacje o określonej częstotliwości, tzn. składowa stała oraz pulsacja podstawowa ω0 i jej
wielokrotności (harmoniczne) kω0:
Analiza częstotliwościowa sygnałów dyskretnych
194
X (kω0 ) =
T /2
1
x (t )e − jkω0t dt ,
T −T∫/ 2
x (t ) =
∞
∑ X (kω0 )e jkω t ,
0
k = −∞
ω0 =
2π
, k = 0, ± 1, ± 2, ...
T
(8.4a, b)
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.
8.1.3. Przekształcenie Fouriera dla sygnałów dyskretnych
W praktycznych zastosowaniach numerycznych (obliczeniowych) analizy częstotliwościowej
nie dysponujemy sygnałem ciągłym x(t) tylko ciągiem jego próbek x(n), powstałych w wyniku
zdyskretyzowania w czasie i skwantowania w poziomie sygnału analogowego za pomocą
przetwornika analogowo-cyfrowego. Załóżmy, że sygnał x(t) został spróbkowany zgodnie
z twierdzeniem Nyquista (Kotielnikowa-Shannona) z częstotliwością fp (czyli z okresem ∆t =
= 1/fp) i jest to częstotliwość dwa razy większa od maksymalnej częstotliwości występującej
w sygnale. Równania ciągłego przekształcenia Fouriera (8.3) można zapisać dla „spróbkowanych” sygnałów analogowych xδ(t) (8.1) w następującej postaci (wykorzystujemy właściwość
(4.23) funkcji delta Diraca):
∞
X δ ( j ω) =
∫ xδ ( t ) e
− j ωt
−∞
∞
dt =

∞

δ(t − n∆t )  e
∫  x ( t ) n∑
=−∞

− j ωt
dt =
−∞
T
N
N 


 − jωt
⋅
δ
−
∆
=
x
(
t
)
lim
(
t
n
t
)
e
dt
lim
lim
x (t )δ(t − n∆t )e− jωt dt  =



∑
∑
∫
∫
 T →∞

T →∞
N →∞
N →∞
n =− N
n =− N 

−T 
−T

T
= lim
=
∞

∞

∞

n = −∞
∑  ∫ x(t )δ(t − n∆t )e− jωt dt  = ∑ x(n∆t )e − jωn∆t = X (e jω )
n = −∞  − ∞
(8.5a)
lub alternatywnie jako
X ( e jΩ ) =
∞
∑
x ( n ∆t ) e − j Ω n
(8.5b)
n =−∞
W równaniu (8.5b) Ω oznacza ciągłą pulsację unormowaną względem częstotliwości próbkowania:
Ω = ω∆t = ω / f p = 2πf / f p
(8.6)
która jest przykładowo równa 2π dla f = fp oraz −π i π dla −fp /2 i fp /2. Zastosowanie oznaczenia 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ęstotliwoś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óbkowaniu) X(ejΩ) jest funkcją okresową o okresie 2π, a my syntezujemy sygnał tylko z dolnopasmowej 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
π
∫
X ( e jΩ ) e jΩ m d Ω =
−π
π

∞
195

x( n∆t )e − jΩ n  e jΩ m d Ω =
∫  n∑
=−∞

−π
=
π
π
N
N 


− jΩ n  jΩ m
lim
x
(
n
t
)
e
e
d
lim
x
(
n
t
)
e jΩ ( m − n ) d Ω  =
∆
Ω
=
∆



∑
∑
∫  N →∞ n =− N
∫


N →∞
n =− N 

−π
−π

=
π


 x ( n∆t ) e jΩ ( m − n )dΩ  = 2 πx (m∆t )
∫


n = −∞ 
−π

∞
∑
(8.7a)
skąd otrzymujemy:
x ( m ∆t ) =
1 π
jΩ
jΩ m
∫ X (e ) e d Ω
2π −π
(8.7b)
W przekształceniach równania (8.7a) założyliśmy, że widmo XN(ejΩ):
X N (e jΩ ) =
N
∑ x(n)e − jΩn
n=−N
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):
π
∫e
jΩ ( m − n )
−π
2π, m = n
dΩ = 
.
 0, m ≠ n
Upraszczając ∆t we wzorach (8.5b)(8.7b), otrzymujemy dobrze znaną z literatury parę równań
transformacji Fouriera dla sygnału dyskretnego x(n):
( )
X e jΩ =
+∞
∑ x ( n ) e− j Ω n ,
n =−∞
x (n) =
1 +π
jΩ
j Ωn
∫ X (e ) e d Ω
2π −π
(8.8a, b)
Jak widać sygnał dyskretny x(n) można zawsze odtworzyć z jego widma X(ejΩ), natomiast odtworzenie sygnału x(t) na podstawie x(n) jest możliwe tylko wtedy, kiedy częstotliwość próbkowania 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 twierdzenie Kotielnikowa-Shannona („o próbkowaniu”), to z każdego z tych okresów można odtworzyć 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).
Analiza częstotliwościowa sygnałów dyskretnych
196
Przekształcenie Fouriera sygnałów dyskretnych ma kilka fundamentalnych właściwości, które
są dla nas bardzo ważne i z których wkrótce skorzystamy. Po pierwsze, jest to przekształcenie
liniowe, gdyż (x1(n)↔X1(ejΩ), x2(n)↔X2(ejΩ)):
∑ [ax1 (n) + bx2 (n )]e − jΩn = a ∑ x1 (n )e − jΩn + b ∑ x2 (n)e − jΩn = aX 1 (e jΩ ) + bX 2 (e jΩ )
∞
∞
∞
n = −∞
n = −∞
n = −∞
(8.9)
Po drugie, w module (wartości bezwzględnej) jest ono „niewrażliwe” na przesunięcie sygnału, ponieważ (x(n) ↔ X(ejΩ), m = n−n0):
∞
∞
∑ x(n − n0 )e − jΩn = ∑ x(m)e − jΩ( m + n
n = −∞
n = −∞
0)
= e − jΩn 0
∞
∑ x(m)e − jΩm = e − jΩn
n = −∞
0
( )
X e jΩ
(8.10)
Ze wzoru (8.10) wynika, że transformata Fouriera sygnału dyskretnego opóźnionego o n0 próbek jest równa transformacie sygnału bez opóźnienia, pomnożonej przez e−jΩn0, czyli nie zmienia się moduł transformaty tylko jej faza. Dodatkowo przekształcenie Fouriera sygnałów dyskretnych charakteryzuje się właściwością splotu (m = n−k):
∞
∞  ∞


x ( k ) y ( n − k )  e − j Ωn = ∑  ∑ x ( k ) y ( m)  e − j Ω ( m + k ) =
n =−∞  k =−∞
m =−∞  k =−∞



∞
∑∑
 ∞
 ∞

=  ∑ x ( k ) e − j Ωk   ∑ y ( m ) e − j Ωm  = X e j Ω Y e j Ω
 k =−∞
  m =−∞

( ) ( )
(8.11)
i właściwością iloczynu:

 1 +π

Y e jΘ e j Θn d Θ   e− jΩn =
 x (n ) 
∫
 2π


n =−∞ 
 −π

∞
∞
( )
∑ [ x ( n ) y ( n ) ] e − j Ωn = ∑
n =−∞
=
1 +π  ∞
1 +π
− j ( Ω−Θ) n 
jΘ
j ( Ω−Θ)
) Y ( e jΘ ) d Θ
 ∑ x (n)e
 Y (e ) d Θ =
∫
∫ X (e
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 e j ( −Ω 0 ) =
+∞
∑ x(n )e − j Ω
0n
n = −∞
+∞
∑ x(n )e j Ω
n = −∞
0n
∞
∞
n = −∞
n = −∞
∞
∞
n = −∞
n = −∞
=
=
∑ x(n) cos(Ω0n) − j ∑ x(n) sin(Ω0n) = X Re (Ω 0 ) − jX Im (Ω 0 )
∑ x(n) cos(Ω0n) + j ∑ x(n) sin(Ω0n) = X Re (Ω 0 ) + jX Im (Ω 0 )
Teraz zostaną przedstawione ilustracje graficzne widm X(ejΩ). W pokazywanych przypadkach
założono, że jest spełnione twierdzenie o próbkowaniu, tzn. że częstotliwość próbkowania jest
więcej niż dwa razy większa od maksymalnej częstotliwości występującej w sygnale. W takim
przypadku poprzesuwane widma X(j(ω−kωp)) (4.49) nie zachodzą na siebie. Szczegóły twier-
Analiza częstotliwościowa sygnałów dyskretnych
197
dzenia o próbkowaniu zostały przedstawione w rozdziale czwartym i tam odsyłamy Czytelnika,
który zaczął lekturę od tego rozdziału.
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.
Xδ(jω)=X(ejΩ)
X(jω)
a)
ω
-ωp
-2π
0
ω
Ω
Xδ(jω)=X(ejΩ)
X(jω)
b)
ωp
2π
0
0
ω
0
-ωp
-2π
0
0
ωp/2
π
ωp
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 symetrii 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 kosinusoidalnego:
Analiza częstotliwościowa sygnałów dyskretnych
198
(
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ω)
Xδ(jω)=X(ejΩ)
b)
ω
-ω0 ω0
-ωp
-2π
-ω0 ω0
-Ω0 Ω0
ωp/2
π
ωp
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
8.1.4. Szereg Fouriera dla sygnałów dyskretnych, czyli dyskretne
przekształcenie Fouriera
W praktycznych zastosowaniach numerycznych metod analizy fourierowskiej nie jest możliwe
zrealizowanie nieskończonych granic sumowania w równaniu (8.8a). Granice te są zawsze
skończone, w związku z czym w rzeczywistości nie jest transformowany cały sygnał tylko jego
fragment, np. o długości N próbek:
( )
X ( N ) e jΩ =
N −1
∑ x ( n ) e− j Ωn ,
n =0
x (n ) =
1 +π ( N ) jΩ jΩn
e
e dΩ
∫X
2π −π
( )
(8.13a, b)
Jest to równoznaczne z wyznaczaniem transformaty Fouriera iloczynu sygnału i okna prostokątnego. Okno to „wycina” z sygnału jego fragment, który jest poddawany analizie. Zgodnie
z właściwością „iloczynu” sygnałów ciągłego przekształcenia Fouriera (4.14), w wyniku analizy jest wyznaczane nie widmo Fouriera sygnału, tylko splot widma sygnału i okna. Dodatkowo pulsacja Ω we wzorach (8.8b), (8.13b) przyjmuje wartości rzeczywiste z przedziału
(−π, π). Ponieważ jest ich nieskończenie wiele, z powodu ograniczeń praktycznej implementacji komputerowej, należy dokonać wyboru skończonej liczby wartości Ω, dla których
Analiza częstotliwościowa sygnałów dyskretnych
199
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 (zagadnienie 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ę dyskretyzując równania szeregu Fouriera dla sygnałów ciągłych. Wyprowadzenie to zostało przedstawione w rozdziale trzecim. W jego wyniku otrzymuje się następującą parę równań:
X (k ) =
x (n) =
N −1
1
N
∑ x (n)e
−j
2π
kn
N ,
k = 0, 1, 2, , , , N − 1
(8.14a)
n =0
N −1
∑ X ( k )e
j
2π
kn
N ,
n = 0, 1, 2,..., N − 1
(8.14b)
k =0
W literaturze transformacja (8.14) jest powszechnie nazywana dyskretną transformacją Fouriera (DFT). Liczni autorzy przenoszą dzielenie przez N z równania (8.14a) do równania
(8.14b):
X (k ) =
N −1
∑ x ( n )e
−j
2π
kn
N ,
k = 0, 1, 2, , , , N − 1
(8.15a)
n=0
x (n) =
1
N
N −1
∑ X ( k )e
j
2π
kn
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:
f k = kf 0 = k
1
2π
, Ω k = ωk ∆t = 2πf k ∆t = k
,
N∆t
N
k = 0, 1, 2, ..., N−1
(8.17)
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 widma X(ejΩ) zajmie w tym przypadku dyskretne („prążkowe”), także okresowe widmo X (e jΩk ) .
Analiza częstotliwościowa sygnałów dyskretnych
200
Niezależnie od tego spostrzeżenia, wyprowadzimy obecnie podstawowe właściwości DFT
(8.15).
1) Liniowość:
N −1
∑ [ax( n ) + by (n )] e
 2π 
− j k  n
N 
n =0
N −1
= a ∑ x( n) e
 2π 
− j k  n
N 
n =0
N −1
+ b ∑ y (n ) e
 2π 
− j k  n
N 
= aX (k ) + bY (k ) (8.18)
n =0
2) Niewrażliwość na przesunięcie w module (m = n−n0):
N −1
∑
n =0
x ( n − n0 )e
 2π 
− j k  n
 N 
N −1
∑
=
x ( m )e
 2π 
− j  k  (m + n0 )
 N 
=e
 2π 
− j  k  n0
 N 
X (k )
(8.19)
m=0
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):
z (l ) =
=
1
N
1
N
N −1
∑ Z (k ) e
j
2π
kl
N
k =0
N −1  N −1
∑  ∑ x(n)e
k =0 
 n = 0
−j
=
1
N
N −1
∑ [ X (k )Y ( k )] e
j
2π
kl
N
=
(8.20)
k =0
2 π   N −1
2π
2π
− j km   j kl
kn
N

y ( m) e N   e N
  m∑
  =0


=
1
N
N −1
 N −1 j 2 π k (l − m − n ) 
(
)
(
)
x
n
y
m
∑ e N

∑ ∑
n=0
m=0
 k = 0

N −1
Wyrażenie w nawiasie kwadratowym jest sumą skończonego szeregu potęgowego, która jest
równa:
N −1
 N

dla a = 1
k =0
 1 − a
dla a ≠ 1
∑ a k = 1 − a N
(8.21)
ponieważ:
N −1
∑ak = S
k =0
N −1
⇒ a ∑ a k = aS = S + a N − a 0
k =0
⇒ S=
1− aN
1− a
(8.22)
W naszym przypadku:
a=e
j
2π
(l − m −n )
N
,
aN = 1
W związku z tym mamy:
N −1
∑ ak
k =0
N
=
0
gdy l − m − n = pN , p ∈ Z
w przeciwnym przypadku
(8.23)
i w konsekwencji z (8.20) otrzymujemy:
z(l ) =
N −1
∑ x(n) y(l − n),
l = 0, 1, 2,..., N − 1
(8.24)
n =0
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 „zakresem” 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:
Z (k ) =
1
N
N −1
∑ X ( p )Y (k − p),
k = 0, 1, 2,..., N − 1
(8.26)
p=0
gdyż
Z (k ) =
N −1
∑ z ( n )e
−j
2π
kn
N
n =0
=
1
N2
=
N −1
∑ [ x ( n) y ( n) ] e
−j
2π
kn
N
=
N −1 
1
n =0 
n= 0
N −1
 N −1 j 2 π n ( p + q − k )  1
=
X
(
p
)
Y
(
q
)
∑
∑  ∑ e N
 N
p =0
q=0
n
=
0


N −1
N −1
∑  N ∑ X ( p)e
p =0
j
2π
pn
N
 1

N

N −1
∑ Y ( q )e
j
2π
qn
N
q=0
  − j 2 π kn
 e N =


N −1
∑ X ( p)Y (k − p )
(8.27)
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 −1
N −1
− j  +k  n
− j kn
− j kn
N
 N −1
X  + k  = ∑ x ( n ) e N  2  = ∑ x ( n )e − jπn e N = ∑ [ x( n )( −1)n ] e N
2
 n =0
n =0
n =0
(8.28)
Analogicznie wykazujemy, że:
2π
j kn
N
 N −1
X  − k  = ∑ [ x ( n )( −1)n ] e N
2
 n =0
(8.29)
skąd wynika równość


N
N
X  + k  = X * − k 


2
2
(8.30)
N/2-ty prążek widma X(k), k = 0, 1, 2, ..., N−1 leży więc na osi symetrii: względem niego część
rzeczywista jest symetryczna (Real(X(N/2+k) = Real(X(N/2−k)), a część urojona − asymetryczna (Imag(X(N/2+k) = −Imag(X(N/2−k)), czyli użyteczna informacja jest zawarta tylko w pierwszych N/2+1 prążkach (k = 0, 1, 2, ..., N/2), odpowiadających częstotliwościom fk (8.17),
zmieniającym się od zera do fp/2 z krokiem fp/N. Jeśli dodatkowo zauważymy, że zawsze
Imag(X(0)) = 0 oraz Imag(X(N/2)) = 0, to okazuje się, że widmo DFT N próbek sygnału
rzeczywistego jest w pełni określone przez N liczb rzeczywistych: Real(X(k)) dla k = 0, 1, 2,
..., N/2 oraz Imag(X(k)) dla k = 1, 2, 3, ..., N/2−1.
202
Analiza częstotliwościowa sygnałów dyskretnych
Istnieje wiele metod optymalizacji numerycznej równań (8.14)(8.15), prowadzących do minimalizacji liczby wykonywanych operacji arytmetycznych. W ich wyniku otrzymuje się algorytmy tzw. szybkich transformacji Fouriera (ang. FFT − Fast Fourier Transform). To one są
najczęściej stosowane w praktyce do analizy częstotliwościowej sygnałów. Problem efektywnego wyznaczania numerycznego transformacji (8.14), (8.15) będzie przedmiotem naszego
zainteresowania w następnym, dziewiątym rozdziale.
8.2. Przykłady dyskretnych transformat Fouriera sygnałów
Obecnie jako ilustrację powyższych rozważań przedstawimy przykłady widm X(N)(ejΩ)/N =
= X(N)(ej2πf/fpr)/N (8.13a) i X(k) (8.14a) dla dwóch sygnałów dyskretnych: x1(n) = pT(n∆t−T)
(4.26) oraz x2(n) = cos(2πf1(n∆t))+0,5sin(2πf2(n∆t)) = cos(2π(f1/fpr)n)+0,5sin(2π(f2/fpr)n), n =
= 0, 1, 2, ..., N−1, okres próbkowania ∆t = 1/fpr. Przyjmijmy następujące wartości parametrów:
f1 = 1 Hz, f2 = 2 Hz, fpr = 16 Hz, skąd ∆t = 1/fpr = 1/16 s, N = 16, T = 4∆t = 1/4 s. Przypomnijmy, zmienności k = 0, 1, 2, ..., N−1 odpowiadają częstotliwości określone wzorem (8.17).
Wyniki analizy są przedstawione na rysunku 8.3, po lewej stronie dla sygnału x1(n), po prawej
zaś − dla sygnału x2(n). W pionie kolejno są zaprezentowane: analizowane sygnały x1(n) i x2(n)
oraz części rzeczywiste, urojone, moduły i fazy ich widm (odpowiednio funkcje: Re(.), Im(.), |.|
oraz φ(.)). Za pomocą symboli „•” oznaczono pobrane próbki sygnałów oraz „prążki” charakterystyk częstotliwościowych dyskretnych widm X1(k) i X2(k), natomiast linią ciągłą na rysunkach zaznaczono odpowiednie charakterystyki widm X1(N)(ej2πf/fpr)/N i X2(N)(ej2πf/fpr)/N, obliczone dla częstotliwości f z przedziału [0, fpr). Charakterystyki ciągłe stanowią odniesienie dla
charakterystyk dyskretnych. W przypadku charakterystyki fazowej symbolem „³” oznaczono
punkty, w których obliczenie wartości kąta liczby zespolonej nie było możliwe, ponieważ
moduł tej liczby był równy zero. W takim przypadku za wynik analizy przyjmowano średnią
wartość kątów „lewego” i „prawego” sąsiada punktu nieciągłości „ciągłej” charakterystyki
fazowej. Ponieważ w eksperymencie przyjęto N = 16 i fpr = 16 Hz, oś pozioma charakterystyk
częstotliwościowych jednocześnie „pokazuje” numery kolejnych prążków widm dyskretnych
X1(k) i X2(k) (k = 0, 1, 2, ..., 5) oraz ciągłą częstotliwość f w hercach z zakresu [0, 16 Hz) dla
widm ciągłych X(N)(ejΩ)/N i Y(N)(ejΩ)/N (Ω = 2πf/fpr).
Na podstawie rysunku 8.3 można wyciągnąć następujące wnioski.
1) „Prążki” X(k) dyskretnej transformacji Fouriera „próbkują” ciągłe widmo X(N)(ejΩ)/N w zakresie częstotliwości [0, fpr). Zgodnie z (8.17) „próbek” widma jest dokładnie tyle samo ile
próbek sygnału wejściowego, czyli N. W związku z tym należy zachować dużą ostrożność
„interpretacyjną”, gdyż próbkowanie widma może być dla nas mniej lub bardziej korzystne.
Ilustrację zupełnie nieoczekiwanych problemów interpretacyjnych, mogą stanowić widma
dwóch „krystalicznie czystych”, pojedynczych sygnałów sinusoidalnych x3(t) = sin(2π(f3/fpr)n)
oraz x4(t) = sin(2π(f4/fpr)n) dla f3 = 2 Hz i f4 = 2,5 Hz, przedstawione na rysunku 8.4. Parametr
fpr oznacza jak poprzednio częstotliwość próbkowania równą 16 herców. Pierwsze z widm, pokazane na rysunku 8.4a, jest zgodne z naszymi oczekiwaniami: ponieważ w sygnale występuje
tylko jedna „częstotliwość”, więc tylko jeden prążek widma jest niezerowy. Natomiast drugie
widmo, zaprezentowane na rysunku 8.4b, zawsze wprawia nowicjuszy w zakłopotanie i prowadzi do komentarza: „dlaczego tak wiele prążków jest różnych od zera? przecież w sygnale
występuje tylko jedna (ko)sinusoida!” Idealne widma, podobne do tego z rysunku 8.4a, są
otrzymywane tylko wtedy, kiedy za pomocą N-punktowego DFT analizowany jest dyskretny
Analiza częstotliwościowa sygnałów dyskretnych
1
0.8
0.6
0.4
0.2
0
0.5
0.4
0.3
0.2
0.1
0
-0.1
x2(n)
t [s]
0.6
0.8
1
2
4
6
2
4
6
2
4
8
f [Hz]
10 12 14 16
8
f [Hz]
2
4
0
10 12 14 16
8
f [Hz]
6
8
f [Hz]
10 12 14 16
t [s]
0.6
0.8
1
2
4
6
8
10 12 14 16
8
10 12 14 16
8
10 12 14 16
8
10 12 14 16
f [Hz]
2
4
6
f [Hz]
|X2(ej2πf /fpr)|
0
3
2
1
0
-1
-2
-3
0.4
Im( X2(ej2πf /fpr) )
0
10 12 14 16
0.2
Re( X2(ej2πf /fpr) )
0.4
0.2
0
-0.2
-0.4
)( X1(ej2πf /fpr) )
0
0
0.5
0.4
0.3
0.2
0.1
0
6
x2(t) x2(n)
0.5
0.4
0.3
0.2
0.1
0
-0.1
|X1(ej2πf /fpr)|
0
3
2
1
0
-1
-2
-3
0.4
Im( X1(ej2πf /fpr) )
0
0.5
0.4
0.3
0.2
0.1
0
0.2
Re( X1(ej2πf /fpr) )
0
0.4
0.2
0
-0.2
-0.4
2
1
0
-1
-2
x1(t)
0
203
2
4
6
f [Hz]
)( X2(ej2πf /fpr) )
0
2
4
6
f [Hz]
Rys. 8.3. Widma X(N)(ej2πf/fpr)/N (8.13a) (linia ciągła) i X(k) (8.14a) (punkty „•”) dla dwóch sygnałów
dyskretnych: x1(n) = pT(n∆t−T) oraz x2(n) = cos(2πf1(n∆t))+0,5sin(2πf2(n∆t)), n = 0, 1, 2,..., N−1. Wartości
parametrów: N = 16, fpr = 16 Hz, skąd ∆t = 1/fpr = 1/16 s, T = 4∆t = 1/4 s, f1 = 1Hz, f2 = 2 Hz
Analiza częstotliwościowa sygnałów dyskretnych
204
a) fx = 2 Hz
0.5
b) fx = 2,5 Hz
|X3(N)(ej2πf /fpr)|
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
0
0
0.5
2
4
6
8
f [Hz]
10 12 14 16
|X3(k)|
0
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
k
10 12 14 16
|X4(N)(ej2πf /fpr)|
2
4
6
4
6
8
10 12 14 16
8
10 12 14 16
f [Hz]
|X4(k)|
0
2
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-punktowego 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 sygnał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 sygnał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 transformacją zawsze odwracalną. Stanowi ona zawsze w stu procentach udaną aproksymację N-elementowego wektora próbek analizowanego sygnału (nawet impulsowego) za pomocą N ortogonalnych wektorów bazowych N-elementowych (przykład N-wymiarowej przestrzeni wektorowej − patrz rozdział 2). Ale w sytuacji kiedy w sygnale występuje składowa sinusoidalna, 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 rysunki 2.4 i 2.5).
2) Część rzeczywista widma Fouriera reprezentuje „zawartość” w sygnale składowych kosinusoidalnych, 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 rozpatrywanym 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ę „zlewać”. Taka sytuacja występuje dla składowych 1 i 2 herce w analizowanym sygnale x2(n). Receptą 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 moduł 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 „odseparowanie” 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 „zapisó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 „kierunku przybycia” (ang. DOA − Direction of Arrival) wroga w pasywnych systemach radarowych.
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 dyskretne 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 fazowej 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).
Analiza częstotliwościowa sygnałów dyskretnych
206
a)
b)
0.5
|X2a(N)(ej2πf /fpr)|
|X2b(N)(ej2πf /fpr)|
0.6
0.4
0.4
0.3
0.2
0.2
0.1
0
0
0
0.5
2
4
6
8
f [Hz]
0
10 12 14 16
|X2a(N)(ej2πf /fpr)|
0.3
2
4
6
8
f [Hz]
10 12 14 16
|X2b(N)(ej2πf /fpr)|
0.4
0.2
0.3
0.2
0.1
0.1
0
0
0
0.5
2
4
6
8
f [Hz]
10 12 14 16
|X2a(N)(ej2πf /fpr)|
0
0.15
2
4
6
8
10 12 14 16
8
10 12 14 16
f [Hz]
|X2b(N)(ej2πf /fpr)|
0.4
0.1
0.3
0.2
0.05
0.1
0
0
0
2
4
6
8
f [Hz]
10 12 14 16
0
2
4
6
f [Hz]
Rys. 8.5. Ilustracja metod zwiększania rozdzielczości analizy częstotliwościowej realizowanej metodą DFT:
a) analiza większej liczby próbek sygnału: x2a(n) = cos(2π(f1 / fpr)n)+0,5sin(2π(f2 / fpr)n), f1 = 1 Hz, f2 = 2 Hz,
n = 0, 1, 2, ..., N−1, dla N = 16, 32 i 64 próbek (kolejno od góry do dołu); b) uzupełnienie N próbek sygnału
na końcu M zerami: 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,
dodanie M = 0, 16, 48 wartości zerowych (kolejno od góry do dołu)
8.3. Interpretacja dyskretnego przekształcenia Fouriera
Obecnie zajmiemy się zagadnieniem właściwej interpretacji dyskretnego widma sygnału dyskretnego jako estymaty ciągłego widma sygnału ciągłego. W praktycznych zastosowaniach
analizy częstotliwościowej interesuje nas bowiem widmo ciągłego sygnału rzeczywistego,
generowanego przez obserwowany obiekt fizyczny, a nie jego „odbicie” uzyskane „w krzywym
zwierciadle” metod komputerowych. W związku z tym przyjrzymy się obecnie bliżej
Analiza częstotliwościowa sygnałów dyskretnych
207
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 przypomnienie 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 dyskretne powstają w wyniku spróbkowania sygnałów ciągłych. Równocześnie interesują nas cechy „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 fragmentu 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” analizowany 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. „Wycinamy” 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 przedstawiony 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ż dokładnie jakie jest jego pochodzenie.
Rysunek 8.6 powinien nas jednoznacznie przekonać, że opłacała się matematyczna „wspinaczka” 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 oscylacjami. 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 zauważyć wierzchołek składowej kosinusoidalnej o odległej częstotliwości i małej amplitudzie,
Analiza częstotliwościowa sygnałów dyskretnych
208
x(t)
a)
X(ω)
b)
t
ω
-ω0 ω0
w(t)
c)
|W(ω)|
d)
t
ω
T
0
xw(t)=x(t)w(t)
e)
|Xw(ω)|=|X(ω)⊗W(ω)|
f)
t
0
ω
T
-ω0 ω0
|Xw(n)(ω)|
xw(n)
g)
h)
n
0
ω
N
-2ωp
-ωp
0
ωp
2ωp
|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
x(t)
a)
209
X(ω)
b)
t
ω
-ω0 ω0
w(t)
c)
|W(ω)|
d)
t
ω
T
0
xw(t)=x(t)w(t)
e)
|Xw(ω)|=|X(ω)⊗W(ω)|
f)
t
0
ω
T
-ω0 ω0
|Xw(n)(ω)|
xw(n)
g)
h)
n
0
ω
N
-2ωp
-ωp
0
ωp
2ωp
|Xw(n)(ω)|
h)
ω
0
ω0
ωp-ω0 ωp
Rys. 8.7. Przykładowe widmo fragmentu sygnału kosinusoidalnego, „wyciętego” przez okno Hanninga i potem 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 amplitudzie. 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 prostoką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ęstotliwoś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.
Na koniec tego podrozdziału wykorzystamy jeszcze zdobytą w nim wiedzę do wytłumaczenia
dwóch technik polepszania rozdzielczości częstotliwościowej analizy, które były przedstawione na rysunku 8.5. W pierwszym przypadku (rysunek 8.5a) zwiększano liczbę analizowanych
próbek sygnału. Jest to równoznaczne ze zwiększeniem długości okna prostokątnego analizy,
a to prowadzi do zawężenia widma okna (patrz rysunek 4.7). W wyniku tego ciągłe widma
X(N)(ej2πf/fpr)/N składowych sygnału przestały się „zlewać”. Równocześnie widmo było próbkowane gęściej, gdyż N rosło. W drugim przypadku (rysunek 8.5b) analizowano stałą liczbę
próbek sygnału, która była w sztuczny sposób uzupełniona coraz większą liczbą zer. Długość
okna prostokątnego „wycinającego” analizowany fragment sygnału była więc stała, a to powodowało, że kształt ciągłego widma X(N)(ej2πf/fpr)/N także był niezmienny. Dodawanie zer powodowało jedynie gęściejsze próbkowanie tego widma, czyli znalezienie jego potencjalnych
załamków wskazujących na istnienie większej liczby składowych częstotliwościowych. Jak
widać ponownie dobra znajomość „świata” sygnałów analogowych pozwala na łatwą interpretację zjawisk obserwowanych w „świecie” cyfrowym.
8.4. Tor przetwarzania sygnałów podczas analizy
częstotliwościowej
Na rysunku 8.8 przedstawiono tor przetwarzania sygnałów, który jest w praktyce realizowany
podczas analizy częstotliwościowej sygnałów. Celem analizy jest „estymacja” (oszacowanie)
widma X(jω) (8.3a) ciągłego sygnału x(t), który znajduje się na początku tego toru, na podstawie widma X(k) (8.14a) dyskretnego sygnału x(n), powstałego w wyniku kolejnych operacji,
wykonywanych na sygnale x(t). Operacjami tymi są:
Analiza częstotliwościowa sygnałów dyskretnych
211
1) filtracja dolnoprzepustowa sygnału x(t) filtrem „antyaliasingowym” o odpowiedzi impulsowej h(t), która ma zapewnić, aby podczas próbkowania sygnału x(t) spełnione było twierdzenie Kotielnikowa-Shannona:
x ( LP ) ( t ) =
+∞
∫ x ( τ) h (t − τ) d τ ,
X ( LP) ( jω) = H ( jω) ⋅ X ( jω)
(8.31)
−∞
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 charakterystyki w dziedzinie częstotliwości (prostokątnej, zero-jedynkowej charakterystyki amplitudowej i zerowej charakterystyki fazowej), widmo X(LP)(ω) różni się od widma X(ω).
x(t)
Filtr
LP
x(LP)(t)
Układ
P&P
x(n)
xw(n)
A/C
Xw(k)
DFT
w(n)
Rys. 8.8. Schemat blokowy toru przetwarzania sygnałów podczas analizy częstotliwościowej ciągłego sygnału x(t) za pomocą dyskretnej transformacji Fouriera DFT
2) dyskretyzacja w czasie, kwantyzacja i kodowanie sygnału przez układ próbkowania z podtrzymaniem (P&P) i przetwornik analogowo-cyfrowy (A/C). Jak pamiętamy z rozdziału czwartego próbkowanie sygnału powoduje, że widmo Xδ(jω) sygnału „idealnie” spróbkowanego xδ(t)
(8.1) jest sumą (8.2) poprzesuwanych w częstotliwości (co częstotliwość próbkowania fp lub
pulsacja ωp = 2πfp) widm X(jω) sygnału ciągłego x(t). W wyniku spróbkowania sygnału x(LP)(t)
(po filtrze LP) zależności „widmowe” są analogiczne:
(
)
x (n ) = xδ( LP ) (t ) = A / C x ( LP ) (t ) ,
X (e jΩ ) = X δ( LP ) ( jω) =
∞

1 
ω 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:
( )
X w e jΩ =
1 π
jΘ
j ( Ω−Θ)
) dΘ
∫ X (e ) W ( e
2π −π
(8.34)
4) wyznaczenie dyskretnej transformaty Fouriera, czyli w praktyce spróbkowanie widma
Xw(ejΩ) w punktach Ωk = k⋅2π/N, k = 0, 1, 2, ..., N−1:
Analiza częstotliwościowa sygnałów dyskretnych
212
X w (k ) = DFT ( x w (n ) ) =
X w ( k ) = X ( e jΩ )
N −1
∑ x w (n )e − j (2π / N )k n ,
k = 0, 1, 2,..., N − 1
(8.35a)
n =0
(8.35b)
Ω=Ω k = 2 πk / N
odpowiadających częstotliwościom fk = kfp/N, k = 0, 1, 2, ..., N−1.
Rysunki 8.6 i 8.7 mogą stanowić ilustrację konsekwencji kolejnych operacji przeprowadzanych
w torze przetwarzania sygnałów podczas analizy częstotliwościowej realizowanej metodą
DFT. Nie została na nich jedynie „skomentowana” operacja filtracji dolnoprzepustowej, ograniczającej pasmo częstotliwościowe sygnału. Jak widać końcowe widmo Xw(k) zdecydowanie
się różni od interesującego nas widma X(jω). Nie możemy więc bezkrytycznie wierzyć w „odbicie w lustrze”. Jak widać duże znaczenie ma właściwy dobór filtra LP o odpowiednio stromej
charakterystyce częstotliwościowej, właściwy dobór funkcji okna o wąskim „listku głównym”
widma i nisko leżących „listkach bocznych” widma oraz odpowiednio gęste spróbkowanie
widma Xw(ejΩ), czyli analizowanie odpowiednio dużej liczby próbek sygnału.
Przystąpimy teraz do omówienia problemu wyboru funkcji okna obserwacji w(n), za pomocą
którego „wycinamy” fragment sygnału poddawany analizie.
8.5. Dyskretne okna czasowe
8.5.1. Okna nieparametryczne
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 kolejne 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 niezerowe 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) = 
0, pozostałe n
(8.36)
Stosując wzór (8.8a) otrzymujemy:
( ) ∑ wR (n)e − jΩn = ∑ wR (n)e − jΩn = ∑ e − jΩn
n = −∞
n =0
n =0
W R e jΩ =
∞
N −1
gdzie Ω jest pulsacją unormowaną równą:
N −1
(8.37)
Analiza częstotliwościowa sygnałów dyskretnych
213
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
Nazwa okna
Definicja okna w(n), 0 ≤ n ≤ N−1
∆ml
Asl
1
4π/N
13,3 dB
8π/N
26,5 dB
Prostokątne
2 n − ( N − 1) / 2
Trójkątne (Bartletta)
1−
Hanninga (Hanna)
1
 2 πn  
1 − cos

2
 N −1
8π/N
31,5 dB
Hamminga
 2πn 
0,54 − 0, 46 cos 

 N −1
8π/N
42,7 dB
Blackmana
 2πn 
 4πn 
0, 42 − 0,50 cos 
 + 0, 08cos 

 N −1
 N −1
12π/N
58,1 dB
1
N −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), zdefiniowanych w tabeli 8-1, dla N = 100
Ω = 2πf / f p
(8.38)
Jeśli wprowadzimy oznaczenie:
WR (e jΩ ) = S
to wówczas z (8.37) wynika, że:
e − jΩ S =
N
∑ e − jΩn =
n =1
S (1 − e
− jΩ
) = 1− e
N −1
∑ e − jΩn + e − jΩN − e − jΩ0 = S + e − jΩN − 1
n =0
− j ΩN
skąd otrzymujemy:
( )
WR e jΩ = S =
1 − e − jΩ N
1− e
− jΩ
=
(
) = e− jΩ( N −1) / 2 sin(ΩN / 2)
sin(Ω / 2)
e − j Ω / 2 ( e j Ω / 2 − e − jΩ / 2 )
e − j Ω N / 2 e j Ω N / 2 − e − jΩ N / 2
(8.39a)
Analiza częstotliwościowa sygnałów dyskretnych
214
a) okno prostokątne
|W(ejΩ)/N|
0
-20
-40
-60
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
Ω/2π [Hz/Hz]
b) okno Hanninga
0
|W(ejΩ)/N|
-20
-40
-60
-80
-100
-0.5
-0.4
Ω/2π [Hz/Hz]
c) okno Hamminga
0
|W(ejΩ)/N|
-20
-40
-60
-80
-100
-0.5
-0.4
Ω/2π [Hz/Hz]
d) okno Blackmana
0
|W(ejΩ)/N|
-20
-40
-60
-80
-100
-0.5
-0.4
Ω/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:
( )
WRS e jΩ =
sin (Ω( 2 M + 1) / 2 )
sin(Ω / 2 )
(8.39b)
Oczywiście |WR(ejΩ)| = |WRS(ejΩ)|. Szerokość „listka głównego” okna prostokątnego (czyli odległ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) odpowiada 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 listkó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 Blackmana 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. Dlatego 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.
|Wnorm(ejΩ)/N|
0
-20
-40
-60
-80
-100
0
0.1
0.2
Ω/2π [Hz/Hz]
0.3
0.4
0.5
Rys. 8.11. Porównanie właściwości częstotliwościowych okna prostokątnego, Hamminga i Blackmana, zdefiniowanych 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)
Analiza częstotliwościowa sygnałów dyskretnych
216
Z rysunków 8.10 i 8.11 wynika, ze wzrost N powoduje zmniejszenie szerokości listka głównego 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 kosinusoidalnych postaci:
 2 πk 
n , − ∞ ≤ n ≤ ∞
wC( k ) ( n ) = wR (n ) cos
 N −1 
(8.41)
Widma tych składowych powstają w wyniku splotu widma okna prostokątnego (8.39) z widmem funkcji kosinus. Ponieważ
e jΩk n + e − jΩk n
2 πk
 2 πk 
n  = cos(Ω k n ) =
, Ωk =
cos
2
N −1
 N −1 
(8.42)
więc widmo okna wC(k)(n) jest sumą dwóch przeskalowanych (przez 1/2) widm okna prostokątnego, przesuniętych o +Ωk i −Ωk:
( )
WC( k ) e jΩ =
1 − j ( Ω −Ωk )( N −1) / 2 sin ((Ω − Ω k ) N / 2 ) 1 − j ( Ω +Ω k )( N −1) / 2 sin ((Ω + Ω k ) N / 2 )
(8.43)
+ e
e
2
sin ((Ω − Ω k ) / 2) 2
sin ((Ω + Ω k ) / 2 )
Ponieważ dla k = 1 mamy Ω1 = 2π/(N−1), więc dla dużego N możemy przyjąć Ω1 ≈ 2π/N. Wynika 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)
W sposób analogiczny można wykazać, że szerokość okna Blackmana wynosi:
∆ ml = ∆Ω R + 4Ω1 ≈ 4π / N + 4 ⋅ 2π / N ≈ 12π / N
(8.45)
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ć:
w( n ) =
K
 2 πk

∑ a (k ) cos N − 1 n  ,
n = 0, 1, 2,..., N − 1
(8.46)
k =0
to jego widmo jest równe:
W (e jΩ ) = a (0)WR (e jΩ ) +
K
a(k ) 
W ( e jΩ− 2 πk / N ) + WR ( e jΩ+ 2 πk / N ) 
 R

k =1 2
∑
(8.47)
Przykładowo dla okna Hanna postaci:
 2 πk 
w(n ) = 0,5 + 0,5cos 
n
 N −1 
(8.49)
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 najpierw wyznaczyć DFT XR(k) sygnału z oknem prostokątnym xR(n) = x(n)wR(n), a następnie zastą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:
X (e jΩk ) = 0, 5 X R (e jΩk ) + 0, 25 X R (e jΩk − 2 π / N ) + 0, 25 X R (e jΩk + 2 π / N )
(8.51a)
X (k ) = 0,5 X R (k ) + 0, 25 X R (k − 1) + 0, 25 X R (k + 1)
(8.51b)
czyli
Przykładowo dla k = 5, otrzymujemy:
X (5) = 0,5 X R (5) + 0, 25 X R (4) + 0, 25 X R (6)
Jest to swoista demonstracja zasady superpozycji (liniowości) dyskretnej transformacji Fouriera: jeśli okno składa się z kilku składowych, to widmo sygnału po operacji „okienkowania”
jest sumą kilku widm, z których każde jest wynikiem splotu widma sygnału z widmem poszczególnej składowej okna. W wyniku dodawania poprzesuwanych widm okna prostokątnego szerokość listka głównego sumarycznego widma się zwiększa, poziom jego listków bocznych zaś maleje (rysunek 4.8).
Oczywiście rodzina nieparametrycznych okien czasowych jest o wiele większa. Jednak oknom
nieparametrycznym nie poświęcimy więcej czasu, ponieważ istnieją okna parametryczne, których właściwości można elastycznie kształtować w zależności od potrzeb. Do najbardziej znanych okien parametrycznych należą okna Dolpha-Czebyszewa i Kaisera.
8.5.2. Okna parametryczne
Okno Dolpha-Czebyszewa
Okno Dolpha-Czebyszewa jest wynikiem optymalizacji, w której minimalizuje się szerokość
listka głównego widma przy założeniu określonej długości okna oraz przy ograniczeniu dopuszczalnej wysokości maksymalnego listka bocznego. Jest to okno optymalne, ponieważ charakteryzuje się ono listkiem głównym widma o najmniejszej szerokości ze wszystkich okien
o identycznej długości. Ograniczenie wysokości maksymalnego listka bocznego, leżącego
w paśmie „zaporowym”, a nie energii widma w tym paśmie, prowadzi do „spłaszczenia”
(„wyrównania” wysokości, równomiernego zafalowania) wszystkich listków bocznych. Energia
widma okna w paśmie zaporowym jest więc duża, a energia w paśmie przepustowym − mała.
Dzięki temu listek główny ma małą energię i jest wąski. Z tego powodu okno Dolpha-Czebyszewa jest szczególnie predestynowane do „wysokorozdzielczej” analizy częstotliwościowej.
Definicja okna Dolpha-Czebyszewa wDC(n), n = 0, 1, 2, ..., N−1, o parzystej lub nieparzystej
długości N jest następująca (M = (N−1)/2):
M
1
2πkm 
πk 

wDC (m + ( M + 1)) = C  + 2 ∑ TN −1  β cos  cos
, − M ≤ m ≤ M
N 
N 

k =1
γ
(8.52)
Analiza częstotliwościowa sygnałów dyskretnych
218
gdzie γ określa względną wysokość maksymalnego listka bocznego w stosunku do wysokości
listka głównego (np. γ = 0,01 lub 0,001, co odpowiada względnemu tłumieniu Asl = −20⋅
⋅log10(γ) = 40 dB lub 60 dB), parametr β jest zdefiniowany jako:
 1
1
 1

β = cosh
cosh −1  = cosh
cosh −1 (10 Asl / 20 ) 
N
N
−
γ
−
1
1




(8.53)
a TN−1(x) jest wielomianem Czebyszewa (N−1)-tego rzędu:
(
(
)
 cos ( N − 1) cos −1 x , x ≤ 1
TN ( x ) = 
−1
cosh ( N − 1) cosh x , x > 1
)
(8.54)
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ę taką 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ęstotliwoś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 rysunku 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 ) = 
I 0 (β )
0 ≤ n ≤ N−1
(8.55)
gdzie I0(β) oznacza funkcję Bessela zerowego rzędu, określoną wzorem:
 ( x / 2 )k 

I0 ( x ) = 1 + ∑ 
 k ! 
k =1 
∞
2
(8.56)
Ponieważ wraz ze wzrostem k kolejne składniki sumy szybko maleją, dobre przybliżenie funkcji 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
0
1
|Wnorm(ejΩ)/Ν|
w(n)
0.8
0.6
0.4
0.2
-40
-80
-120
0
0
10
20
30
-0.5
40
-0.25
0
0.25
0.5
Ω/2π [Hz/Hz]
n
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
|Wnorm(ejΩ)/Ν|
|Wnorm(ejΩ)/Ν|
0
-40
-80
-120
0
0.1
0.2
0.3
0.4
-40
-80
-120
0.5
0
0.1
Ω/2π [Hz/Hz]
0.2
0.3
0.4
0.5
Ω/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 γ, powodujemy zmniejszenie szerokości listka głównego widma okna
rowane okno coraz szybciej opadające do zera (rysunek 8.14a). W dziedzinie widmowej towarzyszy 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łównego 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:
0,

0,4
β = 0,76609 ( Asl − 13,26 ) + 0,09834 ( Asl − 13,26 ) ,
0,12438 ( A + 6,3) ,
sl

dla
dla
dla
Asl < 13,26 dB
13,26 < Asl < 60 dB
60 < Asl < 120
(8.57)
N = K , K =
24π( Asl + 12)
+1
155 ⋅ ∆ ml
gdzie K oznacza najmniejszą liczbę naturalną równą lub większą od K.
(8.58)
Analiza częstotliwościowa sygnałów dyskretnych
220
0
1
|Wnorm(ejΩ)/Ν|
w(n)
0.8
0.6
0.4
0.2
-40
-80
-120
-160
0
0
10
20
30
-0.5
40
-0.25
0
0.25
0.5
Ω/2π [Hz/Hz]
n
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
|Wnorm(ejΩ)/Ν|
|Wnorm(ejΩ)/Ν|
0
-40
-80
-120
-160
-40
-80
-120
-160
0
0.1
0.2
0.3
0.4
0.5
Ω/2π [Hz/Hz]
0
0.1
0.2
0.3
0.4
0.5
Ω/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
8.6. Przykłady analizy częstotliwościowej z wykorzystaniem
funkcji okien
Teraz postaramy się wykorzystać wiedzę zdobytą w tym rozdziale do zaprojektowania „narzędzia” analizy częstotliwościowej, opartego na przekształceniu Fouriera (8.8a) sygnałów
dyskretnych i mającego z góry przez nas zadane właściwości, tzn. charakteryzującego się określoną rozdzielczością częstotliwościową i amplitudową. Wysoka rozdzielczość częstotliwościowa pozwoli nam rozróżniać w widmie częstotliwości leżące blisko siebie, natomiast rozdzielczość amplitudowa umożliwi detekcję w widmie zarówno składowych o dużych amplitudach, jak i o małych. Wybór funkcji okna czasowego pozwala nam decydować o zadanej rozdzielczości amplitudowej analizy, natomiast zmiana jego długości pozwala wpływać na rozdzielczość częstotliwościową.
Przykład 1 - wybór okna i jego parametrów
W celach poglądowych zaprojektujemy okno Kaisera, które pozwoli na detekcję składowych
sygnału x(n) = A1cos(2πf1(n∆t)) + A2sin(2πf2(n∆t)) (n = 0, 1, 2, ..., N−1, ∆t = 1/fpr = 1/16 sekundy, A1 = 1; A2 = 0,5; f1 = 1 Hz; f2 = 2 Hz; fpr = 16 Hz), analizowanego w rozdziale 8.2.
Ponieważ chcemy rozróżnić dwie częstotliwości różniące się o ∆f = 1 Hz, dlatego przyjmujemy ∆ml = 2π(∆f/fpr) = 0,3926. Dodatkowo założymy, że amplituda składowej o częstotliwości
Analiza częstotliwościowa sygnałów dyskretnych
221
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 analizowanego 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. Pierwsze z nich jest zaznaczone linią ciągłą, a drugie − za pomocą symboli „•”. Jak widać odnieśliśmy sukces: obie składowe są w widmie wystarczająco „odseparowane”.
W związku z tym przeprowadzimy bardziej wymagający eksperyment: poddajmy analizie sygnał, 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: zaprojektowane narzędzie obliczeniowe do przeprowadzania analizy częstotliwościowej sygnałów mają założoną przez nas rozdzielczość częstotliwościową i amplitudową. W celach porównawczych na rysunku 18.17c przedstawiono widmo analizowanego sygnału, uzyskane w przypadku 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.
Przykład 2 - szybka interpolacja widma
W poprzednim przykładzie do wyznaczenia „ciągłych” (lub gęsto spróbkowanych) widm
Xw(ej2π f / fpr) wykorzystywaliśmy wzór (8.8a) lub (8.13a), natomiast wyrażenie (8.14a), definiujące dyskretną transformację Fouriera DFT, stosowaliśmy do obliczania wybranych próbek
widma Xw(k). W pierwszym przypadku otrzymujemy bardzo dobrą aproksymatę widma ciągłego, ale kosztem dużej złożoności obliczeniowej. Natomiast w drugim przypadku liczba wyznaczanych próbek widma jest zawsze równa liczbie próbek analizowanego sygnału, bardzo
często za mała, ale za to wyznaczana w sposób szybki za pomocą szybkich algorytmów FFT,
efektywnie implementujących DFT (8.14a). Algorytmy te poznamy w następnym rozdziale.
Mamy więc problem: albo wolno i dokładnie, albo szybko i pobieżnie. Istnieje jednak
interesująca możliwość kompromisowa, którą wcześniej już omówiono i zaprezentowano na
rysunku 8.5. Polega ona na uzupełnieniu na końcu zerami analizowanego, zokienkowanego
Analiza częstotliwościowa sygnałów dyskretnych
222
a) analizowany fragment sygnału dyskretnegox(n)
1.5
1
x(n)
0.5
0
-0.5
-1
0
10
20
30
40
50
60
70
80
90
100
110
120
70
80
90
100
110
120
110
120
n
w(n)
b) dyskretne okno Kaisera w(n) dla β = 10,734
3
2.5
2
1.5
1
0.5
0
0
10
20
30
40
50
60
n
xw (n)
c) sygnał xw(n) = x(n)w(n), czyli iloczyn analizowanego sygnału i funkcji okna
4
3
2
1
0
-1
-2
0
10
20
30
40
50
60
70
80
90
100
n
d) widmo W(ej2π f / fpr) okna Kaisera z rysunku b)
|W(ej2 πf / fpr )/N |
0
-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
|Xw (ej2 πf / fpr )/N|
e) widmo Xw(ej2π f / fpr) (linia ciągła) oraz Xw(k) („•”) sygnału xw(n) z rysunku c)
0
-20
-40
-60
-80
-100
-120
0
1
2
3
4
5
6
7
8
f [Hz]
Rys. 8.16. (cd.) Przykład analizy częstotliwościowej sygnału x(n) = A1cos(2πf1(n∆t))+A2sin(2πf2(n∆t))
xw (n)
a) fragment sygnału xw(n) = x(n)w(n) „wycięty” przez okno w(n) Kaseira (β = 10,734)
3
2
1
0
-1
-2
-3
0
10
20
30
40
50
60
70
80
90
100
110
120
n
|Xw (ej2 πf / fpr )/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
-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
|Xw (ej2 πf / fpr )/N|
0
-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
Analiza częstotliwościowa sygnałów dyskretnych
|Xw (ej2 πf / fpr )/N|
224
0
-20
-40
-60
-80
-100
-120
|Xw (ej2 πf / fpr )/N|
0
|Xw (ej2 πf / fpr )/N|
2
3
4
5
6
7
8
5
6
7
8
5
6
7
8
5
6
7
8
f [Hz]
0
-20
-40
-60
-80
-100
-120
0
1
2
3
4
f [Hz]
0
-20
-40
-60
-80
-100
-120
0
|Xw (ej2 πf / fpr )/N|
1
1
2
3
4
f [Hz]
0
-20
-40
-60
-80
-100
-120
0
1
2
3
4
f [Hz]
Rys. 8.18. Przykład analizy częstotliwościowej fragmentu zokienkowanego sygnału z rysunku 8.17a z wykorzystaniem 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
Wyniki analizy częstotliwościowej przedstawione w tym rozdziale uzyskano za pomocą programu komputerowego przedstawionego w tabeli 8-2.
Tab. 8-2. Przykład programu do przeprowadzania analizy częstotliwościowej sygnałów za pomocą dyskretnego przekształcenia Fouriera (8.8a) i (8.13a)
% Ćwiczenie: Analiza częstotliwościowa sygnałów metodą dyskretnego przekształcenia Fouriera
clear all;
clf;
% Podaj wartości parametrów analizy
fp = 16;
% częstotliwość próbkowania
df = 1;
% rozdzielczość częstotliwościowa analizy w Hz
Asl = 80;
% rozdzielczość amplitudowa analizy w dB (tłumienie listka bocznego)
dfn = df/fp;
% unormowana rozdzielczość analizy w Hz/Hz
Dml = 2*pi*dfn;
% szerokość listka głównego unormowana względem cz. próbkowania
% Obliczenie parametrów okna Kaisera: beta i N
if (Asl <= 13.26) beta = 0; end
if (13.26 < Asl & Asl <= 60) beta = 0.76609*(Asl-13.26)^0.4 + 0.09834*(Asl-13.26); end
if (60 < Asl & Asl <= 120) beta = 0.12438*(Asl+6.3); end
N = ceil( 24*pi*(Asl+12)/(155*Dml) ) + 1
beta
pause
% Generacja sygnału − dwie sinusoidy
% N = 200;
% długość sygnałów: przyjmij arbitralnie lub zastosuj N wyznaczone powyżej
ax1 = 1;
% amplituda sygnału 1
ax2 = 0.001;
% amplituda sygnału 2
fx1 = 1;
% częstotliwość sygnału 1 w Hz
fx2 = 2;
% częstotliwość sygnału 2 w Hz
fm = 32;
% maksymalna częstotliwość w Hz rysunku widma „okresowego”
NF = 1000;
% liczba punktów charakterystyki częstotliwościowej
dt
x1
x2
x12
=
=
=
=
1/fp; t = 0 : dt : (N-1)*dt;
ax1 * cos( 2*pi*fx1*t );
ax2 * cos( 2*pi*fx2*t );
x1 + x2;
x = x12;
% chwile próbkowania
% sygnał 1
% sygnał 2
% suma sygnałów 1 + 2
% wybierz sygnał: x1, x2 lub x12
stem(t,x,'-ko','filled'); axis tight; grid;
title('Sygnał analizowany'); xlabel('czas [s]'); pause
% Generacja okna
w1 = boxcar(N);
w2 = bartlett(N);
w3 = hanning(N);
w4 = hamming(N);
w5 = blackman(N);
w6 = kaiser(N,beta);
w = w6;
w = w';
% różne okna
%
%
%
%
%
% wybierz okno: wskazane okno Kaisera
% zamień wektor pionowy na poziomy
skala = sum(boxcar(N))/sum(w); w = skala*w; % normowanie
plot(w,'-k'); grid; axis tight;
title('Funkcja okna'); xlabel('nr próbki'); pause
% Widmo okna − własna implementacja równania (8.8a), (8.13a)
Analiza częstotliwościowa sygnałów dyskretnych
226
df=fp/(NF-1); f = -fp/2:df:fp/2;
% próbkowanie częstotliwości
omega=2*pi*f/fp;
% pulsacja unormowana
n = 0 : N-1;
% indeks czasu
for k=1:NF
%
W(k)=sum( w .* exp(-j*omega(k)*n) );
% widmo Fouriera (8.8a) dla k-tego omega
end
%
W = abs(W)/N; W = 20*log10(W);
% wartość bezwzględna i normowanie
plot(f,W,'-k'); grid; axis tight;
title('Moduł widma okna w dB'); xlabel('f [Hz]'); pause
% x = hilbert(x);
xw = x .* w;
% opcjonalnie zastosuj transformację Hilberta
% wymnóż sygnał z oknem
% Widmo „niespróbkowane” (8.8a) , (8.13a), okresowe − funkcja Matlaba freqz()
df = 2*fm/(NF-1); f = -fm:df:fm;
X = freqz(xw,1,f,fp); X = 2*abs(X)/N; X = 20*log10(X);
plot(f,X,'-k'); grid; xlabel('f [Hz]'); axis tight;
title('Widmo (8.8a) "niespróbkowane" okresowe'); pause
% Widmo „niespróbkowane” (8.8a), (8.13a), jeden okres − funkcja Matlaba freqz()
[X1,f1] = freqz(xw,1,NF,'whole',fp); X1 = 2*abs(X1)/N; X1 = 20*log10(X1);
plot(f1,X1,'-k'); grid; xlabel('f [Hz]');
title('Widmo (8.8a) "niespróbkowane - jeden okres"'); pause
% Widmo „spróbkowane” DFT (8.14a), tylko jeden okres − program własny
n=0:N-1;
for k=0:N-1
X2(k+1)=sum( xw.* exp(-j*2*pi*k*n/N) );
end
f0 = 1/(N*dt); f2 = 0:f0:(N-1)*f0; 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 moje dft()'); pause
% 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
% Demonstracja interpolacji widma metodą dodawania zer i wyznaczania DFT (FFT)
Nx = N; x = x(1:Nx);
% wybierz fragment sygnału (Nx<=N)
w = kaiser(Nx,beta);
% wygeneruj dla niego okno
skala = sum(boxcar(Nx))/sum(w); w = skala*w'; % przeskaluj okno
xw = x.*w;
% wymnóż fragment sygnału z oknem
Niter = 8; Nfft = 128;
% liczba iteracji, początkowa długość DFT (FFT)
for iter = 1 : Niter
% w pętli uzupełnianie zerami do długości Nfft
X = 20*log10( 2*abs( fft(xw,Nfft) )/Nx ); % i wyznaczanie DFT (FFT)
df = fp/Nfft; f = 0:df:(Nfft-1)*df; k = 1:Nfft/2+1;
plot(f(k),X(k),'ko',f(k),X(k),'b-');
xlabel('f [Hz'); grid; title('Interpolowanie widma: zera + DFT(FFT)'); pause
Nfft = 2 * Nfft;
end
8.7. Szybkie wyznaczanie funkcji autokorelacji i funkcji gęstości
widmowej mocy
Do tej pory koncentrowaliśmy się na analizie częstotliwościowej sygnałów bezszumowych.
W przypadku występowania addytywnego szumu sprawy się nieco komplikują. Jak pamiętamy
z rozdziału 1 do analizy częstotliwościowej losowych sygnałów ciągłych stosuje się funkcję
Analiza częstotliwościowa sygnałów dyskretnych
227
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):
1
Rˆ xx (m) =
N
PˆN ( f k ) =
N −1− |m |
∑
x (n ) x ∗ (n − m), m = 0, 1, 2, ..., M − 1
(8.59)
n =0
M −1
∑
w( m) Rˆ xx (m) e
− j 2π
fk
m
f pr
(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)
N − liczba próbek sygnału wejściowego
M − liczba wyznaczanych współczynników funkcji autokorelacji
K = N+(M−1), m = 0, 1, 2, ..., M−1, fk = (k/K)fpr, k = 0, 1, 2, ..., K−1)
1. Pobierz N próbek sygnału: x(n), n = 0, 1, 2, ..., N−1.
2. Uzupełnij ten sygnał na końcu M−1 zerami do długości K = N+(M−1).
3. Oblicz K-punktowe DFT (FFT) (8.15a) sygnału:
X (k ) =
K −1
∑ x(n)e − j( 2π / K )kn ,
k = 0, 1, 2, ..., K − 1
n=0
4. Oblicz K-punktowe odwrotne IDFT (IFFT) (8.15b) z |X(k)|2 = X(k)X*(k) (iloczyn widm X(k)X*(k) w dziedzinie częstotliwości jest równoważny operacji autokorelacji sygnału w dziedzinie czasu, zgodnie
z (4.15)):
1 K −1
2
R xx ( n ) =
∑ X (k ) e j (2 π / K )kn , n = 0, 1, 2, ..., N − 1
K k =0
Poprawnych jest pierwszych M wartości wektora Rxx(n), n = 0, 1, 2, ..., M−1.
5. Utwórz sygnał s(n) dla n = 0, 1, 2, ..., K−1 (w(m) oznacza funkcję okna czasowego):
R xx (n ) w( n ),


s( n ) = 
0,
 R ( K − n ) w( K − n ),
 xx
0 ≤ n ≤ M −1
M ≤n≤K −M
K − M +1 ≤ n ≤ K −1
6. Oblicz K-punktowe DFT (IDFT) (8.15a) sygnału s(n):
Pxx ( k ) =
K −1
∑ s(n)e − j (2π / K )nk ,
n =0
k = 0, 1, 2, ..., K − 1
228
Analiza częstotliwościowa sygnałów dyskretnych
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 zakresu 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 rzeczywistych 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 zaszumionego 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). Przypomnijmy, 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 zaszumionego 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 rysunkach 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)
% Ćwiczenie: Szybkie wyznaczanie funkcji autokorelacji i funkcji gęstości widmowej mocy
clear all; subplot(111);
% Generacja sygnału analizowanego
N=256; fpr = 1000; fx = 100; dt=1/fpr; t=0:dt:(N-1)*dt; tR=-(N-1)*dt:dt:(N-1)*dt;
x = sin(2*pi*fx*t) + randn(1,N); xc = x;
plot(t,x); grid; axis tight; title('Sygnał analizowany'); xlabel('czas [sek]'); pause
% Obliczenie funkcji autokorelacji sygnału procedurą Matlaba
R1 = xcorr(x,x,'biased');
subplot(211); plot(tR,R1); title('Funkcja autokorelacji wyznaczona procedurą Matlaba');
grid; axis tight;
% Obliczenia „ręczne” bezpośrednio z definicji
R2 = [];
for k=0:N-1
R2(k+1)= sum( x(1:N-k).*x(1+k:N) ) / N;
end
R2 = [ R2(N:-1:1) R2(2:N) ];
subplot(212); plot(tR,R2); title('Funkcja autokorelacji wyznaczona "ręcznie"');
xlabel('czas [sek]'); grid; axis tight; pause
% Obliczenia „szybkie” M-pierwszych współczynników funkcji autokorelacji za pomocą FFT
M = N/8;
% podaj liczbę współczynników
x = [x zeros(1,M-1)];
% dodaj M−1 zer na końcu sygnału
X = fft(x);
% oblicz FFT (N+M−1)-punktowe
X = X.*conj(X);
% oblicz |X(k)|^2
R3 = ifft(X);
% oblicz odwrotne FFT (N+M−1)-punktowe
R3 = real(R3(1:M))/N;
% pobierz poprawne wartości, przeskaluj
Analiza częstotliwościowa sygnałów dyskretnych
a)
229
x(t)
3
2
1
0
-1
-2
-3
0
0.05
0.1
0.15
0.2
0.25
t [s]
b)
1.5
1
Rxx(τ)
0.5
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
Rxx(τ)
0.5
0
-0.5
-1
0
0.005
0.01
0.015
0.02
0.025
0.03
τ [s]
Pxx(f)
d)
12
10
8
6
4
2
0
0
50
100
150
200
250
300
350
400
450
500
300
350
400
450
500
f [Hz]
e)
8
Pxx (f)
6
4
2
0
0
50
100
150
200
250
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 autokorelacji, 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
subplot(111); k=1:M; plot(t(k),R1(N:N+M-1),'r',t(k),R3(k),'b'); grid;
title('Metoda "szybka" - Matlab (red), My (blue)'); xlabel('czas [sek]'); pause
% 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
% Porównaj ją z nieuśrednionym periodogramem (1.51) całego sygnału
w = hanning(N)';
% wybór funkcji okna
S1 = abs( fft( xc.*w ) ).^2;
% periodogram
S1 = S1/(sum(w.*w));
% normowanie
df = fpr/N; f=0:df:(N-1)*df; k=1:N/2+1;
subplot(312); plot(f(k),S1(k)); grid; title('Periodogram całego sygnału');
xlabel('f [Hz]'); pause
% Porównaj ją z uśrednionym periodogramem (1.52) wielu fragmentów sygnału
Nfft = N; Nwind = M; Noverlap = M/2; % długość FFT, długość okna, liczba próbek nakładania się okien
Nshift = Nwind-Noverlap;
% przesunięcie pomiedzy kolejnymi fragmentami sygnału
K=floor((N-Nwind)/Nshift)+1;
% liczba analizowanych fragmentów sygnału
w = hanning(Nwind)';
% wybór okna
S2 = zeros(1,Nfft);
% inicjalizacja wektora uśrednionego periodogramu
for k=1:K
% numer fragmentu sygnału
n = 1+(k-1)*Nshift : Nwind+(k-1)*Nshift;
% indeksy analizowanych próbek
bx = x(n); bx = bx.*w; bxz = [bx zeros(1,Nfft-Nwind)]; % bufor, nałożenie okna, dodanie zer
X = fft(bxz,Nfft);
% transformata Fouriera
S2 = S2 + abs(X).^2;
% akumulowanie periodogramów
end
% normowanie
S2 = S2/(K*sum(w.*w));
df = fpr/Nfft; f2=0:df:(Nfft-1)*df; k=1:Nfft/2+1;
% to samo co wyżej, tylko za pomocą funkcji Matlaba
% [S2, f2] = psd(xc,Nfft,fpr,w,Noverlap);
subplot(313); plot(f2(k),S2(k)); grid;
title('Uśredniony periodogram fragmentów sygnału'); xlabel('f [Hz]'); pause
9
Algorytmy wyznaczania
dyskretnej transformacji Fouriera
W poprzednim rozdziale zajmowaliśmy się problemem interpretacji dyskretnego widma X(k)
sygnału x(n) i zagadnieniem doboru parametrów (liczba próbek sygnału, rodzaj użytego okna
czasowego, ewentualne uzupełnienie sygnału zerami), gwarantujących wystarczającą rozróżnialość (rozdzielczość) częstotliwościową i amplitudową analizy częstotliwościowej sygnałów,
wykonywanej za pomocą dyskretnej transformacji Fouriera DFT (ang. Discrete Fourier Transform). Obecnie skoncentrujemy się na aspektach numerycznych tej analizy. Przeanalizujemy
strukturę obliczeniową algorytmu DFT i pokażemy istniejące możliwości jego przyspieszenia.
W wyniku ich zastosowania otrzymuje się algorytmy tzw. szybkich transformacji Fouriera FFT
(ang. Fast Fourier Transform), czyli transformacji dających wynik identyczny jak DFT, ale
wyznaczanych w sposób „szybki”, prostszy obliczeniowo.
9.1. Metoda bezpośrednia
Przypomnijmy równania dyskretnej transformacji Fouriera (WN = exp(j2π/N)):
X (k ) =
x (n ) =
1
N
N −1
∑ x(n )WN− kn ,
k = 0, 1, 2,..., N − 1
(analiza)
(9.1)
n = 0, 1, 2,..., N − 1
(synteza)
(9.2)
n =0
N −1
∑ X (k )WNkn ,
k =0
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:
X (k ) =
x (n ) =
1
N
N −1
N −1
∑ x(n ) f k* (n ),
k = 0, 1, 2, ..., N − 1
(9.3)
n = 0, 1, 2, ..., N − 1
(9.4)
n =0
∑ X (k ) f k (n ),
k =0
Przypomnijmy: na podstawie N próbek sygnału x(n) wyznaczamy N wartości („próbek”,
„prążków”) widma Fouriera X(k) (9.1). Z kolei dysponując tymi prążkami jesteśmy w stanie
Algorytmy wyznaczania dyskretnej transformacji Fouriera
232
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):
f k (n) =
 2π 
j  k n
e N  ,
n = 0, 1, 2, ..., N − 1
(9.5)
jest ortonormalny w N-wymiarowej przestrzeni wektorowej z iloczynem skalarnym:
f k , fl =
1
N
N −1
0, k ≠ l
k =l

∑ f k (n ) f l* (n ) = 1,
n =0
(9.6)
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):
x (n ) =
N −1
∑ X k f k (n) ,
X k = x, f k
k =0
l N2
=
1
N
N −1
∑ x(n ) f k* (n )
(9.7)
n =0
są dyskretnymi odpowiednikami zależności (2.14), (2.10) z rozdziału drugiego:
x (t ) =
N
∑ α k xk (t ) ,
k =1
α k = x, x k
L2T
=
1
T
T
∫ x(t ) xk (t )dt
*
(9.8)
0
w sytuacji kiedy rozważamy N-wymiarową przestrzeń wektorową dyskretnych sygnałów okresowych x(n). Jest to przestrzeń N-wymiarowa, ponieważ jej elementy są N-wymiarowe (sygnały przestrzeni mają N próbek, czyli N „stopni swobody”).
Równania (9.1) i (9.2) można zapisać macierzowo:
1
 X ( 0) 
1
 X (1) 

 1
 X ( 2)  = 1

 N #
#



1
 X ( N − 1)
 x ( 0) 
 x (1) 


 x ( 2) 


#


 x ( N − 1)
=
1
1

1

#
1
  x ( 0) 
  x (1) 
 

 ⋅  x(2) 
 

#
#
 

− ( N −1)( N −1) 
WN
  x ( N − 1)
" 1
1
1
WN−1
WN− 2
WN− 2
WN− 4
"
#
#
%
WN− ( N −1)
WN− 2( N −1)
"
"
WN− ( N −1)
WN− 2( N −1)
  X ( 0) 
  X (1) 
 

 ⋅  X ( 2) 
 

#
#
 

( N −1)( N −1) 
WN
  X ( N − 1)
(9.9)
" 1
1
1
WN1
WN2
WN2
WN4
"
#
#
%
"
WNN −1 WN2( N −1) "
WNN −1
WN2( N −1)
(9.10)
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:
X=
1 *
W x
N
x = WX
(analiza)
(9.11)
(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 harmoniczne funkcje bazowe fk(n), k = 0, 1, 2, ..., N−1, a w kolejnych wierszach macierzy W* (równanie 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 realizacji 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 teoretyczna, 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 obliczeń 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-bitowe 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ń zespolonych. 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 obliczeniowy 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ć wykorzystywany 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 transformacja Fouriera może być przedstawiona jako złożenie dwóch transformacji jednowymiarowych, 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.
Algorytmy wyznaczania dyskretnej transformacji Fouriera
234
9.2. Algorytm Goertzela
W wielu zastosowaniach nie jest konieczne wyznaczenie wszystkich prążków widma Fouriera
X(k) analizowanego sygnału x(n). Sytuacja taka występuje przykładowo w telefonach z wybieraniem tonowym, w których naciśnięcie jakiejś cyfry jest sygnalizowane za pomocą sumy
dwóch sygnałów sinusoidalnych. Załóżmy, że możemy generować osiem sygnałów sinusoidalnych o częstotliwościach występujących w dyskretnym szeregu Fouriera, należących do dwóch
zbiorów A = {f1, f2, f3, f4} i B = {f5, f6, f7, f8}. Są to następujące częstotliwości (w hercach): 697,
770, 852, 941, 1209, 1336, 1477, 1633. Jak widać nie są to sygnały harmoniczne. Wybranie
określonej cyfry na klawiaturze telefonu jest równoznaczne wygenerowaniu sygnału analogowego, będącego sumą tylko dwóch sygnałów składowych, po jednym z każdego zbioru. Mamy
więc do wyboru 16 możliwości, gdyż do każdego z sygnałów pierwszego zbioru możemy
dodać tylko jeden z czterech sygnałów zbioru drugiego. Po co w związku z tym po spróbkowaniu sygnału analogowego wyznaczać wszystkie prążki szeregu Fouriera, kiedy tylko
osiem z nich jest dla nas istotnych? Oczywiście, nie jest to rozsądne. Wobec tego wyznaczamy
tylko tych osiem prążków, jednocześnie minimalizując pamięć potrzebną na przechowywanie
próbek ośmiu wybranych baz fourierowskich. Należy w tym miejscu jeszcze raz zwrócić szczególną uwagę na fakt, że częstotliwości fk nie są harmoniczne, a więc nie mogą być one idealnie
„odtworzone” przez prążki DFT. W praktyce stosuje się częstotliwość próbkowania 8000 Hz
i DFT o długości N = 205, oraz wyznacza następujące prążki widma DFT, odpowiadające
ośmiu poszukiwanym częstotliwościom: 18, 20, 22, 24, 31, 34, 38, 42.
Schemat blokowy zaproponowanego w tym przypadku algorytmu obliczeniowego, tzw. algorytmu Goertzela, jest przedstawiony na rysunku 9.1, gdzie „z−1” oznacza jednostkowe opóźnienie (czyli opóźnienie o jedną próbkę). Z każdej z ośmiu funkcji bazowych pozostaje jedyne
różne WN−k. Wyjście układu jest wstępnie wyzerowane. Próbki sygnału wchodzą do układu
w odwrotnej kolejności. Pierwsza z nich, czyli x(N−1), jest opóźniana o jedną próbkę, mnożona przez WN−k i dodawana do następnej, czyli do x(N−2). Potem suma tych próbek jest opóźniana, mnożona po raz kolejny przez WN−k i dodawana do x(N−3) itd. N-ta próbka, która pojawi
się na wyjściu, jest k - t y m p r ą ż k i e m w i d m a , czyli X(k). Rzeczywiście, jeśli przyjrzymy
się k-temu wierszowi macierzy w równaniu (9.9):
(
)(
)
(
X (k ) = x(0) + x (1)WN− k + x(2) WN− k WN− k + ... + x ( N − 1) WN− k
)
N −1
(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ć niewygodna, 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 rekursywnym 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
yk(N)=X(k)
x(0), x(1), ..., x(N−2), x(N−1)
WN = e
z−1
j 2π / N
WN− k
Rys. 9.1. Wyznaczanie rekurencyjne DFT metodą Goertzela. „z−1” − opóźnienie o jedną próbkę
Transmitancja Z tego układu jest równa:
H k ( z) =
1
(9.15)
1 − WN− k z −1
(
)
Pomnóżmy licznik i mianownik tej transmitancji przez 1 − WNk z −1 . Otrzymujemy wówczas:
H k ( z) =
1 − WNk z −1
(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, pokazany na rysunku 9.2b, opisany następującymi równaniami czasowymi
wk (n ) = x (n ) + 2 cos(2πk / N )wk (n − 1) − wk ( n − 2)
(9.17)
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ę liczbę 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)
z−1
wk(n)
x(n)
z−1
WN− k
WN = e j 2π / N
2cos(2πk/N)
−1
z−1
yk(n)
z−1
2cos(2πk/N)
z−1
WN− k
−1
Rys. 9.2. Realizacja metody Goertzela, optymalna pod względem złożoności obliczeniowej. „z−1” − opóźnienie o jedną próbkę
Algorytmy wyznaczania dyskretnej transformacji Fouriera
236
9.3. Rekurencyjne wyznaczanie sekwencji dyskretnych
transformat Fouriera
Zdarza się, że dyskretną transformację Fouriera wyznacza się cyklicznie dla kolejnych fragmentów jakiegoś sygnału dyskretnego i fragmenty te różnią się tylko o jedną próbkę. Ponieważ
próbki transformowane różnią się nieznacznie, to samo powinno dotyczyć i wyniku transformacji. Spróbujmy przyjrzeć się temu zagadnieniu bliżej.
Załóżmy, że X0(k) jest widmem N próbek sygnału x(n), n = 0, 1, 2, ..., N−1, czyli zaczynających się od próbki zerowej:
N −1
1
N
X 0 (k ) =
∑ x(n )e − j( 2π / N )kn ,
k = 0, 1, 2,..., N − 1
(9.19)
n =0
a X1(k) − widmem N próbek sygnału x(n), n = 1, 2, 3, ..., N, czyli zaczynających się od próbki
pierwszej:
1
N
X 1 (k ) =
N
∑ x(n)e − j (2 π / N )k ( n −1) ,
n =1
(
k = 0, 1, 2,..., N − 1
(9.20)
)
Przekształćmy równanie (9.20) e − j 2 πk = 1 :
X 1 (k ) =
1
N
  N −1

− j (2π / N ) kn  j (2π / N ) k
+ x ( N )e − j (2π / N ) k ( N −1)  =
  ∑ x ( n )e
e

  n =1

=
N −1

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 
 ∑ x (n)e
 − x (0) + x ( N )  =
N

  n =0

 1
= e j (2π / N ) k  
 N
N −1
∑ x ( n )e
− j (2π / N ) kn
n =0

 1
 + N ( x ( N ) − x (0) )  =


1


= e j ( 2 π / N ) k  X 0 (k ) + ( x ( N ) − x (0) )
N


(9.21)
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:
X 0w ( k ) =
1
N
N −1
∑ eαn x(n)e − j ( 2π / N )kn ,
n =0
k = 0, 1, 2, ..., N − 1
Algorytmy wyznaczania dyskretnej transformacji Fouriera
x(n)
z−1
x(n−1)
x(n−2)
z−1
237
x(n−N)
z−1
−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
X 1w ( k ) =
1
N
n =1
X 1w ( k ) =
1
N
 N −1 α ( n −1)


x ( n )e − j (2π / N ) kn  e j (2π / N ) k + eα ( N −1) x ( N ) e− j (2π / N ) k ( N −1)  =
 ∑ e

 n =1

=
e −α
N
∑ e α( n −1) x(n)e − j (2 π / N )k ( n −1) ,
k = 0, 1, 2,..., N − 1
  N −1 α n

− j (2π / N ) kn  j ( 2π / N ) k
− x (0)e j (2π / N ) k + eα N x ( N )e j (2π / N ) k )  =
  ∑ e x( n )e
e

  n =0

 1
= e −α e j (2π / N ) k 
 N
N −1
∑ eα
n =0
n

 1
x ( n )e − j (2π / N ) kn  + ( eα N x ( N ) − x (0) )  =
 N

(
)
1 αN


= e − α e j ( 2 π / N )k  X 0w ( k ) +
e x ( N ) − x (0) 
N


(9.23)
Jeszcze nie dajemy za wygraną. Przecież:
(
)
(
)
cos( ωn ) = 0,5 e jωn + e − jωn = 0,5 e αn + e −αn , α = jω
(9.24)
A istnieje wiele okien czasowych zbudowanych z sumy funkcji kosinusoidalnych:
w( n ) = a 0 +
M
 2 πm 
n , n = − N / 2,...,−1, 0, 1,..., N / 2
N 
∑ am cos
m =1
(9.25)
które w związku z powyższym mogą być przedstawione jako:
w(n ) = a0 +
M
∑
m =1
am
2

 2 πm 
 2 πm  
exp  − j N n  + exp  j N n  





(9.26)
Przykładowo dla okna Hamminga (−43 dB) oraz Blackmana-Harrisa (−67 dB) odpowiednio
mamy:
Algorytmy wyznaczania dyskretnej transformacji Fouriera
238
a0 = 0, 54; a1 = 0, 46; a2 = 0
a0 = 0, 42323; a1 = 0, 49755; a2 = 0, 07922
W związku z tym podstawmy α = j(2πm/N) do równań (9.22), (9.23):
(
)
1 j ( 2 π / N ) mN


X 1w (k ) = e − j ( 2 π / N ) m e j ( 2 π / N ) k  X 0w (k ) +
e
x ( N ) − x (0) 
N


1


X 1w (k ) = e j ( 2 π / N )( k − m )  X 0w (k ) + ( x ( N ) − x (0) )
N


(9.27)
Jeśli natomiast okno nie jest dane wzorem (9.22) tylko inaczej zapisanym wzorem (9.26):
 2π 
M
M
 j mn

 2π 
 2π 
w(n ) = b0 + ∑ b− m exp  − j m  + bm exp  j m   = ∑ bm e N 
N 

 N   m =− M
m =1 
(9.28)
to wówczas ostatnie wyrażenie przyjmuje postać:
X 1w (k ) =
M

1

j ( 2 π / N )( k − m )  w
bm e
 X 0 (k ) + N ( x ( N ) − x (0) ) 

m=−M 
∑
(9.29)
Tak więc w przypadku typowych okien kosinusoidanych z powodzeniem można także stosować rekurencyjne wyznaczanie sekwencji dyskretnych widm Fouriera. Schemat blokowy takiego algorytmu dla M = 1 jest przedstawiony na rysunku 9.4. Przykładowo dla okna Hamminga
mamy:
b−1 =
x(n)
a1
a
= 0, 23; b0 = a0 = 0, 54; b1 = 1 = 0, 23
2
2
z−1
x(n−1)
x(n−2)
z−1
z−1
x(n−N)
−1
1
1/N
e j ( 2 π( k −1) / N )
b−1
z−1
e j ( 2 πk / N )
b0
z−1
e j ( 2 π( k +1) / N )
z−1
b1
X(k)
Rys. 9.4. Schemat blokowy algorytmu wyznaczania rekurencyjnego prążka X(k) widma Fouriera w przypadku zastosowania okien kosinusoidalnych (wzór (9.29))
Algorytmy wyznaczania dyskretnej transformacji Fouriera
239
9.4. Transformacja świergotowa − lupa w dziedzinie
częstotliwości
Dyskretna transformata świergotowa CZT (ang. Chirp-Z Transform) jest wykorzystywana do
obliczania widma Fouriera analizowanego sygnału w interesującym nas paśmie częstotliwościowym z rozdzielczością określoną przez użytkownika. Spełnia ona jakby rolę „mikroskopu” w analizie widmowej. Załóżmy, że chcemy obliczyć dyskretną transformatę Fouriera
N-elementowego ciągu czasowego próbek sygnału x(n), 0 ≤ n ≤ N−1, dla następujących M+1
częstotliwości u n o r m o w a n y c h (tzn. podzielonych przez częstotliwość próbkowania fp):
f k = f 0 + k ⋅ ∆f ,
k = 0, ..., M
(9.30)
Wówczas M+1 składowych dyskretnej transformaty Fouriera jest danych wyrażeniem
N −1
X (k ) = ∑ x ( n ) e − j 2π fk n ,
k = 0, ..., M
(9.31)
n =0
Po wprowadzeniu dwóch nowych stałych A i W:
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:
X (k ) = W k
2
N −1
∑  x(n ) AnW n
n =0
2
 W − ( k − n )2 ,

k = 0, 1, ..., M
(9.34)
Równanie (9.34) reprezentuje splot dwóch sygnałów „czasowych”:
2
y1 ( n ) = x(n ) AnW n ,
y 2 (n ) = W − n
2
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ę algorytm potocznie nazywany „szybkim” splotem. Schemat blokowy programowej implementacji 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ępnym 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 informacji o problemach implementacji splotu liniowego sygnałów dyskretnych za pomocą FFT
podamy w rozdziale 13, poświęconym szybkim algorytmom filtracji cyfrowej.
Algorytmy wyznaczania dyskretnej transformacji Fouriera
240
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ęstotliwoś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).
AnW n
2
y1(n)
x(n)
Y1(k)
Wk
FFT
2
X(k)
IFFT
W −n
2
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
% Ćwiczenie: Dyskretna transformacja świergotowa sygnału (ang. chirp-Z)
clear all; subplot(111);
% Generacja sygnału analizowanego
N = 128;
% liczba próbek sygnału
fpr = 128;
% częstotliwość próbkowania
ax1 = 0.2; fx1 = 10.00;
% amplituda i częstotliwość składowej 1
ax2 = 2.0; fx2 = 30.50;
% amplituda i częstotliwość składowej 2
ax3 = 1.0; fx3 = 33.25;
% amplituda i częstotliwość składowej 3
dt=1/fpr; t = 0 : dt : (N-1)*dt; % wartości chwil czasowych próbkowania
x = ax1*sin(2*pi*fx1*t) + ax2*sin(2*pi*fx2*t) + ax3*sin(2*pi*fx3*t);
% 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
% Wolna LUPA DFT - obliczenia bezpośrednio z definicji DFT
fd = 25;
% częstotliwość dolna "lupy"
fg = 40;
% częstotliwość górna "lupy"
M = 256;
% liczba prążków widma w tym przedziale
df = (fg-fd)/(M-1); f = fd : df : fg;
% intersujące nas częstotliwości
for k=1:M
Xlupa(k)=sum( x .* exp(-j*2*pi*f(k)*t) )/(N/2); % suma iloczynów wszystkich próbek
end
plot(f,abs(Xlupa)); grid; title('LUPA DFT bezpośrednio'); xlabel('f [Hz]'); pause
% Szybka LUPA DFT - transformacja chirp-Z MATLABA
A = exp( j*2*pi * fd/fpr );
W = exp( -j*2*pi * ((fg-fd)/(M-1))/fpr );
XcztM = czt( x, M, W, A)/(N/2);
% punkt startowy
% krok
% wywołanie funkcji chirp-Z Matlaba
Algorytmy wyznaczania dyskretnej transformacji Fouriera
241
plot(f,abs(XcztM)); grid; title('LUPA chirp-Z MATLABA'); xlabel('f [Hz]'); pause
% Szybka LUPA - transformacja chirp-Z NASZA
NM1 = N+M-1;
% punkt startowy
A = exp( -j*2*pi * fd/fpr );
W = exp( -j*2*pi * ((fg-fd)/(2*(M-1))/fpr) );
% krok
for k=0:NM1-1
% inicjalizacja wartości wektorów y1, y2
if(k<N) y1(k+1) = (A*W^k)^k * x(k+1); else y1(k+1) = 0; end
if(k<M) y2(k+1) = W^(-k^2); else y2(k+1) = W^(-(NM1-k)^2); end
end
% to samo co w powyższej pętli, tylko szybciej
% y1 = zeros(1,NM1); k=0:N-1; y1(k+1)= ((A*W.^k).^k) .* x(k+1);
% k=0:M-1; y2(k+1)= W.^(-k.^2); k=M:NM1-1; y2(k+1)= W.^(-(NM1-k).^2);
Y1 = fft(y1);
% # algorytm szybkiego splotu kołowego
Y2 = fft(y2);
% # sygnałów x1 i x2
Y = Y1.*Y2;
%#
y = ifft(Y)/(N/2); % #
for k=0:M-1, XcztN(k+1) = y(k+1) * (W^(k^2)); end % korekcja fazowa wyniku splotu
% k=0:M-1; XcztN(k+1) = y(k+1) .* (W.^(k.^2));
% to samo co w powyższej pętli, tylko szybciej
plot(f,abs(Xczt(1:M))); grid; title('LUPA chirp-Z NASZA'); xlabel('f [Hz]'); pause
9.5. Szybka transformacja Fouriera − algorytmy radix-2
9.5.1. Podział w dziedzinie czasu − DIT (ang. Decimation in Time)
Ideę, którą się stosuje w algorytmach typu DIT FFT jest podział próbek transformowanego sygnał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 „bezbolesna”, 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 parzystych 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 czteropunktowe 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.
Algorytmy wyznaczania dyskretnej transformacji Fouriera
242
Dygresja. Dawniej kiedy procesory wykonywały operację mnożenia o wiele dłużej niż dodawanie i odejmowanie, korzystna była minimalizacja liczby mnożeń, nawet kosztem zwiększenia 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 arytmetyczne (poza dzieleniem) trwa także przesyłanie liczb pomiędzy rejestrami procesora a pamięcią. Optymalizacja programu sprowadza się więc obecnie do minimalizacji wszystkich
operacji programowych związanych z realizacją konkretnego algorytmu.
Jak widać podstawą całej piramidy jest dwupunktowa transformacja DFT.
Obecnie szczegółowo przeanalizujemy ten algorytm. Na początku założymy, że dzielenie przez
N, występujące w równaniu (9.1) wykonamy na samym końcu, dlatego zainteresujemy się tylko
równaniem:
X (k ) =
N −1
∑ x(n )WN− kn ,
n =0
k = 0, 1, 2, ..., N − 1, WN = e j 2 π / N
(9.35)
Podzielmy próbki sygnału na „parzyste” i „nieparzyste”. Wówczas:
X (k ) =
N / 2 −1
∑
n =0
x (2n )WN− k (2 n ) +
N / 2 −1
∑
n =0
x(2n + 1)WN− k (2 n +1) , k = 0, 1, 2, ..., N − 1
(9.36)
Ponieważ


 2π
 2π
WN− 2 kn = exp ( −2kn )  = exp
( −kn )  = WN− kn
/2


 N /2
N
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
 n =0

 n =0

(9.37)
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-punktowym 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π
− ( N / 2 )n
− kn
WN− (/k2+ N / 2) n = WN− kn
= WN− kn
( N / 2)n  = WN− kn
/ 2WN / 2
/ 2 exp −
/ 2 exp(− 2 πn ) = WN / 2
N
/
2


Dlatego dla k = 0, 1, 2, ..., N/2−1 równanie (9.37) można zapisać w następującej postaci:
X (k ) = X 2n (k ) + WN− k X 2n +1 ( k ), k = 0,1, 2, ..., N / 2 − 1
(9.38)
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
2

(9.39)
Algorytmy wyznaczania dyskretnej transformacji Fouriera
a)
243
b)
1
X(k)
1
X(k)
W
etap (i)
−k
N
X(k)
X(k)
1
etap (i+1)
etap (i)
etap (i+1)
1
X(k+N/2)
1
X(k+N/2)
− WN− k
X(k+N/2)
WN− k
X(k+N/2)
−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
więc równanie (9.39) można zapisać jako:
N

X  k +  = X 2 n ( k ) − WN− k X 2 n +1 ( k ) , k = 0,1, 2,..., N / 2 − 1
2

(9.40)
Wzory (9.38) i (9.40) można łącznie przedstawić w następującej postaci:
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

 

N   2 n +1
(9.41)
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 )
X (k )

 1 WN− k  

 X ( k + N / 2)  = 1 −W − k   X ( k + N / 2)  , k = 0,1, 2,..., N / 2 − 1

 

N 
(9.42)
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 dzielenia przez 2)
1   x p (0) 1
1   x p (0) 1 1   x p (0)
 X (0) 1
 X (1)  = 1 W − (1) ⋅(1)   x (1)  = 1 exp( − π)  x (1)  = 1 − 1  x (1) 

 
 p  
 p 
 p  
2
(9.43)
Równanie (9.42) można przedstawić w postaci mniej złożonej obliczeniowo:
X (k )
X (k )


 1 1  
 X ( k + N / 2)  = 1 −1 W − k X ( k + N / 2) , k = 0,1, 2,..., N / 2 − 1

 
 N

(9.44)
Algorytmy wyznaczania dyskretnej transformacji Fouriera
244
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 literaturze jest metoda „numeracji o odwróconej kolejności bitów”, w której próbka wejściowego 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),
po:
x (0),
x(4),
x(2),
x(6),
x (1),
x (5),
x(3),
x (7 )
x (7 )
A teraz zapiszmy indeksy próbek w systemie binarnym (dwójkowym pozycyjnym):
przed (dziesiętnie):
przed (binarnie):
0,
1,
2,
000, 001, 010,
3,
4,
5,
6,
7
011, 100, 101, 110, 111
po
(binarnie):
000, 100, 010,
110, 001,
po
(dziesiętnie):
0,
4,
2,
6,
1,
101, 011, 111
5,
3,
7
Cóż widać? Nietrudno zauważyć, że nową kolejność próbek uzyskuje się poprzez lustrzane
odbicie bitów początkowych numerów próbek. Nie powinno to dziwić. Jeśli wejściowy numer
próbki w naszym przykładzie zapiszemy binarnie jako nwe = b2b1b0 (b2*4+b1*2+b0), to bit b0
odpowiada za to, czy po pierwszym przestawieniu próbka znajdzie w dolnej (b0 = 0) czy
w górnej (b0 = 1) połowie „nowego” wektora. W pierwszym przypadku próbka otrzyma nowy
numer od 0 do 3, a w przypadku drugim − od 4 do 7. Następnie bit b1 decyduje o tym, czy po
drugim przestawieniu próbka znajdzie się w dolnej (numery 0 i 1) czy w górnej (numery 2 i 3)
połowie odpowiedniego „podwektora” czteroelementowego, otrzymanego w poprzednim kroku itd. Końcowa pozycja próbki więc wynika właśnie z odczytania „wspak” bitów jej numeru
w wejściowym wektorze danych (tzn. {dół, góra}, {dół, góra}, ...).
Programowa implementacja metody „przestawiania bitów” nie nastręcza problemów. Większość procesorów sygnałowych ma nawet wbudowany sprzętowy mechanizm adresowania
komórek pamięci z „odwróceniem” części bitów. Przykładem może być procesor Motorola
DSP56xxx i DSP563xx.
Jeśli byśmy dalej kontynuowali nasz przykład w następnym kroku powinniśmy wykonać cztery
dwupunktowe transformacje DFT:
Algorytmy wyznaczania dyskretnej transformacji Fouriera
245
 X (0) 1 1   x (0)
1) 
,
=
 0
 X (1)  1 − 1 W2 x ( 4)
x (1)
 X (4) 1 1  
3) 
=
0




 X (5)  1 − 1 W2 x (5) 
 X (2)  1 1   x ( 2)
2) 
,
=
 0
 X (3)  1 − 1 W2 x (6)
 X (6)  1 1   x (3)
4) 

=
 0
 X (7)  1 − 1 W2 x (7)
A potem połączyć ich wyniki w dwie transformaty czteropunktowe:
 X (0)  1 1   X (0)
1) 
,
=
 0
 X (2) 1 − 1 W4 X ( 2)
 X (4) 1 1   X (4) 
2) 

=
 0
 X (6)  1 − 1 W4 X (6)
 X (1)  1 1   X (1)
 X (3) = 1 − 1 W 1 X (3) ,

 
 4

 X (5)  1 1   X (5)
 X (7)  = 1 − 1 W 1 X (7)

 
 4

Na końcu odtwarzamy transformatę całego sygnału:
 X (0)  1 1   X (0)
a) 
,
=
 0
 X (4) 1 − 1 W8 X ( 4)
 X (2) 1 1   X (2)
c) 

=
 2
 X (6)  1 − 1 W8 X (6)
 X (1)  1 1   X (1)
b) 
,
=
 1
 X (5) 1 − 1 W8 X (5)
 X (3)  1 1   X (3) 
d) 

=
 3
 X (7)  1 − 1 W8 X (7) 
oraz dzielimy wszystkie elementy przez N.
Uproszczony diagram szybkiego algorytmu Fouriera DIT FFT radix-2 dla N = 8 jest przedstawiony 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: dwupunktowe 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 kolejnych 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.
W16−3 = 1 ⋅W16−1 ⋅W16−1 ⋅W16−1
Aby uniknąć wielokrotnego wyznaczania tych samych wartości próbek baz Fouriera w kolejnych 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.
Algorytmy wyznaczania dyskretnej transformacji Fouriera
246
x(0)
DFT
N=2
x(4)
x(2)
DFT
N=2
x(6)
x(1)
DFT
N=2
x(5)
x(3)
X(1)
X(2)
Złożenie
dwóch DFT
czteropunktowych
w jedno DFT
ośmiopunktowe
Złożenie
dwóch DFT
dwupunktowych
w jedno DFT
czteropunktowe
DFT
N=2
x(7)
X(0)
Złożenie
dwóch DFT
dwupunktowych
w jedno DFT
czteropunktowe
X(3)
X(4)
X(5)
X(6)
X(7)
Rys. 9.7. Uproszczony schemat blokowy algorytmu DIT FFT radix-2 dla N = 8
1
1
1
x(0)
X(0)
1
1
x(4)
0
2
W
x(6)
1
1
1
0
2
W
0
4
W
W
−1
W20
x(3)
x(7)
X(3)
1
1
W80
1
1
1
−1
W
−1
8
W
−1
X(5)
−1
1
W8−2
X(6)
−1
1
−1
4
X(4)
−1
11
1
−1
1
−1
1
W40
X(2)
1
−1
−1
1
1
W20
1
1
1
1
x(5)
X(1)
1
1
−1
4
1
x(1)
1
1
1
−1
1
x(2)
1
1
1
W
−3
8
−1
X(7)
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, istniejącym do wyznaczania DFT. Rodzina „szybkich” algorytmów jest o wiele większa. Po pierwsze, dlaczego dekomponować sygnał tylko na dwa „podsygnały” (próbki parzyste i nieparzyste), 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
X2n(0)
x(0)
x(1)
X(3)
X2n+1(0)
W 80
X2n+1(1)
W8−1 −1
DFT
N=4 X2n+1(2)
x(3)
x(5)
X2n+1(3)
x(7)
X(6)
W8−3 −1
X(7)
X(0)
X(1)
W 40
x(2)
DFT
N=2
x(6)
X(2)
W4−1 −1
X(3)
−1
x(1)
W8
DFT
N=2
x(5)
x(3)
DFT
N=2
x(7)
0
X(4)
W8−1 −1
W 40
W8−2 −1
W4−1 −1
W8−3 −1
−1
−1
X(5)
X(6)
X(7)
X(0)
W20
−1
X(1)
W 40
X(3)
−1
−1
W8
0
W8−1 −1
W20
−1
x(3)
X(2)
W4−1 −1
W20
x(1)
x(7)
X(5)
W8−2 −1
DFT
N=2
x(4)
x(5)
X(4)
−1
x(0)
x(6)
X(2)
X2n(3)
x(6)
x(2)
X(1)
DFT
N=4 X2n(2)
x(4)
x(4)
X(0)
X2n(1)
x(2)
x(0)
247
W20
−1
W 40
W8−2 −1
W4−1 −1
W8−3 −1
−1
−1
Rys. 9.9. Wyprowadzenie schematu blokowego DIT FFT radix-2 z rysunku 9.8
X(4)
X(5)
X(6)
X(7)
Algorytmy wyznaczania dyskretnej transformacji Fouriera
248
Tab. 9-2. Wartości parametrów programu, implementującego algorytm radix-2 DIT FFT, w kolejnych etapach obliczeń
Etap 1
Etap 2
Etap 3
Etap 4
Etap k
Liczba bloków
N/2
N/4
N/8
N/16
N/(2k)
Długość bloków
(L)
21 = 2
22 = 4
23 = 8
24 = 16
2k
Przesunięcie bloków
(L)
21 = 2
22 = 4
23 = 8
24 = 16
2k
Liczba motylków
w bloku (M)
20 = 1
21 = 2
22 = 4
23 = 8
2(k−1)
Szerokość motylków
w bloku (M)
20 = 1
21 = 2
22 = 4
23 = 8
2(k−1)
W20
W40 , W4−1
Baza Fouriera
Mnożnik bazy
Fouriera
1
W4−1
W80 , W8−1
W160 , W16−1 , W16−2 , W16−3
W −kl
W8−2 , W8−3
W16−4 , W16−5 , W16−6 , W16−7
l = 0, 1, 2,..., 2 k −1
W16−1
W2−k1
W8−1
2
Tab. 9-3. Program implementujący algorytm radix-2 DIT FFT w języku Matlab
% Ćwiczenie: Algorytm szybkiej transformacji Fouriera FFT typu radix-2 DIT
clera all;
% GENERACJA SYGNAŁU
N=8;
x=0:N-1;
typBitReverse=1;
typFFT=1;
% liczba próbek sygnału
% przykładowe wartości próbek
% 1 lub 2 - wybór algorytmu przestawiania próbek (wolna, szybka)
% 1 lub 2 - wybór właściwej pętli FFT (wolna, szybka)
xc = x;
% kopia sygnału x
% PRZESTAWIENIE KOLEJNOŚCI PRÓBEK: wersja 1− wolna --------------------------------------------------if (typBitReverse==1)
MSB=log2(N);
for n=0:N-1;
ncopy=n;
nr=0;
for m=1:MSB
if (rem(n,2)==0)
n=n/2;
else
nr=nr+2^(MSB-m);
n=(n-1)/2;
end
end
y(nr+1)=x(ncopy+1);
end
x = y;
end
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
liczba bitów numerów próbek
kolejne próbki
stary numer próbki (kopia)
nowy numer próbki (inicjalizacja)
po wszystkich bitach
czy jedynka na LSB
jeśli nie, przesuń w prawo
dodaj 2^(MSB-m)
odejmij jedynkę, przesuń w prawo
skopiuj we właściwe miejsce
podstaw wynik pod x
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
% PRZESTAWIENIE KOLEJNOŚCI PRÓBEK: wersja 2− szybka (przestawianie „w miejscu”) -------------if (typBitReverse==2)
a=1;
%
Algorytmy wyznaczania dyskretnej transformacji Fouriera
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
249
%
%
%
%
%
%
%
%
%
%
end
% WŁAŚCIWE FFT - wersja 1 - wolniejsza, bardziej poglądowa ------------------------------------------------------if (typFFT==1)
for e = 1 : log2(N)
SM = 2^(e-1);
LB = N/(2^e);
LMB = 2^(e-1);
OMB = 2^e;
W = exp(-j*2*pi/2^e);
for b = 1 : LB
for m = 1 : LMB
g = (b-1)*OMB + m;
d = g + SM;
xgora = x(g);
xdol = x(d)*W^(m-1);
x(g) = xgora + xdol;
x(d) = xgora - xdol;
end
end
end
end
% KOLEJNE ETAPY
% szerokość motylka
% liczba bloków
% liczba motylków w bloku
% odległość między blokami
% podstawa bazy Fouriera
% KOLEJNE BLOKI
% KOLEJNE MOTYLKI
% indeks górnej próbki motylka
% indeks dolnej próbki motylka
% skopiowanie górnej próbki
% korekta dolnej próbki
% nowa górna próbka: górna plus dolna po korekcie
% nowa dolna próbka: górna minus dolna po korekcie
% koniec pętli motylków
% koniec pętli bloków
% koniec pętli etapów
% WŁAŚCIWE FFT - wersja 2 - szybsza ----------------------------------------------------------------------------------if (typFFT==2)
for e = 1 : log2(N)
L = 2^e;
M = 2^(e-1);
Wi = 1;
% KOLEJNE ETAPY
% długość bloków DFT, przesunięcie bloków
% liczba motylków w bloku, szerokość każdego motylka
% WLl = W20k = 1 startowa wartość wsp. bazy w etapie
W = cos(2*pi/L)-j*sin(2*pi/L); % mnożnik bazy Fouriera
for m = 1 : M
for g = m : L : N
d = g+M;
T = x(d)*Wi;
x(d) = x(g)-T;
x(g) = x(g)+T;
end
Wi=Wi*W;
end
end
WL−1 = W2−k 1
% KOLEJNE MOTYLKI
% W KOLEJNYCH BLOKACH
% g − „górny”, d − „dolny” indeks próbki motylka
% „serce” FFT
% nowa dolna próbka: górna minus „serce”
% nowa górna próbka: górna plus „serce”
% koniec pętli bloków
% kolejna wartość bazy Fouriera WL− l = W2−k l
% koniec pętli motylków
% koniec pętli etapów
end
% PORÓWNAJ Z MATLABEM -------------------------------------------------------------------------------------------xc = fft(xc);
blad_real = max(abs(real(x-xc)))
blad_imag = max(abs(imag(x-xc)))
pause
Algorytmy wyznaczania dyskretnej transformacji Fouriera
250
DFT N/4-punktowymi. Na każdym etapie obliczeń algorytm radix-4 wykonuje 3*(N/4) mnożenia 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żą efektywność 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ą implementujących je programów. W literaturze pod nazwą split-radix najczęściej rozumie się „najszybszy” z obecnie znanych algorytmów FFT, będący połączeniem algorytmów radix-2 i radix4, wykorzystujących decymację w dziedzinie częstotliwości DIF (ang. Decimation in Frequency). 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, naprzemiennych 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).
Dla dociekliwych. Przypomnijmy równanie DFT:
N −1
X (k ) = ∑ x ( n )WN− kn , k = 0, 1, 2, ..., N − 1
(9.45)
n =0
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)
skąd otrzymujemy (p = 0, 1, ..., L−1, q = 0, 1, ..., M−1):
X ( pM + q) =
M −1 L −1
∑ ∑
m =0 l =0
x (l + mL)WN− ( pM + q )(l + mL )
(9.47)
Zdefiniujmy macierz X, składającą się z elementów X(p,q):
X ( p, q) = X ( pM + q)
(9.48)
Ponieważ:
W N− ( pM + q )( l + mL) = WN− pMlWN− pMmLW N− qlWN− qmL
(9.49)
− pl
− pMmL
− qm
WN− pMl = WN− pl
= WN− pmN = 1, WN− qmL = WN− qm
/ M = WL , W N
/ L = WM
(9.50)
oraz
stąd z (9.47) i (9.48) otrzymujemy (p = 0, 1, ..., L−1, q = 0, 1, ..., M−1):
Algorytmy wyznaczania dyskretnej transformacji Fouriera
X ( p, q ) =
M − 1 L −1
∑ ∑ x(l , m)WL− plWN− qlWM− qm
251
(9.51)
m =0 l =0
Niech indeksy p i l będą numerami wierszy, a q i m − numerami kolumn. Równanie (9.51)
można zapisać w następującej postaci (p = 0, 1, ..., L−1, q = 0, 1, ..., M−1):
X ( p, q ) =
L −1

 M −1
 
l =0
m =0

∑ WN− ql  ∑ x(l , m)WM− qm  WL− pl
(9.52)
Wyznaczanie DFT na podstawie równania (9.52) przebiega następująco.
1) Z N-elementowego wektora wejściowego x(n), n = 0, 1, 2, ..., N−1, tworzy się macierz
x(l,m) o L wierszach i M kolumnach (l = 0, 1, ..., L−1, m = 0, 1, ..., M−1), w których próbki
wejściowe są umieszczane na początku w pierwszej kolumnie, potem w drugiej itd. (patrz
rysunek 9.10).
2) Następnie wyznacza się serię M-punktowych DFT wszystkich wierszy macierzy x(l,m),
umieszczając wynik w macierzy A(l,q):
A(l , q ) =
M −1
∑ x(l , m)WM− qm ,
l = 0, 1, 2,..., L − 1, q = 0, 1, 2,..., M − 1
m =0
3) Potem modyfikuje się elementy macierzy A(l,q) zgodnie z równaniem:
B(l , q) = WN− ql A(l , q), l = 0, 1, 2,..., L − 1, q = 0, 1, 2,..., M − 1
4) Kończąc wykonuje się serię L-punktowych DFT wszystkich kolumn macierzy B(l,q):
X ( p, q ) =
L −1
∑ B(l , q)WL− pl ,
p = 0, 1, ..., L − 1, q = 0, 1, 2, ..., M − 1
l =0
Ponieważ macierze „wyjściowe” (obliczane) mogą nadpisywać w pamięci komputera macierze
„wejściowe”, algorytm nie wymaga pamięci na żadne macierze „robocze”. Uwzględniając
(9.48) jesteśmy w stanie odtworzyć elementy X(pM+q), p = 0, 1, ..., L−1, q = 0, 1, ..., M−1
(N = LM) wektora X(k), k = 0, 1, ..., N−1, na podstawie elementów X(p,q) macierzy X.
W przedstawiony powyżej sposób można obliczyć DFT dla N = 15, zakładając L = 3 i M = 5
oraz wykonując: 1) trzy DFT 5-punktowe, 2) 15 mnożeń zespolonych, 3) pięć DFT 3-punktowych. Razem daje to 3*5+15+5*3 = 45 mnożeń zespolonych i 3*4+5*2 = 22 dodawania zespolone. Obliczenia bezpośrednie ze wzoru (9.45) wymagają 15*15 = 225 mnożeń i 15*14 =
= 210 dodawań zespolonych. Jak widać obliczania DFT na podstawie (3) jest o wiele efektywniejsze.
Przedstawioną metodologię można także zastosować dla N = 2p. Kiedy L = 2 i M = 2p−1, jedno
DFT 2p-punktowe rozkładamy na dwa DFT 2p−1-punktowe tylko próbek parzystych i nieparzystych (krok 2), a następnie składamy widma „cząstkowe” (korekta w kroku 3 oraz seria
dwupunktowych DFT w kroku 4). W rezultacie otrzymujemy pierwszy etap dekompozycji
obliczeń właściwy dla algorytmu DIT FFT radix-2 (rysunek 9.9 − góra). Potem oczywiście
można dalej dekomponować DFT 2p−1-punktowe. W wyniku iteracyjnego powtarzania
powyższego postępowania, otrzymujemy algorytm DIT FFT radix-2, przedstawiony na rysunku 9.8.
Natomiast dla N = 4p i L = 4 i M = 4p−1, zastępujemy jedno DFT N-punktowe czterema DFT
N/4-punktowymi (po wierszach) oraz korektą i N/4-ema DFT 4-punktowymi (po kolumnach).
Algorytmy wyznaczania dyskretnej transformacji Fouriera
252
Iteracyjnie powtarzając dekompozycję DFT wierszy, dochodzimy do DFT 4-punktowego.
Algorytm ten nosi nazwę DIT FFT radix-4.
m
0
l
1
2
M-1
0
x(0)
x(L)
x(2L)
…
x((M−1)L)
1
x(1)
x(L+1)
x(2L+1)
…
x((M−1)L+1)
2
x(2)
x(L+2)
x(2L+2)
…
x((M−1)L+2)
:
:
:
…
:
x(L−1)
x(2L−1)
x(2L−1)
…
x(LM−1)
L-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
9.5.2. Podział w dziedzinie częstotliwości − DIF (ang. Decimation in Frequency)
Podobnie jak w poprzednim przypadku załóżmy, że N jest równe potędze liczby 2, oraz że zainteresowani jesteśmy szybkim wyznaczeniem k-tego prążka X(k) widma Fouriera ze wzoru
(WN = exp(j2π/N)):
X (k ) =
N −1
∑ 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):
X ( 2k ) =
N −1
∑ x(n )WN− ( 2k )n
(9.54)
n =0
X (2k + 1) =
N −1
∑ x(n)WN− (2k +1)n
(9.55)
n =0
Powyższe wzory mogą być zapisane jako (k = 0, 1, 2, ..., N/2−1):
X ( 2k ) =
N / 2 −1
N −1
n =0
n= N / 2
∑ x(n)WN− (2k )n + ∑ x(n)WN− ( 2k )n
X (2k + 1) =
N / 2 −1
N −1
n =0
n= N / 2
∑ x(n)WN− (2k +1)n + ∑ x(n)WN− (2k +1)n
(9.56)
(9.57)
Po zmianie zmiennych w drugich sumach otrzymujemy (k = 0, 1, 2, ..., N/2−1):
X ( 2k ) =
N / 2 −1
N / 2 −1
n =0
n =0
∑ x(n)WN− (2k )n + ∑ x(n + N / 2)WN− ( 2k )( n + N / 2)
(9.58)
Algorytmy wyznaczania dyskretnej transformacji Fouriera
X (2k + 1) =
N / 2 −1
N / 2 −1
n =0
n =0
253
∑ x(n)WN− (2k +1)n + ∑ x(n + N / 2)WN− ( 2k +1)(n + N / 2)
(9.59)
Ponieważ:
W N−2k ( n + N / 2 ) = W N−2knWN− kN = WN−2kn , WN−2 kn = WN− kn
/2
(9.60)
więc (9.58) jest równe
X (2k ) =
N / 2 −1
∑ [ x(n ) + x (n + N / 2)]WN− kn
/2
(9.61)
n =0
Natomiast (9.59) można przekształcić do postaci (k = 0, 1, 2, ..., N/2−1):
X (2k + 1) =
N / 2 −1
N / 2 −1
n=0
n =0
∑ x(n)WN− (2k +1)n + WN− (2k +1)( N / 2) ∑ x(n + N / 2)WN− ( 2k +1)n
(9.62)
i wykorzystując zależność:
WN−( 2k +1)( N / 2) = WN− kN WN− N / 2 = ( +1)( −1) = −1
(9.63)
otrzymać:
X (2k + 1) =
N / 2 −1
N / 2 −1
n =0
n=0
∑ x(n)WN− (2k +1)n − ∑ x(n + N / 2)WN− (2k +1)n
(9.64)
Po prostych przekształceniach końcowy wzór na X(2k+1) przyjmuje postać (k = 0, 1, 2, ...,
N/2−1):
X (2k + 1) =
N / 2 −1
∑ [ x(n) − x(n + N / 2)]W
− (2 k +1) n
N
n =0
=
N / 2 −1
∑ [ x(n ) − x(n + N / 2)]W
n =0
=
N / 2 −1
∑
n =0
=
−2 kn
N
WN− n =
{ [ 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 otrzymać 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 „spreparowanych”:
x1 ( n ) = x ( n ) + x ( n + N / 2), n = 0, 1, 2,..., N / 2 − 1
(9.66)
x 2 (n ) = [x (n ) − x ( n + N / 2)]WN− n , n = 0, 1, 2,..., N / 2 − 1
(9.67)
Dalsze rozważania dotyczące aspektów programowej implementacji algorytmów DIF FFT
radix-2 pozostawiamy jako ćwiczenie Czytelnikowi. Pełny schemat blokowy tego algorytmu
dla przypadku N = 8 jest wyprowadzony na rysunku 9.11.
Algorytmy wyznaczania dyskretnej transformacji Fouriera
254
a)
x(0)
X(0)
DFT
N=4
x(1)
X(2)
x(2)
X(4)
x(3)
x(4)
x(5)
x(6)
x(7)
b)
X(6)
W80
−1
W8−1
−1
W8−2
−1
W8−3
X(1)
X(5)
X(7)
−1
DFT
N=2
x(0)
x(1)
W40
x(2)
−1
x(3)
W8
x(4)
x(5)
x(6)
x(7)
c)
X(3)
DFT
N=4
0
W4−1
X(4)
DFT
N=2
W8−1
−1
W8−2
W40
−1
W8−3 −1
W4−1
−1
−1
DFT
N=2
X(1)
DFT
N=2
X(3)
W20
x(1)
W40
x(2)
−1
x(3)
x(5)
x(6)
x(7)
X(5)
X(7)
x(0)
x(4)
X(2)
X(6)
−1
−1
X(0)
W8
0
−1
W4−1
−1
W20
−1
X(0)
X(4)
X(2)
X(6)
X(1)
−1
W8−1
−1
W8−2
W40
−1
W8−3 −1
W4−1
−1
−1
W20
−1
W20
−1
X(5)
X(3)
X(7)
Rys. 9.11. Schemat blokowy algorytmu DIF FFT radix-2: a) pierwszy, b) drugi, c) końcowy etap dekompozycji
Algorytmy wyznaczania dyskretnej transformacji Fouriera
255
9.6. Szybka transformacja Fouriera dla sygnałów rzeczywistych
Jak wiemy (równanie (8.30)), widmo Fouriera X(k), k = 0, 1, 2, ..., N−1, sygnału rzeczywistego x(n), n = 0, 1, 2, ..., N−1, jest symetryczne względem prążka k = N/2:
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.
Przypadek 1 − dwa N-punktowe sygnały rzeczywiste, jedno N-punktowe FFT
Załóżmy, że mamy dwa sygnały rzeczywiste x1(n) i x2(n), n = 0, 1, 2, ..., N −1, N = 2p. Utwórzmy 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 pierwszego z nich jest równe Y1(k) = X1(k), a drugiego Y2(k) = jX2(k). Widma X1(k) i X2(k) charakteryzują się (a)symetrią typową dla transformat DFT sygnałów rzeczywistych (część rzeczywista 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)
X 1 ( k ) = X 1r (k ) + jX 1i (k ),
(9.71)
Niech:
X 2 (k ) = X 2 r ( k ) + jX 2i (k )
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
Algorytmy wyznaczania dyskretnej transformacji Fouriera
256
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:
X 1r (k ) =
1
[Yr (k ) + Yr ( N − k )] , k = 1, 2, 3, ..., N − 1
2
(9.73)
Aby z kolei odzyskać z Yr(k) jego asymetryczną składową X2i(k), trzeba się „pozbyć” składowej symetrycznej X1r(k), a można to uczynić w wyniku odejmowania próbek leżących symetrycznie względem punktu k = N/2. Ponieważ jednak składowa ta jest zanegowana w Yr(k),
wynik odejmowania także trzeba zanegować:
X 2i ( k ) = −
1
1
[Yr (k ) − Yr ( N − k )] = [Yr ( N − k ) − Yr (k )] , k = 1, 2, 3, ..., N − 1
2
2
(9.74)
Analogicznie uzyskuje się:
X 1i (k ) =
1
[Yi (k ) − Yi ( N − k )], k = 1, 2, 3, ..., N − 1
2
(9.75)
X 2r (k ) =
1
[Yi (k ) + Yi ( N − k )], k = 1, 2, 3, ..., N − 1
2
(9.76)
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 2 − N-punktowy sygnał rzeczywisty, N/2-punktowe FFT
Przypadek ten jest konsekwencją przypadku poprzedniego oraz właściwości, z której skorzystaliśmy podczas wyprowadzenia algorytmu radix-2 szybkiej transformacji Fouriera z decymacją 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, korzystając z wzoru (9.79). Przekształcając wzory (9.73)÷(9.76) oraz uwzględniając (9.79), otrzymujemy (k = 0, 1, 2, ..., N/2−1):
X (k ) =
1
 N

N
 1

Y (k ) + Y *  − k  + j ⋅ e − j 2 πk / N Y *  − k  − Y (k )
2 
2
 2

 2

Y1r(k) = X1r(k)
Y1i (k) = X1i (k)
N/2
0
N/2
(9.81)
k
k
0
Y2r(k) = −X2r(k)
Y2i (k) = X2r(k)
k
N/2
0
0
N/2
k
Rys. 9.12. Graficzna ilustracja (a)symetrii odpowiednich widm
9.7. Dwuwymiarowa dyskretna transformacja Fouriera
Do analizy częstotliwościowej i przetwarzania dyskretnych sygnałów dwuwymiarowych
x(n,m), na przykład obrazów cyfrowych, często stosuje się dwuwymiarową transformację Fouriera. Jest ona zdefiniowana za pomocą następującej pary równań (k = 0, 1, ..., N−1, l = 0, 1, ...,
N−1):
X (k , l ) =
N −1 N −1
∑ ∑ x ( m, n ) e
−j
2π
( mk + nl )
N
(9.82)
m =0 n =0
x ( m, n ) =
1
N2
N −1 N − 1
∑
∑ X (k , l ) e
j
2π
( mk + nl )
N
(9.83)
k =0 l =0
Pierwsze z nich reprezentuje transformację właściwą („prostą”), drugie zaś − transformację
„odwrotną”. Jak widać pod względem obliczeniowym równania (9.82) i (9.83) różnią się jedynie znakiem wykładnika, a więc mogą być wyznaczane za pomocą (prawie) identycznych algorytmów. Ponieważ (9.82) można zapisać jako:
X (k , l ) =
N −1  N −1
∑  ∑ x ( m, n ) e
m =0 
 n =0
−j
2π
2π 
nl
− j mk
N e
N


(9.84)
Algorytmy wyznaczania dyskretnej transformacji Fouriera
258
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 takich algorytmów:
1) DFT wszystkich wierszy miecierzy x(m,n), m = 0, 1, ..., N−1:
X w ( m, l ) =
N −1
∑ x ( m, n ) e
−j
2π
nl
N
(9.85)
n =0
2) DFT wszystkich kolumn macierzy Xw(m,l) (9.85), l = 0, 1, ..., N−1:
X (k , l ) =
N −1
∑ X w ( m, l ) e
−j
2π
mk
N
(9.86)
m =0
Możemy więc z powodzeniem skorzystać z szybkich procedur FFT, wyprowadzonych w rozdziale 9.5.
9.8. Wyznaczanie DCT metodą szybkiej transformacji Fouriera
Fakt istnienia ogólnie znanych algorytmów szybkiej transformacji Fouriera FFT powoduje, że
różne inne transformacje w pierwszym kroku najczęściej zapisuje się w postaci eksponujących
ich związek z DFT, a następnie wykorzystuje się szybkie algorytmy FFT. Najlepszym tego
przykładem jest „szybkie” wyznaczanie popularnej transformacji kosinusowej, stosowanej
w standardach kompresji obrazów nieruchomych JPEG i ruchomych MPEG oraz w algorytmie
kompresji dźwięku MPEG audio, „poprzez” FFT. Oczywiście istnieją jeszcze szybsze, dedykowane metody rozwiązujące ten problem [Elli82][Elli87], ale ich dyskusja wykracza poza
zakres tego podręcznika.
Dygresja: transformacje DCT stosowane w standardach MPEG audio i video są różne (patrz
podrozdział 2.4).
Dyskretna transformacja kosinusowa została już przez nas zdefiniowana w rozdziale 2 poprzez
równanie baz kosinusowych (2.76):
X (k ) = c (k ) ⋅
 π(2n + 1) ⋅ k 
,
2N

N −1
∑ x(n ) cos
n =0
0 ≤ k ≤ N −1
(9.87)
gdzie stałe c(k) są równe
c (0) =
1
,
N
c (k ) =
2
N
dla
1≤ k ≤ N −1
(9.88)
Natomiast transformacja odwrotna jest dana wyrażeniem:
x (n ) =
N −1
 π(2n + 1) ⋅ k 
,
2N

∑ c(k )X (k ) cos
k =0
0 ≤ n ≤ N −1
(9.89)
Równanie (9.87) można przekształcić w następujący sposób, oddzielnie sumując parzyste i nieparzyste 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 
 =
2N
2N
n =0



 
 n =0
( N / 2 )−1
 π ( 4n + 1) k  ( N / 2)−1
 π ( 4n + 3) k  

= c ( k )  ∑ x ( n ) cos 
 + ∑ x ( N − n − 1) cos 

2N
2N
n =0



 
 n =0
(9.90)
gdzie (n = 0, 1, ..., N/2−1):
~
x (n ) = x (2n ),
~
x (N − n − 1) = x (2n + 1)
(9.91)
Zmieniając granice sumowania w drugiej sumie równania (9.90) na n' = N−n−1 oraz łącząc
obie sumy otrzymujemy:
X (k ) = c (k )
N −1
N −1
 π ( 4n + 1) k 


− j πk / 2 N
⋅ ∑ x ( n ) e − j 2 πkn / N 
 = Re  c ( k ) e
2
N
n =0




∑ x ( n ) cos 
n =0
(9.92)
czyli możemy obliczyć X(k) wykonując N-punktowe DFT (FFT) na sygnale ~
x (n) :
[
X (k ) = Re c (k )e − jπk / 2 N ⋅ DFTN ( ~
x (n ))
]
(9.93)
Z kolei jeśli jako operację „odwrotną” wykonamy następujące N-punktowe IDFT:
x (n ) = Re  IDFTN { c ( k ) e jπ k / 2 N X ( k ) }  =
 N-1

= Re  ∑ { c ( k ) e jπ k / 2 N X ( k ) } e j 2π kn / N 
 k =0

(9.94)
(9.95)
to próbki parzyste i nieparzyste sygnału wejściowego x(n) można w następujący sposób odtworzyć z próbek sygnału x (n ) (n = 0, 1, ..., N/2−1):
x (2n ) = x (n ),
x (2n + 1) = x ( N − 1 − n )
(9.96)
Czytelnikowi pozostawiamy jako ćwiczenie programową implementację podanego algorytmu.
10
Układy dyskretne
W poprzednich dwóch rozdziałach rozważaliśmy problem analizy częstotliwościowej sygnałów dyskretnych: jak należy dobierać parametry analizy, szybko ją wykonywać i interpretować
wyniki. Obecnie przystąpimy do omówienia zagadnienia projektowania układów „dyskretnych”, czyli układów analizy i przetwarzania danych dyskretnych, czyli ciągów liczb, np.
sygnałów.
10.1. Układy dyskretne LTI
Załóżmy, że i w tym przypadku, podobnie jak dla układów analogowych, rozpoczniemy od
podstaw, czyli jednowejściowych i jednowyjściowych układów liniowych niezmiennych w czasie LTI (ang. Linear Time-Invariant). Niech x(n) oznacza sygnał wejściowy, y(n) − sygnał
wyjściowy, a h(n) − odpowiedź impulsową układu, czyli jego odpowiedź na pobudzenie
dyskretnym impulsem jednostkowym (deltą Kroneckera) δ(n):
1, n = 0
δ( n ) = 
0, n ≠ 0
(10.1)
Schemat blokowy takiego układu jest pokazany na rysunku 10.1. Zachodzą dla niego następujące zależności, wiążące sygnał wejściowy i wyjściowy:
δ( n ) → h ( n )
(10.2)
x (n) → y ( n)
(10.3)
Przypomnijmy, układ jest niezmienny w czasie, jeśli na opóźnione pobudzenie odpowiada
w taki sam sposób, tylko z opóźnieniem:
x (n) → y (n ) ⇒
x (n − n0 ) → y (n − n0 )
(10.4)
Jest natomiast liniowy, kiedy na sumę wymuszeń odpowiada sumą odpowiedzi na poszczególne wymuszenia:
{x1 ( n) → y1 (n ),
x2 ( n ) → y2 ( n )} ⇒
{ ax1 (n ) + bx2 ( n) → ay1 ( n) + by2 (n)}
(10.5)
Układy dyskretne
x(n)
261
y(n)
δ(n)
Y(ejΩ)
∆(ejΩ)=1
h(n)
X(ejΩ)
H(ejΩ)
y (n ) =
⇒
∞
∑ h(k ) x(n − k )
h(n)
y (n ) =
jΩ
Y(ejΩ)=H(ejΩ)
∞
∑ h ( k ) δ( n − k ) = h ( n )
k = −∞
k = −∞
jΩ
H(ejΩ)
y(n)=h(n)
jΩ
Y(e )=H(ejΩ)∆(ejΩ)=H(ejΩ)
jΩ
Y(e )=H(e )X(e )
Rys. 10.1. Schemat blokowy i równania liniowego układu dyskretnego niezmiennego w czasie: x(n) − sygnał 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 czasowych. ∆(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 jednostkowy jest przesunięta odpowiedź impulsowa:
δ( n − k ) → h ( n − k )
(10.7)
a odpowiedzią na ważoną sumę przesuniętych impulsów jednostkowych jest ważona suma
przesuniętych odpowiedzi impulsowych, czyli:
x (n) =
∞
∑ x(k )δ(n − k )
k = −∞
→
y (n) =
∞
∑ x ( k )h ( n − k ) = x ( n ) ⊗ h ( n )
(10.8a)
k = −∞
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 = −∞
Przypomnijmy, obliczanie splotu dyskretnego (szczególnej formy filtracji cyfrowej) przebiega
w ten sam sposób jak splotu analogowego. Jego szczegóły zostały już przedstawione w podrozdziale 1.3.6 i na rysunku 1.8. Dla zapisu (10.8a) mamy: 1) odwróć sygnał h(k) ze względu
na k: h(−k), 2) przesuń go o n próbek: h(n−k), 3) wymnóż z sygnałem x(k): x(k)h(n−k) oraz
4) zsumuj wszystkie iloczyny próbek. Operację tę należy powtórzyć dla wszystkich wartości n.
Obecnie poszukajmy interpretacji częstotliwościowej dyskretnych układów LTI. Załóżmy, że
na wejście dyskretnego układu LTI o odpowiedzi impulsowej h(n) podajemy sygnał x(n) =
= ejΩn, gdzie Ω = 2πf/fpr, wówczas zgodnie z (10.8b) na jego wyjściu otrzymamy:
Układy dyskretne
262
∞
∞
k =−∞
k =−∞
∑ h( k ) x( n − k ) = ∑ h (k )e
y (n) =
( )
jΩ ( n − k )
= e jΩ n
∞
∑ h(k )e
− jΩ k
k =−∞
= x( n ) H ( e jΩ ) =
= 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):
( )
( )
H e jΩ = H e jΩ e j)H ( e
jΩ
)
= M (Ω )e jΦ ( Ω )
Wynika stąd, że wartość modułu M(Ω) liczby zespolonej H(ejΩ) będzie decydowała o ewentualnej 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 projektowanie 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 dyskretnego 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:
∞
∑ h(m ) x(n − m)
y(n) =
(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 ograniczoną 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ść bezwzględną obu stron równania (10.8b) i dalej przekształcając prawą stronę otrzymanej w ten
sposób zależności:
y(n) =
∞
∞
∞
m = −∞
m = −∞
m = −∞
∑ h (m) x (n − m) ≤ ∑ h(m ) x( n − m) ≤ M x ∑ h(m)
Z powyższego równania wynika, że spełnienie (10.11) narzuca ograniczoność |y(n)|.
Analogicznie jak dla układów analogowych, odpowiedź impulsowa układu powstałego z równoległego połączenia dwóch dyskretnych układów LTI jest równa sumie odpowiedzi impulsowych tych układów (rysunek 10.2a):
h ( k ) = h1 ( n ) + h2 ( n )
(10.12)
natomiast odpowiedź impulsowa połączenia kaskadowego jest równa splotowi poszczególnych
odpowiedzi impulsowych (rysunek 10.2b):
h(n ) =
∞
∑ h1 (k ) ⊗ h2 (n − k ) = x1 (n) ⊗ x1 (n )
k = −∞
(10.13)
Układy dyskretne
263
h1(n)
x(n)
y(n)
H(z)=H1(z)+H2(z)
x(n)
δ(n)
h2(n)
x(n)
b)
y(n)
h(n)=h1(n)+h2(n)
a)
h1(n)
h(n)
δ(n)
y(n)
x(n)
h2(n)
δ(n)
δ(n)
h(n)
h(n)
H(z)=H1(z)H2(z)
y(n)
h(n)=∑k h1(k)h2(n−k)
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” oznacza 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 czasowych 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ściowego. 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 nastę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ą bowiem: y(0) = 1, y(1) = −a, y(2) = (−a)2, y(3) = (−a)3, ... Dochodzimy w tym miejscu do pewnego 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:
∞
∞
k =1
k =1
y ( n) = x( n) − ∑ ak y (n − k ) = x( n) − ∑ g (k ) y (n − k )
(10.16)
Układy dyskretne
264
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) =
∞
∞
m=0
k =1
∑ h(m ) x( n − m ) − ∑ g (k ) y (n − k )
(10.17a)
lub
∞
y(n) + ∑ g (k ) y(n − k ) =
k =1
∞
∑ h (m) x (n − m)
(10.17b)
m =0
p a m i ę t a j ą c y c h zarówno stare „wejścia” jak i „wyjścia”. W praktycznej realizacji „cyfrowej” (mikroprocesorowej) nieskończone sumy nie zapewnią programiście chwały, więc od
razu załóżmy, że nas dalej będą interesowały układy LTI o funkcji „przejścia” postaci:
y(n) =
M
N
m=0
k =1
∑ h(m ) x( n − m ) − ∑ g (k ) y (n − k )
(10.18a)
lub
y(n) =
M
N
m =0
k =1
∑ bm x(n − m) − ∑ a k y(n − k )
(10.18b)
Równanie „różnicowe” (10.17b) jest dyskretnym odpowiednikiem równania „różniczkowego”
(5.12), opisującego układy analogowe. A więc już jesteśmy „w domu”. Wystarczy dobrać
rzędy opóźnień M i N oraz współczynniki bm, m = 0, 1, 2, ..., M, ak, k = 1, 2, 3, ..., N, i zacząć
„cyfrowo przetwarzać sygnał” x(n) na y(n), czyli na przykład go filtrować, tak jak to było
w przypadku analogowym.
Schemat blokowy układu dyskretnego, realizującego zależność (10.18) jest przedstawiony na
rysunku 10.4a dla M = N = 3. Blok „z−1” oznacza układ opóźniający sygnał o jedną próbkę.
W sytuacji kiedy wszystkie współczynniki ak są równe zero (za wyjątkiem a0 = 1), upraszcza
się on do układu pokazanego na rysunku 10.4b, czyli do nierekursywnego filtra cyfrowego
(brak sprzężenia z wyjścia układu), w którym współczynniki bm, m = 0, 1, 2, ..., M, są równe
próbkom odpowiedzi impulsowej h(m), m = 0, 1, 2, ..., M. Wówczas układ realizuje operację
splotu sygnału x(n) z odpowiedzią impulsową h(m), mającą tylko M+1 próbek niezerowych.
Jeśli natomiast wszystkie współczynniki bm są równe zero (za wyjątkiem b0 = 1), otrzymujemy
układ zaprezentowany na rysunku 10.4c.
a) „pełny” FIR/IIR (ARMA)
b0
x(n)
z−1
x(n−1)
z−1
x(n−2)
z−1
x(n−3)
b) „tylko” FIR” (MA)
b1
b2
b3
y(n)
−a1
−a2
−a3
b0
x(n)
z−1
z−1
y(n−1)
x(n−1)
z−1
z−1
y(n−2)
x(n−2)
z−1
z−1
y(n−3)
x(n−3)
b1
b2
b3
c) „tylko” IIR (AR)
y(n)
x(n)
y(n)
−a1
−a2
−a3
z−1
y(n−1)
z−1
y(n−2)
z
−1
y(n−3)
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
Problemem otwartym pozostaje dalej zaproponowanie zestawu wartości parametrów {M, N,
bm, m = 0, 1, 2, ..., M, ak, k = 1, 2, 3, ..., N} gwarantujących spełnienie zadanych wymagań częstotliwościowych typu LP, HP, BP, czy BS. Z pomocą przychodzi nam transformacja Z, która
w świecie układów dyskretnych pełni podobną rolę jak transformacja Laplace’a w świecie
układów analogowych. Jest ona poszukiwanym przez nas narzędziem obliczeniowym, które
jest równie skutecznym „pogromcą” równań różnicowych jak transformacja Laplace’a − równań różniczkowych. Z transformacją Z zapoznamy się w podrozdziale 10.3.
10.2. Algorytm filtracji sygnałów za pomocą dyskretnych
układów LTI
Przykładowy algorytm filtracji cyfrowej sygnałów „na bieżąco”, tzn. w trakcie napływania kolejnych danych, jest przedstawiony w tabeli 10-1. Realizuje on następującą, zmodyfikowaną
wersję równania (10.18)
y(n) =
M
N
m =1
k =2
∑ bm x(n − m + 1) − ∑ a k y(n − k + 1)
(10.19)
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 sposó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 prawo, 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 (kopiowania) 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 najstarszej 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 indeksowanego 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 drugiej: 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 powinniś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ównocześ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 implementują oba przedstawione wyżej algorytmy filtracji: z buforami przesuwnymi (funkcja
filtrBP()) oraz buforami kołowymi (funkcja filtrBK()). Szczegóły filtracji i implementacji w czasie rzeczywistym buforów kołowych na procesorach sygnałowych przedstawiono w rozdziale 25. Tam też można znaleźć graficzną ilustrację zasady ich pracy.
Układy dyskretne
266
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), wykorzystujący metodę buforów przesuwnych
1) wyzeruj bufor próbek wejściowych bx(.) o długości M:
m = 1, 2,..., M : bx[m] = 0
i bufor próbek wyjściowych by(.) o długości K = N−1:
k = 1, 2,..., K : by[k ] = 0
2) powtarzaj w pętli dla każdego n:
{
a) przesuń próbki w buforze wejściowym o 1 pozycję w prawo:
m = M , M − 1,..., 2 : bx[m] = bx[m − 1]
b) umieść próbkę x(n) na skrajnej lewej pozycji w tym buforze;
bx[1] = x( n )
c) dokonaj właściwej filtracji (a(1) = 1 nie jest uwzględniane):
y(n ) =
M
K
m =1
k =1
∑ bm bx[m] − ∑ ak +1by[k ]
d) przesuń próbki w buforze wyjściowym o 1 pozycję w prawo:
k = K , K − 1,..., 2 : bx[k ] = bx[k − 1]
e) umieść obliczoną próbkę y(n) na skrajnej lewej pozycji w tym buforze;
by[1] = y ( n )
}
Tab. 10-2. Przykładowy program komputerowy, napisany w języku Matlab, implementujący filtrację sygnałów z wykorzystaniem buforów przesuwnych i kołowych
% Ćwiczenie: Filtracja cyfrowa z wykorzystaniem buforów przesuwnych i kołowych
y = filter(b,a,x)
% odpowiednia funkcja Matlaba
% ALGORYTM filtracji z wykorzystaniem Buforów Przesuwnych
function y = filterBP(b,a,x)
Nx=length(x);
M=length(b); N=length(a);
a=a(2:N); N=N-1;
bx=zeros(1,M); by=zeros(1,N); y=[];
for n=1:Nx
bx = [ x(n) bx(1:M-1)];
y(n) = sum(bx .* b) - sum(by .* a);
by = [ y(n) by(1:N-1) ];
end
%
%
%
%
%
%
%
%
długość sygnału
liczba współczynników filtra
usunięcie a(1)=1
inicjalizacja i wyzerowanie buforów
powtórz dla wszystkich próbek sygnału
nowa próbka do bufora wejściowego
suma próbek wejściowych i wyjściowych
nowa próbka do bufora wyjściowego
Układy dyskretne
267
% ALGORYTM filtracji z wykorzystaniem Buforów Kołowych
function y = filterBK(b,a,x)
Nx=length(x);
M=length(b); N=length(a);
a=a(2:N); N=N-1;
bx=zeros(1,M); by=zeros(1,N); y=[];
ix = 1; iy = 1;
for n=1:Nx
bx(ix) = x(n);
sum = 0; ib = 1; ia = 1;
%
%
%
%
%
%
%
%
długość sygnału
liczba współczynników filtra
usunięcie a(1)=1
inicjalizacja i wyzerowanie buforów
inicjalizacja wskaźników do buforów
powtórz dla wszystkich próbek sygnału
pobranie danej wejściowej do bufora WE
inicjalizacja
for k = 1 : M-1
sum = sum + bx(ix)*b(ib);
ix = ix - 1; if (ix==0) ix=M; end
ib = ib + 1;
end
sum = sum + bx(ix)*b(ib);
%
%
%
%
%
%
SUMA PRÓBEK WEJŚCIOWYCH
kolejny składnik sumy
zwiększenie indeksu w buforze WE
zwiększenie indeksu wag filtra b
for k = 1 : N-1
sum = sum - by(iy)*a(ia);
iy = iy - 1; if (iy==0) iy=N; end
ia = ia + 1;
end
sum = sum - by(iy)*a(ia);
%
%
%
%
%
%
SUMA PRÓBEK WYJŚCIOWYCH
kolejny składnik sumy
zwiększenie indeksu w buforze WY
zwiększenie indeksu wag filtra
y(n)=sum;
by(iy)=sum;
% zapisanie danej wyjściowej
% zapisanie danej wyjściowej do bufora WY
dodanie ostatniego składnika sumy
odjęcie ostatniego składnika
end
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 transformacji 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:
0 ≤ r− < z < r+ ≤ ∞
(10.21)
Dla sygnałów impulsowych o skończonej liczbie niezerowych próbek (skończonym czasie
trwania), liczba wyrazów wielomianu (10.20) jest także skończona i zawsze istnieje obszar
zmienności zmiennej „z” zapewniający zbieżność szeregu (10.20). Przykładowo, wyznaczmy
transformaty Z kilku sygnałów, z których każdy ma tylko trzy niezerowe próbki o wartościach
0,25; 0,5 i 0,25; lecz występujące w różnych chwilach czasowych:
X 1 ( z ) = x ( −3) z 3 + x ( −2) z 2 + x ( −1) z ,
X 1 ( z ) = 0, 25z 3 + 0, 5z 2 + 0, 25z ,
z≠∞
X 2 ( z ) = x ( −2) z 2 + x ( −1) z1 + x (0) ,
X 2 ( z ) = 0, 25z 2 + 0,5z + 0, 25 ,
z≠∞
−1
X 3 ( z ) = x ( −1) z + x (0) + x (1) z ,
−1
X 3 ( z ) = 0, 25z + 0, 5 + 0, 25z ,
z≠∞ i z≠0
Układy dyskretne
268
X 4 ( z ) = x (0) + x (1) z + x ( 2) z −2 ,
X 5 ( z ) = x (1) z
−1
+ x ( 2) z
−2
X 4 ( z ) = 0, 25 + 0, 5z −1 + 0, 25z −2 ,
+ x (3) z
−3
−1
X 5 ( z ) = 0, 25z + 0, 5z
,
−2
z≠0
−3
+ 0, 25z ,
z≠0
Pierwsze trzy sygnały są nieprzyczynowe, gdyż przyjmują wartości niezerowe dla n < 0,
natomiast kolejne dwa to sygnały przyczynowe. Transformata Z sygnałów nieprzyczynowych
nie jest określona dla z równego nieskończoności (z = ∞), natomiast sygnałów przyczynowych
− dla z równego zero (z = 0), gdyż wówczas potęga zmiennej z jest równa nieskończoności.
Z powyższego przykładu jasno też wynika, że z transformaty Z sygnału można odtworzyć
sygnał. Przykładowo, wiedząc, że X(z) jest równe:
X ( z ) = 0,1 + z −1 + 2 z −2 + 3z −3 + 4 z −4
ze wzoru (10.20) mamy:
x (0) = 0,1, x(1) = 1, x (2) = 2, x(3) = 3, x (4) = 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) Transformata Z skoku jednostkowego u(n) z tabeli 10-3:
X ( z) =
∞
∑
u(n ) z − n =
n =−∞
∞
∞
∑ z − n = ∑ ( z −1 )
n =0
n =0
n
=
1
1 − z −1
z >1
,
2) Transformata przyczynowego szeregu wykładniczego anu(n) z tabeli 10-3:
X ( z) =
∞
a n u( n ) z − n =
∑
n =−∞
∞
∞
∑ a n z − n = ∑ ( az −1 )
n =0
n
n =0
=
1
1 − az
−1
=
z
,
z−a
z >a
3) Transformata szeregu wykładniczego:
− a n , n < 0
x (n) = 
n≥0
 0,
X ( z) = −
−1
∑
n =−∞
∞
a n z −n = − ∑ a −n z n = 1 −
n =1
∞
∑ ( a −1 z )
n =0
n
= 1−
1
−1
1− a z
=
− a −1 z
1 − a −1 z
=
z
,
z−a
z<a
Jak widać, rzeczywiście transformaty w przypadku 2) i 3) są identyczne pomimo tego, że sygnały są różne. Odróżnia je jedynie obszar zbieżności. W powyższych wyprowadzeniach wykorzystaliśmy następujący wzór na sumę szeregu potęgowego (|a| < 1):
∞
1
∑an = 1− a
n =0
Układy dyskretne
269
Tab. 10-3. Transformaty Z wybranych sygnałów
Lp.
Sygnał x(n)
Transformata X(z) (10.20)
Obszar zbieżności
1
1, n = 0
δ( n ) = 
0, n ≠ 0
1
0 ≤ |z| ≤ ∞
2
δ(n − n0)
z − n0
0 < |z| ≤ ∞
3
δ(n + n0)
z n0
0 ≤ |z| < ∞
1, n ≥ 0
u(n) = 
0, n < 0
1
4
5
n ⋅ u (n )
6
n 2 ⋅ u(n )
7
n 3 ⋅ u(n )
8
a n ⋅ u(n )
n
9
na ⋅ u(n )
10
n 2 a n ⋅ u( n )
11
an
⋅ u(n )
n!
12
( n + 1)a n ⋅ u( n )
13
(n + 1)( n + 2)a n
⋅ u(n)
2!
14
(n + 1)( n + 2) ⋅ ⋅ ⋅ (n + k )a n
⋅ u( n )
k!
|z| > 1
1 − z −1
z −1
(1 − z −1 )
z −1 (1 + z −1 )
3
(1 − z −1 )
z −1 (1 + 4 z −1 + z −2 )
4
(1 − z −1 )
2
1
|z| > 1
|z| > 1
|z | > 1
|z| > |a|
1 − az −1
az −1
(1 − az −1 )
az −1 (1 + az −1 )
3
(1 − az −1 )
2
ea / z
|z| > |a|
|z| > |a|
|z| > 0
1
(1 − az −1 )
2
|z| > |a|
3
|z| > |a|
k
|z| > |a|
1
(1 − az −1 )
1
(1 − az −1 )
Układy dyskretne
270
10.4. Odwrotna transformacja Z
Zadaniem odwrotnej transformacji Z jest wyznaczenie sygnału x(n) na podstawie jego transformaty X(z) i informacji o jej obszarze zbieżności. Jej definicja jest następująca:
x (n) =
1
n −1
v∫ X ( z ) z dz
2 πj Γ
(10.22)
gdzie Γ jest „zegaroskrętnym” konturem całkowania, obejmującym początek układu współrzędnych. Zgodnie z twierdzeniem całkowym Cauche’ego:
1, n = 0
1
z n −1dz = 
∫
v
2 πj Γ
0, n ≠ 0
(10.23)
mamy bowiem:
∞ 

1
1  ∞
1
− k + n −1 
X ( z ) z n −1dz =
x ( k ) z − k  z n −1dz = ∑  x (k )
dz  = x (n ) (10.24)
∑

v
∫
v
∫
v∫ z
π
2 πj Γ
2πj Γ  k =−∞
2
j

k =−∞ 


Γ
W najprostszym przypadku, kiedy X(z) jest zwykłym wielomianem zmiennej „z”:
X ( z) =
n2
∑ 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
jest związane z sygnałem, przyjmującym wartości:
x (0) = 5, x(1) = 4, x( 2) = 3, x (3) = 2, x(4) = 1
oraz zero we wszystkich pozostałych chwilach czasowych.
Natomiast w sytuacji kiedy X(z) jest ilorazem dwóch wielomianów zmiennej „z”, sygnał x(n)
oblicza się za pomocą następujących, praktycznych metod:
1) „długiego” dzielenia wielomianów,
2) rozkładu na sumę ułamków prostych,
3) metody residuów.
Przykłady
Szukamy odwrotnej transformaty Z z X(z) równego:
X ( z) =
2 + 2 z −1 + z −2
1 + z −1
,
z >1
Wyznaczymy ją za pomocą trzech alternatywnych metod.
Układy dyskretne
271
1) Metodą „długiego” dzielenia wielomianów otrzymujemy :
2+2z−1+z−2 ← wielomian licznika
(−) 2+2z−1
← wielomian mianownika razy 2
-------------------← różnica
z−2
(−) z−2+z−3
← wielomian mianownika razy z−2
----------------← różnica
−z−3
(−) −z−3−z−4
← wielomian mianownika razy −z−3
-----------------z−4
• • • itd.
−1
2⋅(1+z )
+z−2⋅ (1+z−1)
−z−3⋅(1+z−1)
czyli:
X ( z ) = 2 + z −2 − z −3 + z −4 − z −5 + ...
skąd
 0,
 2,

x (n) = 
 0,
( −1) n ,
n<0
n=0
n =1
lub
x ( n ) = δ( n ) + δ( n − 1) + ( −1) n u( n )
n≥2
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 odejmowania ma zostać uproszczony. Analityczny wzór na wartości współczynników wielomianu,
będącego wynikiem dzielenia, ma postać:
k
c0 =
b0
b −c a
b −c a −c a
, c1 = 1 0 1 , c2 = 2 1 1 0 2 , ..., c k =
a0
a0
a0
bk − ∑ ck − i ai
i =1
a0
(10.26)
przy założeniu, że:
∞
M
N
k =0
m=0
n =0
∑ ck z −k = ∑ bm z −m ∑ a n z −n
(10.27)
2) Metodą rozkładu na sumę składników prostych otrzymujemy :
X ( z ) = 1 + z −1 +
1
1 + z −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 wielomianów, aż do momentu uzyskania sumy prostszych składowych, które występują w tabelach.
Układy dyskretne
272
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
X ( z) = X 1 ( z) + X 2 ( z) =
∑ bm z −m
K
∑ ck z −k + mN=0
∑ a n z −n
(10.28)
k =0
n =0
Sygnał x1(n), związany z X1(z), wyznacza się bezpośrednio z definicji transformacji Z, natomiast odwrotną transformatę X2(z) (M≤N):
X 2 ( z) =
b0 + b1 z −1 + b2 z −2 + ... + bM z − M
(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 jednokrotne bieguny pk, k = 1, 2, ..., N (jednokrotne zera wielomianu mianownika), to może być zapisane jako:
X 2 ( z) =
cN
c1
c2
B( z )
= c0 +
+
+ ... +
−1
−1
−1
−1
−1
−
−
−
p
z
p
z
p N z −1
1
1
1
−
−
−
p
z
p
z
p
z
1
1
...
1
( 1 )( 2 ) ( N )
1
2
(10.30)
i parametry „c” wyznacza się ze wzoru:
c k = X ( z ) ⋅ (1 − pk z −1 ) |z = p k , k = 1, 2, 3, ..., N
(10.31)
współczynnik zaś c0 jest różny od zera tylko dla M = N i równy wtedy:
c0 =
bN
aN
(10.32)
Natomiast w przypadku X(z) z m-krotnym biegunem pl mamy:
X 2 (z) =
B( z )
(1 − p z ) (1 − p z ) ... (1 − p z )
−1
2
X 2 ( z ) = c0 + ∑
k
−1 m
−1
1
k
...
= c0 + ∑
k
m
dl , j z
ck
+ ... + ∑
+ ...
j
−1
1 − pk z
j =1 ( z − pl )
m
d l , j z1− j
ck
+
+
+ ... (10.33)
...
∑
−1 j
1 − pk z −1
j =1 (1 − p z )
l
(10.34)
i współczynniki rozwinięcia dl,j są określone wzorem:
dl, j =
1
d m− j
( m − j )! dz m − j

(z − pl )m 
 X ( z)

z

 z = p
(10.35)
k
a współczynniki ck są wyznaczane jak poprzednio. W końcowym etapie z tabel znajdujemy sygnały odpowiadające wyznaczonym, prostym transformatom, przykładowo:
X k ( z) =
ck
1 − p k z −1
↔
x ( n ) = ck ⋅ ( p k )n
(10.36)
Układy dyskretne
273
X k ( z) =
d l ,2 z −1
(1 − pl z )
−1 2
=
d l ,2
(
p l z −1
pl 1 − p z −1
l
)
↔
2
x(n ) =
d l ,2
pl
⋅ n ⋅ ( pl )n
(10.37)
3) Zastosowanie metody residuów w rozważanym przypadku wygląda następująco :
(patrz uwaga poniżej):
• przekształcenia, analiza:
X ( z) =
2z 2 + 2z + 1
z2 + z
F ( z ) = z n −1 X ( z ) =
=
2z 2 + 2z + 1
,
z ( z + 1)
z n (2 z 2 + 2 z + 1)
z 2 ( z + 1)
z >1
,
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:
F ( z) =
z n −2 ( 2 z 2 + 2 z + 1)
( z + 1)
x (n ) = Res[ p1 , F ( z )] = ( z − p1 ) F ( z )
z = p1
= ( z + 1) z n − 2
2z 2 + 2z + 1
z +1
z = −1
= ( −1) n − 2 = ( −1) n
• przypadek n = 1:
F ( z) =
2z 2 + 2z + 1
z ( z + 1)
x1 (1) = Res[ p1 , F ( z )] = ( z − p1 ) F ( z )
z = p1
x 2 (1) = Res[ p2 , F ( z )] = ( z − p2 ) F ( z )
= ( z + 1)
z = p2
=z
2z 2 + 2z + 1
z ( z + 1)
2z 2 + 2z + 1
z ( z + 1)
z =0
z = −1
= −1
=1
x (1) = x1 (1) + x 2 (1) = −1 + 1 = 0
• przypadek n = 0:
F ( z) =
2z 2 + 2z + 1
z 2 ( z + 1)
x1 (0) = Res[ p1 , F ( z )] = ( z − p1 ) F ( z )
x 2 (0) = Res[ p 2 , F ( z )] =
[
z = p1
= ( z + 1)
d
( z − p2 ) 2 F ( z )
dz
x (0) = x1 (0) + x 2 (0) = 1 + 1 = 2
]
z = p2
=
2z 2 + 2z + 1
z 2 ( z + 1)
z = −1
=1
d  2 2 z 2 + 2 z + 1
z

dz 
z 2 ( z + 1) 
z=0
=1
Układy dyskretne
274
Otrzymany wynik jest więc identyczny jak dwa poprzednie.
Dla dociekliwych. Jeżeli X(z) jest funkcją wymierną (iloraz dwóch wielomianów), to na podstawie 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:
ρk =
1
d m −1 
( z − pk ) m F ( z ) 
 z = pk
(m − 1)! dz m −1 
(10.40)
Dla pojedynczego bieguna mamy:
ρ k = ( z − pk ) m F ( z )
z = pk
= ( z − p k ) z n −1 X ( z )
(10.41)
z = pk
10.5. Właściwości transformacji Z
Transformata Z charakteryzuje się kilkoma fundamentalnymi właściwościami, które są dla nas
bardzo ważne i z których wkrótce skorzystamy rozwiązując „problem” równania (10.18),
a mianowicie jest ona liniowa:
∞
∞
∞
n = −∞
n = −∞
n = −∞
∑ [ax1 (n ) + bx2 (n )]z −n = a ∑ x1 (n ) z −n + b ∑ x2 (n ) z −n = aX 1 ( z ) + bX 2 ( z )
(10.42)
oraz „niewrażliwa” w module na przesunięcie sygnału (m = n−n0):
∞
∞
∞
∑ x ( n − n 0 ) z − n = ∑ x ( m ) z −( m + n ) = z − n ∑ x ( m ) z − m = z − n
0
n = −∞
0
n = −∞
0
(10.43)
X ( z)
n = −∞
Druga właściwość jest analogiczna do właściwości „pochodnej” (5.41), (5.42) transformacji
Laplace’a: dla zerowych warunków początkowych transformata m-tej pochodnej sygnału była
równa transformacie samego sygnału, pomnożonej przez sm: x(n)(t) ↔ smX(s). Natomiast
w przypadku transformacji Z transformata sygnału opóźnionego o n0 próbek jest równa transformacie sygnału bez opóźnienia, pomnożonej przez z − n0 . Dodatkowo transformata Z ma
właściwość splotu (m = n−k):
∞

∞

∞

∞
∞



 k = −∞

∞

∑  ∑ x(k ) y (n − k )  z −n = ∑  ∑ x(k ) y (m)  z −(m+k ) = ∑ x(k ) z −k  ∑ y (m) z −m  = X ( z )Y ( z )
n = −∞  k = −∞

m = −∞  k = −∞
 m =−∞

(10.44)
Układy dyskretne
275
i właściwość iloczynu (korzystamy z definicji odwrotnej transformacji Z (10.22); ξ = z/ν):
∞
∑ [ x ( n ) y (n )] z
−n
n =−∞
=
=
∞

 1
n =−∞


∑  x(n )  2π j v∫ Y (ν )ν
n −1
Γ

1  ∞
−n 
−1
dν   z − n =
∫
v
 ∑ x ( n )( z /ν )  Y (ν )v dν =
π
j
2
n
=−∞



Γ

1
X ( z / ν)Y ( ν)v −1d ν
∫
v
2 πj Γ
(10.45)
podobnie jak całkowe przekształcenie Fouriera.
10.6. Transmitancja układów dyskretnych
Ponieważ dyskretne układy LTI są opisane równaniem splotu dyskretnego (10.8a), (10.8b):
y(n) =
∞
∞
m = −∞
m = −∞
∑ h( m) x( n − m ) = ∑ x (m)h(n − m)
(10.46)
to z właściwości splotu transformacji Z wynika, że powyższemu opisowi układu w dziedzinie
czasu odpowiada następujące równanie w „dziedzinie” transformaty Z:
Y ( z) = H ( z) X ( z) ⇒
H (z) =
∞
∞
Y ( z)
= ∑ h( n ) z − n = ∑ h(n ) z − n
X ( z ) n = −∞
n=0
(10.47)
czyli transformata H(z) odpowiedzi impulsowej h(n) (przyczynowej!) stanowi transmitancję
tego układu. W przypadku zaś kiedy dyskretny układ LTI jest opisany następującym równaniem:
y(n) =
M
N
m =0
k =1
∑ bm x(n − m) − ∑ a k y(n − k )
(10.48)
to obliczając transformatę Z jego obu stron i korzystając z właściwości liniowości (10.42)
i „niezmienności” na przesunięcie (10.43) przekształcenia Z, otrzymujemy:
M

N

Y ( z ) =  ∑ bm z −m  X ( z ) −  ∑ a k z −k Y ( z )
 m =0

k =1

(10.49)
(1 − z1 z −1 )(1 − z 2 z −1 )...(1 − z M z −1 )
Y ( z ) b0 + b1 z −1 + b2 z −2 + ... + bM z − M
=
=
N
−
1
−
2
−
X ( z ) 1 + a1 z + a 2 z + ... + a N z
(1 − p1 z −1 )(1 − p 2 z −1 )...(1 − p N z −1 )
(10.50)
skąd:
H ( z) =
gdzie zk oznaczają zera wielomianu licznika (zera transmitancji), a pk − zera wielomianu mianownika (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ównania (10.47). Mnożąc równocześnie licznik i mianownik transmitancji (10.50) przez zM i zN,
otrzymujemy (a0 = 1):
Układy dyskretne
276
H ( z) =
z N b0 z M + b1 z M −1 + ... + bM −1 z + bM
z
M
a0 z
N
+ a1 z
N −1
+ ... + bN −1 z + bN
= z N −M
b0 ( z − z1 )( z − z 2 )...( z − z M )
a 0 ( z − p1 )( z − p 2 )...(1 − p N )
(10.51)
czyli transmitancję podobną do transmitancji układów analogowych H(s), w której występują
tylko dodatnie potęgi zmiennej zespolonej „z”. Układy cyfrowe opisane transmitancjami
(10.50), (10.51) są stabilne, jeśli ich bieguny pk, k = 1, 2, 3, ..., N leżą wewnątrz okręgu jednostkowego na płaszczyźnie zmiennej zespolonej z.
Dla dociekliwych. Z czego wynika podany powyżej warunek stabilności układów LTI? Jak
wiemy warunkiem koniecznym i wystarczającym stabilności układu dyskretnego jest spełnienie
warunku (10.11) przez jego odpowiedź impulsową h(n). Odpowiedź tę możemy wyznaczyć za
pomocą odwrotnej transformacji Z z H(z). Jak już wykazaliśmy H(z) dane wzorem (10.29) jest
transformatą Z sumy sygnałów hk(n) i hl(n) postaci (10.36)(10.37). Suma ta będzie na pewno
spełniała warunek (10.11), jeśli każdy z jej sygnałów składowych będzie go spełniał. A tak
się dzieje, jeśli (pk)n i (pl)n dążą do zera dla n rosnącego do nieskończoności. Ma to miejsce
wtedy kiedy |pk| < 1 oraz |pl| < 1, tzn. kiedy każdy zespolony biegun transmitancji
(10.50), (10.51) leży wewnątrz okręgu jednostkowego.
Projektowanie dyskretnych układów LTI sprowadza się do zaprojektowania transmitancji H(z)
układu (10.48), tzn. przyjęcia wartości parametrów M, N, bm, ak, m = 0, 1, 2, ..., M, k = 1,
2, 3, ..., N. Kiedy transmitancja jest już zdefiniowana, równania czasowe układu, który ją „realizuje”, uzyskuje się odpowiednio interpretując współczynniki wielomianów tej transmitancji
zgodnie z równaniem (10.48). I tak, wielomian licznika jest związany z sygnałem wejściowym
x(n), wielomian zaś mianownika − z sygnałem wyjściowym y(n). Potęga zmiennej „z” informuje nas natomiast o opóźnieniu sygnałów. Przykładowo transmitancja postaci:
H ( z) =
3 + 2 z −1 + z −2
1 + 2 z −1 + 3z −3
odpowiada układowi o równaniu czasowym:
y ( n ) = [3x ( n ) + 2 x ( n − 1) + x ( n − 2)] − [2 y ( n − 1) + 3 y ( n − 3)]
Przejdźmy teraz do fundamentalnego problemu: j ak należy d o b ie r ać wsp ó łczynniki
transmitancj i układu, aby zapewnić mu o kr eślo ne właściwo ści często tliwo ścio we. Aby odpowiedzieć na to pytanie należy, po pierwsze, znać „interpretację” częstotliwościową transmitancji H(z) oraz, po drugie, odpowiednio ją kształtować, zmieniając współczynniki wielomianów transmitancji.
Interpretacja częstotliwościowa. Aby nadać „sens” częstotliwościowy H(z), wystarczy znaleźć
związek pomiędzy transformacją Z a transformacją Fouriera dla sygnałów dyskretnych. Ponieważ są one zdefiniowane następująco:
transformacja Z:
transformacja Fouriera:
X ( z) =
∞
∑ x ( n ) z −n
n = −∞
+∞
( ) ∑ x(n )e − jΩn
n = −∞
X e jΩ =
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
gdzie Ω jest pulsacją unormowaną względem częstotliwości próbkowania i równą 2πF =
= 2πf / fpr. Wartości z na okręgu jednostkowym są związane wartościami częstotliwości unormowanej F = f / fpr, nie istniejącymi poza tym okręgiem.
Szukając interpretacji częstotliwościowej transmitancji H(z), możemy też pójść inną drogą, już
przedstawioną na początku tego rozdziału. Jeśli założymy, że na wejście dyskretnego układu
LTI o odpowiedzi impulsowej h(n) podajemy sygnał x(n) = ejΩn, wówczas zgodnie z (10.8b) na
jego wyjściu otrzymamy (10.10):
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Ω ) = x(n) H ( z ) z = e
∞
∞
∞
k = −∞
k = −∞
k = −∞
jΩ
(10.53)
jΩ
Podobnie wynika stąd, że jeśli zastosujemy podstawienie z = e , to z H(z) widać, jak układ
„przetworzy” konkretną pulsację Ω: o ile ją wzmocni (moduł liczby zespolonej H(ejΩ)) oraz
przesunie w fazie (kąt liczby zespolonej H(ejΩ)).
Stosując podstawienie (10.52) w (10.51) otrzymujemy:
( ) ( )N −M ab0
H e jΩ = e jΩ
0
( e jΩ − z1 )( e jΩ − z 2 )...( e jΩ − z M )
(10.54)
(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 „scenariusz”, 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:
e jΩ − z m = Bm e jθm , e jΩ − p n = An e jθn
(10.55)
gdzie (|.| − moduł liczby zespolonej, )(.) − jej kąt):
(
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 jednostkowym w punkcie zm = e jΩm , zeruje transmitancję dla pulsacji Ωm, natomiast biegun transmitancji, 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
( ) = M (Ω )e
He
jΩ
jΦ ( Ω )
( )
= e
jΩ N − M
∏ B m e jθ
m
b0
a0
m =1
N
(10.57)
∏ An e
jϕn
n =1
M
b
M ( Ω) = 0
a0
∏ Bm
m =1
N
∏ An
n =1
, Φ ( Ω ) = Ω( N − M ) +
M
N
m =1
n =1
∑ θm − ∑ ϕn
(10.58)
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 przedstawiona na rysunku 10.5. Zmieniając częstotliwość f od zera do częstotliwości próbkowania fpr poruszamy się na płaszczyźnie zmiennej zespolonej z po okręgu jednostkowym w kierunku przeciwnym 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 powodujemy tłumienie tej częstotliwości przez układ. Jeśli zero leży dokładnie na okręgu jednostkowym, to układ całkowicie usuwa z sygnału składową o danej częstotliwości. Z kolei zbliżanie 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 projektowe, 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 mianowicie 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 wyznacza 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 zajmowaliśmy się szczegółowo problemem stabilności układów dyskretnych. Przypomnijmy, podobnie 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 dyskretnymi układami typu LTI, czyli liniowymi, niezmiennymi w czasie, i w dodatku nie wyczerpaliś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 sieciach neuronowych itd. W każdym z tych przypadków układ odpowiada „liczbami” na „liczby”, ale nie w sposób „liniowy”.
Zostaną teraz przedstawione dwa przykłady zastosowania metody „zer i biegunów” do zaprojektowania prostych układów dyskretnych. Posłużą nam one do bardziej szczegółowego przyjrzenia się praktycznym aspektom działania układów dyskretnych.
Układy dyskretne
279
a)
Im
e
z
jπ/2
ejΩ0
R=1
ejπ
ej0
Re
ej2π
z=ejΩ
ej3π/2
b)
Im
z1
z3
p1
p2
z3*
z1
z1
Im
p1
z3
Re
z3
Re
p2
p1*
z3*
*
z
z=ejΩ0
z2
z=ejΩ0
z2
z2
z
p1*
z2*
*
z=e
jΩ
z=ejΩ
z1*
c)
z1
Im
z
Im
z
p1
z=ejΩ0
z=ejΩ0
Re
Re
r
z1*
ϕ
p1*
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 promieniu jednostkowym (zmienności Ω [0, 2π) odpowiada zmienność f [0, fpr)); b) wszystkie zera „z” i bieguny „³”, 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ęstotliwoś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ęstotliwościowe (suma kątów zer minus suma kątów biegunów)
Układy dyskretne
280
10.7. Przykłady projektowania układów dyskretnych metodą
„zer i biegunów”
Obecnie spróbujemy wykorzystać wiedzę zdobytą w tym rozdziale do zaprojektowania dwóch
układów (filtrów) dyskretnych.
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). Chcemy 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 jednostkowym w punkcie określonym przez kąt ϕz = Ωz = 2π(fz/fpr). W związku z tym zero to jest równe:
z z = e jϕ z = e jΩ z = e
j 2 π ( f z / f pr )
= e j 2 π( 50 / 1000) = e jπ / 10
(10.59)
Aby wielomian licznika transmitancji miał współczynniki o wartościach rzeczywistych, transmitancja musi mieć także zero sprzężone zz*. Z kolei aby filtr wzmacniał sygnał o częstotliwości fs = 10 Hz, powinien mieć biegun wewnątrz okręgu jednostkowego, blisko punktu, związanego z tą częstotliwością, na przykład równy:
ps = 0, 98e jΩ s = 0, 98e
j 2π ( f s / f pr )
= 0, 98e j 2π (10 /1000) = 0, 98e jπ / 50
(10.60)
oraz biegun z nim sprzężony ps*. W związku z powyższym transmitancja H(z) jest równa:
H ( z) =
(1 − z z z −1 )(1 − z z* z −1 )
(1 − e jπ /10 z −1 )(1 − e − jπ /10 z −1 )
=
−1
* −1
(1 − ps z )(1 − ps z ) (1 − 0, 98e jπ / 50 z −1 )(1 − 0, 98e − jπ / 50 z −1 )
(10.61)
Jej zera i bieguny są przedstawione na rysunku 10.6a. Po wymnożeniu wyrazów licznika i mianownika otrzymujemy:
H ( z) =
1 − ( e jπ /10 + e − jπ /10 ) z −1 + z −2
1 − 2 cos(π /10) z −1 + z −2
=
(10.62)
jπ / 50
− jπ / 50
−1
−2
1 − 0, 98( e
+e
)z + z
1 − 0, 98 ⋅ 2 cos(π / 50) z −1 + 0, 9604 z −2
H ( z) =
1 − 1, 9021z −1 + z −2
1 − 1, 9561z −1 + 0, 9604 z −2
czyli
(10.63)
Podstawiając
z = e jΩ = e
j 2 π ( f / f pr )
otrzymujemy charakterystykę częstotliwościową tego układu:
H (e jΩ ) =
1 − 1, 9021e − jΩ + e −2 jΩ
1 − 1, 9561e − jΩ + 0, 9604e −2 jΩ
(10.64)
Układy dyskretne
b)
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
0.5
20log10|H(ej2πf/fpr)| [dB]
a)
281
40
20
0
-20
-40
-60
1
0
20
Real(z)
c)
60
80
100
80
100
f [Hz]
d)
40
30
1
kąt H(ej2πf/fpr)
|H(ej2πf/fpr)|
40
20
10
0
0
-1
-2
-3
-4
0
20
40
60
80
100
0
20
f [Hz]
40
60
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
przedstawioną na rysunkach 10.6b i 10.6c (charakterystyka amplitudowa) i 10.6d (charakterystyka fazowa). W zerze transmitancji obserwujemy skok charakterystyki fazowej o π radianów.
Dla f = fs = 10 Hz oraz f = fz = 50 Hz otrzymujemy (fpr = 1000 Hz):


f 
f 
 π
π
H  2π s  = H   = Ge jφ = 37,23 ⋅ e − j1,40 , H  2π z  = H   = 0
(10.65)




f
50
f
 
 10 
pr 
pr 


co oznacza, że sygnał użyteczny wzmocniono 37,23 razy i opóźniono w fazie o 1,4 radiana,
zakłócenie zaś zostanie całkowicie usunięte z sygnału wejściowego.
Aby zrealizować układ dyskretny o transmitancji (10.63), wykorzystujemy definicję transmitancji:
Y ( z)
H ( z) =
(10.66)
X ( z)
Ze wzorów (10.63) i (10.66) otrzymujemy:
 1 − 1, 9561z −1 + 0, 9604 z −2  Y ( z ) =  1 − 1, 9021z −1 + z −2  X ( z )
(10.67)
Wykorzystując właściwość (10.43) transformacji Z dochodzimy do równania czasowego układu:
y (n ) − 1, 9561 y ( n − 1) + 0, 9604 y (n − 2) = x(n ) − 1, 9021x (n − 1) + x (n − 2)
(10.68)
Po pozostawieniu po lewej stronie tylko wielkości poszukiwanej y(n), otrzymujemy końcową
zależność na wyznaczanie kolejnej wartości wyjściowej układu na podstawie trzech ostatnich
próbek wejściowych i dwóch ostatnich próbek wyjściowych:
Układy dyskretne
282
1
x(n)
e)
z−1
y(n)
−1.9021
z−1
1.9561
y(n−1)
x(n−1)
z−1
1
z−1
−0.9604
y(n−2)
x(n−2)
h(n)
f)
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
0
100
200
300
400
500
n
g)
h)
2
40
20
y(n)
x(n)
1
0
-1
0
-20
-2
-40
0
100
200
300
400
500
0
100
200
n
i)
j)
1
400
500
0.8
60
80
100
40
|Y(ej2πf/fpr)|
|X(ej2πf/fpr)|
300
n
0.6
0.4
0.2
0
30
20
10
0
0
20
40
60
f [Hz]
80
100
0
20
40
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
y (n ) = x( n ) − 1, 9021x(n − 1) + x(n − 2) + 1, 9561 y ( n − 1) − 0, 9604 y (n − 2)
(10.69)
Schemat blokowy tego układu jest przedstawiony na rysunku 10.6e. Na rysunku 10.6f przedstawiono 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ć zagadkę h(n), zastosujmy (10.30)(10.31) w stosunku do (10.63). Otrzymamy wówczas:
H ( z) =
0, 7669 ⋅ e − j1.5977
0, 7669 ⋅ e j1.5977
+
jπ / 50 −1
1 − 0, 98e
z
1 − 0, 98e − jπ / 50 z −1
(10.70)
Z kolei na podstawie pozycji 8 z tabeli 10-3 mamy:
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:
h (n ) = h0 (n ) + h0* (n ) = 2 Re ( h0 (n ) ) = 2 Re ( 0, 7669e − j1,5977 ⋅ (0, 98)n e jπ n / 50 ⋅ u (n ) )
(10.72)
czyli dla n > 0 mamy
oraz
h ( n ) = 2 ⋅ 0, 7669 ⋅ (0, 98) n cos (π n / 50 − 1, 5977 )
(10.73)
h(0) = 1
(10.74)
Załóżmy, że na wejście układu podamy sygnał o długości N = 1000 próbek (n = 0, 1, 2, ...,
999):




f
f
π 
π 
x (n ) = sin(2πf s n∆t ) + sin(2 πf z n∆t ) = sin 2π s n  + sin 2π z n  = sin n  + sin n 




f pr 
f pr 
 50 
 10 


(10.75)
przedstawiony na rysunku 10.6g. Wówczas zgodnie z (10.65) na jego wyjściu powinniśmy
otrzymać sygnał (po zaniku stanu przejściowego):
π

π

y ( n ) = G sin  n + φ  = 37,23 ⋅ sin  n − 1,4 
 10

 10

(10.76)
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, „wyciętych” przez okno prostokątne, na rysunkach 10.6i i 10.6j widzimy poprzesuwane w częstotliwoś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ć
Układy dyskretne
284
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 


1000
f
4 


pr 

(10.77)
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ą metody „zer i biegunów” zera umieszczamy w paśmie zaporowym:

f
z k = exp j 2 π zk

f
pr


,


f zk = 50, 100, 150, 350, 400, 450 Hz
(10.78)
a bieguny w pobliżu okręgu jednostkowego blisko częstotliwości pasma przepustowego:

f pk
pk = rk exp  j 2π

f pr


 , rk = 0, 9; 0, 65 ; 0, 9;

f pk = 200, 250, 300 Hz
(10.79)
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 zerach 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).
10.8. Przykład ćwiczenia komputerowego
W tabeli 10-4 został przedstawiony program komputerowy, z pomocą którego zaprojektowano
filtry w dwóch omawianych przykładach. W programie tym jest zaimplementowana także
operacja samej filtracji oparta na wzorach (10.19), (10.48). Bufory próbek wejściowych bx[.]
i wyjściowych by[.] zaimplementowane zostały w najprostszy sposób, czyli jako bufory przesuwne, mając na uwadze czytelność programu i poglądowe przedstawienie algorytmu filtracji
sygnałów dyskretnych, pracującego w czasie rzeczywistym. Oczywiście, każdorazowe przesuwanie próbek w buforach po „przyjściu” nowej próbki z przetwornika A/C nie jest rozwiązaniem optymalnym pod względem szybkości działania filtra. W rzeczywistości nie stosuje się
buforów przesuwnych tylko kołowe (cykliczne), w których nowa próbka „nadpisuje” w buforze
wartość próbki najstarszej. Wówczas nie jest konieczne przesuwanie próbek sygnałów w
buforach, ale część sterująca programu jest nieco bardziej złożona. Program algorytmu
filtracji, wykorzystujący bufory kołowe, jest przedstawiony w tabeli 10-4. Niektóre procesory
sygnałowe, na przykład firmy Motorola DSP56xxx, mają wbudowane mechanizmy sprzętowe
umożliwiające cykliczne/kołowe (modulo M lub N) adresowanie próbek w pamięci procesora.
Układy dyskretne
b)
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
0.5
20log10|H(ej2πf/fpr)| [dB]
a)
285
40
20
0
-20
-40
-60
1
0
100
Real(z)
c)
d)
kąt H(ej2πf/fpr)
|H(ej2πf/fpr)|
60
40
20
400
500
-5
-10
-15
-20
100
200
300
400
500
0
100
f [Hz]
200
300
f [Hz]
f)
3
2
1
0
-1
-2
-3
80
40
y(n)
x(n)
500
-25
0
0
-40
-80
0
50
100
150
200
0
50
100
n
150
200
n
h)
1
0.8
80
|Y(ej2πf/fpr)|
|X(ej2πf/fpr)|
400
0
0
g)
300
f [Hz]
80
e)
200
0.6
0.4
0.2
0
60
40
20
0
0
100
200
300
f [Hz]
400
500
0
100
200
300
400
500
f [Hz]
Rys. 10.7. Projekt 2: 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, 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
Układy dyskretne
286
h(n)
i)
15
10
5
0
-5
-10
-15
0
50
100
150
200
n
Rys. 10.7. (cd.) i) odpowiedź impulsowa filtra h(n)
Tab. 10-4. Przykładowy program komputerowy do projektowania filtrów cyfrowych metodą „zer i biegunów” i testujący zaprojektowany filtr
% Ćwiczenie: Projektowanie rekursywnych filtrów cyfrowych metodą „zer i biegunów”
clear all; clf; subplot(111);
projekt = 1;
filtr = 1;
odpimp = 0;
fpr = 1000;
%
%
%
%
1=filtr dolnoprzepustowy LP, 2=filtr pasmowoprzepustowy BP
filtracja: 1=funkcja Matlaba, 2=bufory przesuwne, 3=bufory kołowe
1=pokaż odpowiedź impulsową układu
częstotliwość próbkowania w Hz
% Podaj parametry zer i biegunów transmitancji
if (projekt==1)
fz = [ 50
];
fp = [ 10
];
Rz = [ 1
];
Rp = [ 0.95 ];
fmax = 100; df = 0.1;
end
if (projekt==2)
fz = [ 50 100 150 350 400 450 ];
fp = [ 200 250 300 ];
Rz = [ 1 1 1 1 1 1 ];
Rp = [ 0.9 0.65 0.9 ];
fmax = 500; df = 1;
end
% Oblicz zera i bieguny transmitancji
fi_z = 2*pi*(fz/fpr);
%
fi_p = 2*pi*(fp/fpr);
%
z = Rz .* exp(j*fi_z);
%
p = Rp .* exp(j*fi_p);
%
z = [ z conj(z) ];
%
p = [ p conj(p) ];
%
%
%
%
%
%
%
FILTR DOLNOPRZEPUSTOWY
częstotliwości zer w Hz
częstotliwości biegunów w HZ
promienie kolejnych zer
promienie kolejnych biegunów
parametry obliczanego widma Fouriera
%
%
%
%
%
%
FILTR PASMOWOPRZEPUSTOWY
częstotliwości zer w Hz
częstotliwości biegunów w Hz
promienie kolejnych zer
promienie kolejnych biegunów
parametry obliczanego widma Fouriera
kąty zer w paśmie zaporowym
kąty biegunów w paśmie przepuszczania
zera
bieguny
dodanie zer sprzężonych
dodanie biegunów sprzężonych
% Rysunek - położenie zer i biegunów
NP = 1000; fi=2*pi*(0:1:NP-1)/NP; s=sin(fi); c=cos(fi);
plot(s,c,'-k',real(z),imag(z),'or',real(p),imag(p),'xb');
title('ZERA i BIEGUNY'); grid; pause
% Oblicz współczynniki transmitancji {z,p} ---> {b,a}
wzm = 1; [b,a] = zp2tf(z',p',wzm), pause
% Charakterystyka częstotliwościowa {b,a} -> H(f)
f = 0 : df : fmax; w = 2*pi*f; wn= 2*pi*f/fpr;
Układy dyskretne
287
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
% Generacja sygnałów testowych
Nx=1024; n=0:Nx-1; dt=1/fpr; t=dt*n;
f1=10; f2=50; f3=250;
x1=sin(2*pi*f1*t); x2=sin(2*pi*f2*t); x3=sin(2*pi*f3*t);
if (projekt==1) x=x1+x2; else x=x1+x2+x3; end
if (odpimp==1) x=zeros(1,Nx); x(1)=1; end
% Filtracja sygnału: x(n) ---[b,a]---> y(n)
if (filtr==1) y = filter(b,a,x); end
if (filtr==2) y = filterBP(b,a,x); end
if (filtr==3) y = filterBK(b,a,x); end
% funkcja Matlaba
% nasza funkcja wykorzystująca bufory przesuwne
% nasza funkcja wykorzystująca bufory kołowe
% Prezentacja wyników filtracji
subplot(211); plot(t,x); grid; axis tight; title('Wejscie x(n)');
subplot(212); plot(t,y); grid; axis tight; title('Wyjście y(n)');
xlabel('nr próbki n’); pause
n=Nx/2+1:Nx; X = freqz(x(n),1,wn)/(Nx/4); Y = freqz(y(n),1,wn)/(Nx/4);
X = abs(X); Y = abs(Y);
subplot(211); plot(f,X); grid; title('Wejscie X(f)');
subplot(212); plot(f,Y); grid; title('Wyjście Y(f)');
xlabel('f [Hz]'); pause
11
Projektowanie rekursywnych
filtrów cyfrowych
W rozdziale tym skrótowo przedstawiono problematykę projektowania rekursywnych filtrów
cyfrowych typu IIR (ang. Infinite Impulse Response), mających nieskończoną odpowiedź
impulsową. Są to filtry cyfrowe ze sprzężeniem zwrotnym, które mają także linię opóźniającą
na swoim wyjściu (rysunek 10.4). Konsekwencją tego jest występowanie wielomianu mianownika w transmitancji filtra H(z) (10.50). Wielką zaletą filtrów rekursywnych jest możliwość
uzyskiwania bardzo stromych charakterystyk amplitudowo-częstotliwościowych przy stosunkowo małej liczbie współczynników wagowych bm i ak. Filtr nierekursywny mający porównywalną pod względem stromości charakterystykę amplitudowo-częstotliwościową jest wielokrotnie
dłuższy, tzn. trzeba użyć bardzo długiej linii opóźniającej na wejściu filtra i dużej liczby
współczynników bm. Jednak za prostotę układową filtra rekursywnego „płaci” się nieliniowością jego charakterystyki fazowo-częstotliwościowej. Powoduje to, że czas opóźnienia poszczególnych częstotliwości na wyjściu filtra jest różny, co prowadzi do zmiany kształtu sygnału.
W niektórych zastosowaniach deformacja taka nie jest dopuszczalna. Równocześnie z racji
sprzężenia zwrotnego filtry rekursywne mogą być niestabilne (czyli „wzbudzać się”). Należy
więc projektować je bardzo starannie, zwracając szczególną uwagę na dokonywane zaokrąglenia współczynników wagowych.
Najpopularniejszą metodą projektowania cyfrowych filtrów rekursywnych jest metoda biliniowa, wykorzystująca związki pomiędzy analogowymi filtrami Butterwortha i Czebyszewa a ich
odpowiednikami cyfrowymi. W metodzie tej projektuje się filtry analogowe spełniające określone wymagania, a następnie transformuje się transmitancje tych filtrów H(s) do postaci
cyfrowej H(z), stosując podstawienie s = 2fpr(z−1)/(z+1). Ponieważ metodologia projektowania
„dobrych” filtrów analogowych jest rozwijana od lat i powszechnie znana, dlatego za pomocą
metody transformacji biliniowej uzyskuje się porównywalnie „dobre” filtry cyfrowe. Równocześnie swoją wiedzę można z sukcesem wykorzystywać w dwóch „światach”: analogowym
i cyfrowym.
Z tego powodu główną zawartością „merytoryczną” niniejszego rozdziału jest przedstawienie
podstaw i możliwości zastosowań metody projektowania rekursywnych filtrów cyfrowych za
pomocą transformacji biliniowej filtrów analogowych. Inne metody przedstawiono w sposób syntetyczny jako tło dla głównego „bohatera” naszej opowieści.
Projektowanie rekursywnych filtrów cyfrowych
289
11.1. Wymagania stawiane filtrom cyfrowym
Podobnie jak w przypadku filtrów analogowych (podrozdział 6.1), filtrom cyfrowym stawiane
są określone wymagania częstotliwościowe. Zazwyczaj specyfikuje się je dla charakterystyki
amplitudowo-częstotliwościowej filtra H(ejΩ) (10.54), gdzie pulsacja unormowana Ω jest
równa 2πf/fpr (f − częstotliwość, fpr − częstotliwość próbkowania) i zawiera się w przedziale
[−π, π]. Definiuje się cztery główne typy filtrów cyfrowych ze względu na zakres (pasmo)
przenoszonych częstotliwości:
1) filtry dolnoprzepustowe LP (ang. LowPass):
1 ± δ pass
H LP (e jΩ ) = 
 0 + δ stop
dla Ω ≤ Ω pass
dla Ω ≥ Ω stop
(11.1)
2) filtry górnoprzepustowe HP (ang. HighPass):
 0 + δ stop
H HP (e jΩ ) = 
 1 ± δ pass
dla Ω ≤ Ω stop
dla Ω ≥ Ω pass
(11.2)
3) filtry pasmowoprzepustowe BP (ang. BandPass)
1 ± δ pass
H BP (e jΩ ) = 
0 + δ stop
dla Ω pass1 ≤ Ω ≤ Ω pass 2
dla Ω ≤ Ω stop1 lub | Ω |≥ Ω stop 2
(11.3)
4) filtry pasmowozaporowe BS (ang. BandStop):
0 + δ stop
H BS ( e jΩ ) = 
1 ± δ pass
dla Ω stop1 ≤ Ω ≤ Ω stop 2
dla Ω ≤ Ω pass1 lub Ω ≥ Ω pass 2
(11.4)
W powyższych definicjach uwzględniono tylko pasma przepustowe i zaporowe. W pasmach
przejściowych charakterystyki wszystkich filtrów powinny spełniać warunek 0 ≤ |H(ejΩ)| ≤ 1+
+ δpass. W skrótach nazw oraz parametrów wykorzystywano terminologię angielską, ponieważ
przyjęto założenie, że środowiskiem programowym, w którym zostaną przeprowadzane projektowe eksperymenty symulacyjne będzie anglojęzyczny program Matlab. Powyższe wzory
określają przedziały wartości, w których powinna się zawierać charakterystyka amplitudowo-częstotliwościowa filtra M(Ω) = |H(ejΩ)| dla dowolnej pulsacji Ω z przedziału [−π, π] dla każdego typu filtra. Wynika z nich, że wartości funkcji M(Ω) powinny leżeć w „tunelach”, zaznaczonych białym kolorem na rysunkach 11.1 i 11.2, określonych przez przyjęte wartości parametrów Ωpass, Ωstop, δpass, δstop.
Istnieją dwie grupy metod: projektowanie bezpośrednie filtrów cyfrowych oraz projektowanie
pośrednie, polegające na przekształceniu filtrów analogowych do postaci cyfrowej. W pierwszym przypadku dobiera się współczynniki wielomianów transmitancji filtra cyfrowego minimalizując błąd średniokwadratowy aproksymacji zadanej charakterystyki częstotliwościowej.
Tak jest na przykład w metodzie Yule’a-Walkera. W drugim przypadku natomiast idzie się „na
skróty” i wykorzystuje się umiejętność projektowania filtrów analogowych, odpowiednio je
przekształcając na filtry cyfrowe. Stosuje się wówczas metody:
• niezmienności odpowiedzi impulsowej,
• dopasowanej transformacji Z,
• transformacji biliniowej.
Projektowanie rekursywnych filtrów cyfrowych
290
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
0
Ωpass Ωstop
0
Fpass
Fstop
π
0.5
0
fpass
fstop
fpr/2
Ω [rd⋅Hz/Hz]
F [Hz/Hz]
f [Hz]
Rys. 11.1. Orientacyjny kształt charakterystyki amplitudowo-częstotliwościowej M(Ω) = |H(ejΩ)| (biały „tunel”) 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(Ω)
MHP(Ω)
LP
1+δpass
HP
1+δpass
1
1
1−δpass
1−δpass
δstop
Ω
Ωpass
0
MBP(Ω)
Ωstop
π
δs
MBS(Ω)
1+δpass
1+δpass
1
1
1−δpass
1−δpass
0
Ω
Ωstop1 Ωpass1
Ωpass2 Ωstop1 π
Ωstop
0
BP
δstop
Ω
Ωpass
π
BS
δstop
0
Ω
Ωpass1 Ωstop1
Ωstop2 Ωpass1 π
Rys. 11.2. Orientacyjny kształt charakterystyk amplitudowo-częstotliwościowych M(Ω) = |H(ejΩ)| (białe
„tunele”) dla czterech podstawowych typów filtrów cyfrowych: dolnoprzepustowego (LP), górnoprzepustowego (HP), pasmowoprzepustowego (BP) i pasmowozaporowego (BS). Ω oznacza pulsację unormowaną
równą Ω = 2πF = 2π(f / fpr), gdzie f oznacza częstotliwość wyrażoną hercach
Projektowanie rekursywnych filtrów cyfrowych
291
11.2. Metoda Yule’a-Walkera
Załóżmy, że realizowany filtr rekursywny IIR ma budowę kaskadową:
M
H (z ) =
∑ bm z − m
m =0
N
1 + ∑ an z
−n
L 
1 + b1i z −1 + b2i z − 2 
= g∏ 
−1
−2 

i =1  1 + a1i z + a 2i z

(11.5)
n =1
czyli składa się z L sekcji bikwadratowych (transmitancji „elementarnych”, mających wielomiany drugiego rzędu zarówno w liczniku jak i mianowniku). Oznaczmy przez Hp(ejΩ) projektowaną (wymaganą) charakterystykę częstotliwościową filtra cyfrowego i załóżmy, że jest ona
zadana dla K dyskretnych częstotliwości Ωk, k = 1, 2, 3, ..., K. Zdefiniujmy minimalizowaną
średniokwadratową funkcję błędu jako:
E=
K
∑
k =1
2
H p ( e jΩ k ) − H ( e jΩ k )
(11.6)
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.
11.3. Metoda niezmienności odpowiedzi impulsowej
Załóżmy, że odpowiedź impulsowa filtra cyfrowego hc(n) jest spróbkowaną odpowiedzią impulsową odpowiedniego filtra analogowego ha(t):
hc (n ) = Tha (nT )
(11.7)
Mnożenie ha(t) przez okres próbkowania T ma na celu uniezależnienie wzmocnienia filtra cyfrowego od tego okresu. Niech transmitancja filtra analogowego ma postać (5.43):
H a (s ) =
b0 + b1s + ... + bM s M
ao + a1s + ... + a N s N
,
N≥M
(11.8)
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):
c e p1t + c2 e p 2 t + ... + c N e p N t ,
ha (t ) =  1
0, t < 0

t≥0
(11.9)
Na podstawie założenia o niezmienności odpowiedzi impulsowej otrzymujemy z powyższego
równania zależność na odpowiedź impulsową filtra cyfrowego:
Projektowanie rekursywnych filtrów cyfrowych
292
h (1) (n ) + hc( 2 ) (n ) + ... + hc( N ) (n ),
hc (n ) =  c
0, n < 0

n≥0
(11.10)
gdzie
Tc e p k nT , n ≥ 0
hc( k ) (n ) =  k
0, n < 0

(11.11)
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:
H c (z ) =
N
∑ H c( k ) (z ) ,
k =1
H c( k ) (z ) =
Tck
(11.12)
1 − e p k T z −1
Bieguny pk transmitancji filtra analogowego „przechodzą” w bieguny e pkT filtra cyfrowego.
Ponieważ warunkiem stabilności filtra analogowego jest położenie jego biegunów w lewej
półpłaszczyźnie liczb zespolonych, stąd
Re ( pk ) < 0
⇒
e pk T < 1
(11.13)
czyli wynikowy filtr cyfrowy jest stabilny i przyczynowy.
Charakterystyka częstotliwościowa filtra cyfrowego zaprojektowanego tą metodą jest równa:
( )
H c e jΩ =
∞
∞
n =0
n =0
∑ hc ( n ) e− jΩn = ∑ Tha ( nT ) e− jΩn
(11.14a)
Na podstawie (4.48), (4.49) mamy:
( ) ∑ H a  jω − jk 2Tπ 
k = −∞
H c e jΩ =
∞
(11.14b)
czyli jest ona równa sumie poprzesuwanych charakterystyk filtra analogowego (patrz podrozdział 4.5, dotyczący twierdzenia o próbkowaniu oraz zawarte w nim rysunki).
Przykład. Zaprojektujmy metodą niezmienności odpowiedzi impulsowej dolnoprzepustowy
filtr Butterwortha trzeciego rzędu (N = 3). Ze wzoru (6.56) obliczamy położenie biegunów filtra analogowego:
p1 = ω3dB e j ( 2 π / 3) = ω3dB
−1+ j 3
,
2
p2 = ω3dB e j ( π ) = −ω3dB ,
p3 = ω3dBe j ( 4 π / 3) = p1*
Na podstawie (6.39) otrzymujemy:
Ha (s) =
− p1 p2 p3
ω33dB
=
( s − p1 )( s − p2 ) ( s − p3 ) ( s + ω ) s2 + sω + ω2
3dB
3dB
3dB
(
Po rozłożeniu transmitancji na sumę składników prostych mamy:
H a (s ) =
c1
c2
c3
+
+
s − p1 s − p2 s − p3
)
Projektowanie rekursywnych filtrów cyfrowych
293
gdzie
c1 =
−3− j 3
ω3dB , c2 = ω3dB ,
6
c3 = c1* =
− 3+ j 3
ω3dB
6
Na podstawie (11.12) transmitancja odpowiedniego filtra cyfrowego jest po przekształceniach
równa:
Hc ( z) =
Ω 3dB
1 −  e −Ω3dB  z −1


−
(
)
Ω3dB −  Ω3dBe −Ω3dB / 2 cos ( α ) + sin ( α ) / 3  z −1


−Ω 3dB / 2
−1  −Ω3dB  −2


1 − 2e
cos ( α ) z + e
z




gdzie zastosowano następujące podstawienia:
Ω 3dB = ω3dBT =
ω3dB
,
f pr
α=
3
Ω 3dB
2
Jeśli przykładowo przyjmiemy f3dB = fpr/8, to wówczas:
ω3dB = 2πf 3dB = 2π
f pr
8
π
4
⇒ Ω 3dB =
⇒ α=
π 3
8
i ostatecznie otrzymujemy następującą transmitancję Hc(z) filtra cyfrowego:
Hc ( z) ≅
0,7854
1 − 0,4559 z
−1
−
0,7854 − 0,6049 z −1
1 − 1,0499 z −1 + 0,4559 z −2
Narysowanie charakterystyki częstotliwościowej tego filtra pozostawiamy jako ćwiczenie Czytelnikowi (podstawienie: z = ejΩ, 0 ≤ Ω ≤ π).
11.4. Metoda dopasowanej transformacji Z
W metodzie tej transformuje się zera i bieguny transmitancji filtra analogowego do następującej postaci (T − okres próbkowania):
q jT
(11.15)
p jT
(11.16)
zera qj:
s−qj
⇒ 1 − z −1e
bieguny pj:
s− pj
⇒ 1 − z −1e
co odpowiada transformacji osi jω z przestrzeni zmiennej „s” w okrąg o środku w punkcie
(0,5; 0) i promieniu równym 0,5 w przestrzeni zmiennej „z”. Z tego powodu przybliżona
zgodność charakterystyk filtra analogowego i cyfrowego występuje tylko w zakresie częstotliwości [0, fpr/10), fpr = 1/T. W tej metodzie należy więc stosować odpowiednio mały okres
próbkowania T. Z powodu występującego zjawiska aliasingu, metoda ta jest bardzo rzadko
stosowana.
11.5. Metoda transformacji biliniowej
Załóżmy, że dla każdego filtra analogowego Ha(s) można skonstruować filtr cyfrowy Hc(z),
taki że:
( )
H c e jΩ = H a ( jω)
(11.17)
Projektowanie rekursywnych filtrów cyfrowych
294
czyli zmianom pulsacji analogowej ω w zakresie (−∞, +∞) powinny odpowiadać zmiany pulsacji cyfrowej Ω (unormowanej względem częstotliwości próbkowania: Ω = 2πf/fpr) w zakresie
(−π, +π). Niech:
z = φ(s )
(11.18)
wówczas filtr analogowy i odpowiadający mu filtr cyfrowy są związane zależnością:
H c (φ(s )) = H a (s )
(11.19)
Transformacja z = φ(s) powinna spełniać następujące warunki:
1) Oś jω powinna być przekształcona na okrąg jednostkowy: φ(jω) = ejΩ.
2) Powinna istnieć funkcja odwrotna s = φ−1(z), tak aby można było zaprojektować filtr cyfrowy na podstawie odpowiedniego filtra analogowego:
(
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):
z = φ(s ) =
(2 / T ) + s 1 + sT / 2
=
( 2 / T ) − s 1 − sT / 2
(11.21)
gdzie T jest okresem próbkowania sygnału dyskretnego. Definicja ta spełnia wszystkie powyższe warunki. Transformacja odwrotna do (11.21) ma postać:
s = φ −1 ( z ) =
2 z −1
T z +1
(11.22)
Podstawiając w (11.22) s = jω i z = e jΩ , otrzymujemy:
(
(
)
)
jΩ / 2
e jΩ / 2 − e − jΩ / 2 / 2 2 j sin ( Ω / 2 )
2 e jΩ − 1 2 e
jω =
=
=
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 )
T
(11.23a), (11.23b)
Graficzna ilustracja zasady transformacji biliniowej jest przedstawiona na rysunku 11.3, natomiast zależność funkcyjna pulsacji analogowej ω od unormowanej pulsacji cyfrowej Ω, i odwrotnie, jest pokazana na rysunku 11.4. Kolejność projektowania rekursywnych filtrów cyfrowych metodą transformacji biliniowej jest następująca:
Projektowanie rekursywnych filtrów cyfrowych
Imag(s)
2 z −1
s=
T z +1
Ha(s)
295
Imag(z)
Hc(z)
1
Real(s)
jω
Real(z)
ejΩ
Ha(s)
zmienna "s"
zmienna "z"
Rys. 11.3. Graficzna ilustracja transformacji biliniowej transmitancji Ha(s) filtra analogowego na transmitancję Hc(z) filtra cyfrowego: 1) lewa półpłaszczyzna zmiennej zespolonej „s” transformacji Laplace’a przechodzi we wnętrze okręgu o promieniu jednostkowym na płaszczyźnie zmiennej zespolonej „z” transformacji Z, 2) oś jω przechodzi w okrąg ejΩ, Ω = 2πf / fpr
Ω
ω⇔Ω
H(ω) ⇔ H(ejΩ)
ω=(2/T)tg(Ω/2)
Ωpass2
Ω=2arctg(ωT/2)
Ωpass1
|HBP(ejΩ)
ωp1 ωpass2
ω
1
1
|HBP(ω)|
Rys. 11.4. Przykładowa zależność pomiędzy charakterystyką amplitudowo-częstotliwościową pasmowoprzepustowego filtra analogowego |HBP(ω)| a charakterystyką |HBP(ejΩ)| filtra cyfrowego, jego brata „bliźniaka”, uzyskanego w wyniku transformacji biliniowej (p1 = pass1)
1) Podanie zbioru zadanych pulsacji granicznych {Ωg = 2πfg/fpr} filtra cyfrowego z przedziału
[0,π) (filtry dolnoprzepustowe, górnoprzepustowe, pasmowoprzepustowe, pasmowozaporowe) 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
Projektowanie rekursywnych filtrów cyfrowych
296
3) Zaprojektowanie filtra analogowego, zdefiniowanego przez zbiór parametrów {ωg1, ωg1,...,
Apass, Astop}.
4) Wyznaczenie współczynników transmitancji filtra cyfrowego na podstawie współczynników transmitancji filtra analogowego:
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, transformują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 mianownika transmitancji filtra cyfrowego, jeśli są znane zera wielomianów licznika i mianownika
transmitancji filtra analogowego. Stosując podstawienie (11.22), otrzymujemy:
s − z k = 2 f pr
(
z −1
− z k = 2 f pr − z k
z +1
)
z−
2 f pr + z k
2 f pr − zk
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.
Przykład. W celach poglądowych zaprojektujemy dolnoprzepustowy filtr Butterwortha trzeciego rzędu (N = 3), czyli tego samego typu jak w przypadku metody niezmienności odpowiedzi impulsowej. Przyjmijmy częstotliwość próbkowania fpr równą 1 Hz (okres próbkowania
T = 1/fpr = 1 sekundę) oraz górną częstotliwość graniczną filtra f3dB równą 0,25 Hz. W kolejnych krokach realizacji obliczeń otrzymujemy:
cyfrową częstotliwość graniczną:
Ω 3dB = 2π
analogową częstotliwość graniczną:
ω3dB =
filtr analogowy:
Ha (s) =
f 3dB
0, 25 π
= 2π
=
f pr
1
2
2
tg(Ω 3dB / 2 ) = 2 tg(π / 4 ) = 2
T
− p1 p2 p3
ω33dB
=
( s − p1 )( s − p2 ) ( s − p3 ) ( s + ω ) s 2 + sω + ω2
3dB
3dB
3dB
(
(
)
( s + 2)( s
2
gdzie p1 = p3* = ω3dB  −1 + j 3 / 2  ,


p2 = −ω3dB
8
po uwzględnieniu ω3dB = 2:
Ha ( s ) =
filtr cyfrowy:
( z + 1)
 2 z −1
Hc ( z) = Ha 
=
 T z + 1  2 z 3z 2 + 1
+ 2s + 4
)
( 1 + z −1 )
=
(
) 2 ( 3 + z −2 )
3
1 + e − jΩ )
(
jΩ
Hc (e ) =
2 ( 3 + e −2 j Ω )
3
charakterystykę częstotliwościową filtra cyfrowego:
3
)
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
% Ćwiczenie: Transformacja biliniowa
function [zz,pp,wzm] = bilinearTZ(z,p,wzm,fpr)
% 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
11.6. Przykłady projektowania filtrów w języku Matlab
Obecnie przechodzimy do przedstawienia przykładów filtrów, zaprojektowanych w środowisku Matlab. Do tego celu wykorzystano programy zaprezentowane w rozdziale 6 w tabelach
6-2, 6-3 i 6-4, służące do projektowania analogowych filtrów Butterwortha oraz Czebyszewa
I i II typu. Tak dużo uwagi poświęciliśmy wtedy metodologii projektowania filtrów analogowych, gdyż wiedzieliśmy, że będzie ją można potem także z sukcesem zastosować w przypadku filtrów cyfrowych. Do programów tych dodano tylko linie kodu, dokonujące:
1) na początku transformacji wymagań z pulsacji cyfrowych Ω na analogowe ω zgodnie
z (11.23a),
2) na końcu transformacji zer i biegunów zaprojektowanego filtra analogowego Ha(s) na zera i bieguny wynikowego filtra cyfrowego Hc(z) z wykorzystaniem (11.22).
W tabeli 11-2 przedstawiono w całości program, służący do projektowania cyfrowych filtrów
Butterwortha na podstawie analogowych filtrów Butterwortha. Stanowi on modyfikację programu z tabeli 6-2. Linie dodane są zaznaczone tłustym drukiem. Aby otrzymać programy do
projektowania cyfrowych filtrów Czebyszewa należy w sposób identyczny uzupełnić programy
z tabel 6-3 i 6-4.
Na rysunku 11.5 jest przedstawiony wynik zastosowania programu z tabeli 11-2 do zaprojektowania pasmowozaporowego, cyfrowego filtra Butterwortha, spełniającego następujące wymagania projektowe:
fpass1 = 200 Hz, fstop1 = 300 Hz, fstop2 = 700 Hz, fpass2 = 800 Hz, fpr = 2000 Hz
Apass = 3 dB , Astop = 60 dB
Po przeliczeniu częstotliwości „cyfrowych” na „analogowe” uzyskano (11.23a):
fpass1 = 207 Hz, fstop1 = 324 Hz, fstop2 = 1249 Hz, fpass2 = 1959 Hz
Transmitancja HLP(n)(s) dolnoprzepustowego, unormowanego prototypu analogowego, spełniająca powyższe wymagania, miała N = 11 biegunów leżących na okręgu jednostkowym o środku
w początku układu współrzędnych. Po transformacji „częstotliwości” HLP(n)(s) (patrz pod-
Projektowanie rekursywnych filtrów cyfrowych
298
rozdział 6.2), uzyskano transmitancję filtra pasmowozaporowego HBS(s) o rozkładzie zer i biegunów oraz charakterystyce amplitudowo-częstotliwościowej przedstawionych na rysunku
11.5a i 11.5b. Jak widać filtr analogowy spełnia postawione wymagania „analogowe”, oznaczone 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 podstawienia (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 zaprojektowanych cyfrowych filtrów Butterwortha różnych typów: dolnoprzepustowego, górnoprzepustowego, pasmowoprzepustowego i pasmowozaporowego. Dla każdego filtra przedstawiono: 1) rozkład zer i biegunów jego transmitancji, 2) charakterystykę amplitudowo-częstotliwoś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 ograniczoną precyzją obliczeń komputerowych. Należy także zwrócić uwagę na różne kształty odpowiedzi impulsowych poszczególnych filtrów oraz względnie długi czas ich trwania (zaniku do
„zera”).
b)
2000
1500
1000
500
0
-500
-1000
-1500
-2000
-10000
20log10|H(jω)| [dB]
Imag(s/2π)
a)
-5000
0
-20
-40
-60
-80
-100
-120
0
0
1000
c)
d)
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
2000
3000
f [Hz]
0.5
1
20log10|H(ej2πf/fpr)| [dB]
Real(s)
0
-20
-40
-60
-80
-100
-120
0
200
400
600
800 1000
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
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
0.5
Real(z)
1
0.2
0.15
0.1
0.05
0
-0.05
-0.1
0
200
400
600
800 1000
0
200
400
600
800 1000
0
200
400
600
800 1000
0
200
400
600
800 1000
f [Hz]
0
kąt H(ej2πf/fpr)
h(n)
0
-20
-40
-60
-80
-100
-120
20log10|H(ej2πf/fpr)| [dB]
1
-5
-10
-15
-20
-25
0
50
n
100
150
f [Hz]
b) filtr górnoprzepustowy, N = 16
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-0.5
0
Real(z)
0.5
1
0.2
0
0.1
-5
kąt H(ej2πf/fpr)
h(n)
-1
0
-20
-40
-60
-80
-100
-120
0
-0.1
-0.2
f [Hz]
-10
-15
-20
-25
0
50
n
100
150
f [Hz]
Rys. 11.6. Przykłady cyfrowych filtrów Butterwortha. Na charakterystyce 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
Projektowanie rekursywnych filtrów cyfrowych
300
c) filtr pasmowoprzepustowy, N = 9
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
1
0.2
kąt H(ej2πf/fpr)
h(n)
0.1
0
-0.1
-0.2
0
50
n
100
0
-20
-40
-60
-80
-100
-120
0
200
400
600
800 1000
0
200
400
600
800 1000
0
200
400
600
800 1000
0
200
400
600
800 1000
f [Hz]
5
0
-5
-10
-15
-20
-25
-30
150
f [Hz]
d) filtr pasmowozaporowy, N = 11
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-0.5
0
Real(z)
0.5
1
0.4
0.3
0.2
0.1
0
-0.1
-0.2
kąt H(ej2πf/fpr)
h(n)
-1
0
50
n
100
0
-20
-40
-60
-80
-100
-120
150
Rys. 11.6. (cd.) Przykłady cyfrowych filtrów Butterwortha
f [Hz]
0
-5
-10
-15
-20
-25
-30
f [Hz]
Projektowanie rekursywnych filtrów cyfrowych
301
a) filtr dolnoprzepustowy N = 8
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
0
-20
-40
-60
-80
-100
-120
1
0
200
400
600
800 1000
0
200
400
600
800 1000
0
200
400
600
800 1000
0
200
400
600
800 1000
f [Hz]
b) filtr górnoprzepustowy N = 8
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
0
-20
-40
-60
-80
-100
-120
1
f [Hz]
c) filtr pasmowoprzepustowy N = 6
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
0
-20
-40
-60
-80
-100
-120
1
f [Hz]
d) filtr pasmowozaporowy N = 7
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
1
0
-20
-40
-60
-80
-100
-120
f [Hz]
Rys. 11.7. Przykłady cyfrowych filtrów Czebyszewa typu I (oscylacje w paśmie przepustowym). Na charakterystyce 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
Projektowanie rekursywnych filtrów cyfrowych
302
a) filtr dolnoprzepustowy N = 8
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
0
-20
-40
-60
-80
-100
1
0
200
400
600
800 1000
0
200
400
600
800 1000
0
200
400
600
800 1000
0
200
400
600
800 1000
f [Hz]
b) filtr górnoprzepustowy N = 8
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
0
-20
-40
-60
-80
-100
1
f [Hz]
c) filtr pasmowoprzepustowy N = 6
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
0
-20
-40
-60
-80
-100
1
f [Hz]
d) filtr pasmowozaporowy N = 7
20log10|H(ej2πf/fpr)| [dB]
1
Imag(z)
0.5
0
-0.5
-1
-1
-0.5
0
Real(z)
0.5
1
0
-20
-40
-60
-80
-100
f [Hz]
Rys. 11.8. Przykłady cyfrowych filtrów Czebyszewa typu II (oscylacje w paśmie zaporowym). Na charakterystyce 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
303
0
0.2
-5
0.1
-10
h(n)
kąt H(ej2πf/fpr)
Projektowanie rekursywnych filtrów cyfrowych
-15
0
-0.1
-20
-25
-0.2
0
200
400
600
f [Hz]
800 1000
0
50
n
100
150
Rys. 11.9. Odpowiedź impulsowa oraz charakterystyka fazowo-częstotliwościowa pasmowoprzepustowego
filtra Czebyszewa typu I z rysunku 11.7c. Należy je porównać z odpowiednimi charakterystykami filtra
Butterwortha z rysunku 11.6c
Na rysunkach 11.7 i 11.8 przedstawiono rozkład zer i biegunów oraz charakterystykę amplitudowo-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 odwrotnie, „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 zastosowaniach, 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 „opadaniem” podczas zbliżania się do częstotliwości „granicznych”. P o d r u g i e , rozkład zer i biegunó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, wykonany metodą zer i biegunów.
Aby nie zanudzać Czytelnika nie przedstawiono dla cyfrowych filtrów Czebyszewa ich charakterystyk fazowo-częstotliwościowych oraz ich odpowiedzi impulsowych. Należy jednak nadmienić, że charakterystyki te są o wiele bardziej nieliniowe, odpowiedzi impulsowe zaś zanikają 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ądowych na rysunku 11.9 zaprezentowano odpowiedź impulsową oraz charakterystykę fazowo-
Projektowanie rekursywnych filtrów cyfrowych
304
-częstotliwościową pasmowoprzepustowego filtra Czebyszewa typu I z rysunku 11.7c. Należy je porównać z odpowiednimi charakterystykami filtra Butterwortha z rysunku 11.6c.
11.7. Przykład ćwiczenia komputerowego
W tabeli 11-2 przedstawiono program napisany w języku Matlab, za pomocą którego wygenerowano dane do rysunków 11.5 i 11.6. Służy on do projektowania cyfrowych filtrów Butterwortha. Program ten stanowi rozszerzenie programu z tabeli 6-2, za pomocą którego projektuje
się analogowe filtry Butterwortha. Linie dodane do wersji analogowej są zaznaczone tłustym
drukiem. Czytelnikowi pozostawiamy osobistą analizę tego programu oraz jego zastosowanie.
Sugerujemy także stworzenie programów do projektowania cyfrowych filtrów Czebyszewa
typu I i II na podstawie programów z tabel 6-3 i 6-4.
Przedstawiony program nie należy do najkrótszych, ale ze względu na znaczenie rekursywnych
filtrów cyfrowych oraz na fakt, że jest to jedyny przykład programu komputerowego w niniejszym rozdziale, zamieszczamy go bez skrótów, to znaczy z uwzględnieniem generacji wszystkich rysunków pośrednich, ilustrujących kolejne etapy procesu projektowania.
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
% Ćwiczenie: Projektowanie cyfrowych filtrów Butterwortha (LP, HP, BP i BS)
clear all; subplot(111);
% Podaj wymagania projektowe
typ =
apass
astop
fpr =
fmx =
1;
= 3;
= 60;
2000;
1000;
%
%
%
%
%
rodzaj filtra: 1 = LowPass, 2 = HighPass, 3 = BandPass, 4 = BandStop
nieliniowość pasma przepustowego w dB ("zwis")
tłumienie w paśmie zaporowym
częstotliwość próbkowania
maksymalna częstotliwość charakterystyki na rysunku
% Podaj częstotliwości graniczne
if (typ==1)
% FILTR DOLNOPRZEPUSTOWY
fpass = 200;
% częstotliwość pasma przepustowego odpowiadająca Apass
fstop = 300;
% częstotliwość pasma zaporowego odpowiadająca Astop
fpass = 2*fpr*tan(pi*fpass/fpr)/(2*pi); % f cyfrowe --> f analogowe
fstop = 2*fpr*tan(pi*fstop/fpr)/(2*pi); %
ws = fstop/fpass;
% transformacja częstotliwości: s=s'/w0, w0=2*pi*fpass
end
% FILTR GÓRNOPRZEPUSTOWY
if (typ==2)
fstop = 700;
% częstotliwość pasma przepustowego odpowiadająca Astop
fpass = 800;
% częstotliwość pasma zaporowego odpowiadająca Apass
fpass = 2*fpr*tan(pi*fpass/fpr)/(2*pi); % f cyfrowe --> f analogowe
fstop = 2*fpr*tan(pi*fstop/fpr)/(2*pi); %
ws = fpass/fstop;
% transformacja częstotliwości: s=w0/s', w0=2*pi*fpass
end
% FILTR PASMOWOPRZEPUSTOWY
if (typ==3)
fs1 = 300;
% dolna częstotliwość stop
fp1 = 400;
% dolna częstotliwość pass
fp2 = 600;
% górna częstotliwość pass
fs2 = 700;
% górna częstotliwość stop
fp1 = 2*fpr*tan(pi*fp1/fpr)/(2*pi); % f cyfrowe --> f analogowe
fp2 = 2*fpr*tan(pi*fp2/fpr)/(2*pi); %
fs1 = 2*fpr*tan(pi*fs1/fpr)/(2*pi); %
fs2 = 2*fpr*tan(pi*fs2/fpr)/(2*pi); %
Projektowanie rekursywnych filtrów cyfrowych
ws1t = (fs1^2 - fp1*fp2) / (fs1*(fp2-fp1)); % transformacja częstotliwości
ws2t = (fs2^2 - fp1*fp2) / (fs2*(fp2-fp1)); % transformacja częstotliwości
ws = min( abs(ws1t), abs(ws2t) );
end
% FILTR PASMOWOZAPOROWY
if (typ==4)
fp1 = 200;
% dolna częstotliwość filtra pasmowego
fs1 = 300;
% dolna częstotliwość filtra pasmowego
fs2 = 700;
% górna częstotliwość filtra pasmowego
fp2 = 800;
% górna częstotliwość filtra pasmowego
fp1 = 2*fpr*tan(pi*fp1/fpr)/(2*pi); % f cyfrowe --> f analogowe
fp2 = 2*fpr*tan(pi*fp2/fpr)/(2*pi); %
fs1 = 2*fpr*tan(pi*fs1/fpr)/(2*pi); %
fs2 = 2*fpr*tan(pi*fs2/fpr)/(2*pi); %
ws1t = (fs1*(fp2-fp1)) / (fs1^2 - fp1*fp2); % transformacja częstotliwości
ws2t = (fs2*(fp2-fp1)) / (fs2^2 - fp1*fp2); % transformacja częstotliwości
ws = min( abs(ws1t), abs(ws2t) );
end
% Przelicz decybele na wartość bezwzględną, np. 40 dB = 0.01
wzm_p = 10^(-apass/20);
wzm_s = 10^(-astop/20);
% Oblicz parametry pomocnicze
if( (typ==1) | (typ==2) )
vp = 2*pi*fpass;
vs = 2*pi*fstop;
f_ps = [fpass, fstop]; wzm_ps = [wzm_p, wzm_s]; wzmdB_ps = [-apass, -astop];
end
if( (typ==3) | (typ==4) )
vp = 2*pi*[ fp1 fp2 ];
vs = 2*pi*[ fs1 fs2 ];
vc = 2*pi*sqrt(fp1*fp2);
% pulsacja środka
dv = 2*pi*(fp2-fp1);
% szerokość filtra wokół vc
f_ps = [fp1,fp2,fs1,fs2];
wzm_ps = [wzm_p, wzm_p, wzm_s, wzm_s];
wzmdB_ps = [-apass, -apass, -astop, -astop];
end
% Oblicz parametry filtra: N i w0
% MATLAB: [N,w0] = buttord( 2*pi*fpass, 2*pi*fstop, -apass, -astop, 's' );
wp = 1;
N = ceil( log10( (10^(astop/10)-1) / (10^(apass/10)-1) ) / (2*log10(ws/wp)) )
w0 = ws / (10^(astop/10)-1)^(1/(2*N))
pause
% Oblicz bieguny transmitancji dolnoprzepustowego filtra prototypowego i jej współczynniki
% MATLAB: [z,p,k] = buttap(N); [b,a] = zp2tf(z,p,k);
dfi0 = (2*pi)/(2*N);
% kąt „kawałka tortu”
fi = pi/2 + dfi0/2 + (0 : N-1)*dfi0;
% kąty biegunów
p = w0*exp(j*fi);
% bieguny
z = [];
% zera
wzm = prod(-p);
% wzmocnienie
a = poly(p);
% bieguny --> wsp wielomianu mianownika A(z)
b = wzm;
% wielomian licznika B(z)
z, p, b, a, pause
plot( real(p), imag(p), 'x' ); grid; title('Położenie biegunów');
xlabel('real'); ylabel('imag'); pause
% Porównaj z funkcjami Matlaba
[NN,ww0] = buttord( vp, vs, apass, astop, 's' );
blad_N = N-NN
pause
% Oblicz charakterystykę częstotliwościową prototypu H(w)=B(w)/A(w)
w = 0 : 0.005 : 2;
% zakres pulsacji unormowanej; pulsacja granicy pasma przepustowego = 1
305
306
Projektowanie rekursywnych filtrów cyfrowych
H = freqs(b,a,w);
% alternatywa: H = polyval( b,j*w)./polyval(a,j*w);
plot(w,abs(H)); grid; title('Moduł prototypu LPass'); xlabel('pulsacja [rad/sek]');
pause
plot(w,20*log10(abs(H))); grid; title('Moduł prototypu LowPass w dB');
xlabel('pulsacja [rad/sek]'); ylabel('dB'); pause
% Transformata częstotliwości filtra analogowego: prototyp unormowany --> wynikowy filtr
if (typ==1) [z,p,wzm] = lp2lpTZ(z,p,wzm,vp); end
% LowPass to LowPass: s=s/w0
if (typ==2) [z,p,wzm] = lp2hpTZ(z,p,wzm,vp); end
% LowPass to HighPass: s=w0/s
if (typ==3) [z,p,wzm] = lp2bpTZ(z,p,wzm,vc,dv); end % LowPass to BandPass: s=(s^2+wc^2)/(dw*s)
if (typ==4) [z,p,wzm] = lp2bsTZ(z,p,wzm,vc,dv); end % LowPass to BandStop: s=(dw*s)/(s^2+wc^2)
b=wzm*poly(z); a=poly(p);
% Pokaż zera i bieguny po transformacji częstotliwości
plot( real(z), imag(z), 'o',real(p),imag(p),'x' ); grid;
title('Położenie biegunów'); xlabel('real'); ylabel('imag'); pause
p, z, pause
a, b, pause
printsys(b,a,'s'); pause
% Końcowa charakterystyka częstotliwościowa filtra analogowego
NF = 1000;
% ile punktów
fmin = 0;
% dolna częstotliwość
fmax = 5000;
% górna częstotliwość
f = fmin : (fmax-fmin)/(NF-1) : fmax; % wyznaczane częstotliwości
w = 2*pi*f;
% wyznaczane pulsacje
H = freqs(b,a,w);
% alternatywa: H = polyval( b,j*w)./polyval(a,j*w);
plot( f,abs(H), f_ps,wzm_ps,'ro');
grid; title('Moduł'); xlabel('freq [Hz]'); pause
plot(f,20*log10(abs(H)), f_ps,wzmdB_ps,'ro'); axis([fmin,fmax,-100,20]);
grid; title('Moduł dB'); xlabel('freq [Hz]'); ylabel('dB'); pause
plot(f,unwrap(angle(H))); grid; title('FAZA'); xlabel('freq [Hz]'); ylabel('[rad]');
pause
% H(s) --> H(z) Transformacja biliniowa
[zc,pc,wzmc]=bilinearTZ(z,p,wzm,fpr)
bc=wzmc*poly(zc); ac=poly(pc);
% Pokaż zera i bieguny filtra cyfrowego
NP = 1000; fi=2*pi*(0:1:NP-1)/NP; x=sin(fi); y=cos(fi);
plot(x,y,'-k',real(zc),imag(zc),'or',real(pc),imag(pc),'xb');
title('ZERA i BIEGUNY filtra cyfrowego'); grid; pause
% Otrzymana charakterystyka częstotliwościowa
NF = 1000; fmin = 0; fmax = fmx; f = fmin : (fmax-fmin)/(NF-1) : fmax;
w = 2*pi*f/fpr; H = freqz(bc,ac,w);
Habs=abs(H); HdB=20*log10(Habs); Hfa=unwrap(angle(H));
f_ps = (fpr/pi)*atan(pi*f_ps/fpr);
plot(f,Habs,f_ps,wzm_ps,’o’); grid; title('Moduł'); xlabel('freq [Hz]'); pause
plot(f,HdB,f_ps,wzmdB_ps,'o'); grid; title('Moduł dB'); xlabel('freq [Hz]'); pause
plot(f,Hfa); grid; title('FAZA'); xlabel('freq [Hz]'); ylabel('[rad]'); pause
% Odpowiedź impulsowa (filtracja sygnału delty Kroneckera)
Nx=200; x = zeros(1,Nx); x(1)=1;
M=length(bc); N=length(ac);
ac=ac(2:N); N=N-1;
bx=zeros(1,M); by=zeros(1,N); y=[];
for n=1:Nx
bx = [ x(n) bx(1:M-1)];
y(n) = sum(bx .* bc) - sum(by .* ac);
by = [ y(n) by(1:N-1) ];
end
n=0:Nx-1; plot(n,y); grid; title('Odp impulsowa h(n)'); xlabel(‘n’); pause
12
Projektowanie nierekursywnych
filtrów cyfrowych
W tym rozdziale zapoznamy się z metodami projektowania nierekursywnych filtrów cyfrowych. W literaturze są one potocznie nazywane filtrami o skończonej odpowiedzi impulsowej
(ang. FIR − Finite Impulse Response). Filtry nierekursywne są filtrami bez sprzężenia zwrotnego (patrz rysunek 10.4b). Każda próbka sygnału wyjściowego jest w nich średnią ważoną
kilku, kilkunastu, kilkudziesięciu lub kilkuset ostatnich próbek sygnału wejściowego. Przykładowo w standardzie MPEG audio stosowane filtry nierekursywne składają się z 512 współczynników wagowych. Wielkimi zaletami filtrów nierekursywnych są: prostota projektowania,
stabilność (nie wzbudzanie się) oraz możliwość uzyskania liniowej charakterystyki fazowo-częstotliwościowej. Dzięki tej ostatniej cesze odpowiednio zaprojektowane filtry nierekursywne nie zniekształcają kształtu sygnału, co jest bardzo ważne w wielu zastosowaniach, na przykład biomedycznych. Ceną jaką się płaci za „dobrodziejstwa” filtrów nierekursywnych jest ich
duża złożoność obliczeniowa w porównaniu z filtrami rekursywnymi. Co to oznacza? Aby filtr
nierekursywny miał stromą charakterystykę amplitudowo-częstotliwościową, szybko przechodzącą od pasma przejściowego do zaporowego, to musi mieć dużą liczbę współczynników
wagowych − o wiele większą od liczby współczynników filtra rekursywnego (rysunek 10.4a),
spełniającego podobne wymagania odnośnie stromości zboczy. Postęp w technologii projektowania i produkcji układów elektronicznych jest jednak bardzo duży i z roku na rok oferują one
coraz większe prędkości pracy, więc złożoność obliczeniowa cyfrowych filtrów nierekursywnych stanowi coraz mniejsze ograniczenie ich zastosowań.
Szczególny nacisk położono w niniejszym rozdziale na dokładne przedstawienie podstaw
teoretycznych projektowania nierekursywnych filtrów cyfrowych za pomocą metody okien.
Jest to metoda prosta, ale umożliwiająca uzyskanie bardzo „dobrych” filtrów. Poświęcenie jej
większej uwagi jest w pełni uzasadnione i spowodowane chęcią „puszczenia jak ... najmniejszej ... ilości pary w gwizdek”.
W ostatniej części rozdziału zapoznamy się z metodami projektowania nierekursywnych filtrów specjalnych: Hilberta (przesuwnik fazowy o minus 90 stopni), różniczkującego, interpolującego i decymującego.
Projektowanie nierekursywnych filtrów cyfrowych
308
12.1. Wprowadzenie
Jak już wiemy cyfrowa filtracja nierekursywna jest określona następującym równaniem (10.8),
(10.10), (10.18):
y(n) =
∞
∞
N −1
N −1
m = −∞
m =0
m=0
m =0
∑ h(m) x(n − m) = ∑ h(m) x(n − m) = ∑ h(m) x(n − m) = ∑ bm x(n − m)
(12.1)
gdzie x(n) oznacza sygnał wejściowy, y(n) − sygnał wyjściowy, a h(n) to odpowiedź impulsowa filtra (odpowiedź na dyskretny impuls jednostkowy δ(n)), charakteryzująca jego właściwoś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 aspekty 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ęstotliwoś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
n = −∞
X e jΩ =
x (n ) =
+∞
+π
( )
1
X e jΩ e jΩn dΩ
2π −∫π
(12.3)
(12.4)
We wzorach tych Ω oznacza pulsację unormowaną względem częstotliwości próbkowania:
f
Ω = 2π
(12.5)
f pr
ponieważ −fpr/2 ≤ f ≤ fpr/2, więc −π ≤ Ω ≤ π. Współczynniki h(m), m = 0, 1, 2, ..., N−1, należy
dobrać tak, aby w zadany sposób ukształtować ich widmo częstotliwościowe H(ejΩ). Filtr
powinien przepuszczać jedne częstotliwości (H(ejΩpass) ≈ 1), a tłumić inne (H(ejΩstop) ≈ 0).
Ponieważ widmo Fouriera H(ejΩ) dla każdej pulsacji Ω reprezentuje sobą liczbę zespoloną:
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Ω):
M (Ω) = H (e jΩ ) = R 2 (Ω) + I 2 (Ω)
(12.7)
 I (Ω ) 
Φ (Ω) = arctg

 R (Ω ) 
(12.8)
5
4
3
2
1
0
-1
-2
309
A(Ω)
M(Ω)
Projektowanie nierekursywnych filtrów cyfrowych
-0.5
0
0.5
5
4
3
2
1
0
-1
-2
-0.5
0
0.5
Ω/2π [Hz/Hz]
8
8
4
4
Ψ(Ω) [rd]
Φ(Ω) [rd]
Ω/2π [Hz/Hz]
0
-4
-8
0
-4
-8
-0.5
0
0.5
Ω/2π [Hz/Hz]
-0.5
0
0.5
Ω/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 zerowych), 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(Ω), przyjmuje 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 „wagi” niezerowe: h(0) = h(1) = h(2) = h(3) = h(4) = 1. W rozdziale 8.4.1 wykazaliśmy, że w takim przypadku jest prawdziwa zależność (8.39a):
( )
H e jΩ = e − jΩ ( N −1) / 2
sin (ΩN / 2 )
sin(Ω / 2 )
(12.11)
Podstawową zaletą filtrów nierekursywnych, opisanych równaniem (12.1), jest łatwość uzyskiwania 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-
Projektowanie nierekursywnych filtrów cyfrowych
310
wolne stałe rzeczywiste. Oczywiście liniowość charakterystyki fazowo-częstotliwościowej filtra jest istotna tylko w paśmie przepustowym, dlatego nawet filtry rekursywne, które mają nieliniową charakterystykę fazową, są czasami pod tym względem do zaakceptowania, gdyż
w paśmie przepustowym nieliniowość ta jest najmniejsza i do pominięcia.
Zostanie teraz przedstawiona metodologia projektowania filtrów nierekursywnych FIR mających tę cechę. Transformacja Fouriera H(ejΩ) odpowiedzi impulsowej h(n) na podstawie
definicji (12.3) jest równa:
H ( e jΩ ) =
N −1
∑ h(n)e − jΩn
(12.13)
n=0
Można ją zapisać w następującej postaci:
H ( e j Ω ) = e − jΩ M
N −1
∑ h ( n ) e jΩ ( M − n ) =
(12.14)
n =0
= 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:
M =
N −1
⇒
2
M − ( N − 1) = − M
(12.16)
oraz wykorzystując symetrię (asymetrię) funkcji kosinus (sinus) możemy równanie to zapisać
jako:
H ( e jΩ ) = e − jΩM { (h(0) + h( N − 1) )cos(ΩM ) + j (h (0) − h ( N − 1) )sin(ΩM ) +
(12.17)
+ (h (1) + h( N − 2) ) cos(Ω( M − 1)) + j (h(1) − h( N − 2) ) sin(Ω( M − 1)) + ...}
Teraz możemy rozważyć kilka możliwości. Filtr będzie miał liniową charakterystykę fazowo-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ą symetrię odpowiedzi impulsowej h(n). Dla symetrycznej odpowiedzi impulsowej:
h (n ) = h( N − 1 − n ), n = 0, 1, 2, ..., N − 1
(12.18)
zeruje się część urojona H(ejΩ), a dla odpowiedzi asymetrycznej:
h (n ) = −h ( N − 1 − n ), n = 0, 1, 2, ..., N − 1
(12.19)
„znika” część rzeczywista. Rozważmy osobno oba przypadki dla N nieparzystego i N parzystego:
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 ) 
 n =0

(12.20)
II) symetryczna odpowiedź impulsowa o długości parzystej (N = 2L, M = L−1/2):
 N / 2 −1

H (e jΩ ) = e − jΩM A(Ω ) = e − jΩM  ∑ 2h(n ) cos(Ω( M − n )) 
 n =0

(12.21)
Projektowanie nierekursywnych filtrów cyfrowych
311
III) asymetryczna odpowiedź impulsowa o długości nieparzystej (N = 2L+1, M = L):
 M −1

H (e jΩ ) = je − jΩM A(Ω) = je − jΩM  ∑ 2h( n ) sin(Ω( M − n )) 
 n =0

(12.22)
IV) asymetryczna odpowiedź impulsowa o długości parzystej (N = 2L, M = L−1/2):
 N / 2 −1

H (e jΩ ) = je − jΩM A(Ω ) = je − jΩM  ∑ 2h(n ) sin(Ω( M − n )) 
 n =0

(12.23)
Analizując wzory (12.20)−(12.23) dochodzimy do wniosku, że niezależnie od konkretnych
wartości próbek odpowiedzi impulsowej h(n), ze względu na symetrię i asymetrię funkcji kosinus i sinus, także odpowiedzi amplitudowe A(Ω) charakteryzują się określoną symetrią, zawsze
taką samą. Ich właściwości są zebrane w tabeli 12-1, natomiast przykładowe charakterystyki
amplitudowe A(Ω) są przedstawione na rysunku 12.2. W punkcie będącym środkiem asymetrii,
odpowiedź amplitudowa A(Ω) jest równa zero. Z właściwości odpowiedzi amplitudowych
A(Ω) filtrów I−IV wynika, że nie każdy z nich się nadaje do zaprojektowania dowolnego typu
filtra. Przykładowo filtry typu I i II nie nadają się do zaimplementowania filtra różniczkującego
H(Ω) = jΩ, gdyż nie są asymetryczne dla Ω = 0. Podobnie filtr typu II nie może być zastosowany dla filtrów górnoprzepustowych i pasmowozaporowych, ponieważ A(π) = 0. Z kolei
filtry dolnoprzepustowe i pasmowozaporowe nie mogą być typu III i IV, gdyż dla nich
A(0) = 0.
Załóżmy, że filtr ma charakterystykę częstotliwościową określoną wzorem (12.20). Jeśli na
jego wejście podamy sygnał x(n):
x (n ) = A1e j ( Ω1n+ϕ1 ) + A2 e j ( Ω2 n+ϕ 2 )
(12.24)
to na wyjściu otrzymamy sygnał y(n) (po uwzględnieniu (12.9):
y ( n ) = A1e j ( Ω1n+ϕ1 ) A(Ω1 ) e− jΩ1M + A2 e j ( Ω2 n+ϕ 2 ) A(Ω2 )e− jΩ2 M =
= A1 A(Ω1 )e j ( Ω1 ( n−M )+ϕ1 ) + A2 A(Ω2 ) e j ( Ω2 ( n−M )+ϕ 2 )
(12.25a)
(12.25b)
Tab. 12-1. Własności charakterystyk amplitudowych A(Ω) dla czterech typów filtrów h(n), mających liniową 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)
(a)symetria / długość
Okres
Ω punktów
symetrii
Ω punktów
asymetrii
Rodzaje filtrów
I
h(n) = h(N−1−n), N = 2L+1
2π
0, π
−−
LP, HP, BP, BS
II
h(n) = h(N−1−n), N = 2L
4π
0, 2π
π, 3π
LP, BP
III
h(n) = −h(N−1−n), N = 2L+1
2π
−−
0, π
BP, H, D
IV
h(n) = −h(N−1−n), N = 2L
4π
π, 3π
0, 2π
HP, BP, H, D
Projektowanie nierekursywnych filtrów cyfrowych
312
9
8
7
6
5
4
3
2
1
0
0
π
0
0.5
2π 3π 4π
5π 6π
M(Ω)
A(Ω)
a)
1
1.5
2
2.5
9
8
7
6
5
4
3
2
1
0
3
0
π
0
0.5
Ω/2π [Hz/Hz]
6
4
2
0
-2
-4
-6
0
π
0
0.5
2π
1
3π 4π
5π 6π
1.5
2.5
2
6
5
4
3
2
1
0
3
0
π
0
0.5
Ω/2π [Hz/Hz]
6
4
2
0
-2
-4
-6
0
π
0
0.5
2π
1
3π 4π 5π
1.5
2
6π
2.5
6
5
4
3
2
1
0
3
0
π
0
0.5
Ω/2π [Hz/Hz]
6
4
2
0
-2
-4
-6
0
π
2π 3π
6π
2
2.5
3
5π
6π
2.5
3
4π 5π
6π
2
2.5
3
4π 5π
6π
2
3
2π 3π 4π
1
1.5
2
2π 3π
1
1.5
Ω/2π [Hz/Hz]
4π 5π
6π
5
0
π
0
0.5
2π 3π
4
M(Ω)
A(Ω)
d)
1.5
5π
Ω/2π [Hz/Hz]
M(Ω)
A(Ω)
c)
1
4π
Ω/2π [Hz/Hz]
M(Ω)
A(Ω)
b)
2π 3π
3
2
1
0
0
0.5
1
1.5
2
Ω/2π [Hz/Hz]
2.5
3
1
1.5
2.5
Ω/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
Jak widać liniowość charakterystyki fazowo-częstotliwościowej powoduje, że wszystkie składowe sygnału wejściowego, niezależnie od ich pulsacji (częstotliwości), są na wyjściu opóźnione o taką samą liczbę próbek. W naszym przypadku o M próbek. Jeśli więc A(Ω1) =
= A(Ω2) = G, to sygnał zostanie wzmocniony G razy i jego kształt nie ulegnie zmianie. W wielu zastosowaniach brak deformacji kształtu jest bardzo istotny, na przykład podczas filtracji
sygnału EKG.
W kolejnych podrozdziałach przedstawiono najważniejsze metody służące do projektowania
nierekursywnych filtrów cyfrowych o skończonych odpowiedziach impulsowych.
12.2. Metoda próbkowania w dziedzinie częstotliwości
W metodzie tej użytkownik „zadaje” w dziedzinie częstotliwości „próbki” odpowiedzi częstotliwościowej H(ejΩ) dla N pulsacji unormowanych (12.5) Ωk = k(2π/N), k = 0, 1, 2, ..., N−1,
a następnie znajduje odpowiedź impulsową h(n) wykonując odwrotną, dyskretną transformację
Fouriera z H(ejΩk):
h(n ) =
N −1
∑
H ( k )e
 2π 
j k  n
N  ,
n = 0,1, 2, ..., N − 1
(12.26)
k =0
Aby otrzymać rzeczywistą, (a)symetryczną odpowiedź impulsową h(n) dla parzystych i nieparzystych 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 urojonej 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:
H (e jΩ ) =
1
N
N −1
∑ h(n)e − jΩn
(12.27)
n =0
przyjmując ciągłość zmian pulsacji unormowanej Ω w przedziale od −π do π. Wówczas podstawiając (12.26) do (12.27), otrzymujemy:
H ( e jΩ ) =
1
N
N −1  N −1
∑  ∑ X ( k )e
n =0  k =0

 2π 
j k  n 
 N   e − jΩ n
(12.28)


Po zmianie kolejności sumowania i obliczeniu sumy względem zmiennej „n” otrzymujemy:
H (e
jΩ
1
)=
N
 N −1 j  2 π k  n

1

∑ X (k )  ∑ e  N  e − jΩn  = N
k =0
n =0


N −1


1 − e − jΩ N
X (k ) 
j (2 π / N ) k − jΩ 
e
k =0
1 − e

N −1
∑
(12.29)
W powyższym równaniu wykorzystaliśmy następujące zależności prawdziwe dla szeregu geometrycznego:
N −1
∑ rn =
n= p
r p − rN
,
1− r
N −1
∑ rn =
n=0
1− r N
1− r
(12.30)
Projektowanie nierekursywnych filtrów cyfrowych
Sinc(Ω)
314
1
0.8
0.6
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
dla których w szczególności mamy:
 2π 
N −1 j  k  n
e  N  e − jΩ n
∑
n =0
=
 2π

N −1 j  k −Ω  n

e N
∑
n =0
=
 2π

j  k −Ω  N


1− e N
 2π

j  k −Ω 

1− e  N
=
1 − e − j ΩN
 2π

j  k −Ω 

1− e  N
(12.31a)
Ze wzoru (12.29) wynika, że zrealizowana odpowiedź częstotliwościowa jest interpolowana
pomiędzy prążkami H(k) za pomocą funkcji (po uwzględnieniu: 1 − ejφ = ejφ/2(e−jφ/2 − ejφ/2) =
= ejφ/2⋅2jsinφ):


1 −e − jΩN
sin (ΩN / 2 )
= e − jΩ( N −1) / 2 e − jπk / N

j ( 2 π / N ) k − jΩ 
(
sin
Ω / 2 − πk / N )
e
1 − e

(12.31b)
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łą” charakterystykę filtra Re(H(ejΩ)), daną wzorem (12.29). Jak widać otrzymana charakterystyka przechodzi 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 wzoru (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 powoduje natomiast zwiększenia pasm przejściowych charakterystyki amplitudowo-częstotliwościowej filtra (zwiększenie szerokości „strefy” przejścia z pasma przepustowego do zaporowego i odwrotnie).
Projektowanie nierekursywnych filtrów cyfrowych
315
Przykład
Obecnie zaprojektujemy metodą próbkowania w dziedzinie częstotliwości dolnoprzepustowy,
półpasmowy filtr typu I, tzn. o długości nieparzystej N oraz symetrycznej odpowiedzi impulsowej. Filtr półpasmowy jest filtrem mającym częstotliwość graniczną pasma przepustowego
fpass równą fpass/(fpr/2) = 0,5. Przyjmijmy N = 41, dla którego M = (N−1)/2 = 20. Zadane punkty
charakterystyki częstotliwościowej są zaznaczone symbolami „o” na rysunku 12.4b. Przedstawiono na nim tylko pierwszych M+1 „prążków”, leżących w przedziale pulsacji unormowanej
Ω [0,π]. Pozostałe są symetryczne względem ostatniego pokazanego prążka. Odpowiedź impulsowa h(n) uzyskana z wzoru (12.26) jest pokazana na rysunku 12.4a (po przesunięciu kołowym o M próbek w prawo). Część rzeczywista widma H(ejΩ) jest narysowana linią ciągłą na
rysunku 12.4b, moduł zaś H(ejΩ) jest przedstawiony w decybelach na rysunku 12.4c. Jak widać
a)
d)
0.6
0.6
0.4
hw(n)
h(n)
0.4
0.2
0
0.2
0
-0.2
-0.2
0
10
20
30
40
0
10
20
n
e)
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
Re(Hw(ejΩ))
Re(H(ejΩ))
b)
0
0.1
0.2
0.3
0.4
0.5
0
0.1
|Hw(ejΩ)| [dΒ]
|H(ejΩ)| [dΒ]
f)
0.1
0.2
0.3
Ω/2π [Hz/Hz]
0.2
0.3
0.4
0.5
0.4
0.5
Ω/2π [Hz/Hz]
20
0
-20
-40
-60
-80
-100
0
40
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
Ω/2π [Hz/Hz]
c)
30
n
0.4
0.5
20
0
-20
-40
-60
-80
-100
0
0.1
0.2
0.3
Ω/2π [Hz/Hz]
Rys. 12.4. Ilustracja projektowania nierekursywnego filtra cyfrowego I typu metodą próbkowania w dziedzinie częstotliwości (długość filtra N = 41): a), b), c) zastosowanie okna prostokątnego, d), e), f) zastosowanie 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 rysunkach b) i e) symbolami „o”
Projektowanie nierekursywnych filtrów cyfrowych
316
charakterystyka spełnia wymagania projektowe w zadanych punktach charakterystyki częstotliwościowej, ale ma charakter oscylacyjny. Aby zmniejszyć te oscylacje oraz zwiększyć tłumienie filtra w paśmie zaporowym wymnożono odpowiedź impulsową h(n) z rysunku 12.4a
z oknem Blackmana w(n) o takiej samej długości N = 41. W wyniku tego otrzymano odpowiedź impulsową hw(n) przedstawioną na rysunku 12.4d. Charakterystyka amplitudowo-częstotliwościowa otrzymanego w ten sposób filtra jest przedstawiona na rysunkach 12.4e i 12.4f.
Jak widać jedyną wadą zastosowania okna Blackmana jest rozszerzenie pasma przejściowego
filtra (charakterystyka nie przechodzi już przez wszystkie zadane punkty, zwłaszcza w okolicy
pasma przejściowego).
Ćwiczenie komputerowe
Podane wyniki uzyskano za pomocą programu komputerowego, przedstawionego w tabeli
12-2. Może on posłużyć Czytelnikowi do dalszych samodzielnych eksperymentów. Ponieważ
są w nim projektowane filtry typu I i III o długości nieparzystej N = 2M+1 (patrz tabela 12-1),
interesujące jest dodanie do niego możliwości projektowania także filtrów typu II i IV o długości parzystej N = 2M. Jako ćwiczenie pozostawiamy Czytelnikowi zdefiniowanie w programie wektorów Ar i Ai dla filtrów typu II i IV. Należy w tym przypadku uwzględnić wzory
(12.21) i (12.23) oraz odpowiednią symetrię funkcji A(Ω), przedstawionych na rysunkach
12.2b i 12.2d.
Tab. 12-2. Przykładowy program komputerowy
% Ćwiczenie: Projektowanie nierekursywnych filtrów cyfrowych metodą próbkowania w dziedzinie
%
częstotliwości
clear all; subplot(111);
N = 41;
typ = 1;
okno = 0;
% długość filtra
% typ filtra: 1 (LP) lub 3 (BP)
% 0=bez okna Blackmana, 1=z oknem Blackmana
if (typ==1 | typ==3)
M=(N-1)/2; M2=M/2; M4=M/4;
else
M=N/2;
end
Z2 = zeros(1,M2); J2=ones(1,M2);
Z4 = zeros(1,M4); J4=ones(1,M4);
if (typ==1)
Ar = [ 1 J2 Z2 Z2 J2 ];
Ai = zeros(1,N);
end
if (typ==3)
Ar = zeros(1,N);
Ai = [ 0 Z4 J2 Z4 Z4 -J2 Z4 ];
end
A = Ar + j*Ai;
% FILTR LP TYPU 1
% zadane punkty: część rzeczywista
% zadane punkty: część urojona
% FILTR BP TYPU 3
% zadane punkty: część rzeczywista
% zadane punkty: część urojona
n = 0 : N-1; f = n/N; h = zeros(1,N);
for k = 0 : N-1
h = h + A(k+1)*exp(j*2*pi*k/N*(n-M));
end
h=real(h/N);
if (okno==1) h=h.*blackman(N)'; end
stem(n,h); title('h(n)'); pause
% użycie (n-M) zamiast n w równaniu (12.26)
% powoduje przesunięcie kołowe odpowiedzi
% impulsowej h(n) o M próbek w prawo
Projektowanie nierekursywnych filtrów cyfrowych
% H = freqz(h,1,wn); H = H .* exp(j*wn*M);
NF = 500; k=0:NF-1; fn=k/NF; wn=2*pi*fn;
for k=0:NF-1
H(k+1)=exp(-j*2*pi*k/NF*(n-M)) * h';
end
317
% to samo co niżej, tylko funkcją Matlaba
if (typ==1 | typ==2) Ax = Ar; Hx=real(H); end
% dla filtra typu I i II
if (typ==3 | typ==4) Ax = Ai; Hx=imag(H); end
% dla filtra typu III i IV
plot(f,Ax,'ob',fn,Hx); grid; title('real(H) lub imag(H)'); pause
plot(fn,20*log10(abs(H))); grid; title('abs(H) w dB'); pause
12.3. Metoda optymalizacji średniokwadratowej
Popatrzymy teraz na problem projektowania nierekursywnych filtrów cyfrowych o liniowej
charakterystyce fazowo-częstotliwościowej jak na problem optymalizacji (aproksymacji) średniokwadratowej: chcemy znaleźć takie „wagi” filtra h(n), aby jego odpowiedź częstotliwościowa H(ejΩ) jak najlepiej aproksymowała („przybliżała”) charakterystykę zadaną Hp(ejΩ)
w L wybranych punktach Ωk:
E=
L −1
∑
k =0
H ( e jΩ k ) − H p ( e jΩ k )
2
(12.32)
Dla dyskutowanych wyżej filtrów typu I−IV równanie (12.32) można zapisać jako:
E=
L −1
∑
k =0
A(Ωk ) − Ap (Ω k )
2
(12.33)
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.:
Ωk =
2π
k , k = 0, 1, 2, ..., L − 1
L
(12.34)
Z twierdzenia Parsevala (zachowanie energii w dziedzinie transformaty Fouriera) wynika wówczas, że minimalizacja wyrażeń (12.32), (12.33) jest równoważna minimalizacji wyrażenia:
E=
( L−1) / 2
∑
n =−( L−1) / 2
h(n ) − h p (n )
2
(12.35)
gdzie h(n) i hp(n) są odpowiedziami impulsowymi filtrów, mających odpowiedzi częstotliwościowe H(ejΩ) i Hp(ejΩ). Oczywiście błąd aproksymacji jest najmniejszy, kiedy H(ejΩ) =
= Hp(ejΩ) w wybranych prążkach widma, a jest to spełnione dla h(n) = hp(n), czyli poszukiwaną, „optymalną” odpowiedzią impulsową jest wynik odwrotnej dyskretnej transformacji Fouriera z Hp(ejΩ). Otrzymujemy więc wynik identyczny jak w poprzednim rozdziale.
Jeśli jednak wymagania w dziedzinie częstotliwości specyfikujemy w L punktach, a poszukujemy „optymalnej” odpowiedzi N-punktowej, to sytuacja się zmienia. Przykładowo dla N = 2M +
+ 1 sumę (12.35) możemy rozbić na dwie części:
E=
M
∑
n =− M
2
h(n ) − h p (n ) + 2
( L −1) / 2
∑
n = M +1
h p (n)
2
(12.36)
Projektowanie nierekursywnych filtrów cyfrowych
318
E osiąga minimum, kiedy pierwszy składnik jest jak najmniejszy, tzn. kiedy za „zaprojektowaną” 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 projektowania 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 wartoś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 wektorem zadanych wartości A(Ωk). Błąd aproksymacji zadanej charakterystyki częstotliwościowej w zapisie macierzowym ma następującą postać:
Fh = a p + e
(12.38)
Mnożąc obustronnie powyższe równanie przez macierz FT (transponowane F), otrzymujemy:
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
skąd
(12.40)
( )−1 FT a p = pinv(F)a p
h = FT F
(12.41)
gdzie funkcja pinv(F) wyznacza macierz pseudoodwrotną dla macierz F.
Opcjonalnie zamiast (12.33) można minimalizować ważoną funkcję błędu postaci:
E=
L −1
∑ gk
k =0
A(Ω k ) − Ap (Ω k )
2
(12.42)
Dla niej równania (12.40) i (12.41) przyjmują postać:
FT WFh = FT Wa p
(
h = FT WF
)−1 FT Wa p
(12.43)
(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
12.5b. Przedstawiono na nim tylko pierwszych K/2+1 = 26 „prążków”, leżących w przedziale
pulsacji unormowanej Ω [0,π]. Pozostałe są symetryczne względem ostatniego pokazanego
prążka.
W pierwszej kolejności zastosujemy metodę średniokwadratową nieważoną (wzór (12.41).
Uzyskane z jej pomocą wyniki są przedstawione na rysunku 12.5. Obliczona odpowiedź impulsowa h(n) jest pokazana na rysunku 12.5a (po przesunięciu kołowym o M próbek w prawo).
Na rysunku 12.5b linią ciągłą został przedstawiony moduł widma H(ejΩ) w skali liniowej, na
rysunku 12.5d − w skali decybelowej, natomiast charakterystyka fazowo-częstotliwościowa filtra jest pokazana na rysunku 12.5c.
a)
b)
0.6
1
0.8
|H(ejΩ)|
h(n)
0.4
0.2
0.6
0.4
0
0.2
-0.2
0
0
10
20
30
0
40
0.1
c)
d)
0.3
0.4
0.5
-10
0.4
0.5
0
|H(ejΩ)| [dΒ]
faza H(ejΩ) [rd]
0
0.2
Ω/2π [Hz/Hz]
n
-20
-30
-40
-20
-40
-60
-80
0
0.1
0.2
0.3
0.4
0.5
0
0.1
Ω/2π [Hz/Hz]
0.2
0.3
Ω/2π [Hz/Hz]
Rys. 12.5. Dolnoprzepustowy, półpasmowy filtr cyfrowy typu I, zaprojektowany metodą prostej (nieważonej) 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)
b)
-20
0
|H(ejΩ)| [dΒ]
|H(ejΩ)| [dΒ]
0
-40
-60
-80
-20
-40
-60
-80
0
0.1
0.2
0.3
Ω/2π [Hz/Hz]
0.4
0.5
0
0.1
0.2
0.3
0.4
0.5
Ω/2π [Hz/Hz]
Rys. 12.6. Porównanie charakterystyk amplitudowo-częstotliwościowych dwóch filtrów cyfrowych, zaprojektowanych 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 zaporowego (wagi: wpass = 1, wtrans = 1, wstop = 1000). Długość filtrów N = 41
320
Projektowanie nierekursywnych filtrów cyfrowych
Następnie zaprojektowano dwa różne filtry także o długości N = 41 metodą średniokwadratową ważoną. Zastosowano dwie różne kombinacje wag, preferujące optymalizację: 1) w paśmie przepustowym (wagi: wpass = 1000, wtrans = 1, wstop = 1) oraz 2) w paśmie zaporowym (wagi: wpass = 1, wtrans = 1, wstop = 1000). Uzyskane charakterystyki amplitudowo-częstotliwościowe są przedstawione na rysunku 12.6. Z ich porównania z charakterystyką filtra przedstawioną
na rysunku 12.5d (przypadek bez preferencji, czyli optymalizacja nieważona: wpass = 1, wtrans =
= 1, wstop = 1) widać, że dzięki wprowadzeniu dodatkowego, różnego ważenia błędu optymalizacji w zależności od przynależności zadanych punktów charakterystyki do pasma przepustowego, przejściowego lub zaporowego, możemy skutecznie wpływać na właściwości
„częstotliwościowe” projektowanej odpowiedzi impulsowej h(n).
Ćwiczenie komputerowe
Wyniki przedstawione powyżej uzyskano wykorzystując program komputerowy z tabeli 12-3.
Może on posłużyć Czytelnikowi do dalszych samodzielnych eksperymentów. Ponieważ jest
w nim projektowany tylko filtr dolnoprzepustowy typu I o długości nieparzystej N = 2M+1
(patrz tabela 12-1), jest wskazane także zaprojektowanie przykładowych filtrów HP, BP i BS.
Dodanie do programu opcji projektowania filtrów typu II, III i IV z tabeli 12-1 jest również
interesujące.
Tab. 12-3. Przykładowy program komputerowy
% Ćwiczenie: Projektowanie nierekursywnych filtrów cyfrowych metodą próbkowania w dziedzinie
%
częstotliwości i optymalizacji średniokwadratowej
% Projektowanie filtrów FIR metodą WAŻONEJ minimalizacji błędu średniokwadratowego
% pomiędzy zadaną charakterystyką, spróbkowaną w dziedzinie częstotliwości, a charakterystyką otrzymywaną
clear all;
% Podaj swoje wymagania: K punktów charakterystyki częstotliwościowej Ak, k = 0, 1, 2, ..., K−1
M = 20; % połowa długości filtra; całość N=2M+1
K = 50; % liczba punktów charakterystyki częstotliwościowej (parzysta; K=>2*M)
% Podaj wymagania częstotliwościowe, czyli Ak w pulsacjach 2*pi*k/K,
k=0,1,2,...,K-1;
L1 = floor(K/4); % liczba jedynek na początku, potem punkty przejściowe, następnie zera
Ak = [ ones(1,L1) 0.75 0.25 zeros(1,K-(2*L1-1)-4) 0.25 0.75 ones(1,L1-1)];
Ak = Ak';
% Podaj współczynniki funkcji wagowej w(k), k = 0, 1, 2,..., K−1, odpowiadające zadanym
% punktom charakterystyki częstotliwościowej
wp = 1;
% waga odcinka PassBand
wt = 1;
% waga odcinka TransientBand
ws = 1;
% waga odcinka StopBand
w = [ wp*ones(1,L1) wt wt ws*ones(1,K-(2*L1-1)-4) wt wt wp*ones(1,L1-1) ];
W = zeros(K,K); % macierz diagonalna z wagami
for k=1:K
% na głównej przekątnej
W(k,k)=w(k); %
end
%
% Wyznacz macierz F równania macierzowego W*F*h = W*(Ak + err)
F = [];
n = 0 : M-1;
for k = 0 : K-1
F = [ F; 2*cos(2*pi*(M-n)*k/K) 1 ];
end
% Ponieważ dla h minimalizującego błąd W*F*h = W*Ak, stąd
h = pinv(W*F)*(W*Ak); % metoda 1
% h = (W*F)\(W*Ak);
% metoda 2
Projektowanie nierekursywnych filtrów cyfrowych
321
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
12.4. Metoda aproksymacji Czebyszewa (algorytm Remeza)
Obecnie zajmiemy się jednym z najczęściej stosowanych algorytmów projektowania filtrów
cyfrowych, a mianowicie problemem aproksymacji Czebyszewa charakterystyk częstotliwościowych nierekursywnych filtrów cyfrowych o „liniowej fazie”. W praktycznej realizacji programowej tej metody wykorzystuje się implementację Parksa-McClellana algorytmu Remeza.
W algorytmie tym aproksymuje się zadaną (projektowaną) charakterystykę amplitudową Ap(Ω)
za pomocą sumy kosinusoid wziętych ze współczynnikami wagowymi cn, czyli minimalizuje
funkcję błędu E(Ω) postaci:
M

E (Ω) = W (Ω)  ∑ cn cos(Ωn ) − Ap (Ω)
n = 0

(12.45)
gdzie W(Ω) oznacza dowolną dodatnią funkcję wagową, która służy do innego ”traktowania” 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

n = 0
(12.46)
i że są to jej wartości ekstremalne w zbiorze pulsacji Ω. Załóżmy na wstępie, że pulsacje Ωm są
znane. Wówczas (12.46) stanowi układ M+2 równań z M+2 niewiadomymi:
cos(Ω1 )
1
1
cos(Ω 2 )

#
#

1
cos(
Ω
M +1 )

1 cos(Ω M + 2 )
"
cos( MΩ1 )
1 / W (Ω1 )
  c0   Ap (Ω1 ) 
  c   A (Ω ) 
"
cos( MΩ 2 )
− 1 / W (Ω 2 )
  1  p 2 
#

%
#
#
⋅ #  = 

    A (Ω
M
" cos( MΩ M +1 ) ( −1) / W (Ω M +1 )  c M   p M +1 ) 
" cos( MΩ M + 2 ) ( −1) M +1 / W (Ω M +1 )  ε   Ap (Ω M + 2 )
(12.47)
z którego wyznacza się M+1 współczynników aproksymacji ck oraz amplitudę oscylacji ε. Pulsacje Ω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:
Projektowanie nierekursywnych filtrów cyfrowych
322
1) przyjęcie wejściowego zbioru pulsacji Ωm;
2) rozwiązanie układu równań (12.47): otrzymanie wartości cn, n = 0, 1, ..., M, i ε;
3) sprawdzenie, czy amplituda oscylacji funkcji błędu E(Ω) (12.45) dla Ω, należącego do
przedziału [0, π], jest większa niż obliczone ε; jeśli nie to KONIEC;
4) w przeciwnym przypadku wyznaczenie M+2 pulsacji, dla których funkcja błędu E(Ω) ma
ekstrema, i przyjęcie ich za pulsacje „ekstremalne” Ωm; powrót do punktu 2).
Wyznaczanie wartości nowych wartości „ekstremalnych” funkcji błędu może być wykonywane
techniką interpolacji Lagrange’a.
W celu uproszczenia rozważań szczegółowych załóżmy, że interesujemy się obecnie zaprojektowaniem symetrycznej odpowiedzi impulsowej filtra FIR o nieparzystej liczbie próbek,
czyli filtra FIR pierwszego typu. Jak wiemy charakterystyka amplitudowa w jego przypadku
jest równa (N = 2M+1):
A(Ω) =
M −1
M
M
n =0
n =0
n=0
∑ 2h(n ) cos(Ω( M − n )) + h( M ) = ∑ hn cos(Ω( M − n)) = ∑ hM − n cos(Ωn)
(12.48)
gdzie
2h(n ), n = 0,1,..., M − 1
hn = 
 h (n ), n = M
(12.49)
Jeśli przyjmiemy cn = hM−n, n = 0, 1, 2, ..., M, wówczas wzory (12.45)−(12.47) bezpośrednio
dotyczą problemu aproksymacji zadanej charakterystyki amplitudowej Ap(Ω) przez filtr postaci
(12.48). Po wyznaczeniu współczynników cn, odpowiedź impulsową zaprojektowanego filtra
otrzymuje się uwzględniając zastosowane podstawienie cn = hM−n oraz (12.49), skąd otrzymujemy:
c c
c c
c 
 cM
,..., 2 , 1 , c0 , 1 , 2 ,..., M 
(12.50)

2
2
2
2
2
2 

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 znaczenia jakości aproksymacji charakterystyki częstotliwościowej w paśmie przepustowym i zaporowym (wagi: wpass = 1, wstop = 1), a w drugim większy priorytet przyznamy pasmu zaporowemu (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ądowego programu, realizującego przedstawiony wyżej algorytm w sposób uproszczony (uproszczenie 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 ekstremó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 zagadnienia optymalizacji.
323
0.6
0.6
0.4
0.4
h(n)
h(n)
Projektowanie nierekursywnych filtrów cyfrowych
0.2
0
0.2
0
-0.2
-0.2
0
10
20
30
40
0
10
20
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
0
0.1
0.2
0.3
0.4
0.5
0
0.1
|H(ejΩ)| [dΒ]
|H(ejΩ)| [dΒ]
0.2
0.3
0.2
0.3
0.4
0.5
0.4
0.5
Ω/2π [Hz/Hz]
0
-10
-20
-30
-40
-50
-60
0.1
40
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
Ω/2π [Hz/Hz]
0
30
n
H(ejΩ)
H(ejΩ)
n
0.4
0.5
Ω/2π [Hz/Hz]
0
-10
-20
-30
-40
-50
-60
0
0.1
0.2
0.3
Ω/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
Tab. 12-4. Przykładowy program komputerowy
% Ćwiczenie: Projektowanie nierekursywnych filtrów cyfrowych w dziedzinie częstotliwości metodą
%
aproksymacji Czebyszewa (algorytm Remeza)
clear all;
L = 20;
Nr = 5;
wp = 1; ws = 1;
R = 200;
tol = 10^(-8);
ifigs = 0;
%
%
%
%
%
%
liczba poszukiwanych współczynników filtra (parzysta): długość filtra N=2L−1
„szerokość” pasma przepustowego 0 < Nr < L
wagi poszczególnych podpasm: Pass, Stop
ile razy zbiór testowy ma być większy od zbioru ekstremów
tolerancja rozwiązania
wyświetlanie rysunków podczas iteracji: 0=nie, 1=tak
Projektowanie nierekursywnych filtrów cyfrowych
324
M = L+1;
% liczba częstotliwości ekstremów
K = 1+R*(M-1);
% liczba wszystkich badanych częstotliwości
fz = (0 : K-1)/(K-1);
% K-elementowy zbiór częstotliwości przeszukiwanych
k11 = 1; k12 = 1+Nr*R;
% granice pasma przepustowego
k21 = 1+(Nr+1)*R; k22=K;
% granice pasma zaporowego
K1 = 1+Nr*R+R/2;
% nr próbki charakterystyki dla częstotliwości granicznej
fd = [ fz(1:K1) fz(K1:K)];
% częstotliwości charakterystyczne filtra
Hd = [ ones(1,K1) zeros(1,K-K1)];
% wymagane wartości wzmocnienia
Wg = [ wp*ones(1,K1) ws*ones(1,K-K1)]; % wagi
imax = 1:R:K;
% indeksy startowych częstotliwości ekstremów
% Wybranie startowego zbioru częstotliwości „ekstremów”
feMAX = fz(1:R:K);
sigmaMAX = 10^15; sigma = 0;
% Pętla główna
n = 0 : L-1;
while ( (sigmaMAX-sigma) > tol )
sigmaMAX - sigma
H = Hd(imax); H=H';
W = Wg(imax);
% pokaż aktualne zmniejszenie wartości błędu ch-ki
% Uaktualnij parametry zmieniane iteracyjnie
fe = feMAX;
% nowe częstotliwości „ekstremów” w obecnym kroku
% Oblicz macierz kosinusów A
A = [];
% po częstotliwościach „ekstremów”
for m = 0 : M-1
A = [ A; cos(pi*fe(m+1)*n) ((-1)^m)/W(m+1) ];
end
% Rozwiąż równanie
% Metoda 1
% Metoda 2
% Pokaż aktualną odpowiedź impulsową
% c = A\H';
c = pinv(A)*H;
h = c(1:L); sigma=c(M); sigma=abs(sigma);
g=h'/2; g(1)=2*g(1); g = [ fliplr(g(2:L)) g];
if (ifigs==1)
% stem(h); title('Połowa odp impulsowej h'); pause
stem(g); title('Cała odp impulsowa h'); pause;
end
% Oblicz i pokaż aktualną charakterystykę częstotliwościową oraz jej błąd
for k = 0 : K-1
H(k+1) = cos(pi*fz(k+1)*n) * h;
Herr(k+1) = Wg(k+1) * (H(k+1) - Hd(k+1));
end
if (ifigs==1)
plot(fz,Hd,'r',fz,H,'b'); grid; title('Aktualna H(f)'); pause
plot(fz,Herr); grid; title('Błąd H(f)’); pause
end
% Znajdź M+1 największych ekstremów funkcji błędu (częstotliwość, wartość ekstremum)
% tzn. oblicz feMAX i sigmaMAX
% Znajdź wszystkie ekstrema
Hmax = []; imax = [];
% kolejne przedziały: przepuszczania i zaporowy
for p = 1 : 2
if (p==1) k1=k11; k2=k12; end % pasmo przepustowe
if (p==2) k1=k21; k2=k22; end % pasmo zaporowe
Hmax = [ Hmax Herr(k1)]; imax = [ imax k1 ]; % zapisz pierwszy element / indeks
k=k1+1;
% zwiększ indeks
while( Herr(k-1) == Herr(k) ) k = k+1; end
% inkrementuj indeks, jeśli równe
if ( Herr(k) < Herr(k+1) )
%
sgn=1;
% charakterystyka narasta
else
%
sgn=-1;
% charakterystyka opada
end
%
k=k+1;
%
Projektowanie nierekursywnych filtrów cyfrowych
325
while ( k <= k2 )
% „poluj” na kolejne ekstrema
if (sgn==1)
while( (k<k2) & (Herr(k-1)<Herr(k)) ) k=k+1; end
end
if (sgn==-1)
while( (k<k2) & (Herr(k-1)>Herr(k)) ) k=k+1; end
end
sgn = -sgn;
Hmax = [ Hmax Herr(k) ]; imax = [imax k]; % zapamiętaj kolejne ekstremum
k=k+1;
end % end while
end % end for
if (ifigs==1)
plot(fz(imax),Hmax,'or',fz,Herr,'b');
grid; title('Błąd charakterystyki i jego ekstrema'); pause
end
% Wybierz M+1 największych
if ( length(Hmax)>M )
disp('UWAGA!!! Więcej EKSTREMÓW niż M+1!');
IM = []; G = abs(Hmax); LenG = length(G);
while( LenG > 0 )
Gmx = max(G); imx=find(G==Gmx);
LenGmx = length(imx);
IM = [ IM imax(imx)];
G(imx)=0; LenG = LenG-LenGmx;
end
IM = IM(1:M); IM = sort(IM); imax = IM;
end
sigmaMAX = max( abs(Hmax) );
feMAX = fz( imax );
if (ifigs==1)
plot(fz(imax),Herr(imax),'or',fz,Herr,'b');
grid; title('Błąd charakterystyki i M+1 największych ekstremów'); pause
end
end % end while(tol)
% 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
12.5. Metoda okien
W tym podrozdziale omówimy projektowanie nierekursywnych filtrów cyfrowych za pomocą
tzw. metody okien. Jest to metoda bardzo prosta pod względem teoretycznym i implementacyjnym, równocześnie bardzo efektywna i z tego powodu szeroko stosowana. Składa się ona
z następujących kroków:
1) wyboru rodzaju filtra (dolnoprzepustowy, górnoprzepustowy, pasmowoprzepustowy lub
pasmowozaporowy) i jego pulsacji granicznych, czyli określenia wymaganego H(ejΩ);
2) analitycznego wyznaczenia wzoru na dyskretną odpowiedź impulsową filtra h(n) za pomocą odwrotnego przekształcenia Fouriera H(ejΩ) (patrz tabela 12-5)
h(n ) =
1
2π
π
∫
−π
( )
H e jΩ e jΩn d Ω, − ∞ ≤ n ≤ ∞
(12.51)
Projektowanie nierekursywnych filtrów cyfrowych
326
3) wymnożenia obliczonego h(n) (nieskończonych, gasnących oscylacji) z wybraną funkcją
okna czasowego w(n) (patrz tabele 12-6 i 12-7):
hw ( n ) = h(n ) w( n ), − ∞ ≤ n ≤ ∞
(12.52)
mającą tylko skończoną liczbę niezerowych próbek:
w( n ) = 0 dla
n >M
4) przesunięcia hw(n) w prawo o M próbek i pobrania 2M+1 próbek:
hwM (n ) = hw (n − M ), 0 ≤ n ≤ 2 M
(12.53)
5) sprawdzenia zgodności uzyskanej charakterystyki częstotliwościowej zaprojektowanego
filtra hw(M)(n) z charakterystyką zadaną.
Ponieważ w ogólności odpowiedź impulsowa filtra h(n) (gasnące oscylacje) nie ma skończonego czasu trwania (czyli ma nieskończenie wiele niezerowych współczynników), do praktycznej realizacji filtra należy wybrać („wyciąć”) tylko jej najbardziej istotny fragment (próbki
wokół n = 0). Wybór odpowiedniej długości okna (N = 2M+1) oraz jego kształtu ma zapewnić
uzyskanie wymaganej liniowości charakterystyki amplitudowej w paśmie przepuszczania,
odpowiedniego tłumienia w paśmie zaporowym oraz pożądanej stromości filtra. Ponieważ
iloczyn sygnałów w dziedzinie czasu odpowiada splotowi ich widm w dziedzinie częstotliwości:
hw (n ) = h (n ) ⋅ w(n ) ⇔
( )
H w e jΩ =
π
( ) (
)
1
H e jΘ W e j ( Ω − Θ dΘ
2π −∫π
(12.54)
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 proporcjonalnie 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 otrzymać 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łumienie 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-Czebyszewa. 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
Dodatkowego komentarza wymaga jeszcze przesunięcie odpowiedzi impulsowej hw(M)(n), wykonywane w kroku czwartym metody. Przypomnijmy, układ dyskretny jest przyczynowy, jeśli
jego odpowiedź impulsowa jest przyczynowa, tzn. kiedy h(n) = 0 dla n < 0; wówczas odpowiedź układu nie wyprzedza jego pobudzenia. Ale odpowiedź impulsowa hw(M)(n), uzyskana
w punkcie trzecim, nie jest przyczynowa, gdyż hw(n) ≠ 0 dla n = −M, −M+1, ..., −2, −1. Jej
wersja przesunięta hw(M)(n) z punktu czwartego jest już jednak przyczynowa. Zgodnie z (8.10)
opóźnienie sygnału dyskretnego w czasie wprowadza tylko dodatkowe przesunięcie fazowe
jego widma Fouriera:
H w( M ) (e jΩ ) = e − jΩM H w (e jΩ )
(12.55)
Obliczenie odpowiedzi impulsowych filtrów „idealnych”
Obecnie wyprowadzimy analitycznie wzory na odpowiedzi impulsowe filtrów cyfrowych, mających „idealne” („prostokątne”) charakterystyki amplitudowo-częstotliwościowe. Charakterystyki te są przedstawione na rysunku 12.8. Odpowiedź impulsowa filtra jest wynikiem odwrotnej transformacji Fouriera (12.51) zadanej charakterystyki. W poniższych przekształceniach podstawowe znaczenie ma wyprowadzenie wzoru na odpowiedź impulsową „idealnego”
filtra dolnoprzepustowego. Charakterystyki pozostałych filtrów mogą być bowiem przedstawione jako superpozycja filtrów dolnoprzepustowych o różnych częstotliwościach granicznych
oraz filtra „wszechprzepustowego” (H(ejΩ) = 1 dla −π ≤ Ω < π), którego odpowiedź impulsowa
jest deltą Kroneckera. Na rysunku 12.8 wynikową charakterystykę amplitudowo-częstotliwościową (tylko linie poziome) zawsze otrzymuje się, odejmując od charakterystyki „linii
poziomych” charakterystykę „linii pionowych” (obie charakterystyki zachodzą na siebie).
1) F i l t r d o l n o p r z e p u s t o w y ( pasmo przepustowe równe [−Ω0, Ω0]):
Ω
π
hLP ( n ) =
1
1 0
1 1 jΩ n
jΩ
jΩn
H
e
e
d
e
Ω
=
(
)
1 ⋅ e jΩ n d Ω =
LP
∫
∫
2π −π
2π −Ω
2π jn
0
=
2 j sin(Ω 0 n )
j 2 πn
hLP (0) = 2 F0
=
sin(Ω 0 n )
πn
Ω0 cos(Ω0 n )
Ω0
= 2 F0
sin(Ω 0 n )
Ω0n
Ω0
=
−Ω0
1
 e j Ω n − e − jΩ n  =

j 2 πn 
, n ≠ 0,
(12.56)
= 2 F0 (z reguły d’Hospitala w granicy dla n → 0)
n →0
2) F i l t r g ó r n o p r z e p u s t o w y (pasmo przepustowe równe [−π, −Ω0]+[Ω0, π]):
hHP (n ) =
1
2π
π
∫
H HP (e jΩ )e jΩn d Ω =
−π
π
=
−Ω
π

1  0
 ∫ 1 ⋅ e j Ωn d Ω + ∫ 1 ⋅ e j Ωn d Ω  =
2π  −π

Ω0

Ω
1
1 0 j Ωn
j Ωn
e
d
Ω
−
∫
∫ e dΩ =
2π −π
2π −Ω
0
= δ(n ) − 2 F0
sin(Ω 0 n )
Ω0
= δ( n ) − hLP
(n ), n ≠ 0
Ω0n
h HP (0) = 1 − 2 F0 (z reguły d’Hospitala w granicy dla n → 0)
(12.57)
Projektowanie nierekursywnych filtrów cyfrowych
328
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
Ω
−π
−Ω
−Ω
Ω1
0
Ω2
π
Ω
−π
−Ω
−Ω
0
HBS(ejΩ)
Ω1
Ω2
π
1−HBP(ejΩ)
1
1
Ω
−π
−Ω2
−Ω1
Ω1
0
Ω2
π
Ω
−π
−Ω2
−Ω1
0
Ω1
Ω2
π
Rys. 12.8. „Idealne” charakterystyki amplitudowo-częstotliwościowe filtrów cyfrowych. Kolejno od góry do
dołu filtry: dolnoprzepustowy (LP), górnoprzepustowy (HP), pasmowoprzepustowy (BP) i pasmowozaporowy (BS). Wynikową charakterystykę amplitudowo-częstotliwościową filtra (tylko linie poziome) zawsze otrzymuje się, odejmując od charakterystyki „linii poziomych” charakterystykę „linii pionowych” (obie
charakterystyki zachodzą na siebie)
Wzór na odpowiedź impulsową filtra górnoprzepustowego można „wydedukować” bez żadnych dodatkowych obliczeń na podstawie hLP(n). Ponieważ:
Ω
Ω
H LP0 (e jΩ ) + H HP0 (e jΩ ) = 1
więc
Ω
Ω
h LP0 (n ) + hHP0 (n ) = δ(n )
skąd wynika, że
Ω0
Ω0
( n ) = δ(n ) − hLP
(n ) = δ(n ) − 2 F0
h HP
sin(Ω 0 n )
Ω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 wyniku wymnożenia hLP(n) z sygnałem ejπn = (−1)n .
Projektowanie nierekursywnych filtrów cyfrowych
329
3) F i l t r p a s m o w o p r z e p u s t o w y (pasmo przepustowe równe [−Ω2, −Ω1]+[Ω1, Ω2]):
hBP ( n ) =
−Ω
Ω2

1 π
1  1
H BP (e jΩ )e jΩ n d Ω =  ∫ 1 ⋅ e jΩ n d Ω + ∫ 1 ⋅ e jΩ n d Ω  =
∫
2π −π
2π  −Ω
Ω1
 2

=
Ω
Ω1

1  2 jΩ n
 ∫ e d Ω − ∫ e jΩ n d Ω  =
2π  −Ω

−Ω1
 2
= 2 F2
sin(Ω 2 n )
sin(Ω1n )
Ω2
Ω1
− 2 F1
= hLP
− hLP
, n≠0
Ω2n
Ω1n
(12.58)
hBP (0) = 2( F2 − F1 ) (z reguły d’Hospitala w granicy dla n → 0)
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
(n ) = hLP
( n ) − hLP
(n ) = 2 F2
hBP
sin(Ω 2 n )
sin(Ω1n )
− 2 F1
Ω2n
Ω1n
4) F i l t r p a s m o w o z a p o r o w y (pasmo przepustowe równe [−π, −Ω2] + [−Ω1, Ω1] +
+ [Ω2, π]):
hBS (n ) =
=
−Ω
Ω1
π

1 π
1  2
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
Ω2

1  π jΩ n
 ∫ 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
=
Ω
n
Ω1n 

2
{
}
Ω2
Ω1
= δ ( n ) − hLP
( n ) − hLP
(n) , n ≠ 0
hBS (0) = 1 − 2 (F2 − F1 ) (z reguły d’Hospitala w granicy dla n → 0)
Analogicznie jak poprzednio wyniku tego należało się spodziewać, gdyż:
Ω1 ,Ω 2
Ω1 ,Ω 2
H BS
(e jΩ ) = 1 − H BP
(e jΩ )
skąd oczywiście wynika, że
Ω , Ω2
h BS1
Ω , Ω2
( n ) = δ( n ) − hBP1

sin(Ω 2 n )
sin(Ω1n ) 

( n ) = δ( n ) −  2 F2
− 2 F1
Ω2n
Ω1n 

(12.59)
Projektowanie nierekursywnych filtrów cyfrowych
330
Tab. 12-5. Wzory na odpowiedzi impulsowe filtrów „idealnych” o prostokątnej charakterystyce amplitudowo-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)
h(n), −∞ < n < ∞
Rodzaj filtra
Dolnoprzepustowy (LP)
sin(Ω 0 n )

, n≠0
2 F
hLP ( n ) =  0 Ω 0 n

2 F0 , n = 0
Górnoprzepustowy (HP)
sin(Ω 0 n )

, n≠0
δ( n ) − 2 F0
hHP ( n ) = 
Ω0n

1 − 2 F0 , n = 0
Pasmowoprzepustowy (BP)
Psmowozaporowy (BS)
sin(Ω 2 n )
sin(Ω1n )

, n≠0
− 2 F1
2 F
hBP ( n ) =  2 Ω 2 n
Ω1n

2( F2 − F1 ), n = 0


sin(Ω 2 n )
sin(Ω1n ) 
, n ≠ 0
− 2 F1
δ( n ) −  2 F2
hBS ( n ) = 
n
Ω
Ω1n 
2


1 − 2( F2 − F1 ), n = 0

W powyższych wzorach zarówno pulsacje Ωk (= 2πfk / fpr) jak i częstotliwości Fk (= fk / fpr) są
unormowane względem częstotliwości próbkowania, tzn. są podzielone przez częstotliwość fpr
(0 ≤ F < 1, 0 ≤ Ω < 2π).
Oczywiście możliwe jest „zadawanie” charakterystyk amplitudowo-częstotliwościowych filtrów innych niż „idealne” prostokątne i wyznaczanie ich odpowiedzi impulsowych jak poprzednio, czyli z wykorzystaniem odwrotnej transformacji Fouriera. Przykładowo, jeśli w przypadku filtra dolnoprzepustowego uwzględnimy pasmo przejściowe i założymy, że charakterystyka ta liniowo w nim opada, to otrzymamy trapezoidalny kształt tej charakterystki. Wówczas odpowiedź impulsowa odpowiadającego jej filtra jest równa [Par87]:
2 F0 , n = 0


sin(Ω 0 n )
hLP (n ) =  2 sin( ∆Ωn / 2)
⋅ 2 F0
, n≠0

∆Ωn
Ω 0n
(12.60)
gdzie ∆Ω = Ωstop−Ωpass = 2π(Fstop−Fpass), Ω0 = (Ωpass+Ωstop)/2 = 2πF0. Natomiast w przypadku
kiedy założy się, że charakterystyka amplitudowa pasma przejściowego jest opisana za pomocą
funkcji sklejanej K-tego rzędu, to wówczas [Par87]:
2 F0 , n = 0


hLP (n ) =  sin( ∆Ωn / 2 K )  K
sin(Ω 0 n )
 ∆Ωn / 2 K  ⋅ 2 F0 Ω n , n ≠ 0
0

(12.61)
Projektowanie nierekursywnych filtrów cyfrowych
331
Ilustracja graficzna kolejnych kroków algorytmu
Rysunki 12.9 i 12.10 stanowią ilustrację kolejnych kroków wyznaczania odpowiedzi impulsowej hw(M)(N) (12.53) w metodzie okien. Na rysunku 12.9a jest przedstawiona część odpowiedzi
impulsowej h(n) idealnego filtra dolnoprzepustowego, wyznaczona na podstawie zależności
z tabeli 12-5, dla częstotliwości f0 = 200 Hz i fpr = 1000 Hz. Rysunek 12.9b prezentuje okno
prostokątne dla M = 7 (N = 2M+1 = 15). Z kolei na rysunku 12.9c jest pokazany iloczyn h(n)
i w(n), czyli zmodyfikowana odpowiedź impulsowa hw(n). Po jej przesunięciu w prawo o M =
= 7 otrzymujemy odpowiedź hw(M)(n) = hw(n−M), przedstawioną na rysunku 12.9d. Niezerowe
próbki hw(M)(n), wykorzystywane do filtracji, znajdują się w ramce kwadratowej. Na rysunku
12.10 przedstawiono analogiczną „konstrukcję” hw(M)(n), tym razem jednak dla okna Hanninga
z tabeli 12-6.
Z kolei na rysunku 12.11 przedstawiono konsekwencje częstotliwościowe zastosowania różnych funkcji okien. Unormowane moduły widma Fouriera okna prostokątnego z rysunku 12.9b
oraz widma okna Hanninga z rysunku 12.10a przedstawiono na rysunku 12.11a
(20log10|W(ejΩ)/W(0)|), natomiast na rysunku 12.11b są zaprezentowane charakterystyki amplitudowo-częstotliwościowe |Hw(M)(ejΩ)| filtrów hw(M)(n), uzyskanych dla tych okien. Jak widać
charakterystyki te są dalekie od założonego ideału (rysunek 12.8a). Dla okna prostokątnego
charakterystyka ma widoczną nieliniowość w paśmie przepustowym oraz bardzo małe tłumienie w paśmie zaporowym. Okno Hanninga oferuje większą liniowość charakterystyki w paśmie
przepustowym i większe tłumienie w paśmie zaporowym, ale za cenę poszerzenia pasma
przejściowego.
Zwiększanie wartości parametru M spowodowałoby zawężenie „listków” głównych obu widm,
leżących w okolicy f = 0, przy zachowanym poziomie oscylacji „listków” bocznych. W wyniku
tego coraz dłuższym odpowiedziom impulsowym hw(M)(n) odpowiadałyby filtry o coraz
bardziej stromych charakterystykach amplitudowo-częstotliwościowych (krótszych pasmach
przejściowych), lecz o takim samym tłumieniu w paśmie zaporowym (w przypadku granicznym M→∞ otrzymujemy idealną, prostokątną charakterystykę filtra). Problem wpływu doboru
kształtu okna (prostokątne czy inne) oraz jego długości, szczegółowo przedyskutowano
poniżej.
Wybór okna
Aby zaprojektować filtry o większym tłumieniu (niż dla okna prostokątnego) w paśmie zaporowym należy jako w(n) użyć innej funkcji „okna”, wycinającego używany podczas filtracji
fragment hw(M)(n) odpowiedzi impulsowej h(n). Definicje wybranych okien dyskretnych o długości nieparzystej N = 2M+1 przedstawiono w tabeli 12-6, ich kształty zaś pokazano na rysunku 12.12. W tabeli podano także poziom szerokość „listka” głównego widma okna (Asl) oraz
poziom tłumienia „listków” bocznych widma okna (∆ml). Funkcje te charakteryzuje zdecydowanie niższy poziom „listków” bocznych widma niż dla okna prostokątnego, ale jest to okupione większą szerokością „listków” głównych widma. Jednak zwiększenie długości okien
powoduje zmniejszenie szerokości ww. „listków” głównych, analogicznie jak w przypadku
okna prostokątnego. Z kolei w tabeli 12-7 podano tłumienie filtra, jakie się uzyskuje stosując
dane okno. Współczynnik K służy do wyboru długości filtra N, zapewniającej odpowiednią
stromość pasm przejściowych jego charakterystyki amplitudowo-częstotliwościowej. Korzysta
się w tym przypadku z zależności:
N>
K
K
=
∆f / f pr ∆ ml
(12.62)
Projektowanie nierekursywnych filtrów cyfrowych
332
a)
0.4
h(n)
0.3
0.2
0.1
0
-0.1
-20
b)
-15
-10
-5
0
5
10
15
20
-15
-10
-5
0
5
10
15
20
-15
-10
-5
0
5
10
15
20
-15
-10
-5
0
5
10
15
20
n
1
w(n)
0.8
0.6
0.4
0.2
0
-20
c)
n
0.4
hw(n)
0.3
0.2
0.1
0
-0.1
-20
d)
n
hw(M)(n)=hw(n-M)
0.4
0.3
0.2
0.1
0
-0.1
-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
a)
333
1
w(n)
0.8
0.6
0.4
0.2
0
-20
b)
-15
-10
-5
0
5
10
15
20
-15
-10
-5
0
5
10
15
20
-15
-10
-5
0
5
10
15
20
n
0.4
hw(n)
0.3
0.2
0.1
0
-0.1
-20
c)
n
hw(M)(n)=hw(n-M)
0.4
0.3
0.2
0.1
0
-0.1
-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łumienia w paśmie zaporowym (74 dB, zgodnie z tabelą 12-7).
Projektowanie nierekursywnych filtrów cyfrowych
334
0
|W(ejΩ)| [dB]
a)
-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
0.1
0.2
0.3
0.4
0.5
Ω/2π [Hz/Hz]
0
|Hw(M)(ejΩ)| [dB]
b)
-20
-40
-60
-80
-0.5
-0.4
-0.3
-0.2
-0.1
0
Ω/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)
|W(ejΩ)| [dB]
a)
0
-20
-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
0.1
0.2
0.3
0.4
0.5
Ω/2π [Hz/Hz]
|Hw(M)(ejΩ)| [dB]
b)
0
-20
-40
-60
-80
-100
-120
-140
-0.5
-0.4
-0.3
-0.2
-0.1
0
Ω/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
b)
1
0.8
0.8
0.6
0.6
w(n)
w(n)
a)
1
0.4
0.4
0.2
0.2
0
-100
-50
0
50
100
0
-100
-50
0
n
50
100
n
Rys. 12.12. Przykłady okien dyskretnych dla M = 100, N = 2M+1 = 201. Po lewej: okno Hamminga, Hanninga 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łównego, 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
Definicja w(n), −M ≤ n ≤ M
Okno
Asl
∆ml = ∆f / fpr [Hz/Hz]
Prostokątne
1
13,5 dB
2/(2M+1)
Bartletta
1−|n|/(M+1)
27,0 dB
4/(2M+1)
Hanninga
0,5+0,5cos(2πn/(2M+1))
31,0 dB
4/(2M+1)
Hamminga
0,54+0,46cos(2πn/(2M+1))
41,0 dB
4/(2M+1)
Blackmana
0,42+0,5cos(2πn/(2M+1))+0,08cos(4πn/(2M+1))
57,0 dB
6/(2M+1)
Kaisera
Io[ β (1−(n/M)2)0.5 ] / Io(β), Io(β) − funkcja Bessela
dowolne
dowolne
Tab. 12-7. Wybór rodzaju okna podczas projektowania filtrów FIR metodą „okien”
Okno
Tłumienie filtra*)
Współczynnik K
Prostokątne
21 dB
2,00
Trójkątne (Bartletta)
25 dB
4,00
Hanninga
44 dB
4,00
Hamminga
53 dB
4,00
Blackmana
74 dB
6,00
Kaisera (β = 2,12)
30 dB
1,54
Kaisera (β = 4,54)
50 dB
2,93
Kaisera (β = 7,76)
70 dB
4,32
Kaisera (β = 8,96)
90 dB
5,71
*) wysokość najwyższego listka w paśmie zaporowym
Projektowanie nierekursywnych filtrów cyfrowych
336
Zastosowanie okna Kaisera
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 sposó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 zaporowym.
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 parametrów:
A = 100 dB; β = 10,0613; M = 128; N = 257
Na rysunku 12.14 przedstawiono uzyskane współczynniki wagowe filtra hw(n) (przed przesunięciem w prawo o M = 128 próbek) oraz moduł jego charakterystyki amplitudowo-częstotliwościowej.
Tab. 12-8. Algorytm projektowania dolnoprzepustowych filtrów cyfrowych typu FIR typu I (symetrycznych o długości nieparzystej N = 2M+1) metodą okien z wykorzystaniem okna Kaisera
1. Podaj parametry wymaganej charakterystyki częstotliwościowejHw(M)(ej2π f / fpr):
• określ dopuszczalny poziom oscylacji w paśmie przejściowym δpass (np. 0,01 wokół 1) oraz żądaną
przepustowość filtra w paśmie zaporowym δstop (np. przepuszczanie 0,001 wejścia);
• podaj szerokość ∆f (w hercach) najbardziej stromego zbocza charakterystyki filtra.
2. Wyznacz A ze wzoru:
(
)
δ = min δ pass , δ stop , A = −20log10 ( δ )
3. Oblicz parametr β okna Kaisera ze wzoru:
0,


0,4
β = 0,5842 ( A − 21) + 0,07886 ( A − 21) ,

0,1102 ( A − 8,7 ) ,

dla
A < 21 dB
dla
dla
21 dB ≤ A ≤ 50 dB
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
Tab. 12-8 (cd.)
N≥
A − 7,95 f pr
14,36 ∆f
5. Oblicz współczynniki okna Kaisera dla danego β i M:
 I  β 1 − (n / M ) 2 
 0 

, −M ≤n≤ M
wK [n ] = 
β
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
hw(n)
0.3
0.2
0.1
0
-0.1
-120 -100 -80
-60
-40
-20
0
20
40
60
80
100 120
|Hw(ejΩ)| [dB]
n
0
-20
-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 projektowanie 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
% Ćwiczenie: Projektowanie nierekursywnych filtrów cyfrowych metodą okien z zastosowaniem okna
%
Kaisera
% Podaj parametry filtra (np. pasmowozaporowego)
fpr = 1000;
% częstotliwość próbkowania [Hz]
fd1 = 150;
% częstotliwość dolna 1 [Hz]
fd2 = 200;
% częstotliwość dolna 2 [Hz]
fg1 = 300;
% częstotliwość górna 1 [Hz]
fg2 = 350;
% częstotliwość górna 2 [Hz]
dp = 0.001;
% oscylacje w paśmie przepustowym np. 0.1, 0.01, 0.001
ds = 0.0001;
% oscylacje w paśmie zaporowym np. 0.001, 0.001, 0.0001
typ = 'bs';
% lp=LowPass, hp=HighPass, bp=BandPass, bs=BandStop
% Oblicz parametry okna
if (typ=='lp')
% Filtr LP
df=fd2-fd1; fc=((fd1+fd2)/2)/fpr; wc=2*pi*fc;
end
if (typ=='hp')
% Filtr HP
df=fg2-fg1; fc=((fg1+fg2)/2)/fpr; wc=2*pi*fc; end
if (typ=='bp' | typ=='bs') % Filtr BP lub BS
df1=fd2-fd1; df2=fg2-fg1; df=min(df1,df2);
f1=(fd1+(df/2))/fpr; f2=(fg2-(df/2))/fpr; w1=2*pi*f1; w2=2*pi*f2;
end
% dp=((10^(Ap/20))-1)/((10^(Ap/20))+1); % opcjonalne przeliczenie Ap i As w [dB]
% ds=10^(-As/20);
% na dp i ds
d=min(dp,ds); A=-20*log10(d);
if (A>=50) beta=0.1102*(A-8.7); end
if (A>21 & A<50) beta=(0.5842*(A-21)^0.4)+0.07886*(A-21); end
if (A<=21) beta=0; end
if (A>21) D=(A-7.95)/14.36; end
if (A<=21) D=0.922; end
N=(D*fpr/df)+1; N=ceil(N); if(rem(N,2)==0) N=N+1; end
N
pause
M = (N-1)/2; m = 1 : M; n = 1 : N;
% Wygeneruj okno
w = besseli( 0, beta * sqrt(1-((n-1)-M).^2/M^2) ) / besseli(0,beta);
plot(n,w); title('Funkcja okna'); grid; pause
% Wygeneruj odpowiedź impulsową filtra
if (typ=='lp') h=2*fc*sin(wc*m)./(wc*m); h=[ fliplr(h) 2*fc h]; end
if (typ=='hp') h=-2*fc*sin(wc*m)./(wc*m); h=[ fliplr(h) 1-2*fc h]; end
if (typ=='bp') % filtr BP
h = 2*f2*sin(w2*m)./(w2*m) - 2*f1*sin(w1*m)./(w1*m);
h = [ fliplr(h) 2*(f2-f1) h];
end
if (typ=='bs') % filtr BS
h = 2*f1*sin(w1*m)./(w1*m) - 2*f2*sin(w2*m)./(w2*m);
h = [ fliplr(h) 1+2*(f1-f2) h];
end
plot(n,h); title('Odp impulsowa filtra'); grid; pause
% filtr LP
% filtr HP
% Wymnóż odp impulsową filtra z funkcją okna
hw = h.* w;
plot(n,hw,'b'); title('Odpowiedz impulsowa filtra z oknem'); grid; pause
% Charakterystyka częstotliwościowa
NF = 1000; fmin = 0; fmax = fpr/2;
% wartości parametrów charakterystyki
f = fmin : (fmax-fmin)/(NF-1) : fmax; % częstotliwość
w = 2*pi*f/fpr;
% pulsacja
HW = freqz(hw,1,w);
% widmo Fouriera
plot(f,abs(HW)); grid; title('Moduł'); xlabel('freq [Hz]'); pause
plot(f,20*log10(abs(HW))); grid; title('Moduł dB'); xlabel('[Hz]'); ylabel('dB');
pause
plot(f,unwrap(angle(HW))); grid; title('FAZA'); xlabel('[Hz]'); ylabel('[rad]'); pause
Projektowanie nierekursywnych filtrów cyfrowych
339
12.6. Filtry specjalne
12.6.1.Filtr Hilberta
Ciągła transformacja Hilberta
Przypomnijmy, w rozdziale drugim została podana definicja ciągłej transformacji Hilberta:
xi ( t ) = H [ xr ( t )] =
1 π xr ( τ )
dτ ↔
∫
π −π t − τ
X i ( jω) = H ( jω) X r ( jω)
(12.63)
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:
xr ( t ) = H −1 [ xi (t )] = −
1 π xi ( τ )
dτ ↔
∫
π −π t − τ
X r ( jω) = H −1 ( jω) X i ( jω)
(12.64)
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

H ( jω) =  0 , ω = 0 ,
 j, ω < 0

 j,

H ( jω) =  0,
− j,

−1
ω> 0
ω=0
ω< 0
(12.65) (12.66)
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ą przedstawione 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 (odwrotnej 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
(12.67)
x (t ) = sgn(t ) ↔ X ( jω) =
jω
Równocześnie ciągła transformacja Fouriera odznacza się właściwością „dualności”:
X(jt) ↔ 2πx(−ω)
Projektowanie nierekursywnych filtrów cyfrowych
340
W związku z tym transformata Fouriera sygnału y(t) = 2/(jt) jest równa:
y (t ) =
2
jt
↔ Y ( jω) = 2π sgn(− ω) = −2π sgn(ω)
(12.68)
Wynika stąd, że filtr o odpowiedzi impulsowej h(t) = 1/(πt) ma transformatę Fouriera równą:
h (t ) =
1
πt
↔
H ( jω) = − j sgn(ω)
(12.69)
Otrzymaliśmy w ten sposób zależność (12.65), przedstawioną na rysunku 12.15 (zgodność
z wyłączeniem punktu ω = 0).
W wyniku następującego złożenia (1.7) sygnałów xr(t) i xi(t) o wartościach rzeczywistych:
x (t ) = x r (t ) + j ⋅ xi (t ) = x r (t ) + j ⋅ H ( x r (t ))
(12.70)
otrzymujemy sygnał zespolony x(t), nazywany sygnałem „analitycznym” (patrz rysunek
12.16). Oznaczymy przez X(jω), Xr(jω) i Xi(jω) widma Fouriera sygnałów x(t), xr(t) i xi(t),
wówczas widmo sygnału analitycznego jest równe:
X ( jω) = X r ( jω) + jX i ( jω) = X r ( jω) + jH ( jω) X r ( jω) = [1 + jH ( jω)] X r ( jω)
(12.71)
Dla ω ≥ 0 otrzymujemy:
X ( jω) = [1 + j ( − j )] X r ( jω) = 2 X r ( jω)
(12.72)
a dla ω < 0 mamy:
X ( jω) = [1 + j ( j )] X r ( jω) = [1 − 1] X r ( jω) = 0
(12.73)
|H(jω)|
∠H(jω)
π/2
1
ω
ω
−π/2
Rys. 12.15. Charakterystyka amplitudowa i fazowa filtra Hilberta
xr(t)
xr(t)
x(t)=xr(t)+jxi(t)
Transformacja
Hilberta
jxi(t)
j
Rys. 12.16. Wyznaczanie zespolonego sygnału „analitycznego”
Projektowanie nierekursywnych filtrów cyfrowych
Xr(jω)
341
jXi(jω)
ω
X(jω)
ω
ω
Rys. 12.17. Przykładowy kształt widm Xr(jω), Xi(jω) i X(jω)
Wynika stąd, że dla pulsacji nieujemnych widmo sygnału analitycznego X(jω) jest równe podwojonemu 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 rzeczywistych. 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 zespolone 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ω):
+∞
∫x
*
*
(t ) e
− jωt
−∞

+ ∞
dt =  ∫ x (t )e jωt dt  = X * ( − jω)

 − ∞
(12.74)
wynika bowiem, że:
xr ( t ) =
1
x ( t ) + x* ( t ) 

2
xi ( t ) =
1 
x ( t ) − x* ( t )  ↔

2j
↔
X r ( jω) =
X i ( jω) =
1
X ( jω) + X * ( − jω) 

2
(12.75)
1 
X ( j ω) − X * ( − j ω ) 

2j
(12.76)
Dyskretna transformacja Hilberta
Wyprowadzone powyżej zależności widmowe (transmitancyjne) (12.65)−(12.73) filtra Hilberta
są także prawdziwe dla sygnałów dyskretnych. W tym przypadku ω jest zastępowane przez
unormowaną pulsację Ω = 2πf/fpr i wszystkie widma X(ejΩ), Xr(ejΩ) i Xi(ejΩ) powtarzają się
okresowo co 2π. Splot (12.63) przyjmuje teraz postać dyskretną:
xi ( n ) =
∞
∑ hH ( n − m) x r (m )
(12.77)
m = −∞
Odpowiedź impulsową dyskretnego filtra Hilberta wyznacza się ze wzoru:
π
hH (n ) =
∫ H H (e
−π
jΩ
)e jΩn dΩ
(12.78)
Projektowanie nierekursywnych filtrów cyfrowych
342
Uwzględniając (12.65) otrzymujemy z niego:
hH (n ) =
=
π
0
1
1
j  1 jΩn
 e
( − j )e jΩn dΩ =
je jΩn dΩ +
∫
∫
2π − π
2π 0
2π  jn

[
0
−
−π
π
1 jΩn 

e
jn
0

]
1
1
[2 − 2 cos πn] = 1 [1 − cos πn]
(e j 0 − e − jπn ) − ( e jπn − e j 0 ) =
2 πn
πn
2 πn
Ponieważ prawdziwa jest następująca zależność trygonometryczna:
sin 2 α =
1 − cos 2α
2
ostatecznie otrzymujemy:
hH (n ) =
2 sin 2 (πn / 2 ) sin 2 (πn / 2 )
=
πn
πn / 2
Po zastosowaniu reguły d’Hospitala do powyższej zależności, otrzymujemy wzór podający explicite wartość próbki zerowej filtra:
 sin 2 (πn / 2 )

h H ( n ) =  πn / 2 , n ≠ 0

0, n = 0
(12.79)
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 przypadku 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 przypadek zastosowania okna prostokątnego w(n) jako funkcji wycinającej (hw(n) = h(n)w(n)). Wynikowa 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 fazowa 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 przerywana) 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
a) z oknem prostokątnym
b) z oknem Blackmana
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
hw(n)
hw(n)
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-10
-5
0
5
10
-10
-5
0
1.2
1
0.8
0.6
0.4
0.2
0
10
0.4
0.5
0.4
0.5
1
0.8
0.6
0.4
0.2
0
0
0.1
0.2
0.3
0.4
0.5
0
0.1
Ω/2π [Hz/Hz]
0.2
0.3
Ω/2π [Hz/Hz]
0
faza Hw(ejΩ) [deg]
0
faza Hw(ejΩ) [deg]
5
n
|Hw(ejΩ)|
|Hw(ejΩ)|
n
-45
-90
-135
-180
-45
-90
-135
-180
0
0.1
0.2
0.3
0.4
0.5
0
Ω/2π [Hz/Hz]
0.1
0.2
0.3
Ω/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ściowych (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
Projektowanie nierekursywnych filtrów cyfrowych
344
W pierwszej metodzie wymnaża się wartości prążków widma Xr(k)=Xr(ejΩk) z wartościami
transmitancji filtra Hilberta (12.65):
 0,
− j,

H (k ) = H (e jΩ k ) = 
 0,
 j,
k =0
k = 1...( N / 2 − 1)
k = N /2
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ą”:
W (k ) = W (e jΩ k
 1,
2,

)=
 1,
0,
k =0
k = 1...( N / 2 − 1)
k = N /2
k = ( N / 2)...( N − 1)
i uzyskuje się sygnał analityczny x(n). Funkcja hilb() w języku Matlab pracuje według drugiego 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ń
Przykład 1. Demodulacja chwilowej amplitudy. Załóżmy, że mamy sygnał rzeczywisty x(t)
postaci:
x (t ) = A(t ) cos( ωt + φ(t ))
Po transformatorze Hilberta (rysunek 12.16) otrzymujemy:
y ( t ) = A(t ) e j ( ωt +φ( t ))
Wartość bezwzględna sygnału y(t) jest równa:
| y (t ) |=| A(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.
Przykład 2. Demodulacja chwilowego przesunięcia fazowego. Załóżmy, że mamy dwa sygnały rzeczywiste x1(t) i x2(t) o następującej postaci:
x1 (t ) = A1 (t ) cos(ωt + φ1 (t )) , x2 (t ) = A2 (t ) cos( ωt + φ2 (t ))
o wolnozmiennych amplitudach A1(t) i A2(t). Metodą transformacji Hilberta przekształcamy je
na sygnały analityczne:
j ωt +φ1 ( t ) )
y1 (t ) = A1 (t ) e (
,
y 2 (t ) = A2 (t )e j(ωt +φ2 (t ))
Projektowanie nierekursywnych filtrów cyfrowych
345
Jeśli wymnożymy sprzężenie zespolone pierwszego z sygnałów analitycznych przez sygnał
drugi, otrzymamy:
j −ωt −φ1 ( t ) +ωt +φ2 ( t ) )
j φ ( t ) −φ1 ( t ) )
z (t ) = y1* (t ) y2 ( t ) = A1 (t ) A2 (t )e (
= A1 (t ) A2 ( t )e ( 2
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:
z (t ) =
T
∫
−T
w( τ) y1* ( t + τ ) y2 ( t + τ ) d τ,
T
∫
w( τ ) d τ = 1
−T
jako ważoną średnią bieżącą iloczynu sygnałów y1*(t) i y2*(t), gdzie w(τ) jest rzeczywistą funkcją wagową (co jest równoznaczne filtracji z(t) za pomocą w(t)). Jest także możliwe „odszumianie” samego przesunięcia fazowego ∆φ(t).
12.6.2.Filtr różniczkujący
Obecnie zajmiemy się wyprowadzeniem odpowiedzi impulsowej dyskretnego filtra różniczkującego. Przypomnijmy, ciągła transformacja Fouriera ma następującą właściwość „pochodnej”:
dx(t )
↔ Y ( jω) = jωX ( jω)
(12.80)
x (t ) ↔ X ( jω),
y (t ) =
dt
Wynika stąd, że różniczkowanie sygnału uzyskuje się poprzez jego „przepuszczenie” przez
układ o transmitancji H(jω) = jω. W przypadku układów dyskretnych, filtr różniczkujący powinien mieć H(ejΩ) równe jΩ. W związku z tym jego odpowiedź impulsowa hD(n) jest dana
wzorem:
π
hD (n ) =
π
1
1
( jΩ)( e jΩn )dΩ = ∫ ( jΩ)(2 j sin(Ωn )) dΩ
∫
2π 0
2π − π
π
=−
1
Ω sin(Ωn )dΩ
π ∫0
(12.81)
gdyż transmitancja H(ejΩ) jest asymetryczna względem punktu Ω = 0 i do jej „aproksymacji”
wystarczą wyłącznie składowe sinusoidalne. Do ostatniego wzoru można zastosować metodę
całkowania przez części:
∫ 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
Projektowanie nierekursywnych filtrów cyfrowych
346
b) z oknem Blackmana
1
1
0.5
0.5
hw(n)
hw(n)
a) z oknem prostokątnym
0
-0.5
0
-0.5
-1
-1
-10
-5
0
5
10
-10
-5
0
3.5
3
2.5
2
1.5
1
0.5
0
0
0.1
0.2
10
0.3
0.4
0.4
0.5
0.4
0.5
3.5
3
2.5
2
1.5
1
0.5
0
0.5
0
0.1
Ω/2π [Hz/Hz]
0.2
0.3
Ω/2π [Hz/Hz]
180
faza Hw(ejΩ) [deg]
180
faza Hw(ejΩ) [deg]
5
n
|Hw(ejΩ)|
|Hw(ejΩ)|
n
135
90
45
0
135
90
45
0
0
0.1
0.2
0.3
0.4
0.5
0
0.1
Ω/2π [Hz/Hz]
0.2
0.3
Ω/2π [Hz/Hz]
Rys. 12.19. Filtr różniczkujący. 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)
skąd otrzymujemy:
π π
1  1

 1
 
hD (n ) = − Ω − cos(Ωn )  − ∫  − cos(Ωn ) dΩ
π  n
0 0 n
 

π
1  1
 11
  cos( πn )
= − π − cos( πn )  +  sin(Ωn )   =
n
π  n
 nn
 0 

(12.82)
Odpowiedź impulsowa filtra różniczkującego jest przedstawiona na rysunku 12.19a. Teraz pozostaje 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.
12.6.3. Filtr interpolatora i decymatora cyfrowego
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ć systemy 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-krotnego interpolatora i L-krotnego decymatora cyfrowego. Ich schematy blokowe są przedstawione na rysunku 12.20. Składają się one, odpowiednio, z K-krotnego ekspandera oraz L-krotnego reduktora, które współpracują z dolnoprzepustowymi filtrami o odpowiedziach impulsowych h(n) i g(n). Pierwszy z tych filtrów jest nazywany filtrem interpolującym, a drugi − filtrem 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żliwiają zmianę częstotliwości próbkowania w stosunku K/L. W takim przypadku należy zastososować filtr o węższym paśmie przepustowym. Należy pamiętać, aby w kaskadzie interpolator 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ładzie 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.
Przykład. Poniżej są przedstawione przykłady interpolacji i decymacji próbek sygnałów dyskretnych:
sygnał oryginalny x(n):
sygnał interpolowany xi(n):
0
2
4
6
4
2
0
↓
↓
↓
↓
↓
↓
↓
0 1 2 3 4 5 6 5 4 3 2 1 0
Projektowanie nierekursywnych filtrów cyfrowych
348
a) interpolator
x(n)
xe(m)
↑K
ekspander
b) decymator
ye(n)
h(n)
x(n)
g(n)
filtr LP
y(n)
filtr LP
↓L
yr(n)
reduktor
Rys. 12.20. Schemat blokowy układu: intepolatora cyfrowego K-tego rzędu (po lewej) oraz decymatora cyfrowego L-tego rzędu (po prawej)
x(n)
xe(n)
x(n)
↑2
xr(n)
↓2
x(n)
x(n)
0 1 2 3 4 5 6 7 8
n
xe(n)
0 1 2 3 4 5 6 7 8
n
xr(n)
0 1 2 3 4 5 6 7 8 9
n
ekspander
0 1 2 3 4 5 6 7 8 9
n
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ę
sygnał oryginalny x(n):
sygnał decymowany xd(n):
sygnał oryginalny x(n):
sygnał decymowany xd(n):
0 1 2 3 4 5 6 5 4 3 2 1 0
↓
↓
↓
↓
↓
↓
↓
0
2
4
6
4
2
0
0 1 2 3 4 5 6 5 4 3 2 1 0
↓
↓
↓
↓
↓
0 1,5 3 4,5 6 4,5 3 1,5 0
Bardziej szczegółowe przedstawienie zagadnienia interpolacji i decymacji sygnałów dyskretnych można znaleźć w pkt. 18.2.1.
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
metody interpolacji danych na podstawie skończonego zbioru punktów „pomiarowych” (np. za
pomocą różnych funkcji wielomianowych lub funkcji sklejanych), ale w cyfrowym przetwarzaniu sygnałów powszechnie stosuje się do tego celu tzw. K-krotne filtry interpolujące.
W układzie interpolatora na początku znajduje się ekspander (rysunek 12.21a), który dodaje
K−1 próbek o wartościach zerowych pomiędzy każde dwie próbki sygnału (czyli w sposób
sztuczny K-krotnie zwiększa on częstotliwość „próbkowania” i pozornie rozszerza pasmo
sygnału), a następnie wygładza się tak „spreparowany” sygnał filtrem interpolującym, ponownie ograniczając K-krotnie pasmo sygnału do zadanego. Filtr interpolujący jest filtrem dolnoprzepustowym o unormowanej pulsacji granicznej Ω0 = π/K oraz unormowanej częstotliwości
granicznej F0 = Ω0/(2π) = 1/(2K) (patrz rysunek 12.8 i tabela 12-5), mającym teoretyczną
odpowiedź impulsową równą:
 1 sin( πn / K ) 
h(n) = K 
, − ∞ < n < ∞
 K πn / K 
(12.83)
Jest to K-krotnie wzmocniona odpowiedź impulsowa filtra dolnoprzepustowego (12.56). Równanie (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 sygnał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)
mającym określone właściwości widmowe. Na rysunku 12.22a pokazano odpowiedź impulsową filtra interpolującego piątego rzędu (K = 5) dla 31-elementowego (M = 15) okna prostokątnego w(n) = 1, −M ≤ n ≤ M, oraz jego charakterystykę amplitudowo-częstotliwościową w skali
liniowej i logarytmicznej („decybelowej”). Jak widać jest to rzeczywiście filtr ograniczający
pięciokrotnie pasmo sygnału, gdyż |H(ejπ/5)| = 0,5, ale liniowość jego pasma przejściowego
oraz tłumienie pasma zaporowego pozostawiają wiele do życzenia. Wady filtra są konsekwencją zastosowania okna prostokątnego do wycięcia fragmentu h(n) (widmo Fouriera tego
okna charakteryzuje się bardzo wysokim poziomem listków bocznych). Zastosowanie okna
Blackmana o identycznej długości (M = 15) dało w wyniku odpowiedź impulsową i charakterystykę częstotliwościową filtra przedstawioną na rysunku 12.22b, czyli o wiele korzystniejszą.
Zwróćmy uwagę, że pomnożenie funkcji h(n) (12.84) z dowolnym oknem w(n) nie zmienia jej
miejsc zerowania się, czyli podstawowej cechy filtra interpolującego.
Na rysunku 12.23 przedstawiono eksperymentalną weryfikację dyskutowanej powyżej 5-krotnej interpolacji, z wykorzystaniem filtra dolnoprzepustowego o odpowiedzi impulsowej pokazanej na rysunku 12.22b. Pomiędzy każde dwie oryginalne próbki sygnału sinusoidalnego
(czarne kwadraty) wstawiono cztery próbki „interpolujące” o wartościach zerowych (czarne
koła), a następnie dokonano filtracji tak zmodyfikowanego sygnału. W jej wyniku oryginalne
próbki (czarne kwadraty) nie zmieniły swojego położenia, natomiast dodane zera (czarne koła)
przesunęły się do obrysu interpolowanej sinusoidy (białe koła). Operacja przesuwania próbek
jest zaznaczona na rysunku strzałką.
Projektowanie nierekursywnych filtrów cyfrowych
350
b) z oknem Blackmana
1
1
0.75
0.75
0.5
0.5
h w (n)
h w (n)
a) z oknem prostokątnym
0.25
0.25
0
0
-0.25
-0.25
-15 -10
-5
0
5
10
15
-15 -10
-5
6
5
4
3
2
1
0
0
0.1
0.2
0.3
0.4
0.5
0
|Hw(ejΩ)| [dB]
|Hw(ejΩ)| [dB]
0.2
10
15
0.1
0.3
0.2
0.3
0.4
0.5
0.4
0.5
Ω/2π [Hz/Hz]
20
0
-20
-40
-60
-80
-100
0.1
5
6
5
4
3
2
1
0
Ω/2π [Hz/Hz]
0
0
n
|Hw(ejΩ)|
|Hw(ejΩ)|
n
0.4
20
0
-20
-40
-60
-80
-100
0.5
0
Ω/2π [Hz/Hz]
0.1
0.2
0.3
Ω/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 impulsowych się zeruje
x we(n), y wy (n)
1
0.8
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 interpolują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 interpolacji sygnałów dyskretnych. Ich ograniczeniem jest zawsze całkowitoliczbowa krotność interpolacji. 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ć algorytm 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-elementowego 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, napisany w języku Matlab:
% Algorytm interpolacji sygnału za pomocą dyskretnej transformacji Fouriera DFT (FFT)
M=24; N=16; n=0:N-1; x=sin(2*pi/8*n);
X = fft(x);
X = [ X(1:N/2) 0.5*X(N/2+1) zeros(1,M-N-1) conj(0.5*X(N/2+1)) X(N/2+2:N)];
y = M/N*real(ifft(X));
subplot(211); stem(x);
% sygnał wejściowy
subplot(212); stem(y); pause % interpolowany sygnał wejściowy
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.
12.6.4. Przykład ćwiczenie komputerowego
W tabeli 12-10 przedstawiono program komputerowy, który posłużył do wygenerowania przykładowych filtrów Hilberta, różniczkujących i interpolujących, przedstawionych na rysunkach
12.18, 12.19 i 12.22. Zainteresowany Czytelnik może wykorzystać ten program do sprawdzenia różnych zastosowań tych filtrów, krótko opisanych powyżej.
Na szczególną uwagę zasługuje w nim operacja „fazowania” sygnału wyjściowego z filtra y(n)
z jego sygnałem wejściowym x(n). W większości zastosowań takie „synchronizowanie” obu
sygnałów nie jest wymagane, gdyż najczęstszym zadaniem filtra jest tylko usuwanie wybranych
składowych częstotliwościowych z sygnału. W takim przypadku opóźnienie czasowe wprowa-
Projektowanie nierekursywnych filtrów cyfrowych
352
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.
Tab. 12-10. Przykład projektowania cyfrowych filtrów Hilberta, różniczkujących i interpolujących
% Ćwiczenie: Projektowanie specjalnych filtrów cyfrowych metodą okien
clear all;
M = 20;
typ = 1;
% połowa długości filtra (cały N=2*M+1)
% 1 = Hilberta, 2 = różniczkujący, 3 = interpolujący (K-krotnie)
N=2*M+1; n = 1 : M;
% Wygeneruj teoretyczne odpowiedzi impulsowe
if (typ==1) h = (2/pi) * sin(pi*n/2).^2 ./ n; end
% połowa odpowiedzi impulsowej
if (typ==2) h = cos(pi*n)./n; end
% dla n = 1, 2, 3, ..., M
if (typ==3)
%
K=5; wc=pi/K; fc=wc/(2*pi);
% fc = 1/(2*K)
h = 2*fc*sin(wc*n)./(wc*n);
% współczynnik skalujący 2*fc = 1/K
end
if (typ==1 | typ==2)
% cała odpowiedź dla n = −M,...,0,...,M
h = [ -h(M:-1:1) 0 h(1:M) ];
else
h = K*[ h(M:-1:1) 2*fc h(1:M)]; % wzmocnienie K-razy, aby próbka środkowa była równa 1
end
% Wymnóż je z funkcją okna
w = blackman(N); w=w';
hw = h .* w;
% okno Blackmana
% wymnożenie odpowiedzi impulsowej z oknem
% Oblicz widmo Fouriera
m = -M : 1 : M;
% dla filtra nieprzyczynowego (bez przesunięcia o M próbek w prawo)
% m = 0 : N-1;
% dla filtra przyczynowego (z przesunięciem o M próbek w prawo)
NF=500; fn=0.5*(1:NF-1)/NF;
for k=1:NF-1
H(k)=sum( h .* exp(-j*2*pi*fn(k)*m) );
HW(k)=sum( hw .* exp(-j*2*pi*fn(k)*m) );
end
% 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
% Zastosowanie filtra Hilberta i filtra różniczkującego
if(typ==1 | typ==2)
Nx=200; fx=50; fpr=1000; n=0:Nx-1; x=cos(2*pi*fx/fpr*n); % generacja sygnału testowego x(n)
y=conv(x,hw);
% filtracja sygnału x(n) za pomocą odp. impulsowej hw(n); otrzymujemy Nx+N−1 próbek
yp=y(N:Nx);
% odcięcie stanów przejściowych (po N−1 próbek) z przodu i z tyłu sygnału y(n)
xp=x(M+1:Nx-M); % odcięcie tych próbek z x(n), dla których nie ma poprawnych odpowiedników w y(n)
if(typ==1) % filtr Hilberta
z = xp + j*yp;
% sygnał analityczny
Ny=ceil(fpr/fx); k=1:Ny; plot(k,xp(k),'b',k,yp(k),'r');
title('xp(n) i yp(n)'); grid; pause % -90 stopni
plot(xp,yp); title('Cz. urojona w funkcji cz. rzeczywistej');
grid; pause
% powinien być okrąg
plot(abs(fft(z))); title('Widmo sygnału analitycznego');
Projektowanie nierekursywnych filtrów cyfrowych
grid; pause
% brak częstotliwości ujemnych
% filtr różniczkujący
else
end
end
353
Ny=ceil(fpr/fx); k=1:Ny; plot(k,xp(k),'b',k,yp(k),'r'); title('xp(n) i yp(n)');
% przesunięcie w fazie +90 stopni
grid; pause
% Zastosowanie filtra interpolującego
if(typ==3)
Nx=50; fx=50; fpr=1000; n=0:Nx-1; x=cos(2*pi*fx/fpr*n); % generacja sygnału testowego x(n)
xz=[]; KNx=K*Nx; xz=zeros(1,KNx); xz(1:K:KNx)=x(1:Nx); % dodanie zer
yz=conv(xz,hw);
% filtracja xz(n) za pomocą odp. impulsowej hw(n); otrzymujemy Nx+N−1 próbek
yp=yz(N:KNx);
% odcięcie stanów przejściowych (po N−1 próbek) z przodu i z tyłu sygnału yz(n)
xp=xz(M+1:KNx-M); % odcięcie tych próbek w xz(n), dla których nie ma poprawnych odpowiedników w yz(n)
Ny=length(yp); k=1:Ny; plot(k,xp(k),'or',k,yp(k),'-b');
title('xp(n) i yp(n)'); grid; pause % porównanie
end
12.7. Synchronizacja próbek wejściowych i wyjściowych filtra
W podrozdziale 12.1 wykazaliśmy, że filtry o skończonej, (a)symetrycznej odpowiedzi impulsowej h(n) mają charakterystykę częstotliwościową daną wzorami (12.10), (12.20) − (12.23):
H ( e jΩ ) = A(Ω )e jΨ ( Ω ) = A(Ω) e − jΩM , Ω = 2π f f pr
(12.85)
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)
czyli jest liniowa, co powoduje, że wszystkie pulsacje (częstotliwości) są na wyjściu filtra
opóźnione o M próbek w stosunku do jego wejścia (patrz (12.24), (12.25)):
t g (Ω ) =
d Ψ (Ω )
= −M
dΩ
(12.87)
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 projektowaliś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 przykładzie metody okien (podrozdział 12.5). Teoretyczna odpowiedź impulsowa h(n) rozpatrywanych 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 zokienkowaną 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-
Projektowanie nierekursywnych filtrów cyfrowych
354
x(n)
1
2
3
4
5
6
nr próbki
7
krok 9
9
krok 8
8
krok 7
7
krok 3
3
krok 2
2
h(−n)
1
y(n)
krok 1
1
1
2
3
4
5
6
7
8
nr próbki
9
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)
h(−n)
1
0
-1
y(n)
1
2
3
1
2
3
4
h(−n)
3/2
1/2
-1/2
-3/2
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 „synchronizowania” („fazowania”) próbek wejściowych i wyjściowych filtra cyfrowego typu FIR. Siedmiopró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ę środkową 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) odpowiadają 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
W dwóch poprzednich rozdziałach zajmowaliśmy się problemem „projektowania” filtrów cyfrowych, to znaczy zagadnieniem obliczania zbioru współczynników bm, m = 0, 1, 2, ..., M oraz
ak, k = 1, 2, 3, ..., N, które są wykorzystywane podczas filtracji sygnałów dyskretnych, realizowanej w układzie przedstawionym na rysunku 10.4. Co prawda algorytm tej filtracji został już
przedstawiony w tabeli 10-1, a jego wersja programowa − w tabeli 10-2, ale stanowi to jedynie
„wierzchołek góry lodowej” zagadnienia struktur i algorytmów filtracji cyfrowej. W obecnym
rozdziale poświęcimy tej problematyce więcej miejsca. Poznamy w nim różne możliwości zapisu równań cyfrowej filtracji liniowej, ich wady i zalety oraz szybkie metody obliczeniowe ich
realizacji, wykorzystujące algorytm szybkiej transformacji Fouriera. Na końcu rozdziału „powiemy dwa słowa” na temat procesorów sygnałowych, układów specjalnie dedykowanych do
przetwarzania, także filtrowania, sygnałów cyfrowych.
13.1. Klasyczne struktury filtrów cyfrowych
Klasyczny liniowy filtr cyfrowy typu LTI (ang. Linear Time-Invariant) jest zdefiniowany następującym równaniem:
y (n) =
M
N
m=0
k =1
∑ bm x(n − m) − ∑ ak y(n − k )
(13.1)
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 najprostszych 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: bieguny transmitancji układu dyskretnego powinny leżeć wewnątrz okręgu o promieniu jednostkowym). 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 kolejność 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.
a) najprostszy filtr nierekursywny:
b) najprostszy filtr rekursywny:
y ( n ) = b0 x( n ) + b1 x( n − 1)
y ( n ) = x ( n ) − a1 y ( n − 1)
b0
x(n)
z−1
x(n−1)
x(n)
y(n)
y(n)
z−1
−a1
b1
y(n−1)
c) kaskadowe połączenie układów z rys. a) i b): y ( n ) = b0 x ( n ) + b1 x ( n − 1) − a1 y ( n − 1)
b0
x(n)
z−1
x(n−1)
y(n)
−a1
b1
b0
x(n)
z−1
z−1
y(n−1)
x(n)
b0
w(n)
−a1
z−1
z−1
w(n−1)
y(n)
z−1
y(n−1)
y ( n ) = b0 w( n ) + b1w( n − 1)
x(n)
b1
−a1
b1
x(n−1)
d) zamiana kolejności układów z rys. a) i b): w( n ) = x ( n ) − a1w( n − 1),
y(n)
w(n)
−a 1
z−1
b0
y(n)
b1
Rys. 13.1. Struktury najprostszych filtrów cyfrowych typu FIR i IIR
Jak widać filtry cyfrowe są przedstawiane za pomocą grafów „przepływowych”, w których informacja 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 uzyskamy 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 stanowią 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ą przedstawione 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.
Algorytmy filtracji cyfrowej
358
b) filtr IIR
a) filtr FIR
b0
x(n)
z−1
y(n)
x(n)
x(n)
z−1
−a1
b0
b1
y(n−1)
y(n)
b1
x(n)
z−1
−a1
b0
z−1
y(n)
b1
x(n−1)
y(n)
x(n)
y(n)
x(n)
y(n)
z−1
z−1
−a1
Rys. 13.2. Ilustracja zasady transpozycji filtrów cyfrowych (zmiana kierunku przepływu danych na przeciwny)
a) y ( n ) = b0 x ( n ) + b1 x ( n − 1)
b0
x(n)
b1
b) y ( n ) = x ( n ) − a1 y ( n − 1)
x(n)
y(n)
z−1
z−1
c) w( n ) = b1 x ( n ) − a1 y ( n ),
y(n)
z−1
w(n)
−a1
y(n)
z−1
−a1
d) w( n ) = x ( n ) − a1w( n − 1),
z−1
b0
x(n)
z−1
b1
x(n)
−a1
y ( n ) = b0 x( n ) + w( n − 1)
b0
x(n)
y(n)
−a1
b1
y ( n ) = b0 w( n ) + b1w( n − 1)
b0
b1
y(n)
z−1
x(n)
w(n)
z−1
−a1
b0
b1
y(n)
z−1
Rys. 13.3. Transponowane struktury najprostszych filtrów cyfrowych typu FIR i IIR z rysunku 13.1
Algorytmy filtracji cyfrowej
359
Obecnie uogólnimy powyższe rozważania układowe na filtry, w których linie opóźniające na
wejściu i wyjściu filtra są dłuższe. W celu kompletności przeprowadzanych „wywodów” przypomnimy także schematy blokowe układów, przedstawionych w rozdziale 10 na rysunku 10.4.
Na rysunku 13.4a jest przedstawiony schemat blokowy nierekursywnego filtra cyfrowego, który nazwiemy umownie jako „tylko FIR”, a na rysunku 13.4b schemat blokowy rekursywnego
filtra cyfrowego typu „tylko IIR”. W wyniku ich połączenia kaskadowego otrzymujemy filtr
cyfrowy „pełny FIR/IIR” typu I, którego struktura jest przedstawiona na rysunku 13.5, natomiast po zamianie kolejności filtrów składowych otrzymujemy filtr cyfrowy „pełny IIR/FIR”
typu II, pokazany na rysunku 13.6. Na rysunkach 13.4c i 13.4d pokazano transpozycje układów 13.4a i 13.4b, a wersje transponowane filtrów typów I i II z rysunków 13.5 i 13.6 są
przedstawione na rysunku 13.7.
Jak widać filtr cyfrowy może występować w wielu różnych postaciach klasycznych. Co prawda
„od przybytku głowa nie boli”, ale czy nie jest to czasem zbyt „wiele zabawy o nic”. Na pewno
nie. Ponieważ filtr pracuje w bardziej złożonych układach przetwarzania, na przykład
interpolująco-decymujących, skrótowo przedstawionych w podrozdziale 12.6.3. Jak się później
okaże w układzie decymatora cyfrowego jest korzystniej pod względem obliczeniowym stosować filtr FIR pracujący w według schematu z rysunku 13.4a, w układzie interpolatora zaś
− jego transpozycji pokazanej na rysunku 13.4c. Z kolei bardzo ważny zapis filtra cyfrowego
w strukturze zmiennych stanu (rozdział 13.2) wykorzystuje zmodyfikowany schemat „pełny
IIR/FIR” typu II z rysunku 13.6b.
Różne struktury pracy filtra wybiera się także ze względu na przyjętą sprzętową arytmetykę
obliczeń i jej ograniczenia. Przykładowo w procesorach stałoprzecinkowych (ang. fixed-point)
należy unikać przepełnień, czyli są istotne występujace w nich maksymalne przejściowe wyniki
obliczeń. W procesorach zmiennoprzecinkowych (ang. floating-point) należy natomiast dodawać sygnały o zbliżonych wartościach, z powodu ograniczonej liczby bitów mantysy (patrz
rozdział 7.1).
Przykład − zamiana klasycznej struktury realizacji filtra
Jak już wiemy transmitancja H(z) cyfrowego filtra typu LTI jest ilorazem dwóch wielomianów
zmiennej zespolonej z. Ponieważ transmitancję tę można zapisać na wiele różnych sposobów,
ten sam filtr cyfrowy może mieć bardzo wiele różnych realizacji układowych. Przykładowo,
transmitancję filtra można przedstawić jako sumę lub iloczyn transmitancji prostszych,
w związku z czym wynikowy filtr może być zrealizowany jako kilka filtrów pracujących
równolegle lub kaskadowo (jeden za drugim).
Dla przykładu rozważmy transmitancję daną następującym wzorem:
H (1) ( z ) =
1 + 2 z −1 + z − 2
(13.2)
1 − 0,9 z −1 + 0,2 z −2
Może ona także być zapisana jako:
H (2) ( z ) = 5 +
−4 + 6,5z −1
1 − 0,9 z
−1
+ 0,2 z
−2
, H (3) ( z ) = 5 −
49
1 − 0,4 z
−1
−
45
1 − 0,5z −1
 1 + z −1  1 + z −1 



1
1
, H (5) ( z ) = 1 + z −1 1 + z −1 
H (4) ( z ) = 
−1  
−1 
 1 − 0,4 z −1 
 1 − 0,5z −1 
 1 − 0,4 z   1 − 0,5z 



(
)(
)
Algorytmy filtracji cyfrowej
360
Schematy blokowe układów, odpowiadających różnym zapisom transmitancji, są przedstawione na rysunku 13.8.
a) „tylko FIR”
b) „tylko IIR”
b0
x(n)
z−1
x(n−1)
y(n)
x(n)
y(n)
−a1
b1
−1
z
−a2
b2
x(n−2)
−1
z
−a3
b2
x(n−3)
c) transponowany „tylko FIR”
b0
x(n)
z−1
y(n−1)
−1
z
y(n−2)
−1
z
y(n−3)
d) transponowany „tylko IIR”
x(n)
y(n)
y(n)
z−1
z−1
−a1
b1
z−1
z−1
−a2
b2
z−1
z−1
−a3
b3
Rys. 13.4. Podstawowa struktura filtrów typów: „tylko FIR" i „tylko IIR” i ich wersje transponowane
b0
x(n)
z−1
x(n−1)
b1
−1
z
x(n−2)
z−1
x(n−3)
y(n)
−a1
b2
−a2
b3
−a3
b0
x(n)
z−1
z−1
y(n−1)
x(n−1)
−1
b1
−1
z
z
y(n−2)
x(n−2)
z−1
z−1
y(n−3)
x(n−3)
y(n)
−a1
b2
−a2
b3
−a3
z−1
y(n−1)
−1
z
y(n−2)
z−1
y(n−3)
Rys. 13.5. Kaskadowe połączenie filtrów typów „tylko FIR” i „tylko IIR” – podstawowa struktura filtra
cyfrowego typu I
Algorytmy filtracji cyfrowej
x(n)
361
b0
w(n)
z−1
−a1
z−1
w(n−1)
z−1
−a2
z−1
w(n−2)
z−1
−a3
z−1
w(n−3)
y(n)
b0
x(n)
b1
−a1
b2
−a2
b3
−a3
z−1
z−1
z−1
y(n)
b1
b2
b3
Rys. 13.6. Kaskadowe połączenie filtrów typów „tylko IIR” i „tylko FIR” – podstawowa struktura filtra
cyfrowego typu II
x(n)
w(n)
b0
z−1
y(n)
x(n)
b0
z−1
z−1
−a1
z−1
z−1
−a2
z−1
z−1
−a3
−a2
b2
b2
z−1
−a1
b1
b1
z−1
y(n)
b3
b3
−a3
Rys. 13.7. Wersje transponowane filtrów cyfrowych typu I i typu II z rysunków 13.5 i 13.6
13.2. Struktura zmiennych stanu
Filtry cyfrowe mogą być także zapisywane za pomocą równań zmiennych stanu. Na rysunku
13.9a jest przedstawiony schemat blokowy rekursywnego filtra cyfrowego drugiego rzędu,
„pracującego” w strukturze zmiennych stanu. Zmiennymi tymi są sygnały s1(n) i s2(n). Zależą
one od sygnału wejściowego x(n), same zaś determinują sygnał wyjściowy y(n):
 s1 (n + 1) = −a1s1 (n ) − a 2 s2 (n ) + x (n )

 s2 (n + 1) = s1 ( n )

y ( n ) = c1s1 ( n ) + c2 s2 (n ) + dx ( n )

(13.3)
Możemy to równanie zapisać w następujący sposób w postaci macierzowej:
s(n + 1) = As(n ) + bx ( n )

t
 y (n ) = c s(n ) + dx ( n )
(13.4)
gdzie:
 −a
A= 1
 1
− a2 
1
, b =   , c t = [ c1
0 
0
 s1 (n ) 
c2 ] , s( n ) = 

 s2 (n ) 
(13.5)
Algorytmy filtracji cyfrowej
362
a) H(1)(z)
1
x(n)
y(n)
z−1
z−1
x(n−1)
2
0.9
1
−0.2
y(n−1)
z−1
z−1
x(n−2)
y(n−2)
5
5
(2)
b) H (z)
(3)
c) H (z)
−4
x(n)
−1
−49
x(n)
y(n)
y(n)
0.4
−1
z
z
6.5
x(n−1)
0.9
45
y(n−1)
z−1
−0.2
d) H(4)(z)
z−1
e) H(5)(z)
0.5
y(n−2)
1
x(n)
1
1
0.4
1
x(n)
z−1
1
z−1
z−1
-1
z−1
y(n)
1
0.5
z−1
1
z−1
-1
z−1
y(n)
1
0.4
z−1
0.5
z−1
Rys. 13.8. Schematy blokowe układów dyskretnych, realizujących różne zapisy transmitancjiH(z) (13.2)
Dla układu trzeciego rzędu definicje (13.5) przyjęłyby postać:
 −a1
A= 1

 0
− a2
0
1
− a3 
1
0  , b =  0 , c t = [ c1

 
0 
0
c2
 s1 ( n ) 
c3 ] , s( n ) =  s2 ( n ) 


 s3 ( n ) 
(13.6)
Algorytmy filtracji cyfrowej
363
a)
b)
d
d
x(n)
s1(n+1)
y(n)
x(n)
b
s(n+1)
z
z−1
z−1
c
t
y(n)
A
s1(n)
−a 1
s(n)
−1
c1
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) daną wzorem:
H ( z) = d +
∞
∞

 k =0


−1
t
t
t
∑ c A n −1 bz − n = d + z −1 c  ∑ A k z − k  b = d + z −1 c [ zI − A ] b
n =1
(13.7)
gdzie I oznacza macierz diagonalną jednostkową (jedynki na przekątnej głównej).
13.3. Inne struktury filtrów cyfrowych
Liniowe filtry cyfrowe LTI można przedstawiać jeszcze w kilku postaciach alternatywnych. Do
najważniejszych, powszechnie stosowanych w praktyce należy zapis polifazowy (ang. polyphase) oraz kratowy (ang. lattice). Przykładowo filtracja polifazowa umożliwia szybką implementację numeryczną zespołu filtrów z modulacją kosinusową, wykorzystywanych w algorytmie kompresji dźwięku MPEG audio (poziomy 1, 2 i 3, żargonowo nazywane mp1, mp2
i mp3), filtry kratowe zaś są zwyczajowo stosowane w koderach mowy opartych na liniowej
predykcji (np. LD-CELP, RPE-LPT (GSM), VSELP, CELP, LPC-10), gdyż są one bardziej
odporne na kwantyzację występujących w nich współczynników wagowych. Ze względu na
ogromną rolę jaką obie struktury odgrywają w nowoczesnych technikach przetwarzania sygnałów, poświęcimy im osobno więcej miejsca w dwóch rozdziałach późniejszych. Struktury polifazowe szczegółowo opisano w rozdziale 18, dedykowanym modulowanym zespołom filtrów,
struktury kratowe zaś zaprezentowano w rozdziale 20, przedstawiającym zaawansowane metody analizy i przetwarzania sygnałów, stosowane w koderach sygnału mowy. Zainteresowanego
Czytelnika odsyłamy do lektury obu tych rozdziałów.
Warto w tym miejscu jeszcze raz podkreślić, że w trzech ostatnich rozdziałach (tzn. 10, 11
i 12) oraz rozdziale obecnym zajmowaliśmy się wyłącznie liniowymi układami dyskretnymi,
opisanymi przez równanie różnicowe (10.48) oraz związaną z nim transmitancję (10.50). Aby
Czytelnik nie zapadł w błogi sen „zimowy”, wynikający z przeświadczenia, że wie się już
Algorytmy filtracji cyfrowej
364
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 powinny być „przekazane” na wyjście układu. Im N jest większe, tym dłuższe impulsy jest w stanie
„połykać” filtr medianowy.
Przykład. Obliczmy medianę następujących zbiorów liczb:
{ 0, 0, 0, 0, 0, 1, 0}
{ 0, 1, 2, 1, 3, 4, 5 }
→
→
{ 0, 0, 0, 0, 0, 0, 1}
{ 0, 1, 1, 2, 3, 4, 5}
→
Med = 0
→
Med = 2
czyli mediana eliminuje zakłócenia impulsowe oraz „śledzi” trend sygnału. A teraz zastosujmy
filtr medianowy trzeciego rzędu do następującego sygnału (zakładamy zerowy bufor filtra)
{ 1, 2, 3, 4, 4, 5, 5, 4, 8, 4, 3, 9, 2, 2, 1}
→
{ 0, 1, 2, 3, 4, 4, 5, 5, 5, 4, 4, 4, 3, 2, 2}
W dalszej części tego rozdziału zajmiemy się problemem efektywnej realizacji nierekursywnej
filtracji cyfrowej za pomocą tzw. „szybkiego” splotu dwóch sygnałów dyskretnych. W metodzie tej filtracji sygnału dokonuje się w dziedzinie częstotliwościowej a nie czasowej. Efektywność obliczeniową takiego podejścia zapewniają istniejące algorytmy szybkiej dyskretnej
transformacji Fouriera, przedstawione w rozdziale dziewiątym.
13.4. Splot liniowy i kołowy
Obecnie zajmiemy się problemem szybkiej implementacji obliczeniowej nierekursywnych filtrów cyfrowych FIR. Filtry te są zdefiniowane za pomocą uproszczonej wersji równania (13.1)
y(n) =
M
∑ bm x(n − m) =
m =0
M
∑ h( m) x( n − m)
m=0
(13.8)
Algorytmy filtracji cyfrowej
365
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 papierze” (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 nieskoń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):
X ( k ) = DFT ( N ) ( x ) =
N −1
∑
x ( n )e
−j
2π
kn
N
,
x (k ) = IDFT ( N ) ( X ) =
n =0
1
N
N −1
∑
X ( k )e
j
2π
kn
N
(13.11)
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):
y(n) =
N −1
∑ 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 uzupełnieniu zerami), a nie wynikiem ich splotu liniowego. W wyjaśnieniu równania (13.12) skoncentrujemy się na jego drugim, alternatywnym zapisie:
y(n) =
N −1
∑ 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 rozdział 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 przetwarzaniu 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 rysunek 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 rysunku 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” („cykliczny”) oznaczono jako xmod(5)(k).
x(k)
2 3 4 5 6
1
1
1
2 3 4 5 6
n
k
k
x(k)
y(n)
-4 -3 -2 -1 0 1
1
2
3
2 3 4 5 6
2 3 4 5 6
2 3 4 5 6
h(2-k)
-4 -3 -2 -1 0 1
1
-4 -3 -2 -1 0 1
1
Rys. 13.10. Ilustracja graficzna splotu liniowego dwóch prostokątnych sygnałów dyskretnychx(k) i h(k)
2 3 4 5 6
y(n)
2 3 4 5 6
h(1-k)
-4 -3 -2 -1 0 1
2
2 3 4 5 6
x(k)
-4 -3 -2 -1 0 1
2
-4 -3 -2 -1 0 1
1
-4 -3 -2 -1 0 1
3
n
k
k
3
y(n)
2 3 4 5 6
h(-k)
-4 -3 -2 -1 0 1
1
-4 -3 -2 -1 0 1
1
n
k
k
x(k)
-4 -3 -2 -1 0 1
1
2
3
y(n)
-4 -3 -2 -1 0 1
1
2 3 4 5 6
2 3 4 5 6
2 3 4 5 6
h(4-k)
-4 -3 -2 -1 0 1
1
n
k
k
Algorytmy filtracji cyfrowej
368
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łowego” 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 identycznych 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 wprawić 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 sygnał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
0 1
2 3 4
k
0 1
2 3 4
xmod(5)(k)
xP(k)
k
-5 -4 -3 -2 -1 0 1
2 3 4 5 6 7 8 9
k
0 1
2 3 4
xmod(5)(k-1)
xP(k-1)
k
-5 -4 -3 -2 -1 0 1
2 3 4 5 6 7 8 9
k
0 1
2 3 4
xmod(5)(k-2)
xP(k-2)
k
-5 -4 -3 -2 -1 0 1
2 3 4 5 6 7 8 9
k
0 1
2 3 4
xmod(5)(k-3)
xP(k-3)
k
-5 -4 -3 -2 -1 0 1
2 3 4 5 6 7 8 9
k
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)
Algorytmy filtracji cyfrowej
370
xmod(5)(k)
xP(k)
k
k
-5 -4 -3 -2 -1 0 1
2 3 4 5 6 7 8 9
0 1
2 3 4
xmod(5)(-k)
xP(-k)
k
-5 -4 -3 -2 -1 0 1
k
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 „uokresowionego” xP(k) oraz związanego z nim sygnału „cyklicznego” xmod(5) (k)
x(k)
x(k)
A B C D E
1
A B C D E
k
0 1
1
2 3 4
2 3 4
1
2 3 4
y(n)
y(n)
2 3 4
1
2 3 4
y(n)
E D C B A
1
2 3 4
y(n)
3
3
3
3
2
1
2
1
2
1
2
1
0 1
2 3 4
0 1
2 3 4
n
0 1
2 3 4
n
0 1
2 3 4
y(n)
2
1
n
k
0 1
3
n
2 3 4
hmod(5)(4-k)
k
0 1
k
0 1
D C B A E
k
0 1
1
hmod(5)(3-k)
C B A E D
2 3 4
A B C D E
k
0 1
hmod(5)(2-k)
k
0 1
1
2 3 4
1
x(k)
A B C D E
k
0 1
B A E D C
k
0 1
1
hmod(5)(1-k)
A E D C B
x(k)
A B C D E
k
0 1
hmod(5)(-k)
1
x(k)
2 3 4
n
0 1
2 3 4
Rys. 13.13. Ilustracja graficzna splotu kołowego („cyklicznego”) dwóch identycznych prostokątnych sygnałó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 niezerowych. 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
13.5. Algorytmy szybkiego splotu sygnałów dyskretnych
Ponieważ za pomocą metody „szybkiego” splotu w dziedzinie częstotliwości (13.13) realizujemy splot kołowy (13.12) a nie liniowy, mamy do wyboru dwa scenariusze: albo się z tym pogodzimy albo będziemy się starali „przechytrzyć wroga”. Załóżmy, że sygnał x(k) ma N próbek, a odpowiedź impulsowa h(k) − M próbek.
• W p i e r ws z e j we r s j i postępowania do sygnału h(k) dodajemy na końcu N−M zerowych
próbek. Następnie realizujemy algorytm (13.12) i odrzucamy pierwszych M−1 niepoprawnych
próbek z otrzymanego sygnału y(n).
• W d r u g i e j we r s j i oba sygnały uzupełniamy na końcu zerami do długości K = N+(M−1).
Potem realizujemy algorytm (13.12), wykonując DFT i IDFT o długości K. Otrzymany sygnał
y(n) jest identyczny z wynikiem splotu liniowego sygnałów x(k) i h(k).
Oczywiście algorytm „szybkiego” splotu staje się rzeczywiście szybki, kiedy wykorzystuje się
algorytmy szybkiej transformacji Fouriera FFT, przedstawione w rozdziale dziewiątym. Wówczas w pierwszej metodzie wartość N powinna być potęgą liczby 2, a w drugiej metodzie taka
powinna być wartość K. Zakładamy milcząco, że dysponujemy wyłącznie szybkim algorytmem
FFT typu radix-2. W drugiej metodzie wartość K może być większa niż N+(M−1), tzn. do obu
sygnałów można dodać większą liczbę wartości zerowych niż jest wymagana.
Na rysunku 13.14 przedstawiono przykład zastosowania obu metod. Sygnał x(k) o długości
N = 32 próbek był sumą dwóch sinusoid o częstotliwościach 5 i 40 herców, spróbkowanych
z częstotliwością 100 herców. Odpowiedź impulsowa h(k) o długości M = 13 próbek została
natomiast zaprojektowana metodą okien. Zastosowano wzór (12.56) z częstotliwością graniczną f0 = 20 Hz (F0 = 1/5, Ω0 = 2π/5) oraz okno prostokątne o całkowitej długości M = 13 próbek. W lewej kolumnie zaprezentowano sygnały „robocze” i sygnał wynikowy w pierwszej
metodzie. W tym przypadku odpowiedź impulsową uzupełniono N−M = 19 wartościami zerowymi. W otrzymanym sygnale y(n) pierwszych M−1 nie jest poprawnych. W prawej kolumnie
są natomiast przedstawione sygnały drugiej metody. Teraz oba sygnały x(k) i h(k) uzupełniono
na końcu zerami do długości N+(M−1). Otrzymany sygnał y(n) jest zgodny z wynikiem splotu
liniowego obu sygnałów. Jednak na początku i na końcu tego sygnału obserwujemy stany
przejściowe „najeżdżania” i „zjeżdżania” odpowiedzi impulsowej h(k) z sygnału x(k). Ustalony
wynik filtracji stanowi jedynie środkowych N−(M−1) próbek sygnału y(k), wziętych w ramkę.
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 przedstawiona w tabeli 13-1 dla K = N+M = 2048. Z rozdziału dziewiątego wiemy, że jedno K-punktowe 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.
Algorytmy filtracji cyfrowej
372
Tab. 13-1. Złożoność obliczeniowa algorytmu „szybkiego” splotu, wykorzystującego FFT, dlaK=2048
Operacja
Mnożenia rzeczywiste
Dodawania rzeczywiste
1. FFT( x(n) z zerami )
4 * (K/2)log2(K) = 45 056
2 * K*log2(K) = 45 056
2. FFT( h(n) z zerami )
4 * (K/2)log2(K) = 45 056
2 * K*log2(K) = 45 056
3. Iloczyn widm
4 * K = 8192
−−
4. Odwrotne FFT
4 * (K/2)log2(K) = 45 056
2 * K*log2(K) = 45 056
4K + 6Klog2(K) = 143 360
6Klog2(K) = 135 168
RAZEM
N=32
2
1
1
x(n)
x(n)
N=32
2
0
-1
0
-1
-2
-2
0
10
20
30
0
10
n
N-M=19
M=13
0.4
0.4
0.3
0.3
0.2
0.2
h(n)
h(n)
20
30
40
n
M=13
0.1
0
N-1=31
0.1
0
-0.1
-0.1
0
10
20
30
0
10
n
M-1=12
M-1=12
N-(M-1)=20
1.5
1
0.5
0
-0.5
-1
-1.5
0
20
30
40
n
y(n)
y(n)
M-1=12
10
20
n
30
N-(M-1)=20
M-1=12
1.5
1
0.5
0
-0.5
-1
-1.5
0
10
20
30
40
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 pierwszych próbek sygnału y(n) trzeba odrzucić), po prawej stronie splot liniowy
Algorytmy filtracji cyfrowej
373
13.6. Algorytmy sekcjonowanego szybkiego splotu sygnałów
dyskretnych
A teraz poznamy „awangardę” algorytmów szybkiego splotu sygnałów, realizowanego w dziedzinie częstotliwości, czyli ich wersje sekcjonowane. Omówione do tej pory algorytmy umożliwiają jedynie splatanie ze sobą dwóch bloków (wektorów) danych. A przecież przede wszystkim trzeba umieć filtrować (splatać ze sobą) sygnały, których próbki napływają na bieżąco
(w czasie rzeczywistym). Cóż wówczas począć? Oczywiście trzeba napływające dane składać
w bloki i przetwarzać w sposób opisany powyżej, czyli blokowo. A potem z uzyskanych fragmentów sygnału wyjściowego yi(n) należy odtworzyć cały sygnał. Powszechnie są znane i stosowane dwie metody sekcjonowanego szybkiego splotu: overlap-save i overlap-add. Obecnie
je zaprezentujemy. Załóżmy, że odpowiedź impulsowa filtra h(n) ma długość M, oraz że próbki są pobierane z sygnału x(n) w blokach po N próbek.
Metoda „overlap-save”. Na rysunku 13.15 przedstawiono graficzną ilustrację zasady „pracy”
tej metody. Sygnał przetwarza się w niej w sposób szybki (metodą DFT/FFT), ale realizujący
splot kołowy. W naszym przykładzie M = 7 i N = 16. Na początku M = 7-elementowa odpowiedź impulsowa filtra h(n) jest uzupełniana N−M = 9 zerami i tylko raz transformowana do
dziedziny częstotliwości za pomocą N = 16-punktowego DFT (FFT): H(k) = DFT(h(n)). Następnie sygnał wejściowy x(n) jest dzielony na fragmenty x1(n), x2(n), x3(n),... itd. o długości
N = 2p = 16, zachodzące na siebie M−1 = 6 próbkami. Potem są wykonywane N-punktowe
DFT (FFT) każdego sygnału xi(n), a otrzymane w ten sposób widma Xi(k) są wymnażane z odpowiedzią częstotliwościową filtra H(k). Z kolei wykonuje się IDFT (IFFT) z Xi(k)H(k) i uzyskuje sygnały yi(n). Ponieważ w każdym z nich pierwszych M−1 = 6 próbek jest niepoprawnych, zostają one usunięte. Reszta zostaje złożona razem, dając w wyniku sygnał wyjściowy
y(n). Dzięki nakładaniu się sygnałów x1(n), x2(n), x3(n),... M−1 próbkami, usunięcie M−1 pierwszych próbek sygnałów y1(n), y2(n), y3(n),... nie stanowi problemu: poprawne próbki są pobierane z wektora poprzedzającego yi(n).
Metoda „overlap-add”. Na rysunku 13.16 przedstawiono graficzną ilustrację tej metody. Sygnał przetwarza się w niej w sposób szybki (metodą DFT/FFT), ale realizujący splot liniowy.
W dyskutowanym przykładzie M = 7 i N = 10. Niech K = N+(M−1) = 16. Na początku M =
= 7-elementowa odpowiedź impulsowa filtra h(n) jest uzupełniana K−M = 9 zerami i tylko raz
transformowana do dziedziny częstotliwości za pomocą K = 16-punktowego DFT (FFT):
H(k) = DFT(h(n)). Następnie sygnał wejściowy x(n) jest dzielony na fragmenty x1(n), x2(n),
x3(n),... itd. o długości N = 10, nie zachodzące na siebie. Z kolei są wykonywane K = 16-punktowe DFT (FFT) każdego sygnału xi(n), uzupełnionego zerami do długości K = 16, a otrzymane w ten sposób widma Xi(k) są wymnażane z odpowiedzią częstotliwościową filtra H(k).
Potem wykonuje się IDFT (IFFT) z Xi(k)H(k) i uzyskuje sygnały yi(n). Ponieważ sygnały te
składają się z K = 16 próbek i zachodzą na siebie K−N = 6 próbkami, należy je wszystkie
dodać.
Metody sekcjonowanego szybkiego splotu, wykorzystujące algorytmy FFT, mogą być jedynym
ratunkiem dla taniej realizacji w czasie rzeczywistym (na bieżąco) splotu sygnału z bardzo
długimi odpowiedziami impulsowymi filtrów, na przykład rzędu kilkadziesiąt tysięcy próbek.
Taka sytuacja występuje podczas komputerowej symulacji akustyki pomieszczeń, mających
odpowiedzi impulsowe dłuższe niż 1 sekunda. Dla częstotliwości próbkowania 22 050 Hz ich
odpowiedzi impulsowe mają bowiem ponad 22 050 próbek. Należy jednak pamiętać o tym, że
w przedstawionej powyżej metodzie sekcjonowanego „szybkiego” splotu sygnałów, wykorzys-
Algorytmy filtracji cyfrowej
374
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 (filtrowany), y(n) − sygnał wyjściowy (po filtracji), x1(n), x2(n), x3(n), x4(n) − kolejne fragmenty sygnału wejściowego, 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) − odpowiedź impulsowa filtra uzupełniona K−M = 9 zerami, x(n) − sygnał wejściowy (filtrowany), y(n) − sygnał wyjściowy (po filtracji), x1z(n), x2z(n), x3z(n), x4z(n) − kolejne fragmenty 10-próbkowe sygnału wejściowego, uzupełnione zerami do długości 16, y1z(n), y2z(n), y3z(n), y4z(n) − kolejne fragmenty sygnału wyjściowego (wynik odwrotnej transformacji FFT)
Algorytmy filtracji cyfrowej
376
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ń rzeczywistych 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 transformata Fouriera odpowiedzi impulsowej filtra jest już wyznaczona. Przykład ten powinien
przekonać „niedowiarków”, że „gra jest warta świeczki”.
13.7. Przykład ćwiczenia komputerowego
W tabeli 13-2 przedstawiono program komputerowy, który posłużył do wygenerowania wyników zaprezentowanych na rysunku 13.14. W programie tym zaimplementowano bezpośredni
splot dwóch sygnałów dyskretnych oraz szybki splot niesekcjonowany i sekcjonowany (metody
overlap-save i overlap-add).
Tab. 13-2. Algorytmy splotu dwóch sygnałów dyskretnych: bezpośredni, „szybki” niesekcjonowany oraz
„szybki” sekcjonowany (wersje overlap-save i overlap-add)
% Ćwiczenie: Szybkie algorytmy splotu dwóch sygnałów dyskretnych
clear all; subplot(111); clf;
% Parametry
idemo = 0;
N = 64; fpr=100; fx1=5; fx2=40;
% demo splotu: 0=nie, 1=tak
% parametry do zmiany: liczba próbek, częstotliwości [Hz]
% Wygeneruj sygnał filtrowany
nx = 0:N-1; dt = 1/fpr; t = dt*nx;
x1 = cos(2*pi*fx1*t);
x2 = cos(2*pi*fx2*t);
x = x1 + x2;
% chwile próbkowania [sekundy]
% sinusoida 1 o częstotliwości fx1
% sinusoida 2 o częstotliwości fx2
% suma sinusoid
% Wyznacz wagi dolnoprzepustowego filtra FIR)
M = 7; fg = 20; h = fir1(M-1,2*fg/fpr,boxcar(M)); % długość filtra, częstotliwość graniczna, oblicz
% Rysunki
subplot(211); stem(x,'filled'); grid; title('Sygnał filtrowany');
subplot(212); stem(h,'filled'); grid; title('Odp impulsowa filtra FIR'); pause
% Operacja splotu w Matlabie: y = conv(x,h)
if (idemo == 1)
% Ilustracja graficzna splotu
h = h(M:-1:1);
% odwróć kolejność próbek
xe = [zeros(1,M-1) x zeros(1,M-1)];
% uzupełnij sygnał M−1 zerami po obu stronach
ye = zeros(1,N+2*(M-1));
% sygnał wyjściowy
subplot(311); stem(xe,'filled'); title('WE'); pause
% liczba próbek „niezerowych”
for n = 1 : N+(M-1)
he = [zeros(1,n-1) h zeros(1,(N-1)+(M-1)-(n-1))];
% przesuń odp impulsową
y(n) = sum( xe .* he ); ye((M-1)+n)=y(n);
% wymnóż x i przesunięte h
subplot(312); stem(he,'filled'); title('odp impuls'); % narysuj przesunięte h
Algorytmy filtracji cyfrowej
377
subplot(313); stem(ye,'filled'); title('WY');
% narysuj aktualne wyjście
pause
end
subplot(111); plot(t,x1,'r',t,y(1:N),'b'); grid; title('We (R) i Wy (B)'); pause
end
% Splot bezpośredni
K = N+M-1;
xz=[x zeros(1,K-N)];
hh = h(M:-1:1);
bx = zeros(1,M);
y = [];
for n = 1 : K
bx = [xz(n) bx(1:M-1)];
y(n) = sum(bx.*hh);
end
%
%
%
%
%
%
%
%
długość sygnałów z dodanymi zerami
dodaj zera jeśli krótszy
odwróć kolejność próbek
bufor na próbki wejściowe
wyzeruj sygnał wyjściowy
pętla „po” próbkach
przesuń próbki w buforze o jedną do tyłu, bx(1)=x(n);
filtracja; inaczej (szybciej): y(n)=bx*h'
% „Szybki splot” za pomocą FFT: splot liniowy poprzez zmodyfikowany kołowy
% Splot kołowy
NM = max(N,M);
% znajdź dłuższy
xz=[x zeros(1,NM-N)];
% dodaj zera, jeśli krótszy
hz=[h zeros(1,NM-M)];
% dodaj zera, jeśli krótszy
X = fft(xz); H=fft(hz);
Y = X .* H;
yfft = ifft(Y);
y1 = real(yfft);
% Splot liniowy
K = N+M-1;
xz=[x zeros(1,K-N)];
hz=[h zeros(1,K-M)];
X = fft(xz); H=fft(hz);
Y = X .* H;
yfft = ifft(Y);
y2 = real(yfft);
% długość sygnałów z dodanymi zerami
% dodaj zera, jeśli krótszy
% dodaj zera, jeśli krótszy
% Wszystkie rysunki razem
subplot(311); stem(y,'filled'); title('Po filtrze');
subplot(312); stem(y1,'filled'); title('Po FFT kołowym');
subplot(313); stem(y2(1:N),'filled'); title('Po FFT liniowym');
pause
% Sekcjonowany „szybki splot”: metoda overlap-save
L = ceil( log2(2*M) ); L = 2^L;
% długość segmentu ( >> M )
LS = floor( (N-(M-1))/(L-(M-1)) ); % liczba segmentów (w każdym wspólnych jest M−1 próbek)
hs = [ h zeros(1,L-M) ];
% dodaj zera do h
HS = fft(hs);
% fft z h
Ny = (M-1)+ LS*(L-M+1);
%
Ny = max(Ny,N);
%
y = zeros(1,Ny);
%
for i = 0 : LS-1
% kolejne segmenty
i
% numer kolejnego segmentu
n1st = 1+i*(L-(M-2)-1);
% indeks początku kolejnego segmentu
xs = x( n1st : n1st + L-1 );
% fragmenty sygnałów w kolejnych, nakładających się segmentach
XS = fft(xs);
% fft fragmentu sygnału
YS = HS .* XS;
%
ys = ifft(YS);
%
ys = real(ys);
%
y(n1st+M-1+0 : n1st+M-1+(L-M)) = ys(M:L);
% Rysunki
xss=zeros(1,N); xss(n1st : n1st+L-1)=xs; yss=zeros(1,N); yss(n1st : n1st+L-1)=ys;
subplot(411); stem(x,'filled');
title('Overlap-Save: całe WE');
subplot(412); stem(xss,'filled'); title('Overlap-Save: fragment WE');
subplot(413); stem(yss,'filled'); title('Overlap-Save: fragment WY');
subplot(414); stem(y,'filled');
title('Overlap-Save: całe WY'); pause
end
% Sekcjonowany „szybki splot”: metoda overlap-add
L = ceil( log2(2*M) ); L = 2^L;
% długość segmentu uzupełnionego zerami ( >> M )
378
Algorytmy filtracji cyfrowej
NZ = L - M + 1;
% liczba niezerowych próbek w segmencie sygnału
LS = floor((N-(L-NZ))/NZ);
% liczba segmentów
hs = [ h zeros(1,L-M) ];
% dodaj zera do h
HS = fft(hs);
% fft z h
Ny = LS*NZ+(L-NZ);
%
y = zeros(1,Ny);
% inicjalizacja sygnału wyjściowego
for i = 0 : LS-1
% kolejne segmenty
i
% numer segmentu
n1st = 1+i*NZ;
% numer pierwszej próbki
n1 = n1st : n1st + (NZ-1);
% indeksy NZ próbek danych wejściowych
n2 = n1st : n1st + (L-1);
% indeksy L wyznaczonych próbek wyjściowych
xs = [ x(n1) zeros(1,L-NZ) ];
% fragmenty sygnałów w kolejnych segmentach
XS = fft(xs);
% fft fragmentu sygnału
YS = HS .* XS;
%
ys = ifft(YS);
%
ys = real( ys );
%
y( n2 ) = y( n2 ) + ys;
%
% Rysunki
xss=zeros(1,N); xss(n1)=x(n1); yss=zeros(1,N); yss(n2)=ys;
subplot(411); stem(x,'filled');
title('Overlap-Add: całe WE');
subplot(412); stem(xss,'filled'); title('Overlap-Add: fragment WE');
subplot(413); stem(yss,'filled'); title('Overlap-Add: fragment');
subplot(414); stem(y,'filled');
title('Overlap-Add: całość'); pause
end
14
Filtry adaptacyjne
Niniejszy rozdział stanowi wprowadzenie do adaptacyjnego przetwarzania sygnałów [Cowa85,
Glen99, Haye96, Hayk96, Kalo93, Mano00, Rutk94, Theo01, Trei87, Widr85]. Oczywiście,
adaptowanie („dopasowywanie”) parametrów algorytmów przetwarzania sygnałów cyfrowych
do zmiennych warunków, w jakich one działają, jest bardzo istotne. Układ adaptujący się
(„przystosowujący się”) ma zdecydowaną przewagę nad układem nieadaptacyjnym, czyli takim
który nie może lub nie chce niczego się nauczyć. W świecie przyrody tylko organizmy adaptujące się do zmiennych warunków, na przykład klimatycznych, miały szansę przeżycia. Adaptacja nie jest więc kaprysem, ale koniecznością.
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 obracają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 nieruchomej. Załóżmy, że sygnał wyjściowy z odbiornika jest proporcjonalny do kwadratu odległ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 „kosinusoidalnym”, 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 pasmo 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 tradycyjnych 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 radiowy. Jak się wkrótce okaże istnieje wiele innych, bardzo ważnych praktycznych zastosowań
filtrów adaptacyjnych.
Filtry adaptacyjne
380
a)
nadajnik
ω
R
b)
odbiornik
d
x(t)
6
5.6
5.2
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ł
przestrajany
filtr
f2
f1
pasmo
zaporowe
pasmo
przepustowe
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ą
14.2. Podstawy filtracji adaptacyjnej
Schemat blokowy filtra adaptacyjnego jest przedstawiony na rysunku 14.3. Filtr ten ma dwa
sygnały wejściowe (sygnał filtrowany x(n) i sygnał odniesienia d(n)) oraz dwa sygnały wyjściowe (wynik filtracji y(n) i sygnał błędu e(n)). Zadaniem filtra o zmiennej w czasie transmitancji Hn(z) jest takie przekształcenie sygnału wejściowego x(n), aby wynik filtracji y(n) jak
najmniej różnił się od sygnału odniesienia d(n) przy założonym kryterium błędu, na przykład
średniokwadratowym:
2
J = E  e2 ( n)  = E ( d (n ) − y (n) ) 




(14.1)
gdzie E[.] oznacza wartość oczekiwaną. Jak wiemy w przypadku układów liniowych transmitancja Hn(z) jest ilorazem dwóch wielomianów zmiennej zespolonej z o współczynnikach
{bk(n)} oraz {ak(n)}:
H n ( z) =
b0 (n ) + b1 (n ) z −1 + b2 (n ) z −2 + ... + bM (n ) z − M
1 + a1 ( n ) z −1 + a 2 ( n ) z − 2 + ... + a N (n ) z − N
(14.2)
Filtry adaptacyjne
381
FILTR ADAPTACYJNY
d(n)
e(n)
x(n)
y(n)
Hn(z)
Rys. 14.3. Struktura blokowa filtra adaptacyjnego
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ęstotliwoś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ściwoś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 algorytmó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 transmitancji filtra Hn(z) przyjmuje postać:
H n ( z ) = h0 (n ) + h1 (n ) z −1 + h2 ( n ) z −2 + ... + hM ( n ) z − M
(14.3)
sygnał zaś wyjściowy y(n) jest równy:
y(n) =
M
∑ hk ( n ) x ( n − k )
(14.4)
k =0
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)):
2

M
 



J (h( n )) = E  d ( n ) − ∑ hk ( n ) x ( n − k )  

k =0
 

(14.5)
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)
czyli adaptacyjnego korygowania jego wartości. Zagadnienie to jest przedmiotem zainteresowania teorii filtrów adaptacyjnych.
Filtry adaptacyjne
382
Pierwsze zetknięcie się z teorią filtrów adaptacyjnych zawsze wywołuje konsternację. Natychmiast 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.
14.3. Filtracja optymalna − filtr Wienera
Załóżmy, że chcemy wyznaczyć nieznaną transmitancję F(z) jakiegoś układu (patrz rysunek
14.4). Jedną z metod jest pobudzenie tego układu jakimś sygnałem x(n) (np. impulsem Diraca,
skokiem jednostkowym, szumem, przestrajanym w częstotliwości sygnałem sinusoidalnym,
sumą wielu sinusoid), najlepiej pokrywającym cały zakres częstotliwości, i obserwowanie wyjścia z tego układu. Można także podać to samo pobudzenie x(n) na układ, którego transmitancję Hn(z) możemy modyfikować, i zmieniać ją tak długo aż sygnały wyjściowe z obu
układów, identyfikowanego i przestrajanego, będą w przybliżeniu takie same. Możemy wówczas stwierdzić, że Hn(z) jest w przybliżeniu równe „identyfikowanej” transmitancji F(z). Jeśli
transmitancja F(z) jest zmienna w czasie, to odpowiednio szybki mechanizm adaptacji Hn(z)
powinien zapewnić możliwość śledzenia zmian F(z).
a)
b)
s(n)
nieznane
d(n)
F(z)
x(n)
nieznane
F(z)
e(n)
model
y(n)
Hn(z)
x(n)
c(n)
d(n)
e(n)
model
Hn(z)
y ( n ) = dˆ (n )
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
Przyjrzyjmy się obecnie opisanemu wyżej problemowi od strony matematycznej. Na początek
załóżmy, że wszystkie sygnały występujące w układzie są stacjonarne. Wówczas po okresie
adaptacji współczynniki filtra Hn(z) powinny się ustalić i przyjąć wartości optymalne:
hkopt = hk = lim hk ( n )
n →∞
(14.7)
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ć:
dˆ (n ) = y (n ) =
M
∑ hk x(n − k ) = hT x(n)
k =0
(14.8)
Filtry adaptacyjne
383
gdzie h i x(n) są następującymi wektorami (M+1)-elementowymi:
h = [h0 , h1 , h2 ,..., hM ] T , x ( n ) = [x ( n ), x ( n − 1), x ( n − 2),..., x ( n − M ) ] T
(14.9)
Po podstawieniu (14.8) do (14.1) i prostych przekształceniach otrzymujemy:
(
)
(
)
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)
= E  d 2 (n)  − 2hT E [ d (n)x(n)] + E  hT x( n)xT ( n)h  =
(14.10b)
(n)
= E  d 2 (n)  − 2hT rdx
+ hT E  x(n)xT (n)  h =
(14.10c)
[
]
(n )
= E d 2 ( n ) − 2hT rdx
+ h T R (xxn ) h
(14.10d)
Po obliczeniu pochodnej wyrażenia (14.10d) względem h i przyrównaniu jej do zera:
∂J ( h)
(n)
= −2rdx
+ 2R (xxn ) h opt = 0
∂h
(14.11)
otrzymujemy wyrażenie na optymalne wartości wag h (zakładamy, że det(R)≠0):
[
h opt = R (xxn )
]
−1 ( n )
rdx
(14.12a)
które po rozpisaniu występujących w nim macierzy i wektorów przyjmuje postać:
(n)
( n)
h0opt   rxx
(0)
rxx
(1)
 opt   ( n )
(n)
rxx (0)
h1  =  rxx (1)
 #  
#
#
 opt   ( n )
(n )
hM   rxx ( M ) rxx ( M − 1)
(n)
rxx
(M ) 

(n)
" rxx ( M − 1)

%
#

( n)
"
rxx (0) 
"
−1
 r ( n ) (0) 

 dx( n )
r (1) 
⋅  dx


#

 (n )
rdx ( M )
(14.12b)
W powyższych zależnościach Rxx(n) oznacza estymatę m a c i e r z y k o r e l a c j i wł a s n e j sygnału wejściowego x(n) w n-tej chwili czasowej, która ma następujące elementy w i-tym wierszu oraz j-tej kolumnie:
(n)
 R (xxn )  = rxx
(i − j ) = E [ x ( n − i ) x ( n − j ) ] , i = 0,..., M ,

 i, j
j = 0,..., M
(14.13)
rdx(n) stanowi zaś estymatę we k t o r a k o r e l a c j i wz a j e m n e j między sygnałami wejściowymi d(n) i x(n−i):
 r ( n )  = r ( n ) (i ) = E [ d ( n ) x ( n − i ) ] , i = 0,..., M
 dx  i dx
(14.14)
Filtr określony równaniem (14.12) nosi nazwę filtra Wienera. Jak widać zależy on od właściwoś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).
Filtry adaptacyjne
384
14.4. Gradientowe filtry adaptacyjne
W związku z tym, że często nie są znane funkcje rozkładu gęstości prawdopodobieństwa
obserwowanych zmiennych losowych lub zmienne te są niestacjonarne, praktyczne zastosowanie równania (14.12) dla każdej chwili czasowej n może stanowić złożony problem z dziedziny optymalizacji stochastycznej (trudności z poprawną estymacją wartości oczekiwanych).
W adaptacyjnym przetwarzaniu sygnałów zwykle więc „idzie się na skróty” i dostosowuje się
znane iteracyjne metody optymalizacji wieloparametrycznej, które sprowadzają się do poszukiwania minimów deterministycznych, wieloargumentowych funkcji „celu” („kosztu”). Wówczas iteracyjnie (adaptacyjnie) poszukuje się w przestrzeni (M+1)-wymiarowej wartości (M+1)
„parametrów” funkcji „dopasowania” J(.), czyli optymalnych wag filtra {h0opt, h1opt, h2opt, ...,
hMopt}, dla których występuje minimum tej funkcji.
Najczęściej są stosowane adaptacyjne algorytmy gradientowe. Zakłada się w nich, że modyfikacja ∆h(n) wektora współczynników filtra h(n) powinna być w każdej chwili czasowej n proporcjonalna do wektora gradientu funkcji kosztu (czyli pochodnej tej funkcji względem wektora wag h(n)), lecz mieć znak przeciwny:
1
h(n + 1) = h( n ) + ∆h( n ) = h(n ) − µ∇ n
2
∇n =
∂J ( n ) 
∂J ( h(n ))  ∂J (n ) ∂J ( n ) ∂J ( n )
=
,...,
,
,
∂
h
n
∂
h
n
∂
h
n
∂
hM ( n ) 
∂h(n )
(
)
(
)
(
)
1
2
 0
(14.15a)
T
(14.15b)
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 przedstawiono 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
2
(14.16a)
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)
Rys. 14.5. Przykład „powierzchni” średniokwadratowej funkcji J = E[e2(n)]
dla filtra adaptacyjnego o tylko jednym współczynniku
Filtry adaptacyjne
385
 ∂2J

 ∂h0 ∂h0
 ∂2J
2 −1 
W(n) = ∇ n
= ∂h ∂h
 1 0
 2#
 ∂ J
 ∂h ∂h
 M 0
[ ]
∂2J
∂h0 ∂h1
∂2J
∂h1∂h1
#
∂2J
∂hM ∂h1
∂2J
∂h0 ∂hM
∂2J
"
∂h1∂hM
%
#
∂2J
"
∂hM ∂hM
"










−1
(14.16b)
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ę dopasowania można aproksymować za pomocą rozwinięcia w szereg Taylora pierwszego rzędu:
J (h(n ) + ∆h(n ) ) ≅ J (h(n ) ) + ∆h T (n )
∂J (h(n ))
= J (h(n ) ) + ∆hT (n )∇ n
∂h(n )
Uwzględniając podstawienie ∆h(n ) = −µ∇n / 2 , stosowane w gradientowych metodach adaptacyjnych, otrzymujemy:
1
1
J (h(n ) + ∆h(n ) ) ≅ J (h( n ) ) − µ∇Tn ∇ n = J (h( n ) ) − µ ∇ n
2
2
2
skąd wynika, że dla „nieznacznie” zmodyfikowanych wag filtra funkcja „kosztu” osiąga wartość 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
(n)
n)
h(n + 1) = h(n ) − µ − 2rdx
+ 2R (xx
h( n )
2
)
i przekształcimy powyższą zależność do postaci:
)
(
(n )
n)
h(n + 1) = I − µR (xx
h( n ) + µrdx
Otrzymane równanie różnicowe ma rozwiązanie postaci (bez dowodu: wynik zastosowania
transformacji Z):
(
h( n ) = hopt + I − µR (xxn )
) (h(0) − hopt )
n
które jest zbieżne do rozwiązania optymalnego, jeśli jest spełniony warunek:
Filtry adaptacyjne
386
1 − µλ k < 1 ⇒ 0 < µ <
2
λk
dla dowolnej wartości własnej macierzy korelacji Rxx(n). Wynika stąd następująca zależność
ograniczająca wartość parametru µ:
0<µ<
2
λ max
( )
M
(n)
( n)
, λ max < Trace R (xxn ) = ∑ R xx
(i, i ) = ( M + 1) rxx
( 0)
(14.17)
i =0
Najwolniej zbieżny składnik wyrażenia (1−µλ)n (najbliższy wartości 1) jest związany z najmniejszą 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 autokorelacji 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 kratowe 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.
14.5. Filtry adaptacyjne LMS − filtry bez pamięci
Załóżmy obecnie, że minimalizowane kryterium błędu ma następującą postać:
J = e 2 (n )
(14.18)
czyli że zadaniem filtra adaptacyjnego jest minimalizacja c h w i l o w e j (J = e2(n)) a nie
o c z e k i w a n e j (J = E[e2(n)]) wartości błędu. Asymptotycznie jednak dla n → ∞ filtr ten minimalizuje średni błąd kwadratowy i stąd potocznie nazwa się go filtrem LMS (ang. Least
Mean Squares). Dla (14.1) gradient minimalizowanej funkcji jest dany wyrażeniem:
∇n =
 ∂e 2 (n ) ∂e2 (n ) ∂e 2 ( n )
∂J
∂e2 (n ) 
,
,
,...,
=

∂h(n )  ∂h0 (n ) ∂h1 ( n ) ∂h2 ( n )
∂hM ( n ) 
T
(14.19)
gdzie
M


∂  d ( n ) − ∑ hk x ( n − k ) 
2
∂e (n )
∂e(n )
k =0
 = −2 e ( n ) x ( n − k )
= 2e ( n )
= 2 e( n ) 
∂hk (n )
∂hk (n )
∂hk (n )
(14.20)
Równanie (14.16a) przyjmuje wtedy następującą postać:
h(n + 1) = h( n ) + µ( n ) W( n )e(n )x(n )
(14.21a)
Filtry adaptacyjne
387
 h0 (n + 1)   h0 (n ) 
 x(n ) 
 h (n + 1)   h (n ) 
 x ( n − 1) 
 1
= 1
 + µ( n ) W ( n ) ⋅ e ( n ) 


  # 
#


#

 



(
1
)
(
)
+
(
)
−
h
n
h
n
x
n
M


 M
  M

(14.21b)
gdzie W(n) jest macierzą o wymiarach (M+1)×(M+1).
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 identycznoś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 podstawową wadą − wolna zbieżność algorytmu, zależna od stosunku λmin/λmax, czyli stosunku minimalnej 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
λ max
0<µ<
(14.23)
natomiast błąd średniokwadratowy tego dostrojenia dąży do stałej wartości dla n → ∞, kiedy:
0<µ<
2
∑
M
λ
k =0 k
lub
0<µ<
2
calkowita moc sygnalu x ( n )
(14.24a) (14.24b)
2) Unormowany filtr LMS, czyli NLMS, otrzymujemy uzależniając dodatkowo w (14.22) parametr µ od czasu w filtrze LMS w następujący sposób:
µ(n ) =
µ
T
γ + x ( n )x ( n )
=
µ
γ+∑
M
x 2 (n − k )
k =0
(14.25)
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 stosunku 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):
v (n ) = x( n ) − α( n )x (n − 1) ,
α( n ) =
x T (n )x( n − 1)
x T ( n − 1)x( n − 1)
(14.26)
Filtry adaptacyjne
388
który ma stosunek λmin/λmax bliski jedności. Powoduje to zwiększenie szybkości adaptacji.
W równaniu (14.26) α(n) jest współczynnikiem korelacji pomiędzy wektorami x(n) i x(n−1).
W przypadku algorytmu NLMS równanie (14.25) zostaje bez zmian, tzn. wykorzystuje
oryginalny sygnał wejściowy.
Inną metodą dekorelacji danych wejściowych może być zastosowanie adaptacyjnych filtrów
ortogonalnych o strukturze kratowej lub wykonanie transformacji ortogonalnej (np. DCT
o macierzy C) obu stron równania (14.22) i wykonywanie adaptacji w dziedzinie „transformaty”:
[Ch( n + 1)] = [Ch(n )] + µe(n)[Cx(n )]
(14.27a)
hˆ (n + 1) = hˆ ( n ) + µe(n )xˆ ( n )
(14.27b)
gdzie „^” oznacza wynik transformacji odpowiedniego wektora. W tym przypadku jest adaptowanych nie M+1 wag filtra h, tylko ich transformata DCT.
4) Adaptacyjny filtr quasi-Newtona. W tym przypadku w równaniu (14.21) przyjmuje się za
W(n) odwrotność estymaty macierzy autokorelacji: W(n) = [Rxx(n)]−1, czyli macierz Rxx(n) jest
wówczas aproksymatą hesjanu ∇n2 z równania (14.16b). W zależności od sposobu estymacji
macierzy autokorelacji rozróżnia się wiele algorytmów. W najprostszej metodzie po przyjściu
następnej próbki sygnału x(n+1) (0 ≤ i ≤ M) uaktualnia się po prostu estymatę funkcji autokorelacji rxx(n)(i) i związanej z nią macierzy Rxx(n) (patrz równanie (14.12b)):
( n +1)
(n)
rxx
(i ) = λrxx
(i ) + x ( n + 1) x ( n + 1 − i )
R xx ( n + 1) = λR xx ( n ) + x(n + 1)x(n + 1)
T
(14.28)
(14.29)
gdzie λ jest współczynnikiem zapominania z przedziału [0, 1].
14.6. Filtry adaptacyjne LS (RLS) − filtry z pamięcią
Oczywiście istnieją także inne kryteria „miary” błędu adaptacji niż (14.18). Przykładowo stosuje się kryteria „najmniejszych kwadratów” LS (ang. Least Squares):
Jn =
n
∑ e 2 (k )
(14.30)
k =0
oraz „ważonych najmniejszych kwadratów” WLS (and. Weighted Least Squares):
Jn =
n
∑ λn − k e 2 (k ),
0 < λ ≤1
(14.31)
k =0
Odpowiadające im filtry adaptacyjne Gaussa-Newtona będą stanowić przedmiot naszego zainteresowania w następnym rozdziale. Można wykazać, że filtr WLS (który dla λ = 1 sprowadza się do filtra LS) jest opisany za pomocą następującego równania:
h(n + 1) = h( n ) + K ( n )e(n )
gdzie
(14.32)
Filtry adaptacyjne
389
K (n ) = R −xx1 (n )x( n ) ,
R xx ( n ) =
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 postaci:
h(n + 1) = h( n ) + R −xx1 ( n )e(n )x(n )
(14.33)
analogicznej do (14.21a): Rxx−1(n) zastępuje macierz W(n) oraz µ jest równe 1.
Podstawowym problemem obliczeniowym filtracji adaptacyjnej WLS jest efektywna estymacja
„chwilowej” macierzy autokorelacji Rxx(n) oraz jej odwracanie. Rozwiązanie obu zagadnień
prowadzi do rekursywnego algorytmu WLS, czyli WRLS.
Dla dociekliwych. Co prawda estymacją parametrów metodą „najmniejszych kwadratów”
(LS), „ważonych najmniejszych kwadratów” (WLS) i rekursywną wersją (WRLS) tej ostatniej
będziemy się zajmować w następnym rozdziale, ale kształcące wydaje się przedstawienie
filtrów LS/WLS/WRLS w kontekście zagadnień rozpatrywanych obecnie [Haye96].
Wyznaczenie optymalnej wagi filtra hkopt, k = 0, 1, 2, ..., M, sprowadza się do wyznaczenia pochodnej funkcji „kosztu” względem tej wagi hk(n) i przyrównanie tej pochodnej do zera:
n
n
∂J ( n )
∂e(i )
= 2 ∑ λn − i e(i )
= − 2 ∑ λn − i e(i ) x (i − k ) =0
∂hk ( n )
∂hk ( n )
i =0
i =0
(14.34)
Po podstawieniu wyrażenia na sygnał błędu e(n) otrzymujemy:
n

M

i =0

j =0

∑ λn − i d (i ) − ∑ hk ( j ) x(i − j ) x(i − k ) =0
(14.35)
Po zamianie kolejności sumowania i prostych przekształceniach mamy:
 n n −i
 n n −i
h
(
j
)
λ
x
(
i
−
j
)
x
(
i
−
k
)

 = ∑ λ d (i ) x (i − k )
∑k ∑
j =0
i = 0
 i =0
M
(14.36)
Ponieważ powyższe wyrażenie jest prawdziwe dla k = 0, 1, 2, ..., M, w zapisie macierzowym
można je zapisać jako:
R xx ( n )h(n ) = rdx (n )
(14.37)
gdzie:
R xx ( n ) =
n
∑ λn − i x(i )x T (i ),
i =0
rdx ( n ) =
n
∑ λn − i d (i )x(i )
(14.38a, b)
i =0
Wynika stąd że:
h(n ) = [ R xx ( n )]
−1
rdx (n )
(14.39)
czyli analogicznie do (14.12a), tylko z innymi definicjami Rxx(n) i rdx(n). Dla następnej chwili
czasowej oczywiście zachodzi równość:
Filtry adaptacyjne
390
h(n + 1) = [ R xx (n + 1)]
−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 następujące zależności rekursywne:
R xx ( n + 1) = λR xx (n ) + x( n + 1)x T ( n + 1), rdx ( n + 1) = λrdx (n ) + d (n + 1)x(n + 1)
(14.41a, b)
Podstawiając (14.41b) do (14.40) otrzymujemy:
h(n + 1) = [ R xx (n + 1)]
−1
[λrdx (n) + d (n + 1)x(n + 1)]
(14.42)
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)
Z (14.41a) obliczamy Rxx(n) i podstawiamy do (14.43):
rdx (n ) =
1
R xx (n + 1) − x(n + 1)xT (n + 1)  h( n )

λ
(14.44)
Teraz pozostaje nam uwzględnić zależność (14.44) w równaniu (14.42). Po prostych przekształceniach otrzymujemy:
h(n + 1) = h(n ) + [ R xx (n + 1)]
−1
x( n + 1)  d ( n + 1) − xT (n + 1)h(n ) 


(14.45a)
h(n + 1) = h(n ) + [ R xx (n + 1)]
−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ść:
(A + uvT )−1 = A −1 + A1 + vuvT AA−1u
−1
T
−1
(14.46)
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)):
R −xx1 (n + 1) = λ−1R −xx1 (n ) +
λ−2 R −xx1 (n )x( n + 1)x T (n + 1)R −xx1 ( n )
1 + λ−1x T (n + 1)R −xx1 (n )x(n + 1)
(14.47)
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 następnym rozdziale.
Filtry adaptacyjne
391
14.7. Przykłady zastosowań
Jak już było wspomniane we wstępie do tego rozdziału, filtry adaptacyjne znajdują bardzo szerokie zastosowanie praktyczne. Poniżej przedstawiono przykłady ich najbardziej reprezentatywnych aplikacji. Wszystkie one wykorzystują bardzo ważną cechę filtrów adaptacyjnych
typu FIR, a mianowicie ich zdolność do usuwania z sygnału d(n) tej części „informacji”, która jest skorelowana z „informacją” zawartą w sygnale x(n). Ponieważ ta sama, wspólna „informacja” może występować w obu sygnałach z różną intensywnością (amplitudą) i w różnym
czasie, zadaniem adaptacyjnego filtra h(n) jest takie wzmocnienie (stłumienie) odpowiednich
składowych częstotliwościowych sygnału x(n) oraz ich opóźnienie w czasie (przesunięcie w fazie), aby w sygnałach y(n) i d(n) część „wspólna” sygnałów x(n) i d(n) została dopasowana
w czasie i amplitudzie, a część sygnału x(n), „nieobecna” w sygnale d(n), została usunięta z sygnału y(n). Sygnał y(n) jest więc liniowo przekształconą wersją sygnału x(n), najlepiej skorelowaną z d(n), a sygnał błędu e(n) = d(n)−y(n) − informacją zawartą w sygnale d(n), której „nie
ma” w sygnale x(n).
Istnieje wiele różnych, praktycznych zastosowań, w których z powodzeniem wykorzystuje się
właściwość filtra adaptacyjnego do „rozkorelowywania” dwóch sygnałów.
1) Adaptacyjne usuwanie interferencji (ang. correlation canceling). Załóżmy, że:
d ( n ) = s( n ) + z1 ( n ),
x(n ) = z2 (n )
gdzie s(n) jest interesującym nas sygnałem, a z1(n) i z2(n) są s k o r e l o wa n y m i zakłóceniami.
Filtr adaptacyjny tak przekształca wówczas zakłócenie z2(n), aby go jak najbardziej skorelować z sygnałem d(n). Ponieważ s(n) i z2(n) są nieskorelowane, więc filtr „dopasowuje” z2(n)
do z1(n), w związku z czym na jego wyjściu otrzymujemy estymatę z1(n):
y ( n ) = H (z 2 ( n ) ) = zˆ1 ( n )
W wyniku tego w sygnale e(n) mamy:
e( n ) = d ( n ) − y ( n ) = s( n ) + (z1 ( n ) − zˆ1 ( n ) )
czyli sygnał s(n) ze zredukowanym zakłóceniem (szumem).
Przykład 1. Mowa w obecności zakłóceń. Wyobraźmy sobie pilota w samolocie. Ma on na głowie słuchawki, a przed ustami mikrofon. Wydaje polecenia. Mikrofon rejestruje sygnał d(n),
czyli jego słowa s(n) oraz szum silnika z1(n). Ustawmy w kabinie drugi mikrofon, „zbierający”
tylko hałas silnika z2(n). Sygnał z2(n) będzie różny od z1(n) (inna amplituda i opóźnienie), ponieważ drugi mikrofon znajduje się w innym miejscu niż pierwszy. Oba sygnały są jednak
skorelowane (ten sam silnik). Filtr adaptacyjny wzmacnia (tłumi) i przesuwa w fazie sygnał
z2(n), dopasowując wynik filtracji y ( n ) = H (z2 (n ) ) = zˆ1 (n ) do z1(n). W sygnale błędu otrzymujemy „czystą” wypowiedź pilota, niezależnie od zmienności faz pracy silnika, gdyż filtr się sam
dostraja. Podobny scenariusz można zastosować w przypadku: 1) operatora młota pneumatycznego rozmawiającego ze współpracownikami, 2) płetwonurka komunikującego się z bazą, do którego wypowiedzi dodaje się sygnał akcji serca, oraz ... 3) człowieka rozmawiającego
przez telefon komórkowy w samochodzie, wykorzystującego instalację głośnomówiącą. W tym
ostatnim przypadku w sposób adaptacyjny można także usuwać z wysyłanego sygnału sygnał
echa (patrz przykład 3).
Filtry adaptacyjne
392
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 zminimalizować jego skutki, obserwując sygnał e(n) zamiast d(n).
Przykład 3. Usuwanie echa. W systemach telekomunikacyjnych często występuje zjawisko odbicia 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:
d (n ) = s B (n ) + s (Aecho ) (n ),
x(n ) = s A (n)
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.
2) Adaptacyjne: odszumianie, liniowa predykcja i estymacja widmowa (ang. adaptive line
enhancement). Załóżmy, że sygnał d(n) ma postać:
P
P
i =1
i =1
d ( n ) = s( n ) + z ( n ) = ∑ si ( n ) + z (n ) = ∑ Ai sin (Ω i n ) + z ( n )
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óbka szumu z(n) nie jest związana z próbką z(n−1)). Oczywiście próbka sygnału s(n) jest skorelowana 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 zdeterminowanej, czyli:
y ( n ) = dˆ ( n ) = sˆ( n ) + zˆ(n ) = sˆ(n )
Filtry adaptacyjne
393
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ą):
y ( n ) = dˆ ( n ) = −
2 P −1
2P
k =0
k =1
∑ hk ( n ) d ( n − 1 − k ) = − ∑ a k ( n ) d ( n − k )
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):
Dn (e jΩ ) = Dn ( z ) z =exp( jΩ ) =
1
1 + a1 (n )e
− jΩ
+ a 2 ( n )e
− j 2Ω
+ ... + a 2 P (n )e − j 2 PΩ
gdzie Ω oznacza pulsację unormowaną równą 2πf / fpr.
3) Adaptacyjna identyfikacja. Adaptacyjna korekcja kanału. Zastosowanie to było już wstępnie zasygnalizowane w rozdziale 14.3, a jego schemat blokowy został przedstawiony na rysunku 14.4. Przypomnijmy, sygnał d(n) jest w tym przypadku wyjściem z układu rzeczywistego (kanału transmisyjnego) o transmitancji F(z), pobudzonego sygnałem x(n), czyli d(n) =
= F(x(n)) + s(n). Sygnał x(n) stanowi też wejście przestrajanego (adaptowanego) filtra o transmitancji Hn(z), skąd y(n) = Hn(x(n)). Po zakończeniu adaptacji sygnał błędu e(n) = d(n) − y(n)
osiąga minimum i wówczas y(n) ≈ d(n). Wnioskujemy wtedy, że Hn(z) ≈ F(z). Jeśli F(z) zmienia się wolno, a filtr Hn(z) przestraja się szybko, jest możliwe nawet śledzenie zmian transmitancji identyfikowanego (obserwowanego) układu.
Przedstawione wyżej zagadnienie jest bardzo ważne w systemach telekomunikacyjnych. Ponieważ kanał F(z) „deformuje” przesyłany sygnał, więc w odbiorniku należy przeprowadzić
korekcję otrzymanego sygnału d(n), przepuszczając go przez filtr o transmitancji odwrotnej do
transmitancji kanału (czyli 1/F(z)):
D( z )
1
1
S ( z)
= (F ( z ) X ( z ) + S ( z ) )
= X ( z) +
F ( z)
F ( z)
F ( z)
i odszumiając wynik tej operacji. Jednak aby to wykonać, trzeba znać F(z). Nadajnik więc wysyła okresowo tzw. „pilota”, czyli odpowiedni sygnał, który jest znany odbiornikowi. Oznaczmy 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).
4) Adaptacyjne projektowanie filtrów cyfrowych. Specyfikacja charakterystyki częstotliwościowej filtra cyfrowego sprowadza się do podania pożądanych wartości wzmocnienia/tłumienia {Ak} i przesunięcia fazowego {φk} dla wybranego zbioru pulsacji unormowanych {Ωk}.
Jeśli na filtr spełniający zadane wymagania podamy sygnał:
x ( n ) = ∑ sin Ω k n
k
(14.48)
Filtry adaptacyjne
394
to na jego wyjściu powinniśmy otrzymać sygnał:
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 wykorzystać 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).
14.8. Przykład ćwiczenia komputerowego − filtr adaptacyjny
(N)LMS
Najprostszym i równocześnie najczęściej stosowanym filtrem adaptacyjnym jest filtr (N)LMS.
Jego algorytm jest przedstawiony w tabeli 14-1, natomiast w tabeli 14-2 zaprezentowano
przykładowy program, napisany w języku Matlab, w którym algorytm ten zaimplementowano
programowo oraz z sukcesem zastosowano do adaptacyjnego usuwania zakłóceń sieciowych
(przykład 1) oraz adaptacyjnego odszumiania sygnału (przykład 2).
Tab. 14-1. Algorytm filtra adaptacyjnego (N)LMS
1. Wprowadzenie nowych danych wejściowych:
x(n) i d(n)
2. Obliczenie sygnału wyjściowego z filtra:
y(n) =
3. Obliczenie funkcji błędu:
4. Uaktualnienie współczynnika szybkości adaptacji:
algorytm LMS
e( n ) = d ( n ) − y ( n )
M
∑ hk (n) x(n − k )
k =0
algorytm NLMS
5. Uaktualnienie współczynników filtra:
6. Początek następnej iteracji:
µ(n ) = µ
µ( n ) =
µ
γ+∑
M
x 2 (n − k )
k =0
dla k = 0, 1, 2, ..., M:
hk ( n + 1) = hk ( n ) + µ( n )e( n ) x( n − k )
n = n+1; skocz do kroku 1
Tab. 14-2. Przykładowy program napisany w języku Matlab, implementujący filtrację adaptacyjną (N)LMS
do adaptacyjnego usuwania zakłóceń
% Ćwiczenie: Filtry adaptacyjne typu LMS (NLMS) − losowego gradientu
% WEJŚCIE: x = sygnał filtrowany, d = sygnał odniesienia
% WYŚCIE: y = przefiltrowany adaptacyjnie sygnał x, e = d−y , czyli sygnał błędu
clear all;
% Uruchom program dla wszystkich kombinacji parametrów ialg i itest
% rodzaj algorytmu adaptacji: 1=LMS, 2=NLMS
ialg = 2;
itest = 1;
% test: 1 − usuwanie addytywnej interferencji (sieci)
%
2 − usuwanie addytywnego szumu (za pomocą liniowej predykcji)
% Filtr nieunormowany LMS
M = 50;
% liczba współczynników wagowych filtra adaptacyjnego
mi = 0.01;
% współczynnik szybkości adaptacji ( 0<mi<1)
% Filtr unormowany NLMS
Filtry adaptacyjne
395
% estymata energii poczatkowej sygnalu x, eng=>0, np. eng=0
% stala szybkosci zapominania energii 0<=beta<1
% 0 − wszystko pamiętam, 1 − nic nie pamiętam
gamma = 0.001; % stala bezpieczeństwa mianownika energii np. = 0.001
% Generacja sygnału testowego LFM (liniowa modulacja częstotliwości)
Nx = 1000;
% liczba próbek
fpr = 1000;
% częstotliwość próbkowania
A = 1;
% amplituda
f0 = 0;
% częstotliwość początkowa sygnału
df = 25;
% przyrost częstotliwości Hz/sek
obw = 1;
% wybór obwiedni czasowej: 0=brak, 1=Gauss, 2=alfa*t, 3=exp(-alfa*t)
dt=1/fpr; t=0:dt:(Nx-1)*dt;
% chwile czasowe próbkowania
s = A*cos( 2*pi* (f0*t + 0.5*df*t.^2) );
% sygnal LFM
if (obw == 1) alfa=10; w=exp(-alfa*pi*(t-0.5).^2); end % obwiednia 1 − krzywa Gaussa
if (obw == 2) alfa=5; w=alfa*t; end
% obwiednia 2 − alfa*t
if (obw == 3) alfa=5; w=exp(-alfa*t); end
% obwiednia 3 − exp(-alfa*t)
if (obw~=0) s = s .* w; end
% sygnał z obwiednią
if (itest==1)
% TEST 1 − kasowanie interferencji
P = 0;
% brak predykcji
x = 0.1*sin(2*pi*50*t-pi/5);
% sieć przesunięta w fazie
d = s + 0.5*sin(2*pi*50*t);
% sygnał + sieć
eng = 0.;
beta = 1-1/M;
end
if (itest==2)
P = 1;
x = s + 0.25*randn(1,Nx);
d = [ x(1+P:length(x)) 0 ];
end
%
%
%
%
TEST 2 − odszumianie drogą predykcji
rząd predykcji (do zmiany: 1,2,3,...)
sygnał + szum
odniesieniem sygnał "przyspieszony" o P próbek
% Rysunki sygnałów wejściowych
subplot(211); plot(t,x); grid; title('WE : sygnał x');
subplot(212); plot(t,d); grid; title('WE : sygnał d');
xlabel('czas [sek]'); pause
% 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
if (ialg==2)
eng = bx * bx';
h = h + ( (2*mi)/(gamma+eng) * err * bx );
end
y = [y dest];
e = [e err];
end
% LMS
% NLMS
% NLMS
% Rysunki sygnałów wyjściowych
subplot(211); plot(t,y); grid; title('WY : sygnał y = dest');
subplot(212); plot(t,e); grid; title('WY : sygnał e = err');
xlabel('czas [sek]'); pause
if (itest==1)
subplot(111); plot(t,s,'r',t,e,'b'); grid; xlabel('czas [sek]');
title('Orginał (czerwony) i wynik filtracji (niebieski)'); pause
end
if (itest==2)
n=1:Nx-P;
subplot(111); plot(t(n),s(n),'r',t(n),y(n),'b'); grid; xlabel('czas [sek]');
title('Orginał (czerwony) i wynik filtracji (niebieski)'); pause
end
Filtry adaptacyjne
396
Przykład 1 − adaptacyjne usuwanie interferencji
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 sygnał błędu e(n) = d(n) − y(n) w przypadku zastosowania algorytmu NLMS z filtrem o długości
d(n)
a)
b)
1.5
1
0.5
0
-0.5
-1
-1.5
0
100
200
300
400
500
600
700
800
900
1000
0
100
200
300
400
500
600
700
800
900
1000
0
100
200
300
400
500
600
700
800
900
1000
n
1
e(n)
0.5
0
-0.5
-1
c)
n
1
e(n)
0.5
0
-0.5
-1
n
Rys. 14.6. Przykład 1: zastosowanie filtracji adaptacyjnej NLMS do usuwania zakłóceń sieciowych: a) sygnał 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) otrzymano w sygnale błędu e(n) estymatę składowej użytecznej s(n). W pierwszym przypadku proces 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 „ustalonego” napotykając na „swojej drodze” sygnał impulsowy z modulacją amplitudy i częstotliwoś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.
Przykład 2 − adaptacyjne odszumianie metodą predykcyjną
W tym przypadku na wejście filtra podano następujące sygnały (pozostałe parametry bez
zmian):
d (n ) = s (n ) + szum( n ) = cos 20π(n / f pr ) 2 + szum(n ) , x( n ) = d (n − 1)
(
d(n)
a)
y(n)
b)
y(n)
c)
)
1.5
1
0.5
0
-0.5
-1
-1.5
0
100
200
300
400
500
600
700
800
900
1000
0
100
200
300
400
500
600
700
800
900
1000
0
100
200
300
400
500
600
700
800
900
1000
n
1.5
1
0.5
0
-0.5
-1
-1.5
n
1.5
1
0.5
0
-0.5
-1
-1.5
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 „odszumiony” sygnał y(n), estymatę składowej s(n). Filtr z wolniejszą adaptacją (µ = 0,01) adaptuje 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]. Stanowią one przykład bardzo ważnej gałęzi przetwarzania sygnałów, opartej na modelowaniu matematycznym 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.
15.1. Metoda najmniejszych kwadratów. Filtry RLS i WRLS
Podstawy. Załóżmy, że jakiś obiekt fizyczny generuje wektor x, składający się z N zmiennych:
x(1), x(2), ...., x(N). Zmiennymi tymi interesujemy się z powodów diagnostycznych. Jednak nie
możemy ich zmierzyć bezpośrednio, gdyż dysponujemy aparaturą pomiarową (metodą), która
umożliwia pomiar M-elementowego wektora z: z(1), z(2), ..., z(M), związanego z x (M ≥ N):
z = Hx + v
(15.1)
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
2
J = vˆ T vˆ = vˆ12 + vˆ22 + ... + vˆ M
= ∑ vi2
i =1
(15.3)
Liniowa estymacja rekursywna
400
będzie przyjmowała wartość minimalną. Funkcję tę można zapisać jako:
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 pochodne cząstkowe względem x̂i i je przyrównać do zera:
∂J
= −H T (z − H xˆ ) = 0
∂ xˆ
(15.5)
skąd otrzymujemy:
H T H xˆ = H T z
(
xˆ = H T H
)−1 HT z
(15.6)
Z analizy drugiej pochodnej błędu J względem x̂ wynika, że kiedy macierz H jest p e ł n e g o
r z ę d u , to jest to punkt minimum funkcji błędu. Macierz HTH jest wówczas dodatnio określona i istnieje macierz do niej odwrotna (HTH)−1.
Oczywiście, aby rozwiązanie było jednoznaczne, powinniśmy dysponować minimum układem
N równań, gdyż poszukujemy N niewiadomych. W takim przypadku jednak wpływ szumu na
jakość estymacji jest największy. Zebranie dodatkowych wyników pomiaru powoduje, że
otrzymujemy układ równań, w którym równań jest więcej niż niewiadomych. Niewiadome te
można więc wyznaczyć z większą dokładnością redukując wpływ szumu drogą „uśredniania”
wyniku (podobnie jak w przypadku pojedynczego pomiaru w obecności szumu). Łatwo
sprawdzić, że pomimo wzrostu liczby pomiarów M, macierz (HTH)−1HT ma zawsze wymiary
M×N.
Zwiększając jednak liczbę pomiarów M i w konsekwencji rozmiary macierz H, powodujemy,
że rozwiązanie równania macierzowego (15.6) staje się coraz bardziej czasochłonne obliczeniowo. Powstaje więc pytanie, czy nie można obliczyć pierwszej, „zaszumionej” estymaty
x̂ z najmniejszego dopuszczalnego układu równań, czyli N×N, a następnie sukcesywnie, adaptacyjnie modyfikować uzyskane w ten sposób rozwiązanie uwzględniając dodatkową „informację”, wnoszoną przez każdy kolejny pomiar.
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:
1
xˆ N =
N
N
∑ x(n )
n =1
Powyższy wzór możemy zapisać także w postaci:
1
1
xˆ N = x( N ) +
N
N
N −1
1
∑ x ( n) = N x ( N ) +
n =1
1
= xˆ N −1 +  x ( N ) − xˆ N −1 
N
 1
N − 1  1 N −1
N −1

∑ x(n)  = N x( N ) + N xˆN −1 =
N  N − 1 n=1

Liniowa estymacja rekursywna
401
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ą.
Wyprowadzenie. Powróćmy jednak do problemu estymacji najmniejszych kwadratów. Zapiszmy równanie (15.6) w formie podkreślającej, że jest to estymata oparta na wykonanych do tej
pory k pomiarach:
xˆ ( k ) =  HT ( k ) H( k ) 


−1
HT ( k ) z ( k )
(15.7)
Z kolei estymata następna wykorzystująca k + 1 pomiarów jest dana równaniem:
xˆ ( k + 1) =  HT ( k + 1)H( k + 1) 


−1
HT ( k + 1) z( k + 1)
(15.8)
gdzie
 H( k ) 
 z(k ) 
H(k + 1) =  T
 , z(k + 1) =  z 
 k +1 
h ( k + 1)
(15.9)
czyli do macierzy H jest dodany nowy wiersz, a do wektora z − jedna wartość, (k + 1)-szy
wynik pomiaru. Dokonajmy prostych przekształceń:
 H( k ) 
T
T
HT ( k + 1)H( k + 1) =  HT ( k ) h( k + 1)  
 = H ( k )H( k ) + h( k + 1)h ( k + 1)

  hT ( k + 1) 


(15.10)
Zdefiniujmy dodatkowo macierz P(k) jako
P ( k ) =  HT ( k ) H ( k ) 


−1
(15.11)
Wtedy z (15.10):
P( k + 1) =  HT ( k + 1)H( k + 1) 
−1
=  HT ( k )H( k ) + h( k + 1) hT ( k + 1) 


=  P−1 ( k ) + h( k + 1) hT ( k + 1) 


−1
−1
=
(15.12)
Zgodnie ze znaną w rachunku macierzowym równością:
 A + uvT 


−1
= A −1 −
A −1uvT A −1
1 + vT A −1u
(15.13)
równanie (15.12) można zapisać w następującej postaci:
P(k + 1) = P(k ) − P(k )h( k + 1)c( k + 1)hT ( k + 1)P( k )
(15.14)
Liniowa estymacja rekursywna
402
c (k + 1) =
1
T
1 + h (k + 1)P(k )h(k + 1)
(15.15)
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)  

  zk +1 
(15.16)
Po wymnożeniu otrzymujemy z (15.16):
xˆ (k + 1) = P(k + 1)  HT ( k )z ( k ) + h( k + 1) zk +1 


(15.17)
Po zastosowaniu wyrażenia (15.14) na P(k+1) mamy z kolei:
xˆ ( k + 1) =  P( k ) − P( k )h( k + 1)c( k + 1)hT ( k + 1)P( k )  ⋅  HT ( k ) z( k ) + h( k + 1) zk +1 

 

(15.18)
Przekształcenie (15.18) daje w wyniku:
xˆ ( k + 1) = P (k )HT ( k ) z ( k ) + P( k )h( k + 1) zk +1 +
− P( k )h( k + 1) c( k + 1) hT ( k + 1)P( k )HT ( k ) z( k ) +
− P(k )h(k + 1)c(k + 1)h T ( k + 1)P(k )h( k + 1) z k +1
(15.19)
Po uwzględnieniu (15.7) i (15.11) otrzymujemy:
xˆ ( k + 1) = xˆ (k ) − P( k )h( k + 1)c (k + 1)hT ( k + 1) xˆ ( k ) +
+  P( k )h( k + 1) − P( k )h( k + 1)c( k + 1)hT ( k + 1)P( k )h( k + 1)  zk +1


(15.20)
Po podstawieniu do wyrażenia w nawiasie kwadratowym wzoru na współczynnik c(k + 1)
(15.15) oraz po sprowadzeniu całości do wspólnego mianownika, ostatni składnik powyższej
sumy upraszcza się do postaci:
P(k )h(k + 1)c(k + 1) z k +1
(15.21)
xˆ (k + 1) = xˆ (k ) + P(k )h( k + 1)c( k + 1)  zk +1 − hT ( k + 1)xˆ ( k ) 


(15.22)
więc
Wprowadzając oznaczenie:
K ( k + 1) = P( k ) h( k + 1) c( k + 1)
(15.23)
zapisujemy (15.22) w ostatecznej, powszechnie znanej postaci:
xˆ ( k + 1) = xˆ (k ) + K (k )  zk +1 − hT (k + 1) xˆ ( k )  =


= xˆ ( k ) + K (k ) [ zk +1 − zˆk +1 ]
(15.24a)
(15.24b)
Liniowa estymacja rekursywna
403
Rozpoznajemy w podanym równaniu przedstawioną wcześniej regułę rekursywnej estymacji:
nowa estymata xˆ (k + 1) = jej prognoza xˆ (k ) + korekta. Prognoza estymaty w kolejnym kroku
jest równa wartości starej estymaty. Z kolei korekta jest iloczynem wzmocnienia K(k) i błędu
prognozy pomiaru. Wyrażenie w nawiasie kwadratowym stanowi bowiem błąd pomiędzy
pomiarem zk+1 a jego prognozą zˆk +1 , daną wzorem:
zˆk +1 = h T (k + 1)xˆ (k )
(15.25)
Jak widać prognoza pomiaru zˆk +1 wykorzystuje starą estymatę xˆ (k ) i nowy, znany wektor
h(k+1). Jeśli prognoza pomiaru „trafia” w pomiar, wyrażenie w nawiasie kwadratowym jest
równe zero i stara estymata nie jest korygowana.
Algorytm. Końcowa postać algorytmu estymacji rekurencyjnej metody najmniejszych kwadratów RLS (ang. Recursive Least Squares) jest podana w tabeli 15-1 (bez zapominania, λ = 1),
natomiast jego schemat blokowy jest przedstawiony na rysunku 15.1. Rekursywna estymacja
N wartości wektora x przebiega w ten sposób, że na początku wyznacza się jego pierwszą
estymatę na podstawie minimalnej, koniecznej liczby M = N pomiarów z z równania (15.6):
(
xˆ ( N ) = HT ( N )H( N )
)
−1
HT ( N ) z ( N )
(15.26)
a następnie w sposób rekurencyjny przeprowadza się uaktualnianie tej estymaty. Po M pomiarach (M > N) wynik algorytmu rekurencyjnego jest taki sam, jak otrzymany z równania:
(
xˆ ( M ) = HT ( M )H( M )
)
−1
HT ( M ) z( M )
(15.27)
Tab. 15-1. Algorytm estymacji RLS (λ = 1) i WRLS (λ < 1)
1. Inicjalizacja:
estymata N-elementowego wektora x, oparta na pierwszych N pomiarach:
W = diag(λN−1, λ N−2, ..., λ, 1),
) ⋅ HT ( N ) ⋅ W ⋅ z ( N ) ,
(
−1
P ( N ) = ( HT ( N ) ⋅ W ⋅ H ( N ) ) ,
xˆ ( 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:
(
c( k + 1) = λ + hT ( k + 1) ⋅ P( k ) ⋅ h(k + 1)
)
−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.
(
)
Liniowa estymacja rekursywna
404
zˆk +1
zk+1
Opóźnienie
jednostkowe
K(k+1)
hT(k+1)
xˆ (k )
zˆk +1
xˆ (k + 1)
Rys. 15.1. Schemat blokowy estymacji RLS
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 „średniej” 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ć spowodowanie, aby najbardziej odległe („najstarsze”) pomiary były zapominane w procesie estymacji, 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” przeszłości? Definiując minimalizowane kryterium jakości estymacji w postaci:
2
J = vˆ T Wvˆ = w1vˆ12 + w2 vˆ 22 + ... + w M vˆ M
(15.28)
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 postaci:
(
xˆ = HT WH
)
−1
HT Wz
(15.29)
które odpowiada (15.6). Jeśli szum v ma zerową wartość średnią oraz znaną macierz kowariancji 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 charakteryzuje 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, pokazane 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
Jako przykład zastosowania omówionej metody przedstawimy rekurencyjną estymację współczynników h(n) filtra cyfrowego na podstawie znajomości jego sygnału wejściowego x(n)
i sygnału wyjściowego y(n), zaszumionego szumem s(n):
y(n) =
N −1
∑ x (n − k ) ⋅ h( k ) + s( n ) = x T h + s( n )
(15.32)
k =0
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ń:
 y [0]   x (0)
 y[1]   x (1)

 
 y [2]  =  x ( 2)

 
#

  ...
 y [M − 1]  x ( M − 1)
x ( −1)
x ( 0)
x (1)
...
x ( M − 2)
x ( −2 )
x ( −1)
x ( 0)
...
x ( M − 3)
... x ( − N + 1)   h (0)   s(0) 
... x ( − N + 2)   h(1)   s(1) 
 
 

... x ( − N + 3)  ⋅  h (2)  +  s( 2) 
 
 

...
...
#
  #
 

... x ( − N + M ) h( N − 1)  s ( M − 1)
(15.33)
Liniowa estymacja rekursywna
406
a)
2.8
-0.7
x2e(k)
x1e(k)
2.7
-0.8
-0.9
2.6
2.5
2.4
-1
2.3
0
500
1000
1500
2000
0
500
k
-0.6
-0.7
-0.8
-0.9
-1
-1.1
-1.2
0
500
1000
1500
2000
1500
2000
k
x2e(k)
x1e(k)
b)
1000
1500
2.8
2.7
2.6
2.5
2.4
2.3
2.2
2000
0
500
1000
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 rzeczywiste wartości parametrów obiektu
a)
1
x2e(k)
x1e(k)
0.5
0
-0.5
-1
0
500
1000
1500
3
2
1
0
-1
-2
-3
2000
0
500
k
b)
x2e(k)
x1e(k)
0.5
0
-0.5
-1
500
1000
k
1500
2000
1500
2000
k
1
0
1000
1500
2000
3
2
1
0
-1
-2
-3
0
500
1000
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
407
10
10
5
5
0
0
zk
zk
Liniowa estymacja rekursywna
-5
-5
-10
-10
0
500
1000
1500
2000
0
500
k
1000
1500
2000
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)
% Ćwiczenie: Rekursywna estymacja parametrów metodą RLS i WRLS
clear all;
% PARAMETRY
iter=2000;
M=2;
dwe=1.0;
dsz=0.5;
lambda=0.95;
x=[-0.987 2.345]';
%
%
%
%
%
%
% INICJALIZACJA
I=eye(M);
randn('seed',54321);
h=dwe*randn(1,M);
H=h;
for k=2:M
h=h(1:(M-1));
h=[dwe*randn(1,1) h];
H=[H; h];
end
z=H*x+dsz*randn(M,1);
w=lambda.^(M-1:-1:0); w=w';
W = diag(w,0);
P=inv(H'*W*H);
xe=P*H'*W*z;
Z=[];
XE=[];
XR=[];
h=h';
% macierz jednostkowa
% ustawienie parametru startu generatora: seed = 54321
% inicjalizacja wektora wejścia
%
% # generacja macierzy
% # współczynników „H”
%#
%#
%#
% generacja wektora wyjścia „z”
%
% inicjalizacja macierzy wag
% obliczenie pierwszej estymaty macierzy „P”
% obliczenie pierwszej estymaty stanu obiektu „xe”
% wektor historii pomiarów
% macierz historii estymacji
% macierz referencyjna
% h − zamiana na wektor „pionowy”
liczba iteracji
liczba niewiadomych
odchylenie standardowe wejścia (szum normalny)
odchylenie standardowe szumu pomiarowego
parametr „zapominania” ( 0 < lambda <= 1 ); dla RLS = 1
rzeczywisty stan obiektu
% 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”
z=h'*x+dsz*rand;
% nowy pomiar
K=P*h/(h'*P*h+lambda);
% nowe wzmocnienie „K”
P=(I-K*h')*P/lambda;
% nowa macierz „P”
xe=xe+K*(z-h'*xe);
% nowa estymata stanu obiektu
XR=[XR; x'];
% odniesienie
XE=[XE; xe'];
% historia estymacji
# ZNANE !!!
# ZNANE !!!
# Metoda
# kowariancyjna
Liniowa estymacja rekursywna
408
end
% historia pomiarów
Z=[Z; z'];
% PREZENTACJA HISTORII ESTYMACJI
t=1:1:iter;
plot(t,Z); title('POMIAR'); xlabel('ITERACJA'); grid; pause
plot(t,XE(:,1),t,XR(:,1)); title('ESTYMATA X1'); xlabel('ITERACJA'); grid; pause
plot(t,XE(:,2),t,XR(:,2)); title('ESTYMATA X2'); xlabel('ITERACJA'); grid; pause
czyli:
y = Xh + s
(15.34)
Równanie (15.34) ma identyczną postać jak (15.1), dlatego optymalna estymata ĥ jest równa:
(
hˆ = XT X
)
−1
XT y
(15.35)
i może być także wyznaczana metodą rekursywną. W przypadku zastosowania algorytmu rekursywnego 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.
15.2. Metoda minimalno-średniokwadratowa. Filtr Kalmana
W przypadku liniowej estymacji minimalno-średniokwadratowej minimalizuje się funkcję jakości postaci:
T
J = E  ( x − xˆ ) ⋅ ( x − xˆ ) 


(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 procesu
x(k + 1) = F(k ) ⋅ x (k ) + w(k )

 z(k + 1) = H(k + 1) ⋅ x(k + 1) + v(k + 1) − model pomiaru
(15.37)
Model ten składa się z dwóch równań, opisujących obserwowany proces (obiekt) oraz przeprowadzany na nim pomiar. W przypadku estymacji RLS dysponowaliśmy tylko równaniem pomiaru, 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 nastę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ępowanie szumu pomiaru v. Wektor zmiennych obiektu x ma N elementów, natomiast wektor pomiaró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
 x1 (k + 1)   f11 ( k )
 x (k + 1)   f (k )
 2
 =  21

  #
#

 
(
+
1
)
x
k
 N
  f N 1 (k )
409
f12 (k ) "
f 22 ( k ) "
#
%
f N 1 (k ) "
f1N (k )   x1 (k )   w1 ( k ) 
f 2 N ( k )   x 2 (k )   w2 (k ) 
⋅
+

#   #   # 
 
 

f NN (k )  x N (k )  wN ( k )
 z1 (k + 1)   h11 (k + 1) h12 (k + 1)
 z (k + 1)   h ( k + 1) h ( k + 1)
22
 2
 =  21

 
#
#
#

 
 z M (k + 1) hM 1 (k + 1) hM 2 ( k + 1)
(15.38)
h1N ( k + 1)   x1 (k + 1)   v1 (k + 1) 
" h2 N ( k + 1)   x2 (k + 1)   v 2 (k + 1) 
⋅
+
 (15.39)
 
 

%
#
#
#
 
 

" hMN (k + 1)  x N (k + 1) v M (k + 1)
"
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 symetryczna,
• 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 symetryczna,
• wartość początkowa wektora zmiennych procesu powinna spełniać następujące warunki:
E[ x( 0) ] = 0 , E[ x(0)x T (0) ] = P0 , E[ x (0) w T ( k ) ] = 0 , E[ x( 0) v T ( k ) ] = 0
(15.42)
tzn. powinna być znana funkcja autokowariancji stanu początkowego oraz stan ten nie może
być skorelowany z szumem procesu i pomiaru.
Z a d a n i e polega na znalezieniu najlepszego liniowego estymatora minimalno-średniokwadratowego (ang. MMS − Minimum Mean Square) wektora x(k), na podstawie wartości pomiarów z(i), i = 1, 2, 3, ..., k, czyli pomiary już przeprowadzone. Nie jest to zadanie proste, ale ze
względu na duże znaczenie jego rozwiązania oraz poglądowość kolejnych kroków jego
wyprowadzenia, przytoczymy je w całości w dalszej części tego rozdziału. Obecnie wprowadźmy o z n a c z e n i a , niezbędne do zapisania i zrozumienia algorytmu działania filtra Kalmana:
• x̂ − estymata x
(15.43)
• xˆ (k + 1 | k ) − prognoza wektora x(k+1) oparta na pomiarach z(1), ..., z(k)
(15.44)
• xˆ (k + 1 | k + 1) − estymata wektora x(k+1) oparta na pomiarach z(1),..., z(k), z(k+1)
(15.45)
• zˆ (k + 1 | k ) − prognoza wektora z(k+1) oparta na pomiarach z(1), ..., z(k)
(15.46)
• ∆x (k | k ) = x( k ) − xˆ (k | k ) − błąd estymacji stanu procesu
(15.47)
Liniowa estymacja rekursywna
410
• ∆x (k + 1 | k ) = x( k + 1) − xˆ ( k + 1 | k ) − błąd prognozy stanu procesu
(15.48)
• ∆z(k + 1 | k ) = z (k + 1) − zˆ (k + 1 | k ) − błąd prognozy pomiaru
(15.49)
• P(k | k ) = E[ ∆x(k | k ) ⋅ ∆x T (k | k ) ] − macierz kowariancji błędu estymaty
stanu procesu
• P(k + 1 | k ) = E[ ∆x(k + 1 | k ) ⋅ ∆x T (k + 1 | k ) ] − macierz kowariancji błędu
prognozy stanu procesu
(15.50)
(15.51)
Schemat blokowy estymacji MMS, czyli filtra Kalmana, jest przedstawiony na rysunku 15.5.
Uproszczony algorytm obliczeniowy zawiera tabela 15-3, a algorytm w wersji pełnej jest podany w tabeli 15-4. „Scenariusz” obliczeń jest identyczny jak w przypadku metody RLS (krok
6 w tabeli 15-3):
nowa estymata = jej prognoza + korekta
korekta = wzmocnienie * błąd prognozy pomiaru
Ponieważ obiekt jest dynamicznie zmienny, prognoza nowego stanu nie jest równa estymacie
stanu poprzedniego, tylko jest obliczana z uwzględnieniem macierzy „dynamiki” procesu
F (krok 5 w tabeli 15-4). Również wzmocnienie K jest inaczej wyznaczane i modyfikowane
niż w algorytmie RLS.
Po drobnych modyfikacjach opisany w tym rozdziale algorytm filtra Kalmana może być stosowany do dynamicznej identyfikacji parametrów układu liniowego oraz do „rozplatania” sygnałów, czyli do estymacji jednego ze splatających się ze sobą sygnałów na podstawie znajomości
drugiego sygnału oraz wyniku splotu. Ponieważ wynikiem przejścia sygnału przez układ
liniowy (np. przez kanał „transmisyjny”) jest jego splot z odpowiedzią impulsową tego układu,
więc często w praktyce występuje problem adaptacyjnej estymacji sygnału wejściowego na
podstawie znajomości „wyjścia” z układu i jego funkcji „przejścia”.
Dla dociekliwych. Wyprowadzenie. Jest to przejście Orlą Percią, więc zapraszam na wspinaczkę tylko doświadczonych piechurów. Przypomnijmy, mamy znaleźć najlepszy liniowy estymator 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 )
xˆ (k + 1 | k )
xˆ (k | k )
z(k + 1)
z−1
K(k + 1)
xˆ (0 | 0) = 0
xˆ (k + 1 | k + 1)
Rys. 15.5. Schemat blokowy filtra Kalmana
G(k)
estymata szumu
procesu w=0
H(k + 1)
estymata szumu
pomiaru v=0
zˆ (k + 1 | k )
Liniowa estymacja rekursywna
411
Tab. 15-3. Uproszczony opis algorytmu filtra Kalmana (K ( k + 1) − wzmocnienie Kalmana)
1. Stara estymata stanu obiektu:
xˆ ( k | k )
2. Prognoza nowego stanu obiektu:
xˆ ( k + 1 | k )
3. Prognoza nowego pomiaru:
zˆ ( k + 1 | k )
4. Nowy pomiar:
z( k + 1)
5. Błąd prognozy pomiaru:
∆z ( k + 1 | k ) = z ( k + 1) − zˆ ( k + 1 | k )
6. Korekta estymaty stanu:
xˆ (k + 1 | k + 1) = xˆ ( k + 1 | k ) + K ( k + 1) ⋅ ∆z( k + 1 | k )
7. k = k+1; skok do punktu 1.
Tab. 15-4. Szczegółowy algorytm filtra Kalmana
1. Inicjalizacja:
F(k) = const = F,
H(k+1) = const = H,
Q( k) = const = Q ,
(proces)
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:
K ( k + 1) = P(k + 1| k ) ⋅ HT ( k + 1) ⋅  H(k + 1)P( k + 1 | k )HT ( k + 1) + R ( k + 1) 


−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.
ˆ ( k | k ) = F( k ) ⋅ xˆ ( k | k )
xˆ ( k + 1 | k ) = F( k ) ⋅ xˆ ( k | k ) + w
(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)
Liniowa estymacja rekursywna
412
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ś „nieprzewidywalna” − 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) powinna 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 zerowych wartościach średnich, które są skorelowane, to najlepsza liniowa estymata MMS wektora
x na podstawie z jest równa:
xˆ = Gz, G = R xz R −zz1, R xz = E  xzT  , R zz = E  zzT 




(15.57)
ponieważ jej błąd musi być ortogonalny do wektora pomiarów z:
E  ezT  = E  ( x − xˆ ) zT  = E  ( x − Gz ) zT  = E  xzT  − GE  zzT  = R xz − GR zz = 0 (15.58)










Po uwzględnieniu zależności (15.57) w stosunku do drugiej składowej sumy (15.56) otrzymujemy:
xˆ (k + 1 | ∆z ( k + 1 | k ) ) = K ( k + 1) ⋅ ∆z( k + 1 | k )
(15.59)
{
K (k + 1) = E  x (k + 1) ∆zT ( k + 1| k )  ⋅ E  ∆z( k + 1| k )∆zT ( k + 1| k ) 




}
−1
(15.60)
Po przekształceniach, zależność (15.60) można zapisać w następującej postaci:
K ( k + 1) =  P( k + 1| k ) HT ( k + 1)  ⋅  H( k + 1) P( k + 1| k ) HT ( k + 1) + R ( k + 1) 

 

−1
(15.61)
gdzie
[
]
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)
oraz zastosowano oznaczenia:
R(k) = E[ v(k)⋅vT(k) ], Q(k) = E[ w(k)⋅wT(k) ]
(15.66)
Przykładowo:
T
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 ) )  =




= E  ( H (k + 1)x(k + 1) + v (k + 1) − H (k + 1) ⋅ xˆ (k + 1| k ) ) ⋅
T
⋅ ( H (k + 1)x(k + 1) + v(k + 1) − H (k + 1) ⋅ xˆ (k + 1 | k ) )  =

(
)
= 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)
W analogiczny sposób wyprowadza się zależności na:
[
]
[
]
[
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
Przedstawimy teraz przykład odszumiania spróbkowanych sygnałów, zebranych z analogowego układu RLC [Cand86], przedstawionego na rysunku 15.6. Układ ten składa się z szeregowego połączenia źródła zasilania u(t) (napięcie o przebiegu bipolarnym, prostokątnym)
oraz elementów pasywnych: rezystancji R = 5 kΩ, indukcyjności L = 2,5 H i pojemności
C = 0,1 µF. Napięcie na pojemności jest mierzone miernikiem cyfrowym co T = 10−4 sekundy.
Oznaczmy przez i(t) prąd płynący w układzie. Wówczas:
Ri (t ) + L
i(t)
u(t)
di (t ) 1
+ ∫ i (t )dt = u R (t ) + u L (t ) + uC (t ) = u (t )
dt
C
uR(t)
uL(t)
R+dR
L+dL
C+dC
(15.67)
uC(t)
Rys. 15.6. Schemat analizowanego układu. Źródło napięcia generuje przebieg prostokątny unipolarny
Liniowa estymacja rekursywna
414
Ponieważ prąd ten jest równy:
i (t ) = C
duC (t )
dt
(15.68)
więc równanie (15.67) przyjmuje postać:
RC
duC (t )
d 2 uC ( t ) 1
+ LC
+ uc (t ) = u(t )
dt
C
dt 2
(15.69)
Po podzieleniu obu stron przez LC otrzymujemy:
d 2 uC ( t )
dt 2
+
R duC (t ) 1
1
+
uc (t ) =
u (t )
L dt
LC
LC
(15.70)
Stosując podstawienia:
x1 (t ) = uc (t )
x2 (t ) =
(15.71a)
duC (t ) dx1 (t )
=
dt
dt
(15.71b)
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 )
R
1
1
 2 =−
x1 (t ) − x 2 (t ) +
u(t )
LC
L
LC
 dt
 x1 (t )   0
 x ( t )  =  −1/ LC
 2  
1   x1 ( t )   1 
 1 
+
u (t ) + 




 w( t )
− R / L   x2 (t )  1/ LC 
1/ LC 
 x1 (t )   0
 x (t )  = 
6
 2   −4 ⋅ 10
  x1 (t )  



+
u(t ) + 
w(t )
3   x (t )  
6
6
−2 ⋅ 10   2   4 ⋅ 10 
 4 ⋅ 10 
1
1
1
(15.72)
gdzie w(t) jest szumem związanym ze zmiennością wartości elementów (szum normalny, zerowa 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
z których otrzymuje się końcowe równanie „procesu” dyskretnego filtra Kalmana:
(15.75)
Liniowa estymacja rekursywna
 0,9813 0, 0001
 0, 0187 
 0,0187 
x(k + 1) = 
x( k ) + 
u (k ) + 


 w( k )
 −360,13 0,8013
 360,13 
 360,13 
415
(15.76)
Równanie pomiaru jest natomiast równe:
z ( k + 1) = [1 0]x( k + 1) + v ( k + 1)
(15.77)
Do oszacowania pozostają jeszcze wartości odchylenia standardowego szumu procesu w(k)
(zmienność wartości elementów) i szumu pomiaru v(k) (dokładność pomiaru napięcia na pojemności C). Przyjmując w obu przypadkach odchylenie standardowe równe 0,2, otrzymujemy
wariancję równą σ2 = 0,04 i kowariancję Rww = Rvv = σ2. Na rysunkach 15.7 i 15.8 przedstawiono wyniki symulacji komputerowej układu, opisanego parą równań (15.76), (15.77) przy
założeniu wymuszenia przebiegiem prostokątnym unipolarnym (napięcie z przedziału 0 ÷ 1 V).
Uzyskano je z wykorzystaniem programu napisanego w języku Matlab, przedstawionego
w tabeli 15-5. W programie tym można znaleźć dalsze szczegóły dotyczące opisanego powyżej
eksperymentu symulacyjnego.
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)
% Ćwiczenie: Filtr Kalmana − filtracja sygnałów z układu RLC
clear all; subplot(111);
% INICJALIZACJA PARAMETRÓW SYSTEMU
iter=300;
% liczba iteracji
m=2;
% rząd modelu
dq=0.2;
% odchylenie standardowe szumu procesu
dr=0.2;
% odchylenie standardowe szumu pomiaru
ddq=dq*dq;
% wariancja szumu procesu
ddr=dr*dr;
% wariancja szumu pomiaru
P=[0.01 0; 0 0.04];
% macierz wariancji estymaty procesu
Q=ddq*eye(m);
% macierz wariancji szumu w(k) procesu (stała)
R=ddr*eye(m);
% macierz wariancji szumu v(k) pomiaru (stała)
F=[0.9813 0.0001; -360.128 0.8013]; % model procesu
H=[1 0; 0 0];
% model pomiaru
ua=1.;
% amplituda wymuszenia
B=[ 0.0187 0; 0 360.128 ];
% macierz wymuszenia
G=[ 0.0187 0; 0 360.128 ];
% macierz szumu procesu
I=eye(m);
% macierz robocza
x=zeros(m,1);
% wartość początkowa wektora stanu
xe=zeros(m,1);
% wartość początkowa estymaty wektora stanu x(k/k)
XP=[];
% historia prognoz procesu x(k+1/k)
XE=[];
% historia estymat procesu x(k/k)
XX=[];
% historia procesu x(k)
ZZ=[];
% historia pomiarów z(k)
KK=[];
% historia współczynnika wzmocnienia K
randn('seed',0);
% szum normalny: średnia=0, odchylenie standardowe=1
% ESTYMACJA − PĘTLA GŁÓWNA
for k=1:iter
% WYMUSZENIE - PRZEBIEG PROSTOKĄTNY UNIPOLARNY
if (rem(k,150)==50)
ua=ua-1.;
end
if (rem(k,150)==0)
ua=ua+1.;
end
u=[ua ua]';
Liniowa estymacja rekursywna
x1(k), z1(k)
416
1.5
1.25
1
0.75
0.5
0.25
0
-0.25
-0.5
0
50
100
150
200
250
300
200
250
300
200
250
300
x1(k), x1e(k)
k
1.25
1
0.75
0.5
0.25
0
-0.25
0
50
100
150
k
0.2
K1(k)
0.16
0.12
0.08
0.04
0
50
100
150
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)
Tab. 15-5. cd.
% OBLICZENIE STANU MODELU x(k+1)
x=F*x+B*u+G*(dq*randn(m,1));
% WYKONANIE POMIARU z(k+1)
z=H*x+dr*randn(m,1);
% OBLICZENIE MACIERZY WARIANCJI PROGNOZY P(k+1/k)
P1=F*P*F'+G*Q*G';
% OBLICZENIE WZMOCNIENIA KALMANA A(k+1)
KA=P1*H'*inv(H*P1*H'+R);
% OBLICZENIE PROGNOZY STANU PROCESU x(k+1/k)
x1=F*xe+B*u;
% OBLICZENIE PROGNOZY POMIARU z(k+1/k)
z1=H*x1;
% OBLICZENIE ESTYMATY STANU x(k+1/k+1)
xe=x1+KA*(z-z1);
% OBLICZENIE MACIERZY WARIANCJI ESTYMATY P(k+1/k+1)
P=(I-KA*H)*P1;
z2(k)
Liniowa estymacja rekursywna
417
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
0
50
100
150
200
250
300
x2(k), x2e(k)
k
1500
1000
500
0
-500
-1000
-1500
0
50
100
150
200
250
300
200
250
300
k
K2(k)
50
0
-50
-100
0
50
100
150
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)
Tab. 15-5. cd.
% 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
Liniowa estymacja rekursywna
418
Tab. 15-5. cd.
subplot(211); plot(t,X2,'r',t,Z2,'b'); grid;
title('X2(K) (CZERW) I JEGO POMIAR Z2(K) (NIEB)'); xlabel('NUMER ITERACJI')
subplot(212); plot(t,X2,'r',t,X2E,'b'); grid;
title('X2(K) (CZERW) I JEGO ESTYMATA X2E(K/K)(NIEB)'); xlabel('NUMER ITERACJI');
pause
subplot(211); plot(t,K1); grid;
title('WSPÓŁCZYNNIK WZMOCNIENIA KA1(k)'); xlabel('NUMER ITERACJI')
subplot(212); plot(t,K2); grid;
title('WSPÓŁCZYNNIK WZMOCNIENIA KA2(k)'); xlabel('NUMER ITERACJI')
pause
Przykład − estymacja parametrów sygnału
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:
y (n ) = a (n )e jΦ (n )
(15.78)
oraz zakłada jego liniową modulację częstotliwościową:
Φ (n ) = Φ (0) + nΩ(0) + n 2 α(0) / 2
(15.79a)
Ω(n ) = Ω(0) + nα(0)
(15.79b)
α(n ) = α(0 )
(15.79c)
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, zmiana tej pulsacji z próbki na próbkę sygnału):
x (n ) = [Φ (n ), Ω(n ), α(n )] T
(15.80)
i zapisuje równania (15.79) dla chwili czasowej n + 1:
Φ ( 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
1 1 0, 5
F = 0 1 1 
0 0 1 
Ponieważ jest możliwy tylko pomiar kąta Φ(n) na podstawie równania:
Φ (n ) = arctg
Im( y ( n ))
Re( y (n ))
419
(15.82)
(15.83)
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ć „obserwują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 programie 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).
Przykład − identyfikacja układów liniowych
Celem identyfikacji układów liniowych, opisanych równaniem
z ( n ) + a1 z (n − 1) + ... + a N z (n − N ) = b0 u( n ) + b1u( n − 1) + ... + bM u(n − M ) + s (n )
(15.86)
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ównaniu 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
H( n ) = [− z ( n − 1),..., − z ( n − N )), u( n ), u ( n − 1),..., u( n − M )]
(15.87)
(15.88)
otrzymujemy równania „procesu” i „pomiaru” następującej postaci:
x(n ) = x(n − 1) + w(n − 1)

 z ( n ) = H( n ) ⋅ x ( n ) + v ( n )
(15.89)
w stosunku do którego można już zastosować algorytm filtra Kalmana z tabeli 15-4 (zakładamy, że szumy w i v są szumami o rozkładzie normalnym, zerowej wartości średniej i znanej
wariancji). Zauważmy, że macierz pomiaru H (w rzeczywistości wektor) zmienia się w każdym
kroku iteracji oraz że założono identycznościową macierz procesu F = I.
16
Zaawansowane metody analizy
częstotliwościowej sygnałów
16.1. Wprowadzenie
Na początek zróbmy „bilans otwarcia”: jakimi narzędziami obliczeniowymi, służącymi do estymacji 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) klasyczne metody estymacji widmowej:
1) periodogram, czyli kwadrat modułu dyskretnej transformaty Fouriera DFT N próbek analizowanego sygnału x(n), podzielony przez N:
1
PˆxPer ( e jΩ ) =
N
N −1
∑ x (n)e
2
− j Ωn
, Ω = 2π
n =0
f
f pr
(16.1)
2) zmodyfikowany periodogram, czyli kwadrat modułu transformaty DFT iloczynu N próbek
analizowanego sygnału x(n) z próbkami funkcji okna w(n), podzielony przez energię próbek
okna:
N −1
PˆxModPer (e jΩ ) =
∑ x(n )w(n )e− jΩn
n =0
N −1
∑ | w(n) |
2
2
, Ω = 2π
f
f pr
(16.2)
n =0
3) uśredniony periodogram (metoda Bartletta), czyli średni periodogram z K periodogramów
L-elementowych (N = K⋅L), z których każdy jest wyznaczony dla kolejnego, k-tego (k = 0, 1, 2,
..., K−1), rozłącznego fragmentu sygnału, składającego się z L próbek: x(k)(n) = x(n + kL), n =
= 0, 1, 2, ..., L−1:
1
PˆxBartlett (e jΩ ) =
K
K −1 
1
∑  L
k =0 
2
f
− j Ωn 
x
(
n
kL
)
e
, Ω = 2π
+
∑
f

pr
n =0

L −1
(16.3)
Zaawansowane metody analizy częstotliwościowej sygnałów
421
4) uśredniony zmodyfikowany periodogram (metoda Welcha), czyli średnia z K zmodyfikowanych periodogramów L-elementowych, z których każdy jest wyznaczony dla kolejnego,
k-tego (k = 0, 1, 2, ..., K−1), w ogólności nierozłącznego fragmentu sygnału, składającego
się z L próbek: x(k)(n) = x(n + kD), n = 0, 1, 2, ..., L−1 (początki fragmentów sygnału są przesunięte względem siebie o D próbek i zachodzi zależność N = L + D⋅(K−1); zazwyczaj stosuje się
nakładanie 50% lub 75%):


1 K −1 
Welch
jΩ
ˆ
Px
(e ) = ∑ 
K k =0 


L −1
∑ x(n + kD)w(n)e− jΩn
n =0
L −1
∑ | w(n) |2
n=0
2



f
, Ω =
f pr



(16.4)
5) wygładzony periodogram (metoda Blackmana-Tukeya), czyli transformata Fouriera iloczynu estymaty funkcji autokorelacji Rˆ x ( m ) sygnału x(n) i funkcji okna w(n) (wygładzony,
gdyż iloczynowi w dziedzinie czasu odpowiada splot widm w dziedzinie częstotliwości, czyli
widmo estymaty funkcji autokorelacji Rˆ x (m ) zostaje wygładzone przez widmo okna w(n)) :
PˆxBT ( e jΩ ) =
M
f
Rˆ x ( m) w( m)e − jΩm , Ω = 2π
f pr
m =− M
∑
(16.5)
gdzie N oznacza liczbę próbek sygnału, użytych do wyznaczenia Rˆ x ( m ) (zalecane M ≤ N/5).
Algorytmy obliczeniowe wszystkich powyższych metod można znaleźć w programie, przedstawionym w tabeli 8-4.
Oczywiście, w tym momencie nasuwa się podstawowe pytanie: która z klasycznych metod estymacji funkcji gęstości widmowej mocy jest najlepsza? Aby na nie odpowiedzieć, należy podać 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 szerokość 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 podzielona 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 widmowej, 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 charakteryzuje się metoda Blackmana-Tukeya. Jednak i w jej przypadku zwiększenie wartości parametru M powoduje nie tylko wzrost rozdzielczości analizy, ale także wzrost wariancji (zmienności) estymaty widmowej, czemu można przeciwdziałać tylko zwiększając liczbę analizowanych próbek N.
Nie należy jednak zapominać, że wyznaczanie dyskretnej transformaty Fouriera z iloczynu fragmentu 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
Zaawansowane metody analizy częstotliwościowej sygnałów
422
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)
− 3-decybelowa
W(ejΩ) − transformata Fouriera N-punktowego okna w(n), ⊗ − operacja splotu, ( ∆f / f pr )(3dB
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)
Wartość oczekiwana
Wariancja
Rozdzielczość
∆f/fpr
1
Px ( e jΩ ) ⊗ WB ( e jΩ )
2π
≈ Px2 ( e jΩ )
0,89/N
≈ Px2 ( e jΩ )
w)
( ∆f / f pr )(3dB
≈ Px2 ( e jΩ ) / K
0,89K/N
≈ (9 L /16 N ) ⋅ Px2 ( e jΩ )
w)
( ∆f / f pr )(3dB
Metoda
Periodogram
(16.1)
1
Periodogram
z oknem (16.2)
N −1
2π ⋅ ∑ | w( n ) |
2
Px (e jΩ )⊗ | W (e jΩ ) |2
n =0
1
Px ( e jΩ ) ⊗ WB ( e jΩ )
2π
Metoda Bartletta
(16.3)
1
Metoda Welcha (#)
(16.4)
L −1
2π ⋅ ∑ | w(n ) |
Px ( e jΩ )⊗ | W ( e jΩ ) |2
n =0
1
Px ( e jΩ ) ⊗ W (e jΩ )
2π
Metoda Blackmana-Tukeya (16.5)
(#)
2
≈
Px2 ( e jΩ ) M
∑ | w(m) |2
N
m =− M
w)
( ∆f / f pr )(3dB
Obliczając wariancję założono 50% nakładanie się okien oraz użycie okna trójkątnego
Tab. 16-2. Porównanie wartości wskaźników jakości wybranych, klasycznych metod estymacji widmowej
Metoda
Periodogram (16.1)
Metoda Bartletta (16.3)
Metoda Welcha
(#)
(16.4)
Metoda Blackmana-Tukeya
(#)
(#)
(16.5)
Rozdzielczość ∆f/fpr
Zmienność ∆P
∆f/fpr ⋅ ∆P
0,89/N
1
0,89/N
0,89K/N
1/K
0,89/N
1,28/L
(9/8)(1/K)
0,72/N
0,64/M
(2M)/(3N)
0,43/N
Dla okna trójkątnego i 50% nakładania się okien w metodzie Welcha
lat z dużym powodzeniem są stosowane inne, alternatywne metody, przedmiot naszego zainteresowania w niniejszym rozdziale, które są szczególnie efektywne w przypadku analizy krótkich zapisów sygnałów − krótkich wektorów danych. Zaliczamy do nich metody modelowania,
zwłaszcza parametrycznego (transmitancyjnego) AR, MA i ARMA, oraz metody dekompozycji macierzowych, tzw. metody podprzestrzeni.
W p ier wszej gr up ie meto d wyznacza się transmitancję układu liniowego (10.50), związanego z sygnałem: tak dobiera się współczynniki wielomianów licznika i mianownika tej transmitancji, 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ężeniem 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ładu 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, rozróżnia się metody modelowania: AR (Autoregressive), MA (Moving Average) oraz ARMA
(czyli obie metody jednocześnie). Model MA (tylko licznik) dobrze nadaje się do modelowania widm ciągłych, na przykład kolorowego szumu, model AR (tylko mianownik) jest efektywny w przypadku modelowania widm prążkowych, np. złożonych sygnałów sinusoidalnych, model 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 dobrany, 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 odpowiedź impulsową równą analizowanemu sygnałowi. Metody parametryczne będą dalej omawiane w projektowej części książki (rozdziały 19 i 20) na przykładzie modelowania AR chwilowej charakterystyki częstotliwościowej traktu głosowego człowieka, wykorzystującego kolejne fragmenty sygnału mowy.
W bardzo dużym uproszczeniu można powiedzieć, że metody z grupy modelowania transmitancyjnego 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 autokorelacji, a następnie dokonuje się ich dekompozycji macierzowych, np. względem wartości własnych EVD (Eigen Value Decomposition) lub osobliwych SVD (Singular Value Decomposition). Estymatę widma wyznacza się na podstawie wartości wektorów własnych, będących wynikiem 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 Signal 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. Modelowanie parametryczne AR, MA i ARMA
16.2.1. Podstawy
Na wstępie załóżmy, że w całym rozdziale 16.2 będziemy modelować sygnały, przyjmujące
wartości będące wyłącznie liczbami rzeczywistymi, czyli jak najbardziej naturalnymi z praktycznego punktu widzenia.
Reprezentacje parametryczne ARMA sygnału są uzyskiwane metodą jego modelowania według schematu przedstawionego na rysunku 16.1. Na liniowy filtr cyfrowy o transmitancji H(z)
Zaawansowane metody analizy częstotliwościowej sygnałów
424
s(n)
y(n)
x(n)
H(z)
Rys. 16.1. Schemat blokowy modelowania parametrycznego analizowanego sygnałux(n)
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 średniokwadratowy pomiędzy tymi sygnałami powinien być minimalny). Równanie czasowe filtra jest zdefiniowane następująco:
p
y(n) + ∑ ak y(n − k ) =
k =1
q
∑ bk s(n − k )
(16.6)
k =0
gdzie ak i bk oznaczają nieznane, poszukiwane współczynniki modelu (a0 = 1), a jego transmitancja Z jest dana wzorem:
q
H ( z) =
Y ( z)
=
S ( z)
∑ bk z − k
k =0
p
1 + ∑ ak z
=
−k
B( z )
A( z )
(16.7)
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ówna (z = ejΩ, Ω = 2πf/fpr)
jΩ
jΩ
2
jΩ
Pxx ( e ) = H (e ) Pss ( e ) =
B ( e jΩ )
jΩ
A(e )
2
2
σ 2s
(16.8)
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 filtracji 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ć istotę zagadnienia załóżmy, że chcemy zapisać model ARMA (p = 1, q = 1) w równoważnych mu
postaciach AR i MA:
H ( z) =
1 + b1 z −1
1 + a1 z −1
=
1
1 + c1 z −1 + c 2 z − 2 + c3 z − 3 + ...
= 1 + d1 z −1 + d 2 z − 2 + d 3 z − 3 + ... (16.9)
Prawdziwe są wówczas następujące zależności (k ≥ 1):
ck = ( a1 − b1 )( −b1 ) k −1 , d k = (b1 − a1 )( − a1 ) k −1
(16.10a, b)
Zaawansowane metody analizy częstotliwościowej sygnałów
425
z których wynikają następujące wnioski:
1) jeśli równoważny model AR jest rzędu L, to cL+1≈0, co z (16.10a) pociąga za sobą równość
b1L≈0; wynika stąd, że im bliżej do okręgu jednostkowego leży zero wielomianu licznika
H(z), u nas −b1, tym większy jest rząd L równoważnego modelu AR;
2) jeśli równoważny model MA jest rzędu L, to dL+1≈0, co z (16.10b) pociąga za sobą równość
a1L≈0; wynika stąd, że im bliżej do okręgu jednostkowego leży zero wielomianu mianownika H(z) (czyli biegun transmitancji), u nas −a1, tym większy jest rząd L równoważnego modelu MA.
Innymi słowy, transmitancją typu MA trudno jest modelować widma „prążkowe”, ale dobrze
nadaje się ona do modelowania widm „gładkich”. Transmitancja typu AR jest natomiast odpowiednia do modelowania widm prążkowych, ale nie jest właściwym narzędziem do aproksymacji widm zerujących się dla określonych częstotliwości. Natomiast model ARMA jest odpowiedni do estymacji widm złożonych, jednocześnie „prążkowych” i „gładkich”, na przykład
sumy kilku sinusoid „zanurzonych” w szumie kolorowym, którego kształt również jest dla nas
istotny.
Ponieważ po dopasowaniu parametrów filtra H(z) zachodzi w przybliżeniu równość y(n) ≈ x(n),
możemy przepisać równanie (16.6), podstawiając x(n) za y(n):
p
x (n) = − ∑ ak x(n − k ) +
k =1
q
∑ bk s(n − k )
(16.11)
k =0
Po pomnożeniu obu stron powyższego równania przez x(n − m) i obliczeniu wartości oczekiwanej otrzymujemy:
p
q
k =1
k =0
E [ x (n ) x (n − m )] = − ∑ ak E [ x(n − k ) x( n − m )] + ∑ bk E [ s(n − k ) x( n − m )]
a po dodatkowym uwzględnieniu definicji funkcji korelacji własnej i wzajemnej mamy :
p
R xx ( m) = − ∑ a k R xx ( m − k ) +
k =1
q
∑ bk Rsx (m − k )
(16.12)
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


∞
∞
k =0
k =0
= ∑ h( k ) E [ s (n − k ) s(n + m )] = ∑ h(k ) Rss ( k + m) = σ2s h ( − m )
(16.13)
gdzie h(k) oznacza odpowiedź impulsową układu o transmitancji (16.7). Zakładając dodatkowo przyczynowość tego układu:
h (k ) = 0 dla k < 0
(16.14)
otrzymujemy:
0, m > 0

Rsx (m ) =  2
h
m
σ
(
−
), m ≤ 0
 s
(16.15)
Zaawansowane metody analizy częstotliwościowej sygnałów
426
Ostatecznie uwzględniając zależność (16.15) w (16.12) dostajemy:
p
q
k =1
k =0
R xx (m) = − ∑ a k R xx (m − k ) + σ 2s ∑ bk h( k − m)
(16.16)
Po dodatkowym podstawieniu l = k − m oraz wzięciu pod uwagę przyczynowości (16.14) układu, otrzymujemy następującą zależność dla różnych „zakresów” zmienności indeksu m ≥ 0:
 p
m>q
 − ∑ ak Rxx ( m − k ),
 k =1
Rxx (m) = 
p
q−m
 − a R ( m − k ) + σ2
s ∑ bl + m h (l ), 0 ≤ m ≤ q
 ∑ k xx
l =0
 k =1
(16.17)
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
m>0
− ∑ a k R xx ( m − k ),

R xx (m) =  k p=1
− a R ( m − k ) + σ 2 , m = 0
s
 ∑ k xx
 k =1
(16.18)
którą można zapisać w sposób macierzowy (po uwzględnieniu symetrii funkcji autokorelacji
Rxx(−m) = Rxx(m)):
R xx (1)
 R xx (0)
 R (1)
R xx (0)
 xx
 #
#

 R xx ( p ) R xx ( p − 1)
R xx ( p )   1  σ 2s 
"
   
" R xx ( p − 1)  a1   0 
⋅
=
  #   # 
%
#
    
R xx (0)  a p   0 
"
(16.19)
Powyższą zależność można przedstawić jako parę dwóch oddzielnych równań (osobno zapisujemy p ostatnich równań (16.19) oraz równanie pierwsze):
R xx (1)
 R xx (0)
 R (1)
R
xx
xx (0)


#
#

 R xx ( p − 1) R xx ( p − 2)
" R xx ( p − 1)   a1 
 R xx (1) 
 
 R (2) 
" R xx ( p − 2)  a 2 
⋅
= −  xx  , Ra = −r
  # 
 # 
%
#
 a 


"
R xx (0)   p 
 R xx ( p )
(16.20)
p
Rxx (0) + ∑ am Rxx ( m) = Rxx (0) + aT r = σ2s
m =1
(16.21)
Zaawansowane metody analizy częstotliwościowej sygnałów
427
(16.19) nosi nazwę równania Yule’a-Walkera. Jeśli dysponujemy estymatą funkcji autokorelacji 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):
PxxAR (e jΩ ) =
1
A( e
jΩ
)
2
1
σ2s =
1+
p
2
σ2s
(16.22)
∑ 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 transmitancji (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
FPE ( p ) =
1) FPE (Final Prediction Error):
σˆ sp
N − ( p + 1)
2) AIC (Akaike Information Criterion):
AIC( p ) = N ln σˆ 2sp + 2 p
3) MDL (Minimization of Description Length):
MDL( p ) = N ln σˆ 2sp + p ln N
(16.23)
gdzie N jest liczbą próbek analizowanego sygnału x(n), a σˆ 2sp oznacza estymowaną eksperymentalnie 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 kompresji 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 konieczności takiej ekstrapolacji dla |m| > p obliczonego wektora próbek estymaty funkcji autokorelacji 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
Na początku przypomnijmy, że model MA jest odpowiedni do modelowania widm „gładkich”,
np. widma kolorowego szumu. W sytuacji kiedy transmitancja (16.7) ma tylko wielomian
w liczniku, równanie (16.17) przyjmuje następującą postać (podobnie jak poprzednio dla m < 0
mamy Rxx = Rxx(−m)):
m>q
 0,

Rxx (m ) =  2 q −m
 σ s ∑ bl + m h (l ), 0 ≤ m ≤ q
 l =0
(16.24)
Zaawansowane metody analizy częstotliwościowej sygnałów
428
Ponieważ odpowiedź impulsowa h(k) układu MA jest równa współczynnikom bk wielomianu
B(z) jego transmitancji (16.7), czyli h(k) = bk, to dolne równanie (16.24) upraszcza się do postaci:
Rxx (m ) = σ2s
q −m
∑ bl +m bl = σ2s Rbb (m)
(16.25)
l =0
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)
PxxMA (e jΩ ) =  B (e jΩ ) B* (e jΩ )  σ2s = FT ( Rbb ( m) ) σ2s


=
q
∑
m =− q
Rxx ( m)e − jΩm , Ω = 2π
(16.25)
= FT( Rxx ( m)) =
f
f pr
(16.26a)
(16.26b)
gdzie FT oznacza transformację Fouriera, która jest zastosowana w stosunku do funkcji autokorelacji 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 potrzeby 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 identyczną 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ę, wykorzystują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 impulsem (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)
gdzie A jest macierzą Toeplitza o wymiarach (p + q + 1) × (q + 1), mającą w kolejnych wierszach przesuwane o jedną pozycję w prawą stronę współczynniki {ap, ap−1, ..., a1, 1}, zaczynając
od [1, 0, ..., 0] w wierszu pierwszym, b oznacza (q + 1)-elementowy wektor pionowy, zawierający współczynniki {b0, b1, ..., bq}, natomiast δ jest (p + q + 1)-elementowym, wektorem pionowym, składającym się z jedynki na pierwszej pozycji oraz zer na pozostałych.
Przykład. Dla p =3 i q = 2 zmienne równania (16.27) mają następujące wartości (w celu zwiększenia prostoty zapisu świadomie przyjęto małą wartość parametru p, która nie jest cztery razy większa od q):
Zaawansowane metody analizy częstotliwościowej sygnałów
 1 0 0
a
1 0
 1

 a2 a1 1 
A=
,
 a3 a2 a1 
0 a a 
3
2


 0 0 a3 
429
1
0
 
0
δ= 
0
0
 
0
 b0 
b =  b1  ,
 
b2 
Po uwzględnieniu faktu, że podczas modelowania MA zakłada się b0 = 1, otrzymujemy:
 1 0
a 1
 1

A =  a2 a1  ,


 a3 a 2 
 0 a3 
b 
b =  1 ,
b2 
 a1 
a 
 2
δ = −  a3 
 
0 
 0 
W literaturze wskazuje się na metodę Durbina jako na efektywne narzędzie obliczeniowe do
rozwiązania postawionego powyżej problemu minimalizacyjnego:
b = −R aa −1ra , b = [ b1, b2 , b3, ..., bq ]T
(16.28)
gdzie (ak, p − wyznaczone wartości parametrów modelu AR):
Raa (i, j ) =
raa (i ) =
1 p −|i − j|
∑ ak ak +|i − j| , i, j = 1, 2, 3,..., q
p + 1 k =0
1 p −i
∑ ak ak +i , i = 1, 2, 3,..., q
p + 1 k =0
(16.28a)
(16.28b)
16.2.4. Model ARMA
Ponownie przypomnijmy na początku, że model ARMA jest odpowiedni do modelowania
widm jednocześnie „prążkowych” i „gładkich”, np. sumy kilku sinusoid „zanurzonych” w kolorowym szumie. W przypadku kiedy transmitancja (16.7) ma wielomian w liczniku i mianowniku stajemy przed koniecznością estymacji współczynników bk i ak obu wielomianów.
Najczęściej wybieranym scenariuszem rozwiązania jest wówczas:
1) wyznaczenie współczynników wielomianu A(z) z równania (16.17) dla m > q (wybieramy
M > p + q oraz pamiętamy, że Rxx(m) = Rxx(−m) dla m < 0):
Rxx ( q − 1)
 Rxx ( q )
 R ( q + 1)
Rxx ( q )
 xx
#
#


(
1)
(
R
M
R
M
−
− 2)
xx
 xx
a = − ( R T R ) −1 R ⋅ r
" Rxx ( q − p + 1)   a1 
 Rxx ( q + 1) 
a 

 R ( q + 2) 
" Rxx ( q − p + 2)  2 
xx
⋅
 , Ra = −r
= −
%
#
#
 # 


  


" Rxx ( M − p )   a p 
 Rxx ( M ) 
(w Matlabie : a=R \ r )
(16.29a)
(16.29b)
Zaawansowane metody analizy częstotliwościowej sygnałów
430
2) przefiltrowanie analizowanego sygnału x(n) filtrem a: ponieważ związany z nim wielomian
Aest(z) jest tylko estymatą rzeczywistego A(z), w przybliżeniu otrzymujemy:
Aest(z)⋅B(z)/A(z) ≈ B(z);
3) znalezienie modelu MA dla sygnału y(n), będącego wynikiem filtracji. Wówczas widmo wynikowe jest równe:
PxxARMA ( e jΩ ) =
MA jΩ
Pyy
(e )
PxxAR ( e jΩ )
(16.30)
Optymalne stopnie q i p wielomianów licznika i mianownika transmitancji znajduje się w wyniku minimalizacji kryterium Akaike, analogicznego do (16.23):
AIC(p, q) = ln σˆ 2spq + 2(p + q)/ /N
16.2.5. Podsumowanie
Modelowanie parametryczne AR/MA/ARMA jest szeroko stosowane, nie tylko do estymacji
widmowej sygnału. Może być ono podstawą klasyfikacji (rozróżniania, identyfikacji) dwóch
różnych sygnałów na podstawie zbioru odpowiadających im współczynników bk i ak (czyli
w wielowymiarowej przestrzeni tych współczynników) oraz może służyć do kompresji sygnałów (po wyznaczeniu współczynników transmitancji, związanych z fragmentem analizowanego
sygnału, współczynniki te są kodowane, zapamiętywane lub transmitowane, a następnie fragmentami rekonstruuje się na ich podstawie sygnał wejściowy). Takie podejście jest powszechnie stosowane w koderach mowy LPC. Szczegółowo jest ono opisane w rozdziałach 19 i 20.
W rozdziale 20 przedstawiono także metodę Durbina-Levinsona, w której równanie (16.20)
rozwiązuje się w sposób rekurencyjny. Unika się w ten sposób kłopotliwego odwracania macierzy, co umożliwia zastosowanie metod modelowania AR nawet z wykorzystaniem bardzo
tanich, stałoprzecinkowych procesorów sygnałowych.
16.3. Metody podprzestrzeni
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ównania (8.60) i (16.20). W wielu metodach analizy częstotliwościowej jako krok pośredni tworzy się macierz Rxx (16.20), której elementami są wartości próbek wyżej wymienionej estymaty. 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 elementarnych vkvkT wziętych z wagami λk. W sytuacji, kiedy sygnał jest sumą kilku składowych sinusoidalnych 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łniające się przestrzenie: sygnału i szumu. Jeśli jesteśmy w stanie wyznaczyć na podstawie Rxx badanego sygnału jakikolwiek wektor leżący w przestrzeni szumu, to możemy skorzystać z faktu
Zaawansowane metody analizy częstotliwościowej sygnałów
431
jego ortogonalności do każdego wektora z przestrzeni sygnałów i w ten sposób wyznaczyć
(„odkryć”) ich częstotliwości. W tym celu wystarczy obliczyć iloczyn skalarny wektora szumu
z dowolnym spróbkowanym sygnałem harmonicznym postaci ej2π(f/fpr)n: jeśli jest on równy zero
to w sygnale występuje częstotliwość f, w przeciwnym przypadku − nie występuje. Grupa metod, która bazuje na tym zjawisku, wykorzystuje do estymacji gęstości widmowej mocy sygnału podprzestrzeń szumu. Metody te zaprezentowano w pierwszej kolejności.
Dodatkowo, jeśli używamy do estymacji częstotliwości sumy kilku sinusoid jakiejkolwiek metody, wykorzystującej macierz Rxx, to macierz tę można aproksymoważ za pomocą sumy macierzy λkvkvkT związanych wyłącznie z głównymi wektorami vk jej dekompozycji, leżącymi
w podprzestrzeni sygnału. Wówczas estymata taka jest bardziej wiarygodna, gdyż pozbawiona
szkodliwego wpływu szumu. Metody należące do tej grupy przedstawiono w drugiej kolejności.
Załóżmy na początek najprostszy przypadek, tzn. analizę pojedynczego sygnału harmonicznego w obecności szumu białego:
y ( n ) = x ( n ) + s( n ) = A1e jΩ1n + s( n )
(16.31)
Funkcja autokorelacji tego Ryy(m) sygnału oraz związana z nią macierz Ryy = Rxx + Rss są dane
następującymi wzorami:
R yy ( m) =| A1 |2 e jΩ1m + σ2s δ( m )
R yy

1

jΩ
 e 1
=| A1 |2 
#

(
j
Ω
1
 e M −1)
e − jΩ1
1
#
e jΩ1 ( M − 2)
R yy = R xx + R ss =| A1 |2 e1e1H + σ2s I,
(16.32)
" e − jΩ1 ( M −1) 
1


− jΩ1 ( M − 2)
" e

2 0
+
σ
s

#
%
#



0
1
"
0 " 0
1 " 0

# % #

0 " 1
e1 = [1, e jΩ1 , e j 2Ω1 ,..., e j ( M −1)Ω1 ]T
(16.33)
(16.34)
Z (16.34) wynika, że prawdziwa jest następująca zależność:
R xx e1 = | A1 |2 (e1e1H )e1 = | A1 |2 e1 (e1H e1 ) = M | A1 |2 e1
(16.35)
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):
R yy v k = (R xx + σ2ss I) v k = λ k v k + σ2ss v k = (λ k + σ2ss ) v k
(16.36)
Wynika stąd, że M wartości własnych macierzy Rxx jest równych:
M |A1|2 + σs2, σs2, σs2, ..., σs2
(16.37)
tzn. że największa wartość własna jest związana z sygnałem i szumem, a pozostałe tylko z szumem. W związku z tym, możemy po tej dekompozycji wybrać dowolny wektor własny macierzy Ryy zależny tylko od szumu, wyznaczyć jego DFT, znaleźć częstotliwość, dla której zeruje
się w przybliżeniu moduł transformaty i potraktować ją jako częstotliwość sygnału harmo-
Zaawansowane metody analizy częstotliwościowej sygnałów
432
nicznego, występującego w sygnale (wniosek z ortogonalności wektorów własnych macierzy
Ryy: „sygnałowych” i „szumowych”).
Dla sumy sygnałów harmonicznych o różnych pulsacjach Ω1, Ω2, ..., Ωp:
p
y ( n ) = x (n ) + s (n ) = ∑ Ak e jΩk n + s (n )
(16.38)
k =1
zależność (16.34) przyjmuje następującą postać:
p
R yy = R xx + R ss = ∑ | Ak | 2 e k e kH + σ2s I,
k =1
e k = [1, e jΩk , e j 2Ωk ,..., e j ( M −1)Ωk ]T
(16.39)
i tym przypadku dekompozycja macierzy Ryy względem wartości własnych jest następująca:
p
R yy = ∑ (λ k + σ2s ) v k v kH +
k =1
M
∑
k = p +1
σ2s v k v kH
(16.40)
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 harmonicznych (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.
16.3.2. Metoda Pisarenki
Załóżmy, że sygnał x(n) o wartościach rzeczywistych ma następującą postać:
x (n) =
p
∑ xk (n) =
k =1
p
∑ Ak sin(Ω k n ) =
k =1
p

k =1

f
∑ Ak sin 2π f k
pr

n


(16.41)
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)
m =1
czyli jest on generowany przez liniowy układ dyskretny o następującej transmitancji:
(16.44)
Zaawansowane metody analizy częstotliwościowej sygnałów
1
H ( z) =
1+
=
2p
∑ am z
−m
1
A( z )
433
(16.45)
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 „zaszumioną” wersją y(n), stanowiącą odstępstwo od założonego modelu (16.41):
y ( n ) = x (n ) + s( n )
(16.46)
Wówczas podstawiając x(n) = y(n) − s(n) do (16.44) otrzymujemy:
2p
y ( n ) − s( n ) = − ∑ a m [ y (n − m) − s (n − m)]
(16.47)
m =1
lub (a0 = 1)
2p
2p
m=0
m =0
∑ a m y (n − m) = ∑ a m s(n − m)
(16.48)
Równanie (16.48) w zapisie macierzowym ma następującą postać:
y T a = sT a
(16.49)
gdzie
y = [ y ( n ), y ( n − 1), ..., y (n − 2 p )] T
s = [ s (n ), s( n − 1), ..., s(n − 2 p )] T
a = [a0 , a1 , a2 ,..., a2 p ] T
Po lewostronnym wymnożeniu równania (16.49) przez wektor y oraz po wyznaczeniu wartości
oczekiwanej obu stron nowego równania, uzyskujemy:
E[ yy T ] a = E [ ysT ] a
(16.50)
R yy a = E [( x + s)sT ] a = E[xsT ]E[ssT ] a = E[ssT ] a = σ 2s a
(16.51)
czyli:
ponieważ szum ma zerową wartość średnią i jest nieskorelowany z sygnałem. Ostatecznie
otrzymaliśmy więc równanie:
R yy a = σ 2s a
(16.52)
z którego wynika, że poszukiwany wektor współczynników a jest wektorem własnym macierzy
Ryy, związanym z jej wartością własną σs2. Na tej podstawie Pisarenko zaproponował algorytm
estymacji funkcji gęstości widmowej mocy Pxx(ejΩ) sygnału x(n), „modelowanego” przez równanie (16.41), jest on przedstawiony w tabeli 16-3.
Zaawansowane metody analizy częstotliwościowej sygnałów
434
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):
R yy
3)
R yy (1)
 R yy (0)
 R (1)
R yy (0)
yy
=
#
#


R
p
R
p − 1)
(
2
)
(
2
yy
 yy
R yy ( 2 p ) 
" R yy (2 p − 1)

%
#


"
R yy (0) 
"
(16.53)
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 Matlab):
R yy =
2 p +1
∑ λ k v k vT ,
k =1
λ1 ≥ λ 2 ≥ λ 3 ≥ ... ≥ λ 2 p +1
(16.54)
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ładowych 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 zależności (1.20b):
R yy (0) =
R yy (m ) =
p
p
k =1
k =1
∑ ( Ak2 / 2) + σ 2s = ∑ Pk + σ 2s
p
∑ Pk cos(mΩ k ),
m = 1, 2, 3, ..., p
(16.56)
(16.57)
k =1
Otrzymujemy w ten sposób układ p równań z p niewiadomymi Pk:
cos Ω 2
 cos Ω1
 cos 2Ω cos 2Ω
1
2

#
 #

cos pΩ1 cos pΩ1
" cos Ω p   P1   R yy (1) 
" cos 2Ω p   P2   R yy ( 2) 

⋅  = 
%
#
  #   # 

   
" cos pΩ p   Pp   R yy ( p )
którego rozwiązaniem jest moc poszczególnych składowych sinusoidalnych sygnałux(n).
(16.58)
Zaawansowane metody analizy częstotliwościowej sygnałów
435
16.3.3. Metody pochodne: MUSIC, EV i MV
Będąc bogatsi o doświadczenia wyniesione z prześledzenia wyprowadzenia metody Pisarenki,
przedstawimy teraz nieco szersze spojrzenie na zaprezentowane powyżej rozwiązanie. Założymy, podobnie jak w (16.38), zesp o lo ny model sygnału niezaszumionego:
x (n) =
p
∑ Ak e j (Ω n + φ
k
k =1
k
)
, R xx (m ) = E[ x (n ) x * (n − m)] =
p
∑ Pk e jΩ m ,
k
k =1
Pk = Ak2
(16.59)
i zaszumionego:
R yy ( m) = E[ y (n ) y * (n − m)] = R xx ( m) + σ 2s δ(m )
y ( n ) = x(n ) + s(n ),
(16.60)
gdzie amplitudy Ak i pulsacje Ωk są nieznane, a fazy φk są niezależnymi zmiennymi losowymi
o rozkładzie równomiernym w przedziale [0,2π). W takim przypadku prawdziwa jest następująca zależność macierzowa (patrz (16.39)):
R (yyM ) = R (xxM ) + R (ssM ) = R (xxM ) + σ 2s I ( M )
(16.61)
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):
R (zzM )
R zz ( −1)
 R zz (0)
 R (1)
R zz (0)
zz
=

#
#

(
1
)
(
−
− 2)
R
M
R
M
zz
 zz
" R zz ( −( M − 1)) 
" R zz ( −( M − 2))


%
#

"
R zz (0)

(16.62)
Dokonując dekompozycji macierzy Ryy(M) względem wartości własnych otrzymujemy (patrz
(16.40)):
R (yyM ) = R (xxM ) + σ 2s I ( M ) =
p
M
p
M
k =1
k =1
k =1
k = p +1
∑ λ k v k v kH + ∑ σ 2s v k v kH = ∑ (λ k + σ 2s )v k v kH + ∑ σ 2s v k v kH
(16.63)
gdzie „H” oznacza równoczesne sprzężenie zespolone oraz transpozycję. Wektory własne dekompozycji vk są ortonormalne (ortogonalne i unormowane). Pierwszych p z nich leży w przestrzeni 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)
są liniową kombinacją wektorów własnych z przestrzeni sygnału, dlatego:
R (xxM ) =
p
∑ λ k e k e kH
(16.65)
k =1
Równocześnie wektory ek są ortogonalne do każdego wektora z przestrzeni szumu. W metodzie
Pisarenki dla zespolonych sygnałów harmonicznych przyjmuje się M = p + 1 (dla rzeczywistych sinusoid mieliśmy M = 2p + 1) oraz wykorzystuje się ortogonalność jedynego wektora
Zaawansowane metody analizy częstotliwościowej sygnałów
436
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 wielomianu (patrz (16.45)):
V p +1 ( z ) =
p
∑ 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
PPIS (e jΩ ) =
1
T
e H v p +1
2
, e = 1, e jΩ , e j 2Ω , e j 3Ω ,..., e j ( M −1)Ω  , Ω ∈ [0,2 π)


(16.68)
Argumenty maksimów powyższej funkcji będą zdradzały wartości pulsacji Ωk składowych
sygnału x(n). W innych metodach, w których M > p + 1, estymuje się częstotliwości na podstawie argumentów maksimów funkcji:
1
PMU, EV (e jΩ ) =
M
∑
H
k = p +1
αk e v k
, e = 1, e jΩ , e j 2Ω , e j 3Ω ,..., e j ( M −1)Ω 


2
T
(16.69)
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 „duchów”).
W metodzie Pisarenki wykorzystywany był wektor należący do podprzestrzeni szumu, ortogonalny do podprzestrzeni sygnału, natomiast w metodach MUSIC i EV − kilka takich wektorów.
W metodzie minimalnej normy MN (Minimum Norm) [Haye96] idzie się tym tropem dalej
i stosuje się jeden wektor z przestrzeni szumu, nazwijmy go a, ale za to optymalnie wybrany:
PMN (e jΩ ) =
1
eH a
2
, e = 1, e jΩ , e j 2Ω , e j 3Ω ,..., e j ( M −1)Ω 


T
(16.70)
W mianowniku wyrażenia (16.70) występuje kwadrat modułu charakterystyki częstotliwościowej filtra FIR o współczynnikach a0, a1, ..., aM−1. Chcemy, aby transmitancja tego filtra:
A( z ) =
M −1
∑
k =0
ak z − k =
M −1
∏ (1 − e jΩk z −1 ) ⋅ ∏
p
k =0
1 − zk z −1 )
(
k = p +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żenie (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)
Rozwiązanie to jest następujące:
b=
Ts−1 (TsH u)
u H Ts u
=
u
u H Ts u
⇒ a = Ts b =
Ts u
u H Ts u
=
( Vs VsH )u
u H ( Vs VsH )u
(16.73)
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).
W sytuacji, kiedy w metodach MUSIC, EV i MN dysponujemy już estymatami częstotliwości
składowych sinusoidalnych sygnału, ich moc wyznaczamy tak jak w metodzie Pisarenki z zależności (16.58).
16.3.4. Metoda ESPRIT
Zajmiemy się teraz metodą ESPRIT (Estimation of Signal Parameters via Rotational Invariance 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:
1
y(n)

 
 y ( n + 1)   e jΩ1
=
y0 = 
#
#

 

  j ( M −1)Ω
1
 y ( n + M − 1)   e
1
e jΩ2
#
e j ( M −1)Ω2
  A1e jφ1  
s( n )



jΩ p
jφ2


"
e
  A2 e   s ( n + 1) 
= Wa + s0
 #  + 
%
#
#





jφ p 
j ( M −1) Ω p  
s ( n + M − 1) 
" e
  Ap e  
"
1
(16.74)
Zaawansowane metody analizy częstotliwościowej sygnałów
438
 e jΩ1
 y ( n + 1) 

 y ( n + 2) 
 = W 0
y1 = 

#


 #


 0
 y(n + M )

0
e jΩ 2
#
0
jφ
0   A1e 1   s( n + 1) 


jφ


"
0   A2 e 2   s ( n + 2) 
= W ⋅ Φ ⋅ a + s1
 #  + 
#

%
# 


jφ  
jΩ 
" e p   Ap e p   s( n + M ) 
"
(16.75)
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óźniony 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):
R y 0, y 0 = E  y ( n ) y H ( n )  = W ⋅ P ⋅ W H + σ2s I = C yy + σ2s I


(16.76)
oraz kowariancji wzajemnej wektorów y0 = y(n) oraz y1 = y(n + 1):
R y 0, y1 = E  y ( n ) y H ( n + 1)  = W ⋅ P ⋅ Φ H ⋅ W H + σ2s J = C yz + σ2s J


(16.77)
1
0

I = 0

 #
0
(16.78)
gdzie
| A1 |2

 0
P=
 #
 0

0
| A2 |2
#
0
0 

"
0 
,
%
# 
" | Ap |2 
"
0 0 " 0
0
1
1 0 " 0


0 1 " 0 , J =  0


# # % # 
 #
 0
0 " 0 1
0 0 " 0
0 0 " 0

1 0 " 0

# # % # 
0 " 1 0 
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:
R y 0, y 0
R y 0 (1)
 R y 0 (0)

*
R y 0 (0)
 R y 0 (1)
=
#
#

 R* ( M − 1) R* ( M − 2)
y0
 y0
R y 0 (1)
 R y 0 (0)

*
R y 0 (0)
 R y 0 (1)
R y 0, y1 = 
#
#

 R* ( M − 1) R* ( M − 2)
y0
 y0
" R y 0 ( M − 1) 

" R y 0 ( M − 2) 

%
#

"
R y 0 (0) 
(16.79)
R y 0 ( M − 1) 

" R y 0 ( M − 2) 

%
#

"
R y 0 (0) 
(16.80)
"
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
Z powodu określonej budowy macierzy W, P oraz Φ, w ogólności macierz (Cy0,y0 − λ Cy0,y1)
jest rzędu p. Ponieważ jednak dla λ = exp(jΩk) zeruje się jeden z wierszy macierzy (I − λΦH),
to wówczas rząd macierzy (I − λΦH) obniża się z p do p−1 i wtedy zeruje się także wyznacznik macierzy (Cy0,y0 − λ Cy0,y1). W związku z tym wartości λk = exp(jΩk), k = 1, 2, ..., p, zgodnie z definicją:
(
)
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)
są uogólnionymi wartościami własnymi macierzy Cy0,y0 oraz Cy0,y1.
Szczegółowy algorytm metody ESPRIT jest następujący (przy założeniu składowych sinusoidalnych (16.41) sygnału, a nie harmonicznych (16.59)):
1) Przyjmujemy M = 2p + 1, wyznaczamy estymatę wartości funkcji autokorelacji Ry0(m) sygnału y(n), m = 0, 1, ..., M, oraz tworzymy macierze Ry0,y0 oraz Ry0,y1.
2) Dekomponujemy macierz Ry0,y0 według wartości własnych oraz znajdujemy najmniejszą
wartość własną, którą przyjmujemy za estymatę wariancji szumu σs2.
3) Tworzymy macierze Cy0,y0 = Ry0,y0 − σs2I oraz Cy0,y1 = Ry0,y1 − σs2J.
4) Wyznaczamy uogólnione wartości własne dla macierzy Cy0,y0 oraz Cy0,y1. Na podstawie
p wartości leżących na okręgu jednostkowym lub blisko niego (λk = ck⋅exp(jϕk)), znajdujemy
interesujące nas częstotliwości składowe fk sygnału x(n) (fk/fpr = arctg(ϕk)/(2π)). Jedyna pozostała, uogólniona wartość własna leży blisko środka układu współrzędnych.
5) Znając częstotliwości składowych sygnału wyznaczamy ich moc z równania (16.43).
16.3.5. Metody podprzestrzeni sygnału (składowych głównych)
Kończąc niniejszy rozdział wypada jeszcze dwa słowa powiedzieć na temat możliwości wykorzystania 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 przetwarzania 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
R xx = ∑ λ k v k v kH +
k =1
M
∑
k = p +1
λ k v k v kH ,
p
M
1
1
v k v kH + ∑
v k v kH
λ
λ
k =1 k
k = p +1 k
R −xx1 = ∑
(16.83)
i w konkretnej metodzie wykorzystać tylko estymaty obu macierzy, reprezentowane przez pierwsze składniki powyższych sum, uwzględniające tylko główne wektory własne (principal components) z przestrzeni sygnału:
p
ˆ = ∑λ v vH ,
R
xx
k k k
k =1
p
ˆ −1 = ∑ 1 v v H
R
xx
k k
k =1 λ k
(16.84)
Przykładowo można taką metodologię zastosować nawet w stuprocentowo klasycznym estymatorze widmowym Blackmana-Tukeya (16.5), gdyż w przypadku użycia w nim okna trójkątnego
można go zapisać w następującej postaci:
1
PˆxBT (e jΩ ) =
M
M
1
Rˆ x ( m)( M − | m |) e − jΩm = e H R x e
M
m =− M
∑
(16.85a)
Zaawansowane metody analizy częstotliwościowej sygnałów
440
1
ˆ e= 1
PˆxPC − BT ( e jΩ ) = e H R
x
M
M
p
∑ λ k | e H v k |2
(16.85b)
k =1
gdzie e = [1, ejΩ, ej2Ω, ej3Ω, ..., ej(M−1)Ω]T oraz Ω = 2πf/fpr.
Innym przykładem może być modyfikacja nie omawianej przez nas metody minimalnej wariancji (MV − Minimum Variance):
PˆxMV ( e jΩ ) =
M
e
H
R −x1e
,
PˆxPC − MV ( e jΩ ) =
M
=
ˆ −1e
e R
x
H
M
p
1
∑ λ | e H v k |2
k =1 k
(16.86a, b)
16.4. Przykład ćwiczenia komputerowego
W celu ilustracji znaczenia opisanych powyżej, nowszych metod analizy częstotliwościowej
dokonamy obecnie implementacji programowej tych metod w języku Matlab oraz zastosujemy
je do analizy konkretnego sygnału dyskretnego. W tabeli 16-4 znajdują się programy wyznaczające dyskretny, nieunormowany periodogram PPER(ejΩ) = |X(N)(ejΩ)|2 (16.1) oraz estymatory
PAR(ejΩ) (16.22), PPisarenko(ejΩ) (16.68), PMUSIC(ejΩ) (16.69) i PESPRIT(ejΩ) (16.82), gdzie X(N)(ejΩ)
oznacza widmo Fouriera (8.13a) sygnału, wyznaczone na podstawie N próbek sygnału x(n).
Jako analizowany sygnał wybrano zaszumioną sumę dwóch sinusoid postaci:


f
f
π
π
x ( n ) = sin 2π 1 n −  + sin 2π 2 n +  + s( n )



f pr
5
f pr
7 


o następujących wartościach parametrów:
f1 = 5 Hz, f2 = 12 Hz, fpr = 32 Hz, N = 16, n = 0, 1, 2, ..., N−1
Szum s(n) był szumem o rozkładzie normalnym (0, 0.1), czyli o wartości średniej równej zeru
i odchyleniu standardowym równym 0.1. Na rysunku 16.2a jest przedstawiony przebieg czasowy sygnału x(n), a na rysunku 16.2b − kształt estymat funkcji gęstości widmowej mocy dla
poszczególnych metod. Jak widać pomimo bardzo krótkiego „zapisu” sygnału, „piki” estymat
niefourierowskich są o wiele ostrzejsze, choć nie zawsze występują one we właściwym miejscu. Interesujące jest, że wszystkie metody dobrze detektują częstotliwość 12 herców, natomiast mają problemy ze „znalezieniem” częstotliwości 5 herców. Najlepsze wyniki uzyskano
dla metody MUSIC. Ze względu na obecność szumu, proces estymacji należy powtórzyć dla
większej liczby realizacji („zapisów”) sygnału.
Tab. 16-4. Przykład programu do testowania wybranych niefourierowskich metod estymacji częstotliwościowej
% Ćwiczenie: Niefourierowskie metody estymacji widmowej
clear all;
% Analizowany sygnał − dwie sinusoidy
N = 16;
% liczba próbek
f1 = 5;
% częstotliwość sinusoidy 1
f2 = 12;
% częstotliwość sinusoidy 2
fpr = 32; % częstotliwość próbkowania
Zaawansowane metody analizy częstotliwościowej sygnałów
x(n)
a)
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
0
1
2
3
4
5
50
b)
441
6
7
n
8
9
10
11
12
13
14
15
Pisarenko
40
Px(f) [dB]
30
20
periodogram
10
0
-10
MUSIC
-20
AR
-30
0
1
2
3
4
5
6
7
8
f [Hz]
9
10 11 12 13 14 15 16
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;
pp = 2*p;
M = pp+4;
% liczba sinusoid
% liczba potrzebnych biegunów transmitancji
% wybór metody: M=pp metoda AR, M=pp+1 metoda Pisarenki i ESPRIT, M>pp+1 metoda MUSIC
NF = 1024;
f = (0:NF-1)*(fpr/NF);
m = 1:NF/2+1;
% liczba próbek widma
% częstotliwości próbek widma
% indeksy wybranych częstotliwości
% 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
% Periodogram (kwadrat modułu klasycznego widma Fouriera, zastosowano okno prostokątne)
X1 = abs(fft(x,NF)).^2; Px1=10*log10(X1);
plot(f(m),Px1(m)); title('periodogram'); xlabel('f[Hz]'); ylabel('dB'); grid; 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);
end
for k=1:M
R(k,1:M)=[r(k:-1:2) r(1:1:M-(k-1))];
end
% oblicz estymatę funkcji autokorelacji:
% r(0), r(1), r(2),..., r(M)
% zbuduj macierz autokorelacji R
Zaawansowane metody analizy częstotliwościowej sygnałów
442
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
if (M>2*p)
% metody Pisarenki, ESPRIT i MUSIC
[V,D]=eig(R); % dekompozycja macierzy R względem wartości własnych
if(M==2*p+1)
% metoda Pisarenki
sigma=min(diag(D)); indx=find(diag(D)==sigma); vmin=V(:,indx);
X2=abs(fft(vmin,NF)).^2; Px2=-10*log10(X2);
plot(f(m),Px2(m)); title('Widmo PIS'); xlabel('f[Hz]'); ylabel('dB'); pause
% metoda ESPRIT
R0 = R; R1 = [ R0(:,2:M) r(M+1:-1:2)'];
sigma2 = (min(diag(D)));
I = eye(M); J = [zeros(1,M); I(1:M-1,1:M) ];
C0 = R0 - sigma2*I; C1 = R1 - sigma2*J;
D = eig(C0, C1);
D = D( find( abs(D) > 0.5 ));
plot(real(D),imag(D),'bx'); title('Uogólnione wartości własne'); pause
disp(’Częstotliwości’); fx = fpr * atan2( imag(D), real(D) )/(2*pi), pause
else
% metoda MUSIC
[d,indx]=sort(diag(D));
X2=zeros(NF,1);
for k=1:M-pp
X2=X2+abs( fft(V(:,indx(k)),NF) ).^2;
end
Px2=-10*log10(X2);
plot(f(m),Px2(m)); title('Widmo MUSIC'); xlabel('f[Hz]'); ylabel('dB'); pause
end
end
plot(f(m),Px1(m),'r',f(m),Px2(m),'b'); title('Porównanie widm'); grid; pause
17
Metody czasowo-częstotliwościowej
analizy sygnałów
Celem niniejszego rozdziału jest przedstawienie podstaw analizy częstotliwościowej zmiennych w czasie sygnałów niestacjonarnych za pomocą tzw. czasowo-częstotliwościowych reprezentacji sygnałów. Omówiono w nim: transformację Gabora, krótkoczasową transformację
Fouriera, transformację falkową, transformację Wignera-Ville’a oraz rodzinę transformacji
należących do tzw. klasy Cohena. Porównano także właściwości użytkowe tych transformacji
oraz podano liczne przykłady zastosowań transformacji czasowo-częstotliwościowych.
Metody analizy częstotliwościowej sygnałów stacjonarnych są powszechnie znane i szeroko
stosowane. Jednak w praktyce diagnostycznej, często występuje konieczność posiadania umiejętności częstotliwościowej analizy i przetwarzania sygnałów niestacjonarnych w celu wydobycia zawartej w nich zmiennej „informacji” o charakterze samoistnym lub wymuszonym. Konieczność ta wynika co najmniej z dwóch powodów. Po pierwsze, niestacjonarność stanowi
immanentną właściwość wielu obserwowanych, rozpoznawanych, identyfikowanych lub sterowanych zjawisk, procesów i obiektów rzeczywistych, naturalnych i technicznych, oraz generowanych przez nie sygnałów (np. śpiew ptaków, mowa ludzka, sygnał EKG i EEG, drgania
sejsmiczne, wibracje pracujących części maszyn w chwilach rozruchu, oscylacje w układach
elektrycznych, zmienność krzywizny powierzchni wytwarzanych materiałów, zmienność gęstości struktur atomowych w dyfraktometrii rentgenowskiej, obrazy dwuwymiarowe itp.). Po
drugie, w wielu metodach technicznych są celowo stosowane niestacjonarne sygnały impulsowe, skokowe i zmodulowane (np. identyfikacja obiektów metodą ich pobudzenia; technika
echografii impulsowej, wykorzystywana w geosejsmice, radiolokacji, ultrasonograficznej diagnostyce medycznej i defektoskopii materiałowej; modulacja częstotliwościowa i fazowa transmitowanych sygnałów w telekomunikacji itp.). Jako przykład stosowania przetwarzania sygnałów niestacjonarnych można podać separację ech sygnału wysłanego w echografii impulsowej, często poddanych zjawisku Dopplera.
Łączne czasowo-częstotliwościowe (lub przestrzenno-częstotliwościowe) reprezentacje sygnałów stały się ostatnio narzędziem, które jest najczęściej wykorzystywane do analizy widmowej
i przetwarzania sygnałów niestacjonarnych. Stawiają one sobie za cel jak najdokładniejszą
łączną amplitudowo-częstotliwościową dekompozycję (demodulację) analizowanego sygnału
złożonego w funkcji czasu (lub przestrzeni), czyli przedstawienie zmienności amplitud, częstotliwości i faz chwilowych jego sygnałów składowych. W praktyce reprezentacje te najczęściej
zadowalają się wyłącznie wyznaczeniem ewolucji w czasie funkcji gęstości widmowej mocy
444
Metody czasowo-częstotliwościowej analizy sygnałów
sygnału i dlatego bywają nazywane widmami ewolucyjnymi. Rodzina reprezentacji czasowo-częstotliwościowych jest bardzo duża. Ogólnie mogą być one podzielone na reprezentacje
typu czas-częstotliwość i czas-skala oraz zinterpretowane jako metody tzw. „krótkoczasowej”
analizy częstotliwościowej, gdyż estymuje się w nich „chwilowe” widma sygnału na podstawie
jego kolejnych, „krótkich” fragmentów, pokrywających się lub nie, „wycinanych” przez czasowe okno obserwacji przesuwające się wzdłuż sygnału. Sposób definicji widma „chwilowego” (klasyczny, Wignera lub inny) i metoda jego estymacji (za pomocą przekształcenia Fouriera, drogą modelowania parametrycznego lub inna) są różne dla poszczególnych reprezentacji.
Celem niniejszego rozdziału jest przedstawienie podstaw analizy czasowo-częsotliwościowej
sygnałów oraz przegląd i porównanie właściwości współczesnych metod, stosowanych do takiej analizy. Ponieważ różne metody mają różne właściwości, w zamierzeniu autora rozdział
ten ma pomóc w świadomym wyborze odpowiedniego narzędzia obliczeniowego.
17.1. Problem analizy czasowo-częstotliwościowej
Metody opisu, analizy i przetwarzania sygnałów pomiarowych stanowią przedmiot zainteresowania teorii sygnałów. Jedną z podstawowych i najstarszych metod analizy sygnałów jest analiza częstotliwościowa. Przedstawia się w niej badany sygnał x(t) jako sumę sygnałów elementarnych (bazowych) gk(t):
x ( t ) = ∑ a k g k (t )
(17.1)
ak = ∫ x (t ) γ*k ( t ) dt
(17.2)
k
gdzie
i γk(t) jest sygnałem dualnym do gk(t), a znak „*” oznacza sprzężenie zespolone. Każdy z sygnałów bazowych ma inną częstotliwość. Wartości współczynników ak określają jakie częstotliwości występują w sygnale, a jakie nie. Sygnały bazowe gk(t) mogą być rzeczywiste lub zespolone. 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 Laguerre’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
dla k ≠ l
∫ g k (t )g l (t )dt = 0
*
wówczas bazowe sygnały analizujące są takie same jak bazowe sygnały syntezujące:
(17.4)
Metody czasowo-częstotliwościowej analizy sygnałów
γ k (t ) = g k (t )
445
(17.5)
i każdy analizowany sygnał x(t) ma unikalne rozwinięcie w tej przestrzeni (reprezentuje go tylko 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
 dla k ≠ l
∫ gk ( t ) γ l ( t ) dt = 0
*
(17.6)
Istnieje tylko jeden zbiór {γk(t)}. Przyporządkowanie x(t) ↔ {ak} jest dalej wzajemnie jednoznaczne.
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ądkowanie 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 transformacie 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ępują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 dekompozycji 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 czasowo-częstotliwościowe są przedstawione na rysunku 17.3. Pierwsza z nich dotyczy krótkoczasowej transformacji Fouriera, a druga transformacji falkowej. W przypadku pierwszym komó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ęstotliwoś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 niezerowych 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
0
8 10 12 14 16 18
czas [s]
2
4
6
8 10 12 14 16 18
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)
poziom dekompozycji j
4.00
3.00
2.00
1.00
0.00
0
5
10
15
czas [s]
20
25
30
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 sygnału z liniowo narastającą częstotliwoscią
Metody czasowo-częstotliwościowej analizy sygnałów
f
447
f
t
t
Rys. 17.4. Przykłady innych schematów dekompozycji sygnału w dziedzinie czas-częstotliwość
17.3 ciemnym kolorem zostały zaznaczone niezerowe współczynniki dekompozycji czasowo-częstotliwościowej sygnału z liniowo narastającą częstotliwoscią. Z kolei na rysunku 17.4
przedstawiono szachownice innych możliwych dekompozycji TF (ang. Time-Frequency).
Oczywiście bardzo jest ważne, aby pole atomu TF funkcji g(t) było jak najmniejsze. Z zasady
nieoznaczoności wiadomo jednak, że iloczyn szerokości pasma częstotliwościowego i czasu
trwania sygnału nie może być mniejszy od pewnej minimalnej wartości (dowód w [Brac68])
σ2 = A2 + B 2 ≥ 2 ⋅ A ⋅ B ≥
1
2π
(17.7)
gdzie
A2 =
+∞
+∞
1 +∞ 2
1 +∞ 2
2
2
2
2
2
t
g
(
t
)
dt
,
(
)
,
B
=
f
G
f
df
E
=
g
(
t
)
dt
=
∫
∫
∫
∫ G ( f ) df
E −∞
E −∞
−∞
−∞
(17.8)
oznaczają, odpowiednio, średniokwadratową szerokość czasową (A) i częstotliwościową (B)
funkcji g(t) i jej widma Fouriera G(f). Znak równości w (17.7) jest spełniony jedynie dla funkcji Gaussa:
g ( t ) = ( 2α )
1/ 4
(
exp − απt 2
)
(17.9)
która ma w związku z tym optymalne właściwości dla łącznej czasowo-częstotliwościowej
analizy sygnałów, gdyż charakteryzuje się najmniejszym możliwym iloczynem AB, czyli najmniejszym polem powierzchni atomu w przestrzeni TF. Przesuwając okno Gaussa w funkcji
czasu oraz modulując go w częstotliwości, przesuwa się związany z nim atom TF w różne pola
szachownicy czasowo-częstotliwościowej. Rysunek 17.5 stanowi ilustrację tego faktu. Przedstawione są na nim dwie falki, uzyskane w wyniku modulacji funkcji Gaussa sygnałami sinusoidalnymi o różnych częstotliwościach, ich widma Fouriera oraz wynikowe widmo TF jednej
z nich. Widmo TF, w tym przypadku widmo Wignera-Ville’a (17.66a), jest przedstawione jako
wykres 3D oraz mapa konturowa z izoliniami.
Korzystając z właściwości przeskalowania (4.9) transformacji Fouriera można wykazać, że
wielkość pola AB nie zmieni się, jeśli funkcja Gaussa zostanie przeskalowana w osi czasu, tzn.
rozciągnięta lub ściśnięta. W takim przypadku zmieni się jedynie kształt powierzchni atomu
TF na bardziej poziomy (lepsza rozdzielczość częstotliwościowa) lub pionowy (lepsza rozdzielczość czasowa). Rysunek 17.6 ilustruje powyższą właściwość. Przedstawione są na nim
TF widma Wignera dla trzech przeskalowanych okien Gaussa. Z ich pomocą można budować
różne strategie próbkowania przestrzeni TF, analogiczne do przedstawionych na rysunkach
17.3 i 17.4.
Na rysunku 17.7 zebrano konsekwencje czasowo-częstotliwościowe operacji wykonywanych
na oknie Gaussa, tzn. przesunięcia i skalowania.
448
Metody czasowo-częstotliwościowej analizy sygnałów
b)
1
1
0 .5
0 .5
g(t)
g(t)
a)
0
0
-0 .5
-1
-0 .5
0
0 .0 5
0 .1
t [s ]
0 .1 5
-1
0 .2
c)
0
0 .0 5
0 .1
t [s ]
0 .1 5
0 .2
d)
0 .2
0 .2
0 .1 5
0 .1 5
0 .1
0 .1
0 .0 5
0 .0 5
0
0
20
40
60
80
0
100
0
20
f [H z]
40
60
80
100
f [H z]
e)
f)
100
80
10
5
f [Hz]
60
0
100
40
80
0.15
60
f [Hz]
0.1
40
0.05
20
0
0
t [s]
20
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
a) α1
449
b) α2
f
c) α3
f
f
t
t
t
Rys. 17.6. Czasowo-częstotliwościowe widma Wignera-Ville’a (17.66a) dla okna Gaussa (17.9), zakładając: α1 < α2 < α3
f
f
4
4
3
3
2
2
1
1
0
1
2
3
4
t
α = 1/2
α=1
α=2
0
1
2
3
4
t
Rys. 17.7. Konsekwencje czasowo-częstotliwościowe operacji wykonywanych na oknie Gaussa: a) przesunię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 stwierdzenia. 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 konturowe z zaznaczonymi izoliniami. W tym przypadku także zastosowano czasowo-częstotliwościową transformację Wignera-Ville’a (podrozdział 17.5). Wyznaczona numerycznie reprezentacja TF sygnału LFM wyraźnie pokazuje narastanie częstotliwości chwilowej sygnału w funkcji czasu (rysunki 17.8c i 17.8d).
Podsumowując, problem analizy czasowo-częstotliwościowej sygnałów niestacjonarnych sprowadza się do wyboru odpowiedniego schematu (szachownicy) dekompozycji przestrzeni TF,
jej najlepszej synchronizacji z analizowanym sygnałem oraz wyboru właściwych funkcji bazowych 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 sygnał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 odszumiania sygnałów w dziedzinie TF.
450
Metody czasowo-częstotliwościowej analizy sygnałów
a)
b)
1
0.05
0.04
0.5
x(t)
0.03
0
0.02
-0.5
0.01
-1
0
0.2
0.4
0.6
0.8
0
0
1
100
200
t [s]
300
400
500
f [Hz]
c)
d)
200
60
150
f [H z]
40
20
100
0
200
0.8
150
50
0.6
100
0.4
50
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 liniowy: a) sygnał czasowy, b) jego widmo Fouriera, c), d) reprezentacje czasowo-częstotliwościowe sygnału:
wykres 3D i kontur
Teraz zostaną przedstawione najprostsze i najpopularniejsze metody czasowo-częstotliwościowej analizy sygnałów oraz ich właściwości. W swojej podstawowej wersji nie są to metody
adaptacyjne, ale takie ich odmiany już istnieją, np. adaptacyjna krótkoczasowa transformacja
Fouriera, adaptacyjne pakiety falkowe, adaptacyjne reprezentacje z klasy Cohena.
17.2. Transformacja Gabora
W czasowo-częstotliwościowej reprezentacji Gabora analizowany sygnał jest przedstawiany
jako suma funkcji bazowych, które powstają z funkcji prototypowej, np. okna gaussowskiego,
w wyniku jej przesuwania w osi czasu i częstotliwości (poprzez modulację zespoloną, czyli
Metody czasowo-częstotliwościowej analizy sygnałów
451
wymnożenie z zespolonymi sygnałami harmonicznymi). Atom TF funkcji prototypowej jest
zlokalizowany w przestrzeni czas-częstotliwość wokół punktu (t = 0, f = 0) i ma dowolny
kształt, np. taki jak na rysunku 17.5f. W wyniku przesuwania funkcji prototypowej otrzymuje
się strukturę dekompozycji TF analogiczną do tej z rysunku 17.3a. W dekompozycji Gabora
pole i orientacja atomów TF jest stała.
Przejdźmy obecnie do konkretów. Czasowo-częstotliwościowa dekompozycja Gabora ciągłego
sygnału x(t) jest zdefiniowana jako:
x (t ) =
+∞
∑ cm, n g m, n (t )
(17.10)
m, n = −∞
gdzie gm,n(t) oznacza przesuniętą w czasie o m⋅∆t oraz w częstotliwości o n⋅∆f dowolną funkcję bazową (prototypową) g(t) o energii równej jedności (∆t, ∆f − zadane przesunięcie w czasie i częstotliwości):
g m,n (t ) = g (t − m ⋅ ∆t ) e j 2 π ( n⋅∆f ) t , ∆t ⋅ ∆f ≤ 1
(17.11)
a cm,n są współczynnikami dekompozycji, wyznaczanymi ze wzoru:
+∞
cm ,n = ∫−∞ x (t ) γ*m,n ( t ) dt ,
γ m ,n (t ) = γ (t − m ⋅ ∆t ) e j 2 π ( n⋅∆f )t
(17.12)
W równaniu (17.12) γ(t) oznacza funkcję prototypową (okno) analizy, która musi być biortogonalna do funkcji prototypowej (okna) syntezy g(t) (17.11). Przy zadanym g(t) okno γ(t) jest
obliczane na podstawie zależności:
∑ gm,n (t ) γ*m,n (t ') = δ(t − t ')
(17.13)
m ,n
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ęstotliwości uzyskuje się szachownicę dekompozycji, przedstawioną na rysunku 17.3a. Przeskalowują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 definiowana jako
S x ( mT , nF ) = cm,n
2
(17.14)
Z kolei dyskretna, o k r e s o wa wersja transformacji Gabora jest zdefiniowana przez następujące równania, odpowiadające kolejno (17.10), (17.12), (17.13):
452
Metody czasowo-częstotliwościowej analizy sygnałów
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 =
∑ ∑ cm,n g ( k − m ⋅ ∆M ) WL( n⋅∆N )⋅k
(17.15)
m =0 n =0
L −1
∑ 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
WL = e j⋅2 π / L ,
L = ( ∆M ) M = ( ∆ N ) N ,
η=
MN
≥1
L
(17.18)
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
∑ g (k + qN ) W∆−Mpk γ * (k ) =
k =0
∆M
δ( p )δ(q ) ↔
N
 ∆M

G γ * = µ, µ = 
,0,0,...,0
 N

T
(17.19)
skąd:
(
γ* = G −1µ lub γ*optim = G T GGT
)
−1
µ
(17.20a, b)
W zależności od przyjętych wartości przesunięcia w czasie ∆M i częstotliwości ∆N
otrzymywane są różne pary okien {g(k), γ(k)} i analizowany sygnał o zadanej długości L jest
transformowany do różnych reprezentacji czasowo-częstotliwościowych, mających M widm
N-punktowych (wartości parametrów M i N wynikają z (17.18)). Krytyczne próbkowanie
czasowo-częstotliwościowe ma miejsce wtedy, kiedy MN = L (η = 1), natomiast dla MN > L
(η > 1) występuje nadpróbkowanie.
W (17.20a) występuje macierz odwrotna do G, a w (17.20b) − macierz pseudoodwrotna.
W przypadku nadpróbkowania macierz G staje się macierzą prostokątną, mającą ∆M⋅∆N kolumn oraz L wierszy (∆M⋅∆N < L), w związku z czym rozwiązanie równania (17.19) nie jest
Metody czasowo-częstotliwościowej analizy sygnałów
453
wówczas jednoznaczne. Jeśli macierz G jest pełnego rzędu, to z (17.20b) otrzymuje się w takim 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 literaturze. 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 gaussowskiego 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 narastającą częstotliwością. Jak widać kształt okna γ(k) bardzo zależy od rodzaju próbkowania przestrzeni 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 zanikają, 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
0.09
b) η = 2, ∆M = 4, ∆N = 8
0.025
γ (k)
0.07
γ (k)
0.020
c) η = 64, ∆M = 1, ∆N = 1
8E-4
γ (k)
7E-4
6E-4
0.05
0.015
0.03
5E-4
0.010
0.01
-0.01
4E-4
3E-4
0.005
2E-4
-0.03
0.000
-0.05
k
-0.07
0
10
20
30
40
50
k
-0.005
60
0
d) η = 1, ∆M = 8, ∆N = 8
10
20
30
40
50
60
e) η = 2, ∆M = 4, ∆N = 8
f
k
0
10
20
30
40
50
60
f) η = 64, ∆M = 1, ∆N = 1
f
t
1E-4
0E+0
f
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
Ostatnio są proponowane definicje tzw. rzeczywistych reprezentacji TF Gabora. Stosuje się
w nich modulację okien g(k) i γ(k) sygnałami rzeczywistymi typu sinus lub kosinus a nie zespolonymi sygnałami harmonicznymi. W wyniku tego zabiegu dualne okna γ(k) są zdecydowanie lepiej zlokalizowane w czasie i mniej oscylacyjne, dlatego nadpróbkowanie reprezentacji
TF nie jest już wymagane. W związku z powyższym rzeczywiste reprezentacje Gabora są
niezwykle atrakcyjne ze względów obliczeniowych: unika się w nich operacji na liczbach
zespolonych (sygnały modulujące są rzeczywiste), nadpróbkowania oraz długich okien czasowych.
Dyskretna transformacja Gabora: 1) może być przedstawiona jako częstotliwościowy, decymowany bank filtrów analizujących i syntezujących (podrozdział 18.4.3), 2) jest równoważna
decymowanej w czasie i częstotliwości krótkoczasowej transformacji Fouriera (podrozdział
17.3) oraz 3) jest podobna to transformacji falkowej (podrozdział 17.4), gdyż także lokalnie
aproksymuje sygnał za pomocą falek (sinus i kosinus z odpowiednią obwiednią czasową, określoną przez okno g(k)) oraz jest odwracalna.
W tabeli 17-1 jest przedstawiony kod źródłowy programu, napisanego w języku Matlab,
w którym dokonuje się czasowo-częstotliwościowej dekompozycji sygnału metodą transformacji Gabora oraz syntezuje się sygnał z obliczonych współczynników transformaty, odpowiednio równania (17.16) i (17.15). Wyznacza się w nim także dualne okno analizy γ(k) na
podstawie okna syntezy g(k) z zależności (17.20b).
Tab. 17-1. Program do czasowo-częstotliwościowej analizy/syntezy sygnału metodą transformacji Gabora
% Ćwiczenie: Czasowo-częsotliwościowa reprezentacja Gabora
clear all;
% Parametry wejściowe
% długość okna
% długość okna po uzupełnieniu zerami po obu stronach
% krok w czasie
### UWAGA !!!
% 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
nw = 64;
L = 128;
dM = 4;
dN = 4;
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) ];
for k = 0:2*L/dM-1
okno = dwz( L+1:L+L );
widmo = fft( x.*okno );
%
%
%
%
okno analizy z zerami
dla wybranych chwil czasowych
wytnij środek okna analizy
fft
Metody czasowo-częstotliwościowej analizy sygnałów
tf(k+1,:) = widmo( 1 : dN : L );
dwz = [ zeros(1,dM) dwz(1:3*L-dM) ];
end
mesh( abs(tf') ); pause
contour( abs(tf') ); pause
455
%
%
%
%
%
decymacja widma
przesuń okno
wykres 3D
kontur
% Synteza
wz = [ w zeros(1,2*L) ];
% okno syntezy z zerami
y = zeros( 1, L );
% inicjalizacja sygnału wyjściowego
temp = (2*pi/L)*dN;
% stała pomocnicza
n = 0 : 1 : L-1;
%
for m = 0 : 1 : 2*L/dM-1
% dla wszystkich punktów czasowych
ww = wz( L+1:L+L );
% wytnij środek okna syntezy
for k = 0 : 1 : L/dN-1
% dla wszystkich prążków widma
y = y + tf(m+1,k+1) * ( ww .* ( cos(temp*k*n) + i*sin(temp*k*n) ));
end
wz = [ zeros(1,dM) wz(1:3*L-dM) ];
% przesuń okno syntezy
end
y = real(y);
% Rysunki końcowe
plot( n,
plot( n,
blad_max
blad_std
y ); title(' Sygnał zsyntezowany '); grid; pause
x, 'r', n, y, 'b' ); title(' Sygnał WE i WY '); grid; pause
= max( abs( x - y ) )
= std( x - y )
17.3. Krótkoczasowa transformacja Fouriera STFT
Ciągła, krótkoczasowa transformacja Fouriera STFT (ang. Short-Time Fourier Transform) może być interpretowana jako niezdyskretyzowana w czasie i w częstotliwości transformacja
Gabora. Charakteryzuje się ona bardzo dużą redundancją zawartej w niej informacji TF. Podczas analizy i syntezy stosuje się tylko jedno i to samo okno, a nie dwa osobne okna biortogonalne. Definicja tej transformacji w dziedzinie czasu i częstotliwości jest następująca:
STFTxT (t , f ) =
+∞
∫ x ( τ) γ
*
( τ − t )e − j 2 πfτ dτ
(17.21a)
−∞
STFTxF (t , f ) = e − j 2 πf t
+∞
∫ X ( v )Γ
*
(v − f )e j 2 πv t dv
(17.21b)
−∞
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:
x (t ) =
1 +∞
j 2 πft
∫ STFTx ( t, f ) e df
γ (0) −∞
(17.22)
Jest to odwrotne przekształcenie Fouriera funkcji STFT(t, f) względem zmiennej f, unormowane przez wartość okna γ(t) dla chwili zerowej.
Z krótkoczasową transformacją Fouriera jest związany tzw. spektrogram, który definiuje się jako kwadrat jej modułu:
S xSPEC (t , f ) = STFTx ( t , f )
2
(17.23)
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
w dziedzinie czasowej (17.21a) lub częstotliwościowej (17.21b). W d z i e d z i n i e c z a s o w e j STFT polega na wykonywaniu prostego przekształcenia Fouriera na kolejnych fragmentach sygnału, „wycinanych’’ przez przesuwające się okno γ(t). W d z i e d z i n i e c z ę s t o t l i w o ś c i o w e j STFT jest natomiast równoważne: 1) odwrotnemu przekształceniu Fouriera
fragmentu widma sygnału X(ν), „wyciętemu” przez przesunięte w częstotliwości widmo okna
Γ(ν − f) (jest to filtracja sygnału filtrem pasmowoprzepustowym o częstotliwości środkowej
równej f ), 2) przesunięciu w częstotliwości sygnału czasowego otrzymanego z 1) do częstotliwości zerowej poprzez jego wymnożenie z exp(−j2πft). Metodę STFT w dziedzinie częstotliwościowej udoskonalono. Oblicza się w niej wartości funkcji STFTx(t, f) według (17.21b),
lecz przyporządkowuje się je innym wartościom parametrów t i f, które są związane z częstotliwością chwilową i opóźnieniem grupowym.
STFT można także interpretować jako grzebień równocześnie pracujących filtrów. W interpretacji dolnoprzepustowej dla każdej częstotliwości f sygnał jest najpierw przesuwany w częstotliwości o −f poprzez wymnożenie z exp(−j2πft), a następnie przepuszczany przez filtr pasmowoprzepustowy o odpowiedzi impulsowej γ*(−t). W interpretacji górnoprzepustowej dla
każdej częstotliwości f sygnał jest najpierw przepuszczany przez filtr pasmowoprzepustowy
o częstotliwości środkowej f i odpowiedzi impulsowe równej γ*(−t)exp(j2πft), a następnie przesuwany w częstotliwości do częstotliwości zerowej poprzez wymnożenie z exp(−j2πft).
W STFT szerokie okno γ(t) powoduje dużą rozdzielczość w osi częstotliwości, a mniejszą
w osi czasu (rysunek 17.9a). Wąskie okno daje efekt odwrotny (rysunek 17.9b). Niemożliwa
jest jednoczesna duża rozdzielczość metody w obu osiach.
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ś − średniokwadratową 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 czasowego, 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:
( B A)optim2 ≅ ∆f
∆t − Bokna / Aokna
Na rysunku 17.11 pokazano przykładowe spektrogramy (17.23) dla trzech długości okien: optymalnej, za krótkiej i za długiej. Jak widać różnica jest niebagatelna.
Dyskretna wersja równania (17.21a) ma następującą postać:
STFT ( n, k ) =
+∞
∑
m =−∞
x ( m ) γ* ( n − m ) e
 2π 
− j k  m
N  ,
k = 0,1, 2, ..., N − 1
(17.24)
Parametr N, związany z dyskretyzacją częstotliwości, powinien być równy lub większy od liczby 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
STFT (n, k ) =
N −1
∑ γ* ( m ) x ( n − m ) e
 2π 
− j k  m
N  ,
457
k = 0, 1, 2, ..., N − 1
(17.25)
m =0
za pomocą algorytmu FFT szybkiej transformacji Fouriera. W zależności od wybranych wartości chwil czasowych n, dla których wyznacza się widmo, oraz długości okna M, kolejne widma są wyznaczane na podstawie mniejszej lub większej liczby tych samych próbek sygnału.
Jak wiemy z rozdziału dziewiątego, dla szczególnych okien i wartości parametrów metody,
istnieją szybkie, rekursywne algorytmy, służące do wyznaczania sekwencji widm określonych
przez (17.25).
W tabeli 17-2 przedstawiono przykład zastosowania krótkoczasowej transformacji Fouriera 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 transformacji Wignera (tabela 17-5), które będzie później przedstawione. W przypadku sygnału SFM reprezentacja STFT nie jest w stanie poprawnie „odtworzyć” zmienności częstotliwości, ale udaje się to dzięki transformacji Wignera.
Interesująca jest następująca zależność, pokazująca, że spektrogram (17.23) jest uśrednioną
(wygładzoną) wersją reprezentacji Wignera (Wignera-Ville’a) (podrozdział 17.5):
S xSPEC (t , f ) =
+∞ +∞
∫ ∫
−∞ −∞
(V )
SW
( τ, v ) ShW (V ) ( τ − t , v − f ) d τ dv
x
(17.26)
W przeciwieństwie do reprezentacji Wignera-Ville’a nie występują w nim pasożytnicze interferencje utrudniające jego interpretację, ale uzyskano to za cenę znacznego uśrednienia wynikowego widma dwuwymiarowego.
Tab. 17-2. Program do czasowo-częstotliwościowej analizy sygnału metodą krótkoczasowej transformacji
Fouriera
% Ćwiczenie: Krótkoczasowa transformacja Fouriera
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)) );
% Analiza TF − krótkoczasowa reprezentacja Fouriera
x=hilbert(x);
w = hanning(2*M-1)';
for n = M : Nx-M+1
xx = x(n-(M-1): 1 :n+(M-1)); xx = xx .* w; xx = [ xx 0 ];
X(:,n-M+1) = fftshift(abs(fft(xx))');
end
% 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)
3.5
3.5
3
3
2.5
2.5
f [Hz]
4
f [Hz]
4
2
2
1.5
1.5
1
1
0.5
0.5
0
b)
15
t [s]
0
20
3.5
3.5
3
3
2.5
2.5
f [Hz]
4
f [Hz]
4
2
1.5
1
1
0.5
0.5
10
15
t [s]
0
20
3.5
3.5
3
3
2.5
2.5
f [Hz]
4
f [Hz]
4
2
1.5
1
1
0.5
0.5
10
15
t [s]
20
15
t [s]
20
10
15
t [s]
20
2
1.5
0
10
2
1.5
0
c)
10
0
10
15
t [s]
20
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
17.4. Transformacja falkowa
Transformacja falkowa jest obecnie jednym z najpopularniejszych i najdynamiczniej rozwijanych narzędzi analizy częstotliwościowej sygnałów niestacjonarnych. Koncepcyjnie jest ona
równoważna metodzie analizy częstotliwościowej o „stałoprocentowym paśmie” ∆f/f0 = const
(ang. CPB − Constant Percentage Bandwidth), stosowanej w akustyce, lecz inaczej realizowanej. Niniejszy podrozdział stanowi skrótowe wprowadzenie do teorii dyskretnej transformacji
falkowej. Główny punkt ciężkości jest w nim położony na wyprowadzenie równań definiujących ortogonalne systemy falkowe. Nie będą w nim w ogóle dyskutowane liczne zastosowania
transformacji falkowej, dotyczące między innymi czasowo-częstotliwościowej identyfikacji
stanu obiektów biologicznych i technicznych poprzez analizę generowanych przez nie sygnałów, odszumiania w dziedzinie współczynników transformacji, detekcji punktów skokowej
zmiany charakteru sygnałów oraz kodowania i kompresji sygnałów. W podrozdziale 17.7
zostaną jedynie przedstawione nieliczne, wybrane przykłady zastosowania transformacji falkowej do analizy sygnałów biomedycznych. Zainteresowanego Czytelnika odsyłamy do pkt. 22.4,
gdzie powiedziano nieco więcej na temat biortogonalnych systemów falkowych oraz ich wykorzystania do analizy, przetwarzania i kompresji obrazów.
Ciągła transformacja falkowa sygnału x(t) jest zdefiniowana w następujący sposób w dziedzinie czasu i częstotliwości:
CWTxT (t , a ) =
1
a
+∞
∫ x ( τ )γ
a

dτ
 a 
(17.27a)
X ( f )Γ* ( af ) e j 2 πf t df
(17.27b)
−∞
+∞
CWTxF (t, a ) =
* τ − t 
∫
−∞
transformacja zaś do niej odwrotna jest określona zależnością:
x (t ) =
2
Cγ
+∞  +∞
t−τ
 dτ
a 
∫  ∫ CWTx (τ, a )g 
0
−∞
 da
 2
 a
(17.28)
gdzie:
Cγ =
+∞
∫
−∞
Γ( f )
f
2
df < ∞, Γ ( 0 ) = 0
(17.29)
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:
S xSCAL (t , a ) = CWTx ( t , a )
2
(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.
Metody czasowo-częstotliwościowej analizy sygnałów
460
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 dziedzinie 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 sygnałó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)
Prawdziwa jest następująca zależność:
S xSCAL (t , a ) =
+∞ +∞
 τ−t

(V )
SW
( τ, v ) S γW (V ) 
, av  d τ dv
x
a


−∞ −∞
∫ ∫
(17.32)
wiążąca skalogram z reprezentacją Wignera (Wignera-Ville’a) oraz zależność ogólniejsza
S xSCAL (t , a ) =
+∞ +∞
τ−t

S xC ( τ, v; φ) SγC * 
, av; φ  d τ dv
a


−∞ −∞
∫ ∫
(17.33)
pokazująca związek z dowolną reprezentacją z klasy Cohena (podrozdział 17.6) (warunek:
φ(ξ,τ) = φ(ξτ) i |φ(ξ,τ)| = 1).
Ciągła czasowo-częstotliwościowa reprezentacja falkowa jest bardzo nadmiarowa. W wyniku
spróbkowania jej parametrów, tzn. czasu t i współczynnika skali a, otrzymuje się współczynniki szeregu falkowego, analogiczne do współczynników szeregu Fouriera. Kiedy założy się
podstawienie:
t = n2−m , a = 2−m
(17.34)
uzyskuje się diadyczny szereg falkowy. Jest on obecnie najczęściej stosowany. Sygnał jest
przedstawiany z jego pomocą jako suma:
x (t ) =
+∞
+∞
∑ ∑
m =−∞ n =−∞
d m,n g m,n ( t ),
(
)
g m ,n ( t ) = 2 m / 2 g 2 m t − n ,
d m ,n =
+∞
∫
−∞
x (t ) γ*m,n ( t ) dt
(
γ m ,n ( t ) = 2m / 2 γ 2m t − n
)
(17.35a)
(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óbkowania 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 pomocą sumy poprzesuwanych funkcji bazowych φ(t), wzajemnie ortonormalnych:
(
)
x ( t ) ≈ ∑ c0,n φ 20 t − n = ∑ c0,n φ ( t − n ) ,
n
n
c0,n =
+∞
∫
x (t )φ* ( t − n ) dt
Π0
Ω0
Ω1
Ω0
Ω 2 Ω3
(17.36)
−∞
Π1
Ω1
Π2
Ω 2 Ω3
Rys. 17.12. Przestrzenie funkcji skalujących i funkcji falkowych: Ω 0 ⊂ Ω1 ⊂ Ω 2 ⊂ Ω3, Ω0 ⊥Π 0 ⊥Π1 ⊥Π 2
|Φ( f)| |Ψ0 ( f )|
|Ψ ( f )|
1
|Ψ ( f )|
2
f
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)
Funkcje te mają widmo Fouriera, odpowiadające filtrowi dolnoprzepustowemu, czyli zawierające składową stałą. Na poziomie pierwszym, czyli o jeden rząd wyższym:
(
)
x ( t ) ≈ ∑ c1,n 2φ 21 t − n = ∑ c1,n 2φ ( 2t − n ) , c1,n =
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)
Metody czasowo-częstotliwościowej analizy sygnałów
462
Analogicznie można definiować kolejne, bardziej szczegółowe aproksymacje i związane z nimi
przestrzenie. Jeśli przestrzeń Ω0 jest rozpinana przez funkcje φ(t), to dla przestrzeni Π0 tę rolę
pełnią funkcje ψ(t), nazywane falkami, które są ortonormalne do φ(t). Widmo falki przypomina
widmo filtra pasmowoprzepustowego i stanowi dopełnienie widma (węższego) funkcji
skalującej z poziomu niższego do widma (szerszego) funkcji skalującej z poziomu wyższego.
Na rysunku 17.12 przedstawiono zależność poszczególnych przestrzeni funkcyjnych, natomiast
na rysunku 17.13 są pokazane orientacyjne widma Fouriera: funkcji φ(t) oraz kolejnych funkcji
2m/2ψ(2mt), m = 0, 1, 2, ... W związku z powyższym dekomponowany sygnał można
przedstawić na poziomie k-tym (k > m0) jako
x (t ) = ∑ cm0 , n φm0 , n (t ) +
n
k −1
∑ ∑ d m,n ψm,n (t )
(17.39)
m = m0 n
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)
W wielorozdzielczej dekompozycji sygnału, funkcja skalująca na poziomie niższym musi być
liniową kombinacją kilku funkcji skalujących z poziomu wyższego:
φ(t ) = ∑ h0 (k ) 2φ(2t − k )
(17.41)
k
Ponieważ na poziomie niższym aproksymacja jest mniej szczegółowa (bardziej niskoczęstotliwościowa), współczynniki wagowe h0(n) pełnią rolę filtra dolnoprzepustowego. Analogicznie
falka na poziomie niższym jest liniową kombinacją kilku funkcji skalujących z poziomu wyższego:
ψ(t ) = ∑ h1 (k ) 2φ(2t − k )
(17.42)
k
tylko tym razem współczynniki h1(n) reprezentują filtr górnoprzepustowy, czyli „przepuszczają” szczegóły.
Zastępując w (17.41) zmienną t przez 2mt − n oraz stosując podstawienie l=2n + k, otrzymujemy:
(
)
(
)
(
φ 2 m t − n = ∑ h0 (k ) 2 φ 2(2 m t − n ) − k = ∑ h0 (l − 2n ) 2φ 2 m +1 t − l
k
)
(17.43)
l
Uwzględniając z kolei (17.43) w równaniu definicyjnym współczynników cm,n (17.40a) mamy
(cm(n) = cm,n)
cm ( n ) =
+∞

x (t )2m / 2  ∑ h0 (l − 2n ) 2φ* 2m +1 t − l
l
−∞
∫
(
) dt =
 +∞

= ∑ h0 (l − 2n )  ∫ x (t )2( m +1) / 2 φ* 2m +1 t − l dt  = ∑ h0 (l − 2n )cm +1 (l )
 −∞
 l
l
(
)
(17.44a)
W sposób analogiczny wyprowadza się zależność (dm(n) = dm,n):
d m (n ) = ∑ h1 (l − 2n ) c m +1 (l )
l
(17.44b)
Metody czasowo-częstotliwościowej analizy sygnałów
463
Z równań (17.44a), (17.44b) wynika, iż konsekwencją zależności pomiędzy funkcjami skalującymi i falkami, na dwóch sąsiednich poziomach dekompozycji, jest zależność pomiędzy
współczynnikami rozwinięcia na tych poziomach. Współczynniki cm,n poziomu niższego otrzymuje się drogą filtracji dolnoprzepustowej współczynników cm+1,n z poziomu wyższego za
pomocą filtra h0(k) oraz następującej po niej decymacji rzędu drugiego (usunięcie co drugiej
wartości), współczynniki zaś dm,n − w wyniku filtracji górnoprzepustowej współczynników
cm+1,n za pomocą filtra h1(k) i analogicznej decymacji. Przykładowy schemat praktycznej realizacji numerycznej trzypoziomowej analizy i syntezy sygnału dyskretnego metodą diadycznej
transformacji falkowej jest przedstawiony na rysunkach 17.14 i 17.15. Zakłada się, że na
najwyższym poziomie aproksymacji współczynniki rozwinięcia cm są zawsze równe próbkom
przetwarzanego sygnału, gdyż funkcja skalująca ma wówczas postać impulsu jednostkowego.
Filtry analizujące (dekomponujące) są odwróconymi w czasie filtrami syntezującymi. Jak widać algorytm obliczeniowy ma postać zespołu filtrów o strukturze drzewa binarnego, w którym
jest rozwijana (lub zwijana) zawsze tylko gałąź dolnoprzepustowa. W przypadku selektywnego
rozwijania (i późniejszego zwijania) także gałęzi górnoprzepustowych za pomocą pary tych
samych filtrów, otrzymuje się zmodyfikowaną wersję transformacji zwaną pakietami falkowymi. Kiedy zmiana struktury drzewa dokonuje się adaptacyjnie, np. na podstawie wielkości
entropii informacji zawartej w poszczególnych kanałach podpasmowych, mamy do czynienia
z adaptacyjnymi pakietami falkowymi.
h1(−k)
Π2
2
Ω3
h0(−k)
Π1
2
h1(−k)
Ω2
2
2
Π0
h0(−k)
2
Ω0
Ω1
2
h0(−k)
h1(−k)
Rys. 17.14. Trzy poziomy analizy falkowej
Π2
Π1
Π0
2
h1(k)
2
Ω3
Ω2
h0(k)
2
2
h1(k)
Ω1
Ω0
h1(k)
h0(k)
2
2
h0(k)
Rys. 17.15. Trzy poziomy syntezy falkowej
W sytuacji kiedy dopełnieniem przestrzeni Ω0 do Ω1 jest kilka podprzestrzeni falkowych Π0,1,
Π0,2, Π0,3... itd., z każdą z tych podprzestrzeni jest związana inna falka ψ1(t), ψ2(t), ψ2(t), ...
Metody czasowo-częstotliwościowej analizy sygnałów
464
itd., mamy do czynienia z systemem wielofalkowym (ang. multi-wavelets), np. M-falkowym,
który charakteryzuje się jeszcze innym podziałem przestrzeni TF.
Teraz zajmiemy się problemem projektowania transformacji falkowych, tzn. projektowania
funkcji skalujących φ(t) i falek ψ(t). Ponieważ diadyczna transformacja falkowa jest w praktyce implementowana za pomocą filtrów h0(n) i h1(n), to ich wybór decyduje o tym, jakie funkcje
φ(t) i ψ(t) są stosowane. Jeśli chcemy poznać kształt tych funkcji, to najprostszą metodą jest
zastosowanie schematu blokowego odwrotnej transformacji falkowej z rysunku 17.15 i „zsyntezowanie” funkcji skalującej i falki z odpowiednio „spreparowanych” współczynników transformaty. W przypadku syntezy funkcji skalującej φ(t) należy podstawić c0 = 1 i d0 = 0 na najniższym poziomie oraz zwrotnie syntezować sygnał, podstawiając dl = 0, l = 1, 2, 3,... na wszystkich następnych poziomach. Z kolei falkę ψ(t) otrzymuje się w identyczny sposób, tylko na
najniższym poziomie należy zastosować inicjalizację c0 = 0 i d0 = 1. Omówiony sposób wygenerowania funkcji „falkowych” jest zupełnie naturalny i odpowiada zsyntezowaniu sygnału ze
współczynników jego dekompozycji falkowej. Ponieważ w strukturze drzewiastego zespołu
filtrów syntezy tylko jeden ze współczynników jest różny od zera, to na jego wyjściu otrzymujemy sygnał, który mu odpowiada. W pierwszym przypadku jest to funkcja skalująca φ(t)
(Ω0 = 1), a w drugim − falka ψ(t) (Π0 = 1) (patrz rysunek 17.15). Wygenerowanie w ww.
opisany sposób funkcji skalujących i falek dla różnych znanych systemów falkowych pozostawiamy Czytelnikowi. Najprostszy program przeznaczony do tego celu ma strukturę, przedstawioną w tabeli 17-3.
Tab. 17-3. Program do wygenerowanie funkcji skalujących i falek dla różnych znanych systemów
falkowych
% Ćwiczenie: Generacja funkcji skalujących i falek.
clear all; clf;
niter = 7;
c = 0; d = 1;
% liczba iteracji
% {c=1, d=0} − funkcja skalująca, {c=0, d=1} − falka
% definicja współczynników filtrów h0 i h1 systemu falkowego Db4 (17.62) (17.57)
h0 = [ (1+sqrt(3))/(4*sqrt(2)) (3+sqrt(3))/(4*sqrt(2)) ...
(3-sqrt(3))/(4*sqrt(2)) (1-sqrt(3))/(4*sqrt(2)) ];
N = length(h0); n = 0:N-1;
h1 = (-1).^n .* h0(N:-1:1);
% synteza − według schematu drzewa filtrów z rysunku 17.15
c = [ 0 c 0 ];
% aproksymacje Ω0
d = [ 0 d 0 ];
% detale Π0
c = conv(c,h0) + conv(d,h1);
for n = 1 : niter
for k = 1:length(c)
c0(2*k-1) = c(k);
c0(2*k) = 0;
end
c0 = [ 0 c0 ];
c = conv(c0,h0);
end
plot(c); pause
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
Warunki na funkcję skalującą φ(t) i filtr h0(n)
P o p i e r w s z e , funkcja skalująca φ(t) musi być „dolnoprzepustowa” i unormowana:
+∞
∫ φ(t )dt = 1
(17.45)
−∞
Podstawiając do powyższego równania zależność (17.41) oraz zakładając τ = 2t − n, otrzymujemy:
+∞
 +∞



2
2
2
2
(
)
φ
−
=
h
n
t
n
dt
h
n
(
)
(
)
 ∫ φ( τ)d τ  =
∑
∑
∑ h0 (n ) =1

0
∫ 0
2 n

−∞  n
 −∞
 2 n
(17.46)
skąd wynika, że:
∑ h0 (n) =
(17.47)
2
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 nieparzystych próbek filtra h0(n) powinna być taka sama i równa:
∑ h0 (2n) = ∑ h0 (2n + 1) =
n
n
2
2
(17.49)
P o d r u g i e , wymagamy, aby przesunięcia funkcji skalującej o wartości całkowite były ortonormalne, czyli aby
+∞
∫ φ(t )φ(t − n )dt = δ(n )
(17.50)
−∞
Wykorzystując ponownie równanie (17.41), przekształcamy (17.50) (τ = 2t − m):
+∞

h0 ( m )
∫  ∑
m
−∞


2 φ ( 2t − m )   ∑ h0 ( k ) 2 φ ( 2(t − n) − k )  dt =
 k

 +∞

= 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
Metody czasowo-częstotliwościowej analizy sygnałów
466
i otrzymujemy:
∑ h0 (m )h0 (m − 2n ) = δ(n )
(17.51)
m
Z powyższego równania wynikają następujące zależności dla n = 0 i n ≠ 0:
n = 0:
∑ h02 (m ) = 1
(17.52a)
∑ h0 (m )h0 (m − 2n ) = 0
(17.52b)
m
n ≠ 0:
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
Dla n = p i m = 2p otrzymujemy wtedy warunek h0(2p)h0(0) = 0, z którego wynika, że jeśli
h0(0) ≠ 0, to musi zachodzić równość h0(2p) = 0. Wyciągamy stąd wniosek, że filtr h0(n) musi
mieć parzystą liczbę próbek.
Warunki na falkę ψ(t) i filtr h1(n)
Podobnie z warunków na falkę ψ(t) wyprowadza się zależności na filtr h1(n). Ponieważ chcemy, aby falka ψ(t) była „górnoprzepustowa”, wymagamy aby:
+∞
∫ ψ(t )dt = 0
(17.54a)
−∞
stąd z (17.42) otrzymujemy:
+∞
∫
−∞
ψ(t )dt =
+∞
 +∞



2
2
2
(
)
φ
−
=
φ( τ)d τ  = 0
h
n
t
n
dt
h
n
(
)
(
)

∑
∑


1
1
∫
∫


2 n

−∞  n
 −∞

(17.54b)
Po uwzględnieniu (17.45) dochodzimy do warunku:
∑ 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ęć:
+∞
∫ φ(t )ψ(t − n)dt = 0
(17.56a)
−∞
Po uwzględnieniu w powyższym równaniu zależności (17.41), (17.42) i przekształceniach jak
poprzednio, otrzymujemy równanie analogiczne do (17.52b):
∑ h0 (m )h1 (m − 2n ) = 0
m
(17.56b)
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 dolnoprzepustowego z zera do π, czyli czyni go filtrem górnoprzepustowym.
Ortonormalne systemy falek
W ortogonalnych systemach falkowych filtry syntezy są odwróconymi w czasie filtrami analizy
h0(N − 1−n) i h1(N − 1 − n), n = 0, 1, 2, ..., N − 1. Dodatkowo filtr h1(n) (17.57) zależy w nich od
h0(n), więc wynika stąd, że projektowanie takich systemów sprowadza się do wyznaczenia
jedynie współczynników filtra h0(n).
Jak wykazaliśmy warunkiem istnienia ortogonalnego systemu falkowego jest spełnienie następującego układu równań przez filtr h0(n) (filtr h1(n) jest wyznaczany z (17.57)):
 N −1
 ∑ h0 (n ) = 2
 n =0
 N −1
 h (n )h (n − 2k ) = δ(k ) dla
0
0
 n∑
=0
(17.58)
k = 0, 1, 2, ..., N / 2 − 1
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:
h0 (0) + h0 (1) = 2
(17.59a)
h02 (0) + h02 (1)
(17.59b)
=1
którego jedynym rozwiązaniem jest filtr
1 
 1
hD 2 = {h0 (0), h0 (1) } = 
,

2
 2
(17.60)
generujący prostokątne falki Haara, inaczej zwane także falkami Daubechies [Daub92] drugiego rzędu (w języku Matlab wywoływane parametrem db1). Z kolei dla N = 4 z (17.58)
otrzymuje się:
h0 (0) + h0 (1) + h0 ( 2) + h0 ( 3) = 2
(17.61a)
h02 (0) + h02 (1) + h02 (2) + h02 (4)
(17.61b)
h0 (0)h0 (2) + h0 (1)h0 (3) = 0
=1
(17.61c)
W tym przypadku mamy N/2 + 1 = 3 równania i N = 4 niewiadome. Istniejący stopień swobody
można wykorzystać w różny sposób, np. do zapewnienia jak największej gładkości wynikowej
falki. Jest to rozwiązanie Daubechies czwartego rzędu (w języku Matlab oznaczone jako db2):
Metody czasowo-częstotliwościowej analizy sygnałów
468
1 + 3 3 + 3 3 − 3 1 − 3 
,
,
,
hD 4 = 

 4 2 4 2 4 2 4 2 
(17.62)
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 dodają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:
+∞
mk =
∫t
k
ψ(t )dt , k = 0, 1, 2, ..., M − 1
(17.63)
−∞
Ponieważ z właściwości transformaty Fouriera wynika, że:
mk = ( − j ) − k
d k Ψ (ω)
dωk
ω= 0 ,
k = 0, 1, 2, ..., M − 1
(17.64)
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 =−∞
n k h1 (n ) =
∞
∑
n =−∞
n k ( −1)n h0 ( N − 1 − n ) = 0, k = 0, 1, 2, ..., M − 1
(17.65)
Jego spełnienie gwarantuje, że iloczyn skalarny falki z sygnałem postaci:
x(t ) =
M −1
∑ ak t k
k =0
jest równy zeru. W konsekwencji współczynniki górnopasmowe dm,n rozwinięcia są równe zeru, czyli wielomiany rzędu M − 1 są wyłącznie reprezentowane przez współczynniki dolnopasmowe 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 czasowo-częstotliwościowej analizy/syntezy dowolnego sygnału metodą transformacji falkowej.
Dla dociekliwych. Problemem, który jeszcze pozostaje do rozwiązania, jest „przejście” od
równań (17.63), (17.64) do równania (17.65), stanowiącego dodatkowych M zależności na
współczynniki filtra h0(n). Przychodzi nam tutaj z pomocą częstotliwościowa interpretacja
zależności (17.41) i (17.42). Wiadomo, że w wyniku transformacji Fouriera obu stron tych
równań otrzymujemy:
1
H 0 ( e jω / 2 )Φ ( ω / 2)
2
1
Ψ ( ω) =
H 1 ( e jω / 2 )Φ ( ω / 2 )
2
Φ ( ω) =
(17.d1)
(17.d2)
Dla K-krotnego powtórzenia operacji (17.41), odpowiadające mu równanie (17.d1) przyjmuje
postać:
Metody czasowo-częstotliwościowej analizy sygnałów
469
Tab. 17-4. Program do czasowo-częstotliwościowej analizy/syntezy sygnału metodą transformacji falkowej
% Ćwiczenie: Transformacja falkowa
clear all;
% Parametry programu
% liczba iteracji
% długość sygnału
% Definicja współczynników filtra LP syntezy h0s, np. Db4
niter = 3;
nx = 2^niter*32;
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);
h0a = h0s(N:-1:1); h1a=h1s(N:-1:1);
% filtr HP syntezy
% 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 )

 k =1 2
(17.d3)
Kiedy K → ∞ , mamy:
∞
Φ (ω) = ∏
k =1
1
H 0 ( e jω / 2 k )
2
(17.d4)
∞
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 )
2
2
k =2
(17.d5)
Metody czasowo-częstotliwościowej analizy sygnałów
470
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
t [s]
2.0
2.5
3.0
0
1
2
3
4
5
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
0
5
10 15 20 25 30 35
t [s]
t [s]
1.0
1.0
0.5
0.5
0.0
0.0
-0.5
4 5
t [s]
6
7
8
9
-0.5
0
2
4
6
8 10 12 14 16 18
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
Ponieważ filtr H 0 (e jω / 2 ) jest filtrem dolnoprzepustowym ( H 0 (0) = 2 ), stąd na podstawie
(17.d5), (17.63) i (17.64) wynika, że M pierwszych momentów mk falki będzie równych zeru,
kiedy M pierwszych pochodnych filtra H1 ( e jω ) będzie równych zero dla ω = 0:
d k H1 (e jω )
dωk
= 0, k = 0, 1, 2, ..., M − 1
(17.d6)
ω= 0
czyli kiedy filtr H1 ( e jω ) ma M-krotne zero dla ω = 0 . Ponieważ:
H 1 ( e jω ) =
∞
∑ h1 (n)e − jωn
n = −∞
(17.d7)
Metody czasowo-częstotliwościowej analizy sygnałów
471
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
t [s]
2.0
2.5
3.0
0
1
2
3
4
5
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
0
5
10 15 20 25 30 35
t [s]
t [s]
1.0
0.8
0.5
0.4
0.0
0.0
-0.5
-0.4
-1.0
3
4 5
t [s]
6
7
8
9
-0.8
0
2
4
6
8 10 12 14 16 18
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 = −∞
Z (17.d6) i (17.d8) mamy:
∞
∑
n =−∞
( − jn )k h1 ( n ) = 0, k = 0, 1, 2, ..., M − 1
(17.d9)
czyli
∞
∑
n =−∞
n k h1 (n ) = 0, k = 0, 1, 2, ..., M − 1
(17.d10)
Metody czasowo-częstotliwościowej analizy sygnałów
472
Uwzględniając (17.57) otrzymujemy ostatecznie:
∞
∑
n =−∞
n k ( −1)n h0 ( N − 1 − n ) = 0, k = 0,1, 2, ..., M − 1
(17.d11)
czyli dodatkowych M = N/2 − 1 równań do układu równań (17.58).
17.5. Transformacja Wignera-Ville’a
Czasowo-częstotliwościowa reprezentacja Wignera-Ville’a (WV) spełnia wyjątkową rolę
w analizie częstotliwościowej sygnałów niestacjonarnych, ponieważ idealnie odwzorowuje ona
w przestrzeni TF liniową zmianę częstotliwości oraz inne reprezentacje mogą być z niej uzyskiwane metodą uśredniania (patrz (17.26), (17.32), (17.33)). Jest ona zdefiniowana w sposób
następujący:
(V )
SW
(t , f ) =
x
(V )
SW
(t , f ) =
X
+∞
 τ  τ
x  t +  x *  t −  e − j 2 π f τ dτ
2  2
−∞ 
∫
(17.66a)
+∞
v
v


X  f +  X *  f − e j 2 πvt dv
2
2




−∞
∫
(17.66b)
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 zespolonym, 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 czasowo-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):
x (t ) = e j ( ω0t + 0,5αt
2
)
⇒
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
(V )
SW
( n, k ) =
x
+∞
∑ x ( n + m ) x* ( n − m ) e
473
 4π 
− j k  m
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ę zmodyfikowane 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

S xP −W (V ) ( n, „k / 2” ) = 2 ⋅ Real  ∑ hN ( m)
 m =0
2
z ( n, m ) e
 2π 
j k  m 
N  
 N −1
( M −1)

2
−W (V )
S WP
n
,
„
k
/
2”
2
Real
g M (l )
=
⋅
(
)
 ∑ hN ( m )  ∑
x
 l =−( M −1)
 m =0
gdzie:
(17.69)


2
 2π  
km
N  
 j
z ( n + l , m ) e 

 (17.70)

dla m ≠ 0
 xx (n, m )
z (n, m ) = 
(
)
xx
n
,
m
/
2
dla m = 0

(17.71)
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 punkcie m = l = 0. Szczegółową interpretację równań (17.69) − (17.72) przedstawiono w następnym rozdziale wraz z przykładami ich zastosowań.
Synteza sygnału z dyskretnej reprezentacji WV jest zagadnieniem złożonym, szczegółowo wytłumaczonym w literaturze (np. w [Ziel94c]).
Kończąc to z konieczności krótkie przedstawianie reprezentacji Wignera, należy jeszcze powiedzieć dwa słowa na temat podstawowej wady tej metody analizy, związanej ze zjawiskiem
występowania szkodliwych, pasożytniczych interferencji w otrzymywanych czasowo-częstotliwościowych macierzach widmowych. Operacja mnożenia sygnału przez ten sam sygnał odwrócony w czasie, występująca w definicji reprezentacji Wignera (17.66a), powoduje, że reprezentacja 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:
(V )
W (V )
(V )
(V )
SW
(t , f ) + SW
(t , f ) + S W
x1+ x 2 (t , f ) = S x1
x2
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:
(V )
SW
x , y (t , f ) =
+∞
 τ  τ
x  t +  y *  t −  e− j2π f τd τ
2  2
−∞ 
∫
Metody czasowo-częstotliwościowej analizy sygnałów
474
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 poszczegó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 przestrzeni 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ą sygnały elementarne na zasadzie „każdy z każdym” (rys. 17.18c). Co prawda stosowanie dodatkowego wygładzania (17.70) w pseudoreprezentacji Wignera częściowo eliminuje efekty
pasożytnicze, ale prowadzi do poszerzania („rozmywania”) widma. Oscylacje są także generowane 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.
Tab. 17-5. Program do czasowo-częstotliwościowej analizy sygnału metodą transformacji Wignera
% Ćwiczenie: Czasowo-częstotliwościowa transformacja Wignera
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ęstotliwoś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 zbudować „idealnych” jąder zwracających sygnał monoharmoniczny tylko o jednej częstotliwości,
Metody czasowo-częstotliwościowej analizy sygnałów
476
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]:
S xPoly −W (V ) (t , f ) =
+∞

*
∫ ∏ k =0 [ x (t + ck τ)] k  x (t + c−k τ) 
b
q/2
−∞
− b− k
 − j 2πfτ
dτ
e

oraz afinicznej reprezentacji Wignera-Ville’a [Bert91]:
S XBB (t , f ; λ, µ ) = f ⋅
+∞
∫ { X ( f λ(u)) X
*
}
( f λ( −u )) µ(u ) e j 2 π tf ( λ (u ) −λ ( − u )) du
−∞
W p i e r ws z y m p r z y p a d k u , współczynniki ck i bk dobierane są w zależności od przewidywanego rodzaju modulacji częstotliwościowej, występującej w analizowanym zespolonym sygnale analitycznym. Widmo to może idealnie ,,śledzić” dowolne modulacje częstotliwościowe,
w tym także hiperboliczną. Klasyczna reprezentacja WV (17.66a) jest szczególnym przypadkiem reprezentacji wielomianowej WV dla q = 2, b−1 = −1, b0 = 0, b1 = 1, c−1 = −1/2, c0 =
= 0, c1 = 1/2. Z kolei w d r u g i m p r z y p a d k u , reprezentacja jest definiowana w dziedzinie
częstotliwości, a λ(u) i µ(u) są dowolnymi funkcjami, spełniającymi określone warunki (np.
λ(0) = 1 i µ*(−u) = µ(u)). W zależności od ich postaci wynikowa reprezentacja może idealnie
odtwarzać w przestrzeni czasowo-częstotliwościowej modulacje częstotliwościowe różne od
liniowej (np. zmiana okresu zespolonego sygnału harmonicznego proporcjonalna do czasu lub
do kwadratu czasu). Do rodziny afinicznych reprezentacji czasowo-częstotliwościowych przykładowo należą: reprezentacja tomograficzna Bertranda, aktywna i pasywna reprezentacja Unterbergera oraz reprezentacja Flandrina, dla których mamy:
reprezentacja Bertranda:
λ(u) = u/(1 − exp(−u))
µ(u) = u/(2sinh(u/2))
reprezentacja Flandrina:
λ(u) = (1 + 0,25u)2
µ(u) = 1 − (0,25u)2
reprezentacja Unterbergera:
λ(u) = exp(u/2)
µ(u) = cosh(u/2)
Dla sygnałów dyskretnych istnieją efektywne algorytmy obliczeniowe do jej wyznaczania, wykorzystujące szybką transformację Fouriera [Ziel94].
Równocześnie niewykorzystane możliwości tkwią także w samym jądrze WV. A jakby go zastosować iteracyjnie? Kiedy analizujemy sygnał zespolony x(t) = ejφ(t), którego kąt fazowy jest
opisany np. wielomianem φ(t) = φ0 + at + bt2 + ct3, to po pierwszej iteracji jądra WV otrzymamy
z niego sygnał ejφ1(t), φ1(t) = a + 2bt + 3ct2, po drugiej − sygnał ejφ2(t), φ2(t) = 2b + 6ct, a po
trzeciej − sygnał ejφ3(t), φ3(t) = 6c. Związane jest to z faktem, że jądro WV realizuje operację
różniczkowania fazy sygnału zespolonego. Widząc w widmie Fouriera po trzeciej iteracji tylko
składową stałą, moglibyśmy z częstotliwości prążka widma po drugiej iteracji obliczyć wartość
parametru c, następnie odjąć sygnał exp(jct3) od x(t), mnożąc ten ostatni przez exp(−jct3),
i ponownie zacząć całą operację od początku, tym razem „polując” na wartość parametru
b. Kaskada jąder WV nosi w literaturze nazwę transformacji wielomianowej fazy (Polynomial
Phase Transform) [Pele95]. Z jej zastosowaniem moglibyśmy wyliczyć dla dowolnej chwili
czasowej nie tylko pulsację chwilową, definiowaną jako pochodna kata fazowego po czasie,
ale także pozostałe współczynniki wielomianu kąta fazowego.
Reprezentacje czasowo-częstotliwościowe z klasy Cohena
477
17.6. Reprezentacje czasowo-częstotliwościowe z klasy Cohena
Reprezentacje czasowo-częstotliwościowe z klasy Cohena stanowią bardzo wartościowe uogólnienie transformacji Wignera (Ville’a). Podejście to ostatnio bardzo dynamicznie się rozwija. Proponuje się w nim różne sposoby wygładzania reprezentacji Wignera, w wyniku którego następuje redukcja pasożytniczych interferencji występujących w jego widmie TF. Dobra
rozdzielczość TF reprezentacji Wignera jest w nich w świadomy sposób poświęcana na rzecz
jego większej czytelności. Możliwe jest adaptacyjne dopasowywanie rodzaju wygładzania
w zależności od lokalnych właściwości sygnału.
Biliniowe reprezentacje TF, należące do tej klasy, są zdefiniowane następującym równaniem:
 
τ 
τ 
S xC (t , f ; φ) = ∫∫∫ e j 2 π( ξt − τ f −ξu) φ( ξ, τ; t , f )  x  u +  x *  u −  du dτ dξ
2 
2 
 
(17.73)
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ępujących w wynikowym widmie TF. W zależności od postaci jądra φ(ξ, τ; t, f) są generowane reprezentacje 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żytkowy
Download