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 mn 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 11 cos( πn ) = − π − cos( πn ) + sin(Ωn ) = n π n nn 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π km 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