Podręcznik
Strona: | SEZAM - System Edukacyjnych Zasobów Akademickich i Multimedialnych |
Kurs: | Cyfrowe przetwarzanie sygnałów w systemach pomiarowych |
Książka: | Podręcznik |
Wydrukowane przez użytkownika: | Gość |
Data: | piątek, 4 kwietnia 2025, 20:47 |
1. Wstępne przetwarzanie sygnałów
Naturalne, „surowe” sygnały pozyskane z obiektu pomiarowego często, przed poddaniem ich wnikliwej i szczegółowej analizie, wymagają tzw. przetwarzania wstępnego. To wstępne przetwarzanie może być realizowane zarówno w sposób analogowy, w blokach kondycjonowania sygnału, jak też cyfrowy w komputerze. Podstawowa funkcja, jaką spełniają układy kondycjonowania sygnałów to wzmacnianie. Do wzmacniania sygnałów pomiarowych o niskich poziomach stosuje się dobrej jakości wzmacniacze pomiarowe o programowanym wzmocnieniu (niskoszumne o małym napięciu niezrównoważenia i małych dryftach). Często funkcję wzmacniania sygnałów łączy się z izolacją galwaniczną. Domenę układów kondycjonowania sygnału stanowi, dolnopasmowa (antyaliasingowa) filtracja analogowa. Poza nią do najbardziej popularnych metod kondycjonowania sygnałów zalicza się: usuwanie wartości średniej, usuwanie trendu i dryftu oraz filtrację cyfrową i odszumianie[1].
[1] Zdaniem autorów nie warto w tym miejscu wspominać o metodzie linearyzacji charakterystyk czujników pomiarowych, które obecnie realizuje się w trakcie przetwarzania (cyfrowego) sygnału pomiarowego.
1.1. Usuwanie wartości średniej
Sygnał - to jedno z podstawowych pojęć metrologii. Sygnałem nazywamy określony w funkcji czasu przebieg dowolnej wielkości fizycznej x(t), np.: napięcia, prądu, natężenia pola elektrycznego, naprężeń przęsła mostu, prędkości obrotowej turbiny itp. Po zamianie dowolnego sygnału fizycznego (wielkości fizycznej) na sygnał elektryczny (wielkość elektryczną), mamy do czynienia z sygnałem elektrycznym.
Sygnały opisane analitycznie (zależność matematyczna) lub w inny równoważny sposób, np. graficznie, nazywają się sygnałami zdeterminowanymi, ponieważ ich wartości są określone z góry dla każdej chwili czasu. Najprostszymi sygnałami zdeterminowanymi są:
- sygnał harmoniczny:
gdzie A jest amplitudą, w0 - pulsacją, a j0 - fazą początkową, oraz
- sygnał okresowy:
gdzie T jest okresem, a m - liczbą całkowitą dodatnią.
Sygnały, których wartości nie można z góry określić, nazywamy sygnałami niezdeterminowanymi (losowymi) i mówimy, że stanowią one realizacje procesów losowych. Na potrzeby analizy teoretycznej wprowadza się pojęcia procesów stacjonarnych oraz procesów ergodycznych. Parametry statystyczne procesów stacjonarnych są niezmienne w czasie. W przypadku procesów ergodycznych parametry statystyczne są równoważne parametrom czasowym poszczególnych realizacji, np. wartość oczekiwana jest równa wartości średniej w czasie [21].
W przypadku użycia oscyloskopu do obserwacji sygnału, dokonujemy analizy czasowej, chociaż znając parametry podstawy czasu możemy określić wartość okresu, a więc również wartość częstotliwości powtarzania, dla przebiegów okresowych. Drugi znany sposób pomiaru częstotliwości polega na obserwacji krzywych Lissajou. W żadnym z wymienionych przypadków nie możemy jednak określić tzw. zawartości harmonicznych dla odkształconych (różnych od sinusoidy) przebiegów okresowych. W tym celu należy zastosować tzw. analizę widmową. Pojęcie „analiza widmowa” określa badanie właściwości sygnałów nie w dziedzinie czasowej lecz częstotliwościowej.
Typowy sygnał pomiarowy może zawierać wartość średnią, której estymator w przypadku sygnału ciągłego definiowany jest jako:
W przypadku sygnału dyskretnego:
W celu pozbycia się wartości średniej należy ją od sygnału odfiltrować. Można zastosować technikę sprzężenia zwrotnego zawierającego blok estymacji wartości średniej.
W przypadku, gdy pożądane jest przetwarzanie sygnału w czasie rzeczywistym można użyć jednej z poniżej przedstawionych metod filtracji:
- Sygnały ciągłe mogą być filtrowane za pomocą analogowego filtru dolnopasmowego, co prowadzi w efekcie do całkowania w sposób podobny do opisanego wzorem (1.3).
- Sygnały dyskretne mogą być filtrowane za pomocą cyfrowego filtru dolnopasmowego lub w sposób opisany formułą typu moving average.
Trzeba pamiętać, że równanie (1.5) charakteryzuje powolna zbieżność, stąd początkowe estymaty wartości średniej obarczone są dużym błędem. Natomiast dla dużych wartości N, jest ono niewrażliwe na wszelkie niestacjonarne dryfty w zakresie wartości średniej. W związku z tym należy go używać ostrożnie. Warto zauważyć, że transmitancja tak powstałego filtru ma postać (1.6):
1.2. Usuwanie trendu i dryftu
Istnieje cała gama niestacjonarnych trendów i dryftów, które mogą wystąpić w praktyce i zakłócić podstawowy nurt analizy. Można je z grubsza podzielić na dwie grupy: trend liniowy i dryft sezonowy (rys. 1.1). Nie istnieje jedna, uniwersalna metoda do usuwania tego typu trendów czy dryftów, ale można zaproponować pewne procedury znane i sprawdzone.
Rys. 1.1. Ilustracja trendu i dryftu sygnału pomiarowego
- Filtracja (analogowa lub cyfrowa): Sygnał jest przepuszczany przez filtr dolnopasmowy o odpowiedniej częstotliwości odcięcia, a następnie odejmowany od „surowego” sygnału. Ta metoda jest przydatna do usuwania trendu liniowego i niskoczęstotliwościowych dryftów sezonowych, Jest oczywiste, że nie można jej stosować w przypadku, gdy najniższa częstotliwość w widmie sygnału leży poniżej częstotliwości odcięcia filtru.
- Adaptacyjna filtracja dolnopasmowa (cyfrowa): Metoda podobna do omówionej poprzednio z tym, że tutaj parametry filtru cyfrowego są zmieniane w sposób adaptacyjny, stosownie do zmian długoterminowych właściwości sygnału (stanu źródła). Metoda przydatna w obydwu przypadkach.
- Filtracja pasmowa: Metoda najczęściej używana, lecz uwarunkowana wymaganiem, aby dolna częstotliwość odcięcia filtru pasmowego (a co za tym idzie dolnego pasma sygnału) znacznie przewyższała częstotliwość odcięcia dryftu lub trendu.
- Filtracja górnopasmowa: Metoda akceptowalna pod tym samym warunkiem, co poprzednia.
1.3. Filtracja cyfrowa
Pod pojęciem filtru cyfrowego rozumie się pewien algorytm, który podobnie jak filtr analogowy zdolny jest zmienić charakterystykę widmową sygnału (dyskretnego). Projektowanie filtrów cyfrowych stanowi sztukę samą w sobie. Czytelnik zainteresowany projektowaniem filtrów cyfrowych zmuszony będzie sięgnąć do literatury, po szczegóły. W niniejszym punkcie podany będzie tylko zarys metod filtracji cyfrowej. Symbole użyte w opisie przedstawione są na rysunku 1.2.
Rys. 1.2. Filtracja cyfrowa: x(n) - ciąg wejściowy, y(n) - ciąg wyjściowy
Działanie filtru cyfrowego w dziedzinie czasu opisuje równanie liniowe różnicowe (1.7).
![]() |
(1.7) |
Transmitancję filtru, przy założeniu zerowych warunków początkowych, opisuje się w dziedzinie zmiennej zespolonej (1.8):
![]() |
(1.8) |
Po konfrontacji z równaniem różnicowym liniowym (1.7) przyjmuje ona postać:
![]() |
(1.9) |
W przypadku szczególnym, gdy ciąg wejściowy x(n) ma postać:
![]() |
(1.10) |
ciąg wyjściowy zwany jest odpowiedzią impulsową filtru i równoważny jest odwrotnej transformacie Z transmitancji filtru:
![]() |
(1.11) |
Dla liniowego układu przyczynowego, tzn. gdy h(n)=0, dla n<0:
![]() |
(1.12) |
Zatem:
![]() |
(1.13) |
Warunkiem koniecznym i wystarczającym stabilności filtru jest, aby:
![]() |
(1.14) |
co pociąga za sobą konieczność przynależności biegunów transmitancji H(z) do koła jednostkowego |z|<1.
Struktury filtrów cyfrowych można podzielić na dwie podstawowe grupy:
1. Filtry o skończonej odpowiedzi impulsowej: SOI (Finite Impulse Response: FIR),
dla których:
![]() |
(1.15) |
a co za tym idzie:
![]() |
(1.16) |
Na rys.1.3 przedstawiono przykładową strukturę filtru SOI o transmitancji:
![]() |
(1.17) |
Rys. 1.3. Przykładowa struktura filtru SOI
2. Filtry o nieskończonej odpowiedzi impulsowej: NOI (Infinite Impulse Response: IIR), dla których wielomian w mianowniku (1.9) jest różny od jedności. W formie przykładu, na rys.1.4 przedstawiona została struktura kanoniczna tzw. sekcji bikwadratowej NOI o transmitancji:
![]() |
(1.18) |
Rys. 1.4. Struktura kanoniczna sekcji bikwadratowej NOI
Charakterystyki częstotliwościowe filtru otrzymuje się zakładając poruszanie się po okręgu jednostkowym z=ejq:
![]() |
(1.19) |
gdzie symbol q oznacza pulsację unormowaną.
Projektowanie filtru cyfrowego zasadniczo sprowadza się do dwu metod:
1. Przekształcenie transmitancji filtru analogowego G(s) do postaci dyskretnej
![]() |
(1.20) |
2. Bezpośrednie zaprojektowanie filtru cyfrowego G(z) z odpowiednią charakterystyką częstotliwościową.
Jako przykłady niech posłużą następujące filtry cyfrowe:
Tak opisane filtry (niskiego rzędu) mają oczywiście nienajlepsze charakterystyki częstotliwościowe, szczególnie w sąsiedztwie częstotliwości odcięcia i mogą być traktowane wyłącznie w charakterze przykładów akademickich.
Projektowanie filtrów cyfrowych jest zadaniem bardzo ambitnym. Na szczęście dostępne są bardzo efektywne narzędzia do projektowania filtrów, o charakterze inżynierskim. Należy do nich przede wszystkim pakiet programowy MATLAB.
Projektowanie filtrów w tym środowisku polega na umiejscowieniu charakterystyki w unormowanym układzie współrzędnych (rys.1.5), a następnie, po wywołaniu stosownych funkcji, wyznaczenie najpierw rzędu filtru (parametry N i M), a następnie składowych wektorów współczynników a i b. Podobne narzędzia dostępne są w zintegrowanych pakietach oprogramowania narzędziowego do projektowania wirtualnych przyrządów pomiarowych.
Rys. 1.5. Charakterystyka amplitudowa filtru w unormowanym układzie współrzędnych
1.4. Odszumianie sygnałów
Właściwie należałoby w tym miejscu również powiedzieć, że odszumianie sygnałów stanowi sztukę samą w sobie. Stosuje się bowiem w tym zakresie bardzo wyrafinowane techniki, z których najbardziej popularne polegają na zastosowaniu transformaty falkowej oraz transformaty składowych głównych. W każdym przypadku, najpierw realizuje się przekształcenie proste, potem eliminację selektywnie wybranych współczynników i wreszcie przekształcenie odwrotne. Przykład odszumiania z zastosowaniem metody falkowej zamieszczono na rys.1.6. Widać tam sygnał oryginalny (zaszumiony), sygnał odszumiony oraz wyeliminowany sygnał szumowy.
Rys. 1.6. Przykładowe zobrazowanie procesu odszumiania
2. Analiza widmowa Fouriera
Analiza widmowa Fouriera sygnałów jako superpozycja funkcji sinus i cosinus jest obecnie niemal wszechobecna w dziedzinie identyfikacji i analizy sygnałów pomiarowych. Użyteczność transformaty Fouriera zawiera się w jej zdolności do analizy przebiegu czasowego sygnału pod kątem jego „zawartości częstotliwościowej”. Zastosowana w tym celu transformacja sygnału polega na przetworzeniu funkcji opisanej w dziedzinie czasu na funkcję opisaną w dziedzinie częstotliwości. Dopiero wtedy, sygnał może być analizowany pod kątem jego właściwości częstotliwościowych. W przypadku transformaty dyskretnej, współczynniki transformaty reprezentują udział każdej ze składowych przebiegów typu sinus i cosinus w funkcji ich częstotliwości.
Na potrzeby analizy widmowej niezbędne jest wprowadzenie klasyfikacji sygnałów na sygnały o ograniczonej energii (rys.2.1):
![]() |
(2.1) |
Rys. 2.1. Przykład sygnału o ograniczonej energii
oraz sygnały okresowe o ograniczonej mocy średniej (rys.2.2):
![]() |
(2.2) |
Rys. 2.2. Fragment sygnału okresowego o ograniczonej mocy średniej
Dla ciągłego sygnału analogowego x(t) o ograniczonej energii definiuje się pojęcie widma X(w)[1] za pomocą tzw. ciągłej transformaty Fouriera:
![]() |
(2.3) |
określanej też mianem transformaty całkowej. Na odtworzenie sygnału z jego widma pozwala transformata odwrotna:
![]() |
(2.4) |
W obydwu wzorach w = 2pf = 2p/T oznacza pulsację.
W przypadku sygnału okresowego xp(t) (periodycznego, stąd symbol p) wyznaczenie widma jest bardziej proste i polega na rozwinięciu jednego jego okresu w zespolony szereg Fouriera:
![]() |
(2.5) |
gdzie współczynniki tego rozwinięcia Xpk stanowią dyskretne widmo sygnału, i można je wyliczyć za pomocą całki Fouriera zastosowanej do pojedynczego okresu:
![]() |
(2.6) |
W obydwu wzorach w0 = 2pf0 = 2p/T stanowi pulsację sygnału okresowego.
W ogólności składowe widma są liczbami zespolonymi, a więc można im przyporządkować pewną amplitudę i fazę. Oczywiście można je również zapisać w postaci trygonometrycznej. Na rys.2.3 zamieszczono zestaw przebiegów wyjaśniających zasadę syntezy fali prostokątnej, z przebiegów harmonicznych o zerowej fazie początkowej. Jest to proces odwrotny w stosunku do tego, co obserwujemy w trakcie analizy widmowej. Do syntezy wykorzystano, w sposób stopniowy następujące sygnały:
![]() |
(2.7) |
![]() |
(2.8) |
![]() |
(2.9) |
![]() |
(2.10) |
Jak widać sygnały te otrzymano drogą sumowania nieparzystych harmonicznych o amplitudach proporcjonalnych do 1/n, gdzie n oznacza numer harmonicznej. Na rysunku 2.3 widać wyraźnie jak liczba składowych (nieparzystych harmonicznych) wpływa na kształt przebiegu wynikowego.
Rys. 2.3. Przykład kolejnego sumowania nieparzystych harmonicznych: 1 – x1(t), 2 – x3(t), 3 – x5(t)
Poszczególnym fragmentom widma, tak zdefiniowanego sygnału, przypisuje się pewne szczególne nazwy i znaczenie zgodne z interpretacją zjawisk fizycznych (rys.2.4). Prążek znajdujący się na pozycji zerowej, prążek zerowy, jest określany mianem składowej stałej przebiegu. Prążek z nim sąsiadujący nosi nazwę podstawowej harmonicznej, zaś wszystkie pozostałe określane są mianem wyższych harmonicznych.[2]
Rys. 2.4. Przykładowe widmo sygnału
Wyznaczanie ciągłego widma sygnału (całkowa transformata Fouriera), czyli analiza widmowa, wymaga stosunkowo skomplikowanych obliczeń matematycznych [22]. Na szczęście, po przejściu do przypadku dyskretnego, obliczenia te mogą być wykonywane za pomocą komputera. Przedtem jednak należy wybrany fragment realizacji sygnału wczytać do pamięci komputera. Wymaga to uprzedniego przetworzenia tego sygnału do postaci cyfrowej, a więc próbkowania i kwantyzacji. W praktyce pomiarowej, gdy mamy do czynienia z sygnałami niezdeterminowanymi, napotykamy pewne trudności, których podstawową przyczyną jest właśnie tzw. skończony czas obserwacji sygnału. Do analizy widmowej, z konieczności, przeznaczony zostanie tylko pewien jego fragment - np. część zaznaczona linią przerywaną na rys. 2.5, zawierająca L próbek.
Rys. 2.5. Obraz fragmentu sygnału przeznaczonego do analizy
Mówimy w takim przypadku, że na sygnał nałożone zostało okno czasowe o kształcie prostokątnym, zgodnie z zależnością (2.11).
![]() |
(2.11) |
Wyznaczenie widma polega, w takim przypadku, na zastosowaniu algorytmu Dyskretnej Transformaty Fouriera (Discrete Fourier Transform: DFT). Każdy prążek widma wyznacza się z zależności:
![]() |
(2.12) |
Przykładowy obraz dyskretnego widma sygnału rzeczywistego, uzyskany w jednym ze wspomnianych już środowisk inżynierskich (LabWinows/CVI, MATLAB) przedstawiono na rys. 2.6.
Rys. 2.6. Przykładowy obraz dyskretnego widma sygnału rzeczywistego
Zastosowanie algorytmu odwrotnej Dyskretnej Transformaty Fouriera (Inverse Discrete Fourier Transform: IDFT), umożliwia odtworzenie ciągu próbek sygnału (2.13).
![]() |
(2.13) |
Przy czym, ponieważ idea Dyskretnej Transformaty Fouriera wymaga „spróbkowania widma”, sygnał odtworzony przyjmuje formę okresową, tzn. następuje powielenie na osi czasu fragmentu sygnału przyjętego do analizy (rys. 2.7).
Rys. 2.7. Przykład sygnału odtworzonego z dyskretnego widma
Z rysunku wynika, że przypadkowość polegająca na „wycięciu z kontekstu” fragmentu sygnału (do analizy) objawiać się może w znaczącym odkształceniu przebiegu sygnału na krańcach przedziału po jego odtworzeniu. Znajduje to swoje odzwierciedlenie w widmie sygnału. Skutecznym sposobem ograniczenia niekorzystnego wpływu tego efektu na przebieg analizy jest uprzednie „odkształcenie” tego wycinka sygnału przez zastosowanie okna czasowego o kształcie odmiennym od prostokątnego. Znanych i stosowanych jest wiele różnych kształtów okien czasowych. Zwykle, kształt takiego okna w sposób łagodny tłumi do zera amplitudy próbek sygnału na krańcach przedziału. Nie ma recepty na dobór kształtu okna czasowego. Są jednak kryteria pozwalające ocenić właściwości okna w dziedzinie częstotliwości i dobrać okno stosownie do potrzeb. Często, choć nie jest to sposób zalecany, dobiera się je w sposób eksperymentalny, obserwując kształt widma.
W szczególnym przypadku, gdy mamy do czynienia z dyskretnym sygnałem okresowym o okresie N (L=N), do analizy możemy przeznaczyć wycinek będący wielokrotnością okresu. Wtedy mamy do czynienia z przypadkiem synchronicznej analizy widmowej, nie wymagającej użycia okien czasowych o wymyślnych kształtach.
Podsumowanie powyższych rozważań stanowi treść rysunku 2.8, na którym zamieszczono przykład analizy widmowej sygnału harmonicznego o częstotliwości fh=Kfp/L. Jak z niego wynika, w przypadku ogólnym, na całościowy obraz wyników analizy widmowej składają się trzy wskazane tam elementy: wynik analizy synchronicznej, efekt asynchroniczności, efekt kwantyzacji próbek. Na rysunku, dla przejrzystości, zamieszczono tylko obwiednie fragmentów widma leżących po obydwu stronach prążka głównego.
Rys. 2.8. Wpływ poszczególnych efektów na wyniki analizy widmowej
Obliczenia widma sygnału dokonuje się przy użyciu specjalnego programu do wyznaczania transformaty Fouriera. Program taki można napisać wykorzystując algorytm numeryczny, który powszechnie jest znany pod nazwą Szybkiej Transformaty Fouriera (STF). Częściej używana jest jego nazwa angielska: Fast Fourier Transform (FFT). Algorytm ten został tak skonstruowany, aby obliczenia prowadzone były jak najszybciej, a przetwarzanie sygnału mogło odbywać się na bieżąco (czyli w czasie rzeczywistym).
Podstawowy parametr analizy widmowej to rozdzielczość widma: Df. Jest ona równa ilorazowi zakresu częstotliwościowego, (równoważnego fp) i liczby prążków widma L (rozmiar transformaty) (2.14):
![]() |
(2.14) |
Ta zależność umożliwia skuteczne wyskalowanie osi częstotliwości (zastąpienie indeksów próbek widma wartościami częstotliwości) – co nierzadko, z definicji leży w gestii użytkownika jednego z wymienionych wcześniej programów (i nie zawsze jest dla niego przyjazne)[3]. Dla wygody obliczeń, a ściślej, możliwości wykorzystania algorytmu FFT, przyjmuje się L=2n, np. 128, 256, 512, 1024 itd.
W praktyce bardzo często do zobrazowania widma stosuje się charakterystykę logarytmiczną w zakresie amplitud. Dotyczy to przypadków, kiedy w widmie sygnału występują ważne składowe, lecz o bardzo małych amplitudach. Dodatkowo, okazuje się, że duże znaczenie praktyczne ma funkcja (przebieg), która powstaje po wyznaczeniu odwrotnej transformaty Fouriera z logarytmicznego widma sygnału. Określa się ją mianem cepstrum. Nazwa ta powstała drogą zmiany porządku grup liter w słowie spectrum, które oznacza widmo w języku angielskim. Jak łatwo zauważyć jest to funkcja czasu lecz okazuje się, że jej przebieg znacznie odbiega od kształtu segmentu sygnału wybranego do analizy i niesie szereg cennych informacji o sygnale.
Celem przygotowania się do dyskusji na temat czasowo-częstotliwościowych aspektów analizy warto przypomnieć, że w zapisie z użyciem iloczynu skalarnego transformata Fouriera przyjmuje postać:
![]() |
(2.15) |
Właściwości transformaty Fouriera weryfikuje się w obszarze takich zagadnień jak:
- Liniowość:
![]() |
(2.16) |
- Przesunięcie i skalowanie w czasie:
![]() |
(2.17) |
![]() |
(2.18) |
- Przesunięcie i skalowanie w częstotliwości
![]() |
(2.19) |
![]() |
(2.20) |
- Momenty:
![]() |
(2.21) |
- Splot:
![]() |
(2.22) |
![]() |
(2.23) |
W celu poparcia rozważań teoretycznych dotyczących wyznaczania widma sygnałów o ograniczonej energii, poniżej podano wybrane przykłady, które znajdują zastosowanie w analizie czasowo-częstotliwościowej.
|
|
a) | b) |
![]() |
(2.24) |
Dla T=0.5, otrzymuje się funkcję charakterystyczną określaną mianem B-spline rzędu I-go
Przykład 2: Impuls trójkątny: Tr(t) = r(t)*r(t)
Rys. 2.10. Impuls trójkątny
Widmo tego impulsu:
![]() |
(2.25) |
W tym przypadku dla T=0.5, otrzymuje tzw. B-spline rzędu II-go. Łatwo zauważyć, że kolejne funkcje typu spline otrzymuje się drogą realizacji splotu w dziedzinie czasu. Ich widma wyznacza się drogą iloczynu widm, a ściśle biorą podnoszenia widma do kwadratu. Dla przypadku rzędu II-go mamy:
![]() |
(2.26) |
Rys. 2.11. Impuls Gaussa i jego widmo
[1] Podana definicja dotyczy widma amplitudowego. Do analizy częstotliwościowej sygnałów losowych często stosuje się funkcję widmowej gęstości mocy. Jest ona definiowana jako transformata Fouriera funkcji autokorelacji [22].
[2] W ogólnym przypadku składowe widma nie muszą występować w związku harmonicznym między sobą.
[3] Pełny zakres widma (L) równoważny jest wartości częstotliwości próbkowania fp. Oś symetrii widma leży w połowie tego zakresu – fp/2.
(2.) |
3. Analiza czasowo-częstotliwościowa
Należy podkreślić, że tradycyjna analiza częstotliwościowa nie nadaje się do obserwacji właściwości sygnałów niestacjonarnych, o parametrach zmiennych w czasie. Wymagana jest tutaj analiza wykorzystująca łączne czasowo-częstotliwościowe reprezentacje sygnałów. Rodzina reprezentacji czasowo-częstotliwościowych jest bardzo duża. Ogólnie mogą być one podzielone na reprezentacje typu czas-częstotliwość oraz czas-skala, a interpretowane jako rodzaj tzw. krótkoczasowej analizy widmowej [6, 15,16].
3.1. Krótkoczasowa transformata Fouriera
Jeżeli mamy do czynienia z sygnałem nieokresowym, sumowanie funkcji okresowych typu sinus i cosinus, nie może dać wiarygodnej reprezentacji sygnału. Sygnał ten można w sposób sztuczny doprowadzić do okresowości, ale wymaga to zadbania o zachowanie ciągłości na krańcach przedziałów. Tak zwana Krótkoczasowa Transformata Fouriera (Short Time Fourier Transform – STFT) jest skutecznym narzędziem rozwiązania problemu budowania reprezentacji widmowej funkcji nieokresowej.
Krótkoczasowa Transformata Fouriera umożliwia wydobycie z sygnału informacji o tym, jak zmienia się jego widmo w czasie, czyli jednoczesną obserwację jego właściwości zarówno w dziedzinie czasu jak i częstotliwości. Wycinek sygnału (blok próbek o rozmiarze L) przeznaczony do analizy zostaje podzielony na segmenty, a każdy segment podlega analizie widmowej niezależnie. Podobnie jak w przypadku tradycyjnym, aby usunąć gwałtowne zmiany (cięcia) sygnału na krańcach przedziałów, stosuje się wymyślne okna czasowe w odniesieniu do wspomnianych sekcji. Sukcesywne „przesuwanie okna czasowego” umożliwia lokalizację parametrów widmowych sygnału w czasie.
Ten proces daje się zapisać za pomocą prostego równania:
![]() |
(3.1) |
w którym j () opisuje funkcję okna czasowego. Przesuwając okno j () w czasie, wzdłuż sygnału, wyznacza się jego zawartość widmową wewnątrz przedziału czasowego, którego długość jest określona szerokością okna. Kształt okna czasowego odgrywa kluczową rolę w przypadku STFT. Iloczyn szerokości okna w dziedzinie czasu i szerokości okna w dziedzinie częstotliwości jest wielkością stałą dla danego okna. Stąd też, poprawiając rozdzielczość w dziedzinie czasu, będziemy ją pogarszać w dziedzinie częstotliwości i odwrotnie. Zatem szerokość okna wybierana jest na drodze kompromisu.
Przechodząc do konkretów, załóżmy, że j (t)ÎL2 (Â), jest funkcją rzeczywistą i opisuje kształt okna czasowego. Efekt zastosowania okna czasowego opisuje zależność:
![]() |
(3.2) |
Dla przypadku okna prostokątnego (rys.3.1):
Rys. 3.1. Prostokątne okno czasowe
Efekt działania prostokątnego okna czasowego opisuje zależność (3.3).
![]() |
(3.3) |
Teoretycznie, funkcja nie może być jednocześnie ograniczona w dziedzinie czasu i w dziedzinie częstotliwości. Jednak, przy tak zdefiniowanych promieniach okien, można osiągnąć jednoczesną ich ograniczoność w dziedzinie czasu i częstotliwości. W takim przypadku j(t) określa się mianem okna czasowo-częstotliwościowego. Niestety, okno prostokątne nie jest tutaj dobrym przykładem, gdyż Dj = 3-1/2, a DF = ¥. Wynika stąd jasno, że jest to idealne okno czasowe i jednocześnie najgorsze, wręcz nieakceptowalne okno częstotliwościowe.
Miarą jakości okna czasowo-częstotliwościowego jest iloczyn promienia w dziedzinie czasu i częstotliwości, czyli „pole” okna położonego na płaszczyźnie t/f. Przy czym zgodnie z zasadą nieoznaczoności:
![]() |
(3.4) |
W kontekście powyższych rozważań, krótkoczasową transformatę Fouriera (STFT) sygnału x(t), w odniesieniu do okna j(t) rozmieszczonego w pozycji (t,x) na płaszczyźnie t/f zdefiniować można jako:
![]() |
(3.5) |
Dopuszcza się, aby j(t) było funkcją zespoloną i w związku z tym musi spełniać uogólniony warunek zapewniający, że F(w) stanowi filtr dolnopasmowy:
![]() |
(3.6) |
W odróżnieniu od tradycyjnej transformaty Fouriera, dla której, do wyznaczenia pojedynczej składowej, konieczna jest znajomość funkcji x(t) na całej osi czasu, w tym przypadku wymagana jest znajomość x(t) tylko w przedziale określonym przez położenie j(t-t).
Niezwykle interesujące jest podejście przyjmujące, że w STFT okno j(t) użyte jest do modulacji sygnału sinusoidalnego e-jxt. Wyrażenie opisujące STFT przyjmuje wtedy postać:
![]() |
(3.7) |
Można powiedzieć, że funkcja:
![]() |
(3.8) |
zachowuje się tak jak pakiet fal, gdzie sinusoida oscyluje wewnątrz okna j(t). Każdy pakiet traktować można jako pewną funkcję bazową. Podejście to pozwala traktować STFT jako rozkład x(t) na składowe należące do tak zdefiniowanej bazy na płaszczyźnie t/f.
Funkcję xt(t) można odtworzyć wyznaczając odwrotną transformatę Fouriera o postaci:
![]() |
(3.9) |
Funkcję oryginalną x(t), natomiast otrzyma się dopiero po przebiegnięciu wszystkich pozycji położenia okna:
![]() |
(3.10) |
Transformata Gabora
Znany jest pewien przypadek szczególny dla STFT, w którym okno czasowe ma kształt gaussowski:
![]() |
(3.11) |
Okazuje się, że widmo tego okna ma również kształt gaussowski:
![]() |
(3.12) |
Przypadek ten spełnia warunki okna czasowo-częstotliwościowego o parametrach:
Okno to, od nazwiska pierwszego użytkownika, nosi miano okna Gabora [10]. Miara jakości okna Gabora wynosi:
![]() |
(3.13) |
i osiąga dolną granicę zasady niepewności.
Idea analizy czasowo-częstotliwościowej z użyciem transformaty Gabora, przedstawiona jest na rys.3.2.
Rys. 3.2. Zobrazowanie idei STFT na płaszczyźnie t/f
Analityczny zapis tej transformaty przedstawia zależność (3.14):
![]() |
(3.14) |
Właściwości STFT
Właściwości krótkoczasowej transformaty Fouriera ułatwiają zrozumienie istoty analizy czasowo-częstotliwościowej. Poniżej przedstawiono trzy najbardziej istotne:
![]() |
(3.15) |
(3.16) |
Oznacza to, że jeżeli położenie oryginalnej funkcji x(t) zostanie przesunięte w czasie o t0, to lokalizacja widma na płaszczyźnie t/f zostanie również przesunięta o t0 w czasie, a lokalizacja częstotliwościowa pozostanie bez zmian. Dodatkowo pojawi się przesunięcie fazowe proporcjonalne do t0.
(3.17) |
Powyższa zależność potwierdza, że w przypadku „przesunięcia” funkcji x(t) w dziedzinie częstotliwości, widmo STFT zostaje również przesunięte na osi częstotliwości bez zmiany amplitudy i fazy.
Do celów obliczeń numerycznych, jak zwykle wprowadza się pojęcie Dyskretnej Transformaty Gabora, określanej w skończonym zbiorze punktów na płaszczyźnie t/f. Wtedy:
(3.18) |
Funkcja x(t) może zostać odtworzona na podstawie zależności określanej mianem rozkładu Gabora:
![]() |
(3.19) |
Współczynnikami tego rozkładu są liczby Gn,k= G(tn,xk). W kontekście powyższego warto podać uogólnioną formułę rozkładu Gabora, w której występuje pakiet fal sinusoidalnych zmodulowanych za pomocą okna gaussowskiego o symbolu jn,k(t):
![]() |
(3.20) |
Pakiet ten określany jest mianem bazy rozkładu Gabora. Baza ta, z uwagi na gaussowski kształt okna o minimalnym rozmiarze na płaszczyźnie t/f, uchodzi za optymalną w sensie budowy reprezentacji sygnału.
Poniżej (rys.3.3) podany jest przykład zastosowania rozkładu STFT do sygnału o postaci [10]:
![]() |
(3.21) |
dla różnych szerokości (promieni) Dt okna czasowego j(t).
W pierwszym przypadku, dla szerokiego okna czasowego, otrzymuje się bardzo dobrą rozdzielczość częstotliwościową i bardzo słabą rozdzielczość czasową. W miarę zwężania okna czasowego poprawia się rozdzielczość czasowa kosztem częstotliwościowej. Dla dobrego zobrazowania wszystkich elementów składowych sygnału, trzeba zmieniać parametry okna czasowo-częstotliwościowego i za każdym razem, od nowa wyznaczać STFT. Wymaga to dużych nakładów obliczeniowych.
Na zakończenie tego punktu na kolejnych rysunkach pokazano praktyczne wyniki analizy t/f, przeprowadzonej z użyciem transformaty Gabora, za pomocą wirtualnych przyrządów pomiarowych [11][1]. W obydwu przypadkach użyte zostały bardzo charakterystyczne sygnały, ułatwiające interpretację rozkładów widmowych [16]. W pierwszym przypadku (rys.3.4) jest to sygnał złożony z segmentów powstałych w wyniku skokowej zmiany częstotliwości, a w drugim (rys. 3.5) sygnał o zmodulowanej częstotliwości ze zmiennością wykładniczą.
Rys. 3.3. Przykład zastosowania rozkładu STFT dla czterech różnych szerokości okna czasowego
Rys. 3.4. Praktyczny wynik analizy t/f, przeprowadzonej z użyciem transformaty Gabora
Rys. 3.5. Praktyczny wynik analizy t/f, przeprowadzonej z użyciem transformaty Gabora
Podsumowanie właściwości aplikacyjnych STFT:
- Dt i Dw - nie zależą od położenia na płaszczyźnie (t/f).
- ustalona rozdzielczość czasowo – częstotliwościowa
- W analizie czasowo-częstotliwościowej wskazane byłoby posługiwanie się oknem strojonym:
- szerokie w czasie (wąskie w częstotliwości) dla małych częstotliwości
- wąskie w czasie (szerokie w częstotliwości) dla dużych częstotliwości.
[1] Przyrządy opracowane w Zakładzie Miernictwa Elektrycznego IETiME PW w ramach projektu badawczego
4. Analiza falkowa
Z zasady działania transformaty Fouriera wynika jasno, że rozdzielczość czasowa analizy dokonanej z jej pomocą, nie jest zadowalająca. Innymi słowy, jeżeli analizujemy sygnał, który zmienia się gwałtownie z poziomu –1V do +1V to do jego opisu musimy użyć bardzo dużej liczby współczynników (teoretycznie – nieskończenie wiele), a ponadto nie jesteśmy w stanie określić chwili czasu, w której ta zmiana nastąpiła. Dla jej określenia możemy oczywiście użyć opisanego algorytmu STFT. Jednakże, znaczącą poprawę jakości analizy otrzymamy dopiero po „umiejętnym” zastosowaniu metody falkowej.
W przypadku transformaty falkowej, najbardziej charakterystyczne jest to, że w odróżnieniu od funkcji sinus i cosinus (charakterystycznych dla transformaty Fouriera), indywidualne funkcje falkowe są dobrze zlokalizowane w czasie (lub przestrzeni – dla obrazów) i jednocześnie podobnie jak sinus i cosinus, indywidualne falki są dobrze zlokalizowane w częstotliwości, ściśle biorąc tzw. skali. Ponadto w odróżnieniu od funkcji sinus i cosinus, które definiują unikalną transformatę Fouriera, nie ma pojedynczego, unikalnego zbioru falkowych funkcji bazowych. Falki różnią się między sobą zwartością lokalizacji czasowej oraz płynnością i gładkością kształtów. Wynikająca stąd zdolność falek do opisu sygnałów „z nieciągłościami”, przy ograniczonej liczbie współczynników oraz z lokalizacją w czasie, stanowi o jej przewadze nad transformatą Fouriera. Zaryzykować można stwierdzenie, że analiza falkowa jest „lokomotywą” w dziedzinie cyfrowego przetwarzania sygnałów.
Na rys. 4.1 zilustrowano ideę czterech znanych metod analizy sygnałów: czasową, częstotliwościową, czasowo-częstotliwościową (STFT) oraz falkową. Widać na nim wyraźnie, że w odróżnieniu od metody STFT, gdzie rozdzielczość czasowo-częstotliwościowa jest ustalona na całej płaszczyźnie t/f, w metodzie falkowej rozmiary okna czasowo-częstotliwościowego są funkcją jego położenia na tej płaszczyźnie.
Analiza czasowa |
Analiza częstotliwościowa
|
Analiza STFT |
Analiza falkowa |
Rys. 4.1. Porównanie metod analizy: czasowa (obserwacja właściwości sygnału w dziedzinie czasu), częstotliwościowa (obserwacja właściwości sygnału w dziedzinie częstotliwości), STFT (obserwacja właściwości sygnału na płaszczyźnie czas-częstotliwość), falkowa (obserwacja właściwości sygnału na płaszczyźnie czas-skala)
Swoją niezwykłą efektywność, a zarazem popularność w zakresie analizy sygnałów, transformata falkowa zawdzięcza szybkiemu algorytmowi, opracowanemu przez Mallata w roku 1989, zwanemu piramidą Mallata [13]. Algorytm ten wykorzystywany jest do uzyskania dekompozycji sygnału na składowe falkowe z użyciem tzw. kwadraturowych filtrów lustrzanych. Zastosowane w nim podejście wielorozdzielcze przenosi metodę falkową w realia kodowania podpasmowego.
Chociaż zakres pozycji literaturowych poświęconych metodzie falkowej jest niesłychanie rozległy [7, 10,13], to ogromna większość spośród nich pisana jest przez specjalistów dla specjalistów. Istnieją pozycje polskojęzyczne [2, 20]. Na szczególną uwagę zasługuje pozycja [22]. Celem tego rozdziału jest przybliżenie czytelnikowi praktycznych aspektów analizy falkowej, co miejmy nadzieję, będzie pomocne w zrozumieniu idei oraz prowadzeniu eksperymentów w tej dziedzinie [16].
Ciągłą (całkową) transformatę falkową (Continuous Wavelet Transform: CWT) funkcji x(t)ÎL2 dla pewnej falki y(t) definiuje się jako:
![]() |
(4.1) |
We wzorze tym parametr s oznacza skalę, zaś t – przesunięcie, co odpowiada ich funkcjom pełnionym w zapisie wzoru falkowego. Po to, aby funkcja y(t) mogła stanowić funkcję okna, a także być wykorzystana do odtworzenia x(t) musi spełniać warunek:
![]() |
(4.2) |
Ściśle biorąc, ciągła transformata falkowa osadzona jest więc w przestrzeni czas-skala (t/s), a nie czas-częstotliwość (t/f). Jednakże, w konkretnym przypadku, po dokonaniu odpowiedniej transformacji można przeliczyć skalę na częstotliwość. Miarą częstotliwości jest 1/s. Parametr t symbolizuje lokalizację okna wzdłuż osi czasu. Wyrażenie (4.2) natomiast wymusza oscylacje falek, które nie były wymagane w stosunku do okna STFT. Jednakże definitywnie yt,s(t) zajmuje miejsce jt,x(t) i zachowuje się tak jak funkcja okna. Natomiast widmo tego okna Y(w=0) = 0 i odwzorowuje filtr pasmowy.
Warto przy tym zwrócić uwagę, że iloczyn promieni okien, czasowego i częstotliwościowego, ma wartość stałą na całej płaszczyźnie:
![]() |
(4.3) |
Położenie okna czasowo-częstotliwościowego na płaszczyźnie t/f, dla transformaty falkowej, pokazano na rys.4.2.
Rys. 4.2. Zobrazowanie idei transformaty falkowej na płaszczyźnie t/f
Podobnie jak w przypadkach DFT oraz STFT definiuje się pojęcie dyskretnej transformaty falkowej (Discrete Wavelet Transform: DWT). W tym celu przyjmuje się, że:
![]() |
(4.4) |
co w konsekwencji, po dodatkowym przyjęciu założenia o dyskretyzacji x(t), daje nową formę zapisu transformaty:
(4.5) |
Warto pamiętać, że transformata falkowa nie spełnia warunku niezmienności względem przesunięcia, a przesunięcie funkcji w czasie: xm(t)=x(t-tm), objawia się w dziedzinie falkowej raczej w sposób bardzo nieprzyjazny [10]:
(4.6) |
Na tym etapie rozważań można się pokusić o sformułowanie wyrażenia na szereg falkowy, który istnieje dla dowolnej funkcji x(t)ÎL2:
![]() |
(4.7) |
Jeżeli zatem {<i><span style="font-family:Symbol">y</span></i><sub>k,s</sub>(<i>t</i>)} tworzy ortonormalną bazę w przestrzeni L2(Â) to podobnie jak w przypadku szeregu Fouriera:
![]() |
(4.8) |
Okazuje się, że w odróżnieniu od transformaty Fouriera szereg falkowy otrzymuje się po spróbkowaniu transformaty ciągłej na płaszczyźnie t/f, w wybranych punktach diadycznych: (l2-s, 2-s). Analiza jest utrudniona, gdy baza {<i><span style="font-family:Symbol">y</span><sub>k,s</sub></i>(<i>t</i>)} nie spełnia warunku ortonormalności. Wymaga to zdefiniowania tzw. falki dualnej i sformułowania bazy: [10, 13].
W tabeli 4.1 zamieszczono przykłady skalowania funkcji dla przypadku sinusoidy oraz pewnej (typowej) falki (a - współczynnik skali). W przypadku sinusoidy istnieje ścisłe odwzorowanie skala-częstotliwość, dla falki nie jest ono tak oczywiste. W związku z tym, jak już wspomniano wcześniej, pozostaje się przy pojęciu skalowania.
Tabela 4.1 Przykłady skalowania funkcji
a=1 |
Wysoka skala a=1 |
||
a=2 |
Średnia skala a=2 |
||
a=4 |
Nska skala a=4 |
||
Proces skalowania falki może przebiegać w dwu kierunkach, określa się je mianem kompresji (ściskania) lub rozciągania. W tabeli 4.1 do skalowania falki zastosowano kompresję.
Drugi parametr rozkładu falkowego to przesunięcie. Ilustracja przesuwania w czasie zawarta jest w tabeli 4.2.
Tabela 4.2 Ilustracja przesuwania w czasie falki
![]() |
![]() |
![]() |
Na tle powyższych rozważań można, w sposób opisowy, zdefiniować proces rozkładu falkowego. Zawiera on 5 charakterystycznych kroków (tabela 4.3).
Tabela 4.3 Ilustracja rozkładu falkowego
1. Wybraną falkę ustawić na początku fragmentu sygnału przeznaczonego do analizy,Wyznaczyć umowną wartość liczbową odpowiadającą korelacji między bieżącą falką i odpowiadającym jej segmentem sygnału. Uwaga! – w przypadku unormowania energii sygnału w aspekcie użytej falki, wspomniana liczba będzie równoważna wartości współczynnika korelacji wzajemnej między falką, a wybranym segmentem sygnału. |
|
2 .Przesunąć falkę o jeden cykl w prawo i powtórzyć działanie opisane w kroku 2. Sekwencję kroków 3,2 powtarzać aż do końca trwania sygnału. |
|
3. Rozciągnąć falkę i powtórzyć kroki od 1 do 3. 4. Powtórzyć kroki od 1 do 4 aż do wyczerpania wszystkich skal. |
Powyższy przykład operuje w obrębie tzw. diadycznego charakteru zmian w obrębie skali i przesunięcia charakterystycznych dla dyskretnej transformaty falkowej (DWT). Pod pojęciem ciągłej transformaty falkowej (CWT) kryje się sposób umożliwiający użycie dowolnej, zmienianej w sposób ciągły skali oraz ciągłego przesunięcia w czasie. Oczywiście, w kontekście sygnałów dyskretnych ciągłość, w obydwu wskazanych przypadkach, oznacza zmiany w obrębie jednej próbki sygnału (co jedną próbkę),
Należy zauważyć, że w analizie falkowej wyższa skala równoważna jest bardziej rozciągniętej falce (patrz tabela 4.1). Im bardziej rozciągnięta falka (wyższa skala) tym większa sekcja sygnału, z którą jest porównywana i tym bardziej zgrubne cechy sygnału wyeksponowane za pomącą odpowiadającego jej współczynnika. Podsumowanie tego spostrzeżenia zawarto w tabeli 4.4
Tabela 4.4 Charakterystyka analizy falkowej
Niska skala analizy falkowej |
Ściśnięta falka |
Szybkozmienne |
Wysoka częstotliwość analizy |
Wysoka skala analizy falkowej |
Rozciągnięta falka |
Wolnozmienne |
Niska częstotliwość analizy |
Fakt, że analiza falkowa nie obrazuje cech sygnału na płaszczyźnie czas-częstotliwość, lecz czas-skala nie stanowi o słabości metody, a wręcz przeciwnie – o jej sile. Okazuje się, że jest to naturalna metoda opisu wielu zjawisk fizycznych odbieranych przez zmysły człowieka. Trzeba się z nią pogodzić i do niej przyzwyczaić.
Zjawiskiem ściśle związanym z metodą falkową jest analiza wielorozdzielcza [1]. Jak wskazuje nazwa, umożliwia ona obserwację właściwości sygnału na różnych poziomach aproksymacji lub inaczej rozdzielczości. Stosując analizę wielorozdzielczą dokonuje się podziału złożonej funkcji na kilka (lub więcej) prostych składowych i bada je niezależnie.
Bardzo efektywna metoda implementacji tego algorytmu analizy dokonanej z użyciem filtrów opracowana została w 1988 roku przez Mallata [13]. Nawiązuje ona do, znanej z analizy częstotliwościowej, metody kodowania w podpasmach i realizuje tzw. szybką transformatę falkową (Fast Wavelet Transform: FWT).
Do analizy falkowej wprowadzono dwa bardzo adekwatne pojęcia: aproksymacji i detalu. Pod pojęciem aproksymacji rozumie się wysoką skalę analizy, niskoczęstotliwościowe składowe sygnału. Detale to niska skala i wysokoczęstotliwościowe składowe. Wspomniany proces filtracji, w swoim najniższym poziomie obejmuje dwa filtry: dolnopasmowy (L) i górnopasmowy (H). Filtr dolnopasmowy odtwarza aproksymację, a górnopasmowy detal sygnału (rys.4.3).
Rys. 4.3. Schemat filtracyjnej dekompozycji falkowej
Oryginalny sygnał S przechodzi przez parę komplementarnych filtrów, które rozdzielają go na dwie składowe A (Aproksymacja) i D (Detal). W przypadku filtracji cyfrowej podwaja się liczba danych, przeznaczonych do dalszego przetwarzania. Wygodnym sposobem ograniczenia tej liczby w metodzie falkowej jest decymacja, polegająca na odrzuceniu co drugiej próbki danych. Przykład działania filtrów falkowych wraz z interpretacją zawiera tabela 4.5.
Tabela 4.5 Interpretacja działania filtrów falkowych
|
x(n) Sygnał oryginalny: sinusoida zaszumiona szumem białym o rozkładzie normalnym amplitud.
|
|
xa(n) Odfiltrowana za pomocą falkowego filtru dolnopasmowego aproksymacja sygnału oryginalnego, w postaci sinusoidy o znacznie mniejszym poziomie szumu. |
|
xd(n) Odfiltrowane za pomocą falkowego filtru górnopasmowego detale sygnału oryginalnego, w postaci szumu wysokoczęstotli-wościowego. |
Przykład pierwszego poziomu dekompozycji falkowej pewnego rzeczywistego sygnału pomiarowego zamieszczono na rysunku 4.4.
Rys. 4.4. Przykład pierwszego poziomu dekompozycji falkowej sygnału
Pełny proces dekompozycji zawiera szereg członów tworzących tzw. drzewo dekompozycji falkowej. Przykład takiego drzewa zamieszczono na rysunku 4.5.
Rys. 4.5. Drzewo dekompozycji falkowej: S – sygnał oryginalny,
di – detal w i-tej skali, ai –aproksymacja w i-tej skali
Z powodu tego, że proces dekompozycji ma charakter iteracyjny, teoretycznie może on trwać do nieskończoności. W rzeczywistości, może być kontynuowany tylko do chwili, aż w kolejnym detalu pozostanie pojedyncza próbka. W praktyce zaś, wybiera się odpowiednią liczbę poziomów, dostosowaną do natury sygnału lub innego kryterium.
Z metrologicznego punktu widzenia można by poprzestać na omówieniu procesu dekompozycji falkowej, zwanego inaczej procesem analizy. Nierzadko jednak, np. w zastosowaniu do kompresji sygnałów konieczne jest, możliwie wierne, odtworzenie postaci sygnału oryginalnego. Proces ten, w metodzie falkowej określany jest mianem rekonstrukcji lub syntezy. Matematyczny zapis tego procesu obejmuje definicje odwrotnej dyskretnej transformaty falkowej. Metoda filtracyjna zaś, polega na użyciu tzw. filtrów rekonstrukcyjnych. Znamienna dla metody falkowej jest konieczność tzw. rekonstrukcji perfekcyjnej. Jest ona następstwem systematycznego wprowadzania zniekształceń składowych sygnału występujących w procesie analizy drogą usuwania co drugiej próbki. W procesie rekonstrukcji, brakujące próbki zastępowane są wartościami zerowymi. Filtry rekonstrukcyjne zaś dobrane są w taki sposób, aby „niwelowały” zgubne następstwa aliasingu. Wspólnie z filtrami użytymi w procesie analizy tworzą one system określany mianem kwadraturowych filtrów lustrzanych: H-H’,L-L’ (rys.4.6).
Rys. 4.6. Złożenie dekompozycji i rekonstrukcji
Dobór charakterystyk filtrów rozkładu falkowego jest jednoznaczny z doborem kształtu falki tego rozkładu. Wydaje się, że z punktu widzenia analizy metrologicznej ten sposób doboru parametrów jest lepszy niż pierwotne skonstruowanie falki, a potem projektowanie dla niej filtru[1]. Zwłaszcza, że niemożliwe jest użycie całkiem dowolnej ograniczonej w czasie funkcji, o zerowej wartości średniej, nazwanie jej falką i użycie w procesie analizy, jeżeli zamierza się zrekonstruować sygnał w przyszłości. Trzeba to zrobić w kontekście istnienia zespołu kwadraturowych filtrów lustrzanych.
Ściśle rzecz ujmując, kształt falki c(t) jest jednoznacznie związany z charakterystyką filtru górnopasmowego wyodrębniającego detal w rozkładzie falkowym. Istnieje jeszcze jedna bardzo charakterystyczna funkcja, która związana jest z niektórymi (nie wszystkimi) zbiorami falek. Jest to tzw. funkcja skalująca, oznaczana symbolem w(t). Jej kształt związany jest z charakterystykami dolnopasmowych kwadraturowych filtrów lustrzanych odpowiedzialnych za wyodrębnienie aproksymacji sygnału. Kształt funkcji skalującej jest zbliżony do kształtu odpowiadającej jej falki. Definiuje się ją w rekurencyjnym zapisie matematycznym za pomocą równania dylatacyjnego:
![]() |
(4.9) |
W kontekście funkcji skalującej falka zdefiniowana jest za pomocą tego samego równania dylatacyjnego opisanego za pomocą innego zestawu współczynników.
![]() |
(4.10) |
Współczynniki H={<i>h<sub>k</sub></i>}, oraz G={<i>g<sub>k</sub></i>} są rozumiane jako współczynniki pary kwadraturowych filtrów lustrzanych. W przypadku bazy ortonormalnej związane są zależnością wzajemną: gk=(-1)khN-k.
Jak już wspomniano wcześniej, falkowe funkcje bazowe otrzymuje się z falki matki drogą skalowania i przesunięcia:
![]() |
(4.11) |
Istnieje nieograniczona wręcz liczba możliwych do utworzenia falek jak i tzw. banków filtrów. Która z nich jest najlepsza zależy od konkretnej implementacji, tak jak było to w przypadku doboru okna czasowego w analizie widmowej. Nazwy konkretnych rozwiązań pochodzą zwykle od kształtów lub nazwisk osób, które je po raz pierwszy użyły i opublikowały wyniki. Przykładowe nazwy to: Daubechies, Haar, Coiflets, Symlet, Spline, Battle-Lemarie.
W zasadzie każda dyskusja o falkach może rozpoczynać się od funkcji Haara. Ta falka równoważna jest Daubechies (db1). Ingrid Daubechies wprowadziła rodzinę falek, które są często określane mianem zbioru ortonormalnego o zwartym nośniku [7].
Dla ustanowienia pełnego obrazu metody falkowej poniżej (rys.4.7 i 4.8) przedstawiono wyniki analizy falkowej (CWT) uzyskane z wykorzystaniem wirtualnego przyrządu pomiarowego [11][2]. Znaczenie wykresów, idąc od dołu do góry, jest następujące: przebieg czasowy sygnału, zbiór współczynników w wybranej skali - zaznaczonej kursorem na wykresie górnym, rozkład falkowy na płaszczyźnie czas-skala (t/s). Obydwa prezentowane sygnały zostały wygenerowane w sposób sztuczny i były użyte poprzednio do zobrazowania właściwości STFT (rys.4.7 i 4.8). Konfrontacja obydwu par rysunków jest bardzo interesująca. W szczególności dotyczy to wzajemnej relacji między częstotliwością i skalą.
Rys. 4.7. Przykładowy wynik analizy falkowej (CWT): od dołu: przebieg czasowy sygnału, zbiór współczynników w wybranej skali - zaznaczonej kursorem, rozkład falkowy na płaszczyźnie czas-skala (t/s)
Rys. 4.8. Przykładowy wynik analizy falkowej (CWT): od dołu: przebieg czasowy sygnału, zbiór współczynników w wybranej skali - zaznaczonej kursorem, rozkład falkowy na płaszczyźnie czas-skala (t/s)
Na zakończenie opisu metody falkowej trzeba wspomnieć o istnieniu uogólnionej metody rozkładu falkowego zwanej pakietami falkowymi, dostarczającej bogatszego zbioru składowych sygnału. W odróżnieniu od standardu w tej metodzie podlegają dalszemu rozkładowi również detale. Schemat drzewa dekompozycji pakietowej pokazano na rysunku 4.9.
Rys. 4.9. Drzewo falkowej dekompozycji pakietowej: S – sygnał oryginalny, d – detal, a – aproksymacja, dd – detal (detalu) w kolejnym rozkładzie, da – aproksymacja (detalu)
5. Metody kompresji sygnałów
Często się zdarza, że w procesie transmisji sygnałów pomiarowych, ze względu na ograniczoną przepustowość kanału transmisyjnego, zachodzi konieczność zastosowania kompresji danych. Wspólną cechą wszystkich metod kompresji danych jest redukcja średniej bitowej (bit rate, [bps], [bpp]) cyfrowej postaci danych w celu przesłania ich za pośrednictwem cyfrowego kanału komunikacyjnego lub zapamiętania w pamięci cyfrowej. Kompresja danych jest ściśle związana z teorią informacji, a w szczególności z jej działem znanym powszechnie pod nazwą teorii zniekształceń: Rate-Distortion Theory [1][10].
Algorytmy kompresji danych dzieli się na dwie podstawowe grupy: kompresji bezstratnej i kompresji stratnej. W kompresji bezstratnej nie dopuszcza się żadnych strat informacji. W procesie kompresji stratnej dopuszcza się pewną utratę informacji, kontrolując jednocześnie jakość sygnału odtworzonego. Naturalnym sposobem oceny wierności rekonstrukcji jest rozważenie różnic pomiędzy sygnałem oryginalnym i zrekonstruowanym, czyli zniekształceń powstałych w wyniku zastosowania kompresji. Dla przypadku dyskretnego najbardziej popularną miarą zniekształceń jest błąd średniokwadratowy, definiowany jako średnia arytmetyczna z kwadratów różnic pomiędzy wartościami amplitud poszczególnych elementów ciągu.
Ważną grupę pośród metod kompresji danych stanowią metody służące do kompresji sygnałów. Termin „sygnał” w tym zastosowaniu dotyczy postaci zdyskretyzowanej w czasie oraz poddanej procesowi równomiernej kwantyzacji skalarnej, a więc postaci cyfrowej. Zakłada się przy tym, że na etapie wstępnego przetwarzania sygnału było spełnione twierdzenie o próbkowaniu, zaś kwantyzacja w amplitudzie dokonana z odpowiednio dużą rozdzielczością.
Najbardziej znanym, akademickim przykładem kompresji sygnału pomiarowego może być metoda adaptacyjnego próbkowania sygnału, z kontrolą pochodnej. Kolejny przykład to nierównomierne próbkowanie z wykorzystaniem metody aproksymacyjnej za pomocą wielomianów. Obecnie należy się skoncentrować na metodach kompresji realizowanych w sposób cyfrowy. Ogólnie można przyjąć, że każda z wyżej wymienionych metod może być zrealizowana metodą eliminacji nadmiarowych próbek sygnału cyfrowego, uprzednio spróbkowanego i skwantowanego [22].
Dynamiczny rozwój techniki komputerowej doprowadził do stanu, gdy zakres metod przydatnych do praktycznej realizacji znacznie się poszerzył. Powstały metody hybrydowe łączące w sobie całe grupy sposobów kompresji. Zdaniem autorów najbardziej efektywnymi z punktu widzenia kompresji sygnałów są te metody hybrydowe (stratne), które określane są mianem kwantyzacji wektorowej współczynników transformat, łączące tradycyjne kodowanie transformacyjne z kwantyzacją wektorową i alokacją bitów.
Ujmując rzecz chronologicznie analizę metod transformacyjnych należałoby rozpocząć od metody kompresji określanej mianem kodowania transformacyjnego z kwantyzacją skalarną. Kodowanie transformacyjne jako rodzaj kodowania blokowego zaliczyć można do grupy metod quasi-wektorowych. Sam proces kwantyzacji tradycyjnie dokonywany jest oddzielnie dla każdego współczynnika transformaty, czyli na skalarach. Transformacja sprawia, że w ramach pojedynczego bloku danych wartość każdego współczynnika zależy od wszystkich danych wejściowych należących do tego samego bloku. Występuje efekt stopniowej, zależnej od rodzaju użytej transformaty, dekorelacji danych. Jednakże, mimo dobrych rezultatów uzyskiwanych przy kodowaniu transformacyjnym, ciągle brak jest ogólnej teorii dowodzącej, że dekorelująca transformacja jest najlepsza w sensie minimalizacji całkowitego błędu powstałego przy kodowaniu z zadaną efektywnością. Ponadto przetworzona w ten sposób informacja jest zwykle znacznie bardziej „upakowana” w wyniku koncentracji energii w obrębie fragmentu otrzymanego zbioru współczynników (własność niezmiernie cenna z punktu widzenia kompresji sygnału).
Biorąc pod uwagę jeden z fundamentalnych wniosków z teorii Shannona mówiący, że „zawsze lepszą efektywność uzyska się kodując całe bloki - wektory niż pojedyncze próbki, skalary” oraz fakt występowania bloków (wektorów) danych w przypadku transformat, naturalną konsekwencję stanowi próba połączenia obydwu wspomnianych wyżej metod, co w efekcie doprowadza do powstania wektorowej kwantyzacji współczynników transformaty.
Pozostaje kwestia doboru rodzaju transformaty. Największe znaczenie praktyczne mają: Dyskretna Transformata Fouriera (DFT) oraz Dyskretna Transformata Kosinusowa (DCT). Obydwie transformaty nie są optymalne w sensie dekorelacji danych, ale mają tę zaletę, że sposób ich obliczania nie zależy od danych wejściowych. Dzięki temu, przy obliczaniu odwrotnej transformaty nie są potrzebne żadne informacje pomocnicze. Druga przyczyna jest bardziej prozaiczna, DFT jest najbardziej popularną transformatą w dziedzinie Cyfrowego Przetwarzania Sygnału (analiz widmowych w szczególności) oraz istnieje szybki algorytm do jej numerycznego wyznaczania, który w sposób niemalże bezpośredni można użyć również do obliczeń DCT. Dyskretna Transformata Kosinusowa zawiera cechy transformacji w dziedzinę częstotliwości i jest równoważna DFT po dokonaniu symetryzującego rozszerzenia (podwojenia) zbioru próbek wejściowych. Ponadto ma ona tę przewagę, że daje wynik rzeczywisty. Stąd jej większa popularność w stosunku do DFT.
W dziedzinie kompresji sygnałów, podobnie jak w przypadku analizy czasowo-częstotliwościowej przoduje Dyskretna Transformata Falkowa (DWT). Jej zalety to: wysoka zdolność koncentracji energii (EPE), jednoczesna lokalizacja w czasie i częstotliwości, możliwość dopasowania kształtu falek do kształtu sygnału, zdolność analizy wielorozdzielczej.
Kwantyzacja wektorowa (VQ) jest metodą kodowania źródła, która umożliwia zastąpienie wektora (bloku) danych wejściowych za pomocą jednego spośród elementów specjalnego słownika. Prawidłowość w doborze właściwych elementów tego słownika stanowi fundamentalne zadanie w procesie projektowania kwantyzatorów wektorowych. Idea kwantyzacji wektorowej usprawiedliwia intuicyjne wysnucie wniosku, że sposób ten jest szczególnie efektywny w przypadku występowania zależności korelacyjnej między poszczególnymi składowymi wektorów. Jest to prawdą, lecz błędnym jest twierdzenie odwrotne jakoby kwantyzacja wektorowa nie wnosiła nic w sensie efektywności w przypadku wektorów o składowych nieskorelowanych. Z teorii kodowania źródłowego Shannona wynika jednoznacznie, że kwantyzacja wektorowa ma przewagę nad skalarną zarówno w sensie jakości jak i efektywności nawet w tym przypadku. Za wybitny przykład liniowej transformaty dekorelującej dane może tu posłużyć transformata Karhunena - Loeve’go (KLT). Okazuje się, że zastosowanie kwantyzacji skalarnej w stosunku do współczynników tej transformaty nie jest metodą umożliwiającą osiągnięcie optimum, w sensie efektywności, jakie daje kwantyzacja wektorowa. Tym bardziej stwierdzenie to jest słuszne, w odniesieniu do transformat dających tylko „częściową dekorelację” danych.
[1] Tłumaczenie polskie nie jest ścisłe. Określenie rate ma charakter wieloznaczny. W tym tekście można go utożsamić z pojęciem średniej bitowej (liczby bitów przypadającej na kwant sygnału lub jednostkę czasu). Funkcja RD ma kształt hiperboli.
5.1. Nierównomierna kwantyzacja skalarna
Ogólna teoria kwantyzacji skalarnej stanowi punkt wyjścia do opracowania metod kwantyzacji wektorowej [9]. Występuje tu istotna współzależność.
N - punktowy kwantyzator skalarny (jednowymiarowy) definiuje się jako odwzorowanie typu:
![]() |
(5.1) |
gdzie  stanowi nieskończony zbiór liczb rzeczywistych zaś C spełnia relację:
C º {<i>c</i><sub>1</sub>, <i>c</i><sub>2</sub>, <i>c</i><sub>3</sub>, ...,<i>c</i><sub>N</sub>} Ì Â, N<¥ | (5.2) |
i stanowi słownik kwantyzatora o rozmiarze N (|C| = N). Elementy ci tego słownika są odpowiednikami poziomów kwantyzacji.
Podstawowy parametr tego kwantyzatora, rozdzielczość: r = log2N, specyfikuje średnią liczbę bitów niezbędnych do zakodowania wartości odpowiadających wszystkim poziomom kwantyzacji.
Konsekwencją rozmieszczenia na osi  poziomów kwantyzacji ci jest powstanie partycji Ri, czyli przedziałów kwantyzacji, o krańcach [xi-1, xi) zwanych często punktami granicznymi. Przy czym, zgodnie z definicją, Ri określa się jako:
Ri = {x</span></span></span><span style="font-size:12.0pt"><span style="line-height:115%"><span style="font-family:Symbol">Î</span></span></span> <span style="font-size:12.0pt"><span style="line-height:115%"><span style="font-family:Symbol">Â</span></span></span><span style="font-size:12.0pt"><span style="line-height:115%"><span style="font-family:"Calibri",sans-serif">: Q(<i>x</i>) = c<sub>i</sub>} | (5.3) |
Ponadto: È Ri = Â, oraz Ri Ç Rj = Æ, dla i ¹ j. Zatem pełny opis kwantyzatora skalarnego daje równanie:
Q = {<i>c</i><sub>i</sub>, R<sub>i</sub>}, i = 1,2,3,...,N | (5.4) |
Osobnego potraktowania w analizie teoretycznej wymagają krańcowe punkty skali przetwarzania: x0 oraz xN, określające krańcowe przedziały kwantyzacji: R0 i RN. Dla przypadku gdy x0 = ¥ oraz xN = ¥ przedziały te noszą nazwę przepełnionych (w odróżnieniu od ziarnistych). W tym przypadku zakres pracy kwantyzatora definiuje się jako: B = xN-1 - x1. Zwykle x0, xN < ¥, B = xN - x0.
Kwantyzator nazywamy regularnym, gdy spełniona jest nierówność:
x0 <c1 < x1 <c2 <... < cN < xN | (5.5) |
zaś równomiernym gdy ponadto: (xn - xn-1) = const.
Przypadek cn = (xn-1 + xn)/ 2 występuje w technice przetwarzania analogowo-cyfrowego powszechnie stosowanego w metrologii i równoważny jest potocznemu rozumieniu kwantyzatora (w ogólności nieoptymalnego).
Zakładając bardzo dużą wartość rozdzielczości kwantyzatora (r) dla sygnału o zerowej składowej stałej (symetria zmienności) otrzymuje się następującą zależność na wartość stosunku sygnału do szumu [9]:
![]() |
(5.6) |
Z ostatniego równania wynika „żelazna” reguła, że użycie dodatkowego bitu w procesie kwantyzacji powoduje przyrost stosunku sygnał/szum o ok. 6dB.
Problem konstrukcji optymalnych kwantyzatorów jest niezwykle zajmujący głównie z powodu ich „wyjątkowej” nieliniowości. Dekompozycja układu kwantyzatora na dwie części: koder i dekoder znacznie ułatwia analizę (rys.5.1).
Rys. 5.1 Schemat blokowy kwantyzatora (dekompozycja)
Koder realizuje nieliniową operację (odwzorowanie): , zaś dekoder:
, gdzie Á = {1,2,3,...,N} - zbiór indeksów, a C = {<i>c<sub>i</sub></i>} - słownik kwantyzatora. Oznacza to, że:
![]() |
(5.7) |
Symbolika ta odpowiada rozumieniu potocznemu procesu kwantyzacji, w którym i oznacza numer przedziału kwantyzacji.
Po przyjęciu założenia, że jeden spośród dwu elementów kwantyzatora ma parametry ustalone, stosunkowo łatwo podać zasady optymalizacji drugiego. Wynika stąd, że proces projektowania może być dokonany w trybie iteracyjnym: dobór optymalnego dekodera dla kodera oraz dobór optymalnego kodera dla dekodera. Obydwa procesy mogą być zdefiniowane w sposób rozłączny.
5.2. Kwantyzacja wektorowa
Wektor może być wykorzystany do opisu prawie każdego typu wzorca, jak np. segment sygnału mowy czy obrazu, przez proste uformowanie "wektora próbek" z przebiegu sygnału. Kwantyzacja wektorowa (VQ – Vector Quantization) może być widziana jako forma rozpoznawania struktur (wzorów) wejściowych i aproksymowania ich za pomocą jednego z uprzednio określonych wzorców. Zbiór tych wzorców jest określany mianem słownika. Kwantyzacja wektorowa może być również postrzegana jako narzędzie do realizacji wielu skomplikowanych zadań z zakresu przetwarzania sygnałów, włączając klasyfikację i transformacje liniowe. W tego rodzaju zastosowaniach VQ może być traktowane jako technika redukcji złożoności, ponieważ redukcja w zakresie bitów może uprościć następne obliczenia numeryczne, pozwalając czasami na zastąpienie skomplikowanych algorytmów cyfrowego przetwarzania sygnałów prostym przeszukiwaniem tablic. Zatem kwantyzacja wektorowa jest czymś daleko więcej niż formalnym uogólnieniem kwantyzacji skalarnej. W ciągu ostatnich kilku lat stała się ona ważną techniką z dziedziny kompresji oraz klasyfikacji sygnałów, zaś jej przydatność i zastosowania ciągle rosną. Z coraz to większym powodzeniem wykorzystywana jest do „odszumiania” sygnałów.
Kwantyzator wektorowy, odwzorowuje wektory należące do k-wymiarowej przestrzeni euklidesowej Âk w skończony zbiór C zawierający N elementów wyjściowych (odwzorowań) zwanych wektorami kodowymi. Tak więc:
![]() |
(5.8) |
gdzie: C = {c<sub>1</sub>,c<sub>2</sub>,c<sub>3</sub>,...,c<sub>N</sub>}, ciÎRi, i2, 3...,N].
Zbiór C nazywany jest słownikiem o rozmiarze N zawierającym N różnych elementów będących wektorami z przestrzeni Âk. Rozdzielczość kwantyzatora wektorowego r = (log 2N)/k jest miarą liczby bitów przypadających na wektor kodowy użyty do reprezentowania wektora wejściowego, a także wskaźnikiem możliwej do osiągnięcia dokładności. Przy ustalonej wartości wymiaru kwantyzatora jego rozdzielczość jest jednoznacznie określona rozmiarem słownika N, a nie liczbą bitów użytych do specyfikacji numerycznej wektorów kodowych przechowywanych w słowniku. W typowych rozwiązaniach, słownik stanowi tablicę danych przechowywaną w pamięci komputera, zaś liczba bitów precyzji użytych do zapisu poszczególnych składowych każdego wektora nie ma wpływu na rozdzielczość kwantyzatora, a dotyczy jedynie rozmiaru zajętej pamięci oraz problemu adekwatnej precyzji zapisu słownika.
Z każdym k-wymiarowym kwantyzatorem wektorowym ze słownikiem N-wymiarowym jest związany podział przestrzeni Âk na N, k-wymiarowych obszarów (przedziałów kwantyzacji) Ri, (i=1,2,3,...,N). Każdy przedział jest opisany równaniem:
Ri={<b>x</b></span></span></span><b><span style="font-size:14.0pt"><span style="line-height:115%"><span style="font-family:Symbol">Î</span></span></span></b><sub> </sub><span style="font-size:14.0pt"><span style="line-height:115%"><span style="font-family:Symbol">Â</span></span></span><sup><span style="font-size:14.0pt"><span style="line-height:115%"><span style="font-family:"Calibri",sans-serif">k</span></span></span></sup><span style="font-size:14.0pt"><span style="line-height:115%"><span style="font-family:"Calibri",sans-serif">: Q(<b>x</b>)=<b>c</b><sub>i</sub>} | (5.9) |
Z definicji przedziałów kwantyzacji wynika, że:
ÈRi=Âk oraz Ri Ç Rj = 0 dla i¹j | (5.10) |
Rozróżnia się przedziały otwarte (brzegowe, znajdujące się na krańcach przestrzeni) i zamknięte (ziarniste), stanowiące zamknięty obszar k-wymiarowy.
Ważną własnością zbioru przedziałów przestrzeni Âk jest wypukłość. Zbiór S należący do tej przestrzeni jest wypukły, jeżeli dla każdych dwu elementów tego zbioru np. A i B zachodzi zależność: aA+(1-a)BÎS dla 0<a<1.
Kolejna własność kwantyzatorów to regularność. Kwantyzator wektorowy nazywamy regularnym jeżeli każdy przedział Ri stanowi zbiór wypukły oraz ci Î Ri dla każdego i.
Koder kwantyzatora realizuje zadanie wyselekcjonowania spośród skończonego zbioru (słownika) jednego wektora ci , który ma reprezentować bieżący wektor wejściowy x. Indeks i zapisany w postaci binarnej, podobnie jak w przypadku kodera skalarnego, stanowi jedyną informację niezbędną dla dekodera w celu odszukania w słowniku wektora odtworzonego. Dla ułatwienia rozważań analitycznych najwygodniejszy, zdaniem autorów, jest sposób polegający na dekompozycji strukturalnej kwantyzatora wektorowego na dwa bloki składowe: koder i dekoder, tak jak w przypadku skalarnym.
Koder K odwzorowuje przestrzeń Âk w zbiór I symboli i =1,...,N, zaś dekoder D odwzorowuje zbiór I w zbiór odtworzeniowy {C<sub>i</sub>}. Proces ten można opisać za pomocą zależności:
Q(x)= D[K(x)] | (5.11) |
Właściwie, często wygodnie jest rozpatrywać kwantyzator wektorowy jako układ dostarczający zarówno indeks i jak i skwantowaną wielkość wyjściową Q(x). Rysunek 5.2 ilustruje zasadę kaskadowego połączenia kodera z dekoderem, definiując w ten sposób kwantyzator wektorowy:
Rys. 5.2 Schemat kwantyzatora wektorowego
Zadaniem kodera będzie przydzielenie każdego wektora wejściowego do jednego z przedziałów k-wymiarowej przestrzeni Âk, na zasadzie określenia jego numeru porządkowego i. Zadaniem dekodera, generacja wektora kodowego ci będącego jej reprezentantem.
Bardzo ważną rodzinę kwantyzatorów wektorowych, będącą wręcz synonimem kwantyzacji, stanowią układy wykorzystujące regułę najbliższego sąsiada, znaną z opisu kwantyzacji skalarnej. Cechą znamienną jest tutaj zależność zasady podziału przestrzeni Âk na przedziały, wyłącznie od słownika oraz użytej miary błędu. Nie występuje konieczność geometrycznego opisu przedziałów w sposób jawny.
5.3. Kodowanie transformacyjne
Kodowanie transformacyjne jest rodzajem kodowania blokowego i z założenia stanowi proces dwustopniowy. Niech X oznacza wektor próbek sygnału: X=(X1, X2, ...,XN)t. Zasada kodowania transformacyjnego polega na poddaniu wektora X odpowiedniej transformacji liniowej T, w wyniku której powstanie nowy wektor Y, zwykle o tym samym rozmiarze zwany wektorem współczynników transformaty (próbek transformaty): Y = TX. Standardowo współczynniki transformaty są kwantowane w sposób niezależny, czyli skalarnie. Istotne własności wektora Y, ze względu na kompresję sygnału, to:
- Występowanie efektu „wymieszania informacji” zawartych w próbkach wejściowych - każda próbka transformaty zawiera część informacji zawartej we wszystkich próbkach bloku wejściowego.
- Zmniejszona korelacja wzajemna współczynników w porównaniu z korelacją oryginalnych próbek sygnału: możliwość zastosowania alokacji bitów i jak się później okaże kwantyzacji wektorowej z kodem składanym: PCVQ.
- Występowanie efektu „upakowania”, tzn. koncentracja energii w obrębie ograniczonej liczby próbek transformaty K<N (możliwość eliminacji próbek zerowych i mniej znaczących).
Pełny schemat funkcjonalny układu kodowania transformacyjnego z kwantyzacja skalarną przedstawiono na rys.5.3: (symbole Qk oznaczają kwantyzatory skalarne o różnej liczbie poziomów kwantyzacji, T- kwadratową macierz K´K realizująca transformację liniową).
Rys. 5.3 Kodowanie transformacyjne z kwantyzacją skalarną
Jak widać, operacja kwantyzacji jest dokonywana oddzielnie dla każdego współczynnika (próbki) transformaty:
Y’k = Q (Yk) | (5.12) |
Odtworzoną postać X’ oryginalnego wektora X otrzymuje się dokonując odwrotnego przekształcenia skwantowanej postaci Y’:
X’ =T-1 ( Y’) | (5.13) |
Najbardziej wygodną miarą błędu kodowania, którą można zastosować w tym systemie, jest uśredniona statystycznie wartość błędu średniokwadratowego:
![]() |
(5.14) |
Stopień koncentracji energii w dziedzinie transformaty opisywany jest za pomocą tzw. współczynnika efektywności upakowania energii: EPE (Energy Packing Efficiency). Definiuje się go jako stosunek energii zawartej w K pierwszych współczynnikach do energii całkowitej (N współczynników):
![]() |
(515.) |
Do transformat dotychczas najbardziej popularnych w dziedzinie kompresji sygnału oprócz KLT należą Dyskretna Transformata Fouriera i Dyskretna Transformata Kosinusowa.
W podsumowaniu rozważań dotyczących kodowania transformacyjnego warto podkreślić, iż:
- Badania o charakterze subiektywnym wykazały, że zarówno ucho jak i oko ludzkie charakteryzują się różnymi wrażliwościami na amplitudy poszczególnych współczynników transformat (SNR dla poszczególnych współczynników jest parametrem ważniejszym niż wartość globalnego SNR);
- Operację transformaty opisuje zależność: Y=TX, gdzie X=(X1, X2, X3,...,XK)t jest wektorem transformowanym zaś T operatorem liniowym;
- Każdy współczynnik transformaty jest zależny od wszystkich składowych wektora transformowanego;
- Współczynniki transformaty są mniej skorelowane i wymagają mniej kompresji dodatkowej;
- Współczynniki transformaty są bardziej upakowane, niektóre można zaniedbać;
Uwaga: Transformata odwrotna może spotęgować błąd kwantyzacji, aby tego uniknąć należy ograniczyć się do transformat ortogonalnych. Przy transformacji ortogonalnej odległość między dwoma punktami pozostaje niezmienna.
5.4. Alokacja bitów
Niech di(bi) oznacza lokalną wartość błędu średniokwadratowego kwantyzacji zmiennej Xi, za pomocą bi bitów. Wtedy wartość błędu globalnego kwantyzacji bloku wyniesie:
![]() |
(5.16) |
Zadanie optymalnej alokacji bitów polega na określeniu wszystkich wartości bi minimalizujących wartość globalnej miary błędu D tak, aby spełniały nierówność:
![]() |
(5.17) |
Teoretyczne rozważania dotyczące problemu alokacji bitów są tematem szeregu publikacji, w większości których przyjmuje się coraz bardziej rygorystyczne założenia co do parametrów statystycznych sygnału. Zdaniem autorów najprostszym sposobem jest realizacja alokacji bitów w sposób przyrostowy - opcjonalnego dodawania jednego bitu w każdym kroku spośród B iteracji (rys.5.4).
Krok 1: Założenia początkowe Krok 2: Określenie pozycji bloku w największej potrzebie Krok 3: Przydzielenie dodatkowych bitów pozycji wybranej w kroku 2 Krok 4: Sprawdzenie czy są jeszcze wolne bity |
Rys. 5.4 Algorytm alokacji bitów na potrzeby kwantyzacji wektorowej
Przyjęcie założenia o dużej rozdzielczości kwantyzacji jak zwykle ułatwia obliczenia - wtedy bowiem bieżąca wartość błędu di(m) jest proporcjonalna do wariancji sygnału na i-tej pozycji ze współczynnikiem 2-2b. Wynika stąd, że każdy dodatkowy bit redukuje błąd czterokrotnie.
Praktyczna realizacja algorytmu, szczęśliwie, może być dokonana z użyciem blokowej sekwencji treningowej. Każdy krok iteracji wymaga wówczas wyznaczania wartości globalnego błędu kwantyzacji (dla całej sekwencji). Błędy przechowywane w tablicy determinują funkcję błędu di(m).
5.5. Kwantyzacja wektorowa współczynników transformat
Zastosowanie kwantyzacji wektorowej w odniesieniu do współczynników transformaty jest naturalną konsekwencją ich blokowej struktury. Jednakże, bardziej szczegółowa analiza dostarcza informacji o wielu dalszych, istotnych zaletach, jakie rodzi połączenie tych dwu metod kompresji sygnału.
Schemat blokowy najprostszego systemu kwantyzacji wektorowej współczynników transformaty przedstawiono na rys. 5.5.
Rys. 5.5 Schemat blokowy kwantyzacji wektorowej współczynników transformaty
Blok danych tworzący wektor X jest poddawany transformacji liniowej T. Wektor wynikowy Y (współczynników transformaty) jest kwantowany wektorowo w bloku VQ. Skwantowane wektorowo współczynniki Y’ są poddawane transformacji odwrotnej T-1 dając w wyniku wektor odtworzony X’.
Jak wspomniano wcześniej transformacja liniowa „upakowuje” energię w obrębie części składowych wektora wynikowego. W pierwszym przybliżeniu pewna liczba współczynników transformaty może zostać pominięta, co powoduje ograniczenie rozmiarów wektora i tym samym upraszcza kwantyzację. W przypadku odrzucenia składowych wektora X = {X<sub>i</sub>: i = 1,2,3,...,K} o znikomej zawartości energetycznej (selekcja) otrzymuje się wektor Z o zmniejszonym rozmiarze, powiedzmy L. Kwantyzacji wektorowej poddawany jest wektor Z, a w jej wyniku powstaje wektor Z’. Wektor ten uzupełniony zerami do rozmiaru oryginalnego (K>L) jest następnie poddawany transformacji odwrotnej. Dodatkową zaletą omawianej metody są oszczędności w rozmiarze słownika, za który może posłużyć słownik oryginalny po odrzuceniu stosownych fragmentów każdego wektora kodowego. Schemat blokowy tego systemu przedstawia rys. 5.6.
Rys. 5.6 Schemat blokowy kwantyzacji wektorowej z redukcją rozmiarów wektora
Można łatwo wykazać, że:
![]() |
(5.18) |
zaś średnia wartość błędu kwantyzacji wynosi:
![]() |
(5.19) |
Wprowadzony błąd dodatkowy jest równoważny energii odrzuconych próbek widma.
Jak już wspomniano przy okazji omawiania standardowej kwantyzacji wektorowej FSVQ, w przypadku gdy w dziedzinie transformaty wektor wynikowy ma rozmiar zbyt duży do przeprowadzenia bezpośredniej kwantyzacji, z uwagi na absurdalny rozmiar słownika, składowe tego wektora dzieli się na podwektory przeznaczone do kwantyzacji z użyciem indywidualnych słowników. Globalne słowo kodowe stanowi efekt złożenia cząstkowych słów kodowych - stąd nazwa metody: kwantyzacja wektorowa z kodem składanym (PCVQ - Product Code Vector Quantization). Z kolei globalny słownik wynikowy stanowi iloczyn kartezjański słowników cząstkowych.
Niech dana będzie funkcja g(Y) służąca do powrotnego złożenia wektora Y z wektorów cząstkowych: Y = g(Y1,Y2,Y3,...,YF). Dla każdego podwektora Yi, dany jest Ni-wymiarowy słownik Ci. Kwantyzator generuje zbiór indeksów {I<sub>i</sub>}, służących do późniejszego odtworzenia wektorów wynikowych {<b>Y<sub>i</sub></b>}, gdzie Y’i Î Ci, dla i = 1,2,3,...,F. W efekcie globalna postać wektora odtworzonego Y’ zostaje utworzona na podstawie globalnego słownika wynikowego. Postać jego jest równoważna iloczynowi kartezjańskiemu słowników składowych:
![]() |
(5.20) |
Odtworzony wektor Y’ powstanie po ponownym złożeniu podwektorów Yi. Zbiór wszystkich wektorów kodowych dostępnych dla odtworzenia wektora Y’ ma liczność N równoważną efektywnemu rozmiarowi słownika globalnego C:
![]() |
(5.21) |
Słownik składany nie spełnia warunku optymalności, gdyż w końcowym etapie tworzony jest na podstawie zależności zdefiniowanej explicite. Ogólna struktura systemu kwantyzacji wektorowej z kodem składanym jest przedstawiona na rysunku 5.7 (symbolami Ci oznaczone są słowniki cząstkowe).
Rys. 5.7 Ogólna struktura systemu kwantyzacji wektorowej z kodem składanym
Jak wynika ze schematu, składowe wektory odtworzone Yi, nie muszą być wybierane niezależnie (indywidualnie) lecz mogą być związane z doborem sąsiadów w taki sposób, aby optymalizować minimum błędu globalnego odtworzenia wektora Y’.
Jak zwykle praktyka narzuca konieczność stosowania struktur nieco bardziej uproszczonych jak np. struktura z niezależną kwantyzacją wektorową składowych w oparciu o indywidualne słowniki (Rys.5.8).
Rys. 5.8 Struktura kwantyzatora wektorowego z kodem składanym i niezależną kwantyzacją
Teoretycznie struktura ta oddala się jeszcze bardziej od konfiguracji optymalnej, ale charakteryzuje się znacznie mniejszą złożonością realizacyjną. Szczególny przypadek tej struktury, wydaje się najprostszy i daje podział wektora globalnego Y na podwektory metodą sekwencyjną (w sposób geometryczny), co można zapisać jako: Y= (Y1 Y2 Y3...YF).
Dla średniokwadratowej miary błędu prawdziwa jest zależność:
||Y - Y’||2 = ||Y1 - Y’1||2 + ||Y2 - Y’2||2 + ||Y3 - Y’3||2 +...+ ||YF - Y’F||2 | (5.22) |
6. Ćwiczenia do modułu (rozwiązane problemy praktyczne - zadania, projekty)
Celem ćwiczeń jest zapoznanie studenta z podstawowymi metodami cyfrowego przetwarzania sygnałów. Program ćwiczeń obejmuje: elementy analizy częstotliwościowej (algorytm dyskretnej transformaty Fouriera), podstawy analizy czasowo-częstotliwościowej (algorytm krótkoczasowej analizy Fouriera), analizę falkową sygnałów, badanie filtrów cyfrowych o skończonej i nieskończonej odpowiedzi impulsowej.
6.1. Próbkowanie i kwantyzacja sygnału
Zamiana sygnału analogowego na cyfrowy jest związana ze stratą części informacji. Wiąże się to z koniecznością przeprowadzenia próbkowania i kwantyzacji sygnału. Obie te operacje muszą być tak dobrane, żeby zachowane były potrzebne informacje w sygnale cyfrowym. Przyjmuje się zakres częstotliwości sygnału cyfrowego od zera do połowy częstotliwości próbkowania (częstotliwości Nyquista). Kwantyzacja z kolei warunkuje dokładność zapisu amplitudy próbek. Na rys. 6.1 zilustrowany jest wpływ częstotliwości próbkowania na jakość sygnału. Sygnałem oryginalnym jest sygnał dźwiękowy próbkowany z częstotliwością 44100 Hz i skwantowany z rozdzielczością 16 bitów. Na dole rys. 6.1 przedstawiony jest ten sam sygnał, ale próbkowany czterokrotnie wolniej (z częstotliwością 11025 Hz). W tym samym oknie czasowym mieści się czterokrotnie mniej próbek (1000 próbek w sygnale oryginalnym i 250 próbek w sygnale przetworzonym). Widać też wyraźnie, że wysokie częstotliwości zostały utracone (sygnał jest bardziej „gładki”).
Rys. 6.1. Sygnał dźwiękowy oryginalny i próbkowany czterokrotnie wolniej
Z kolei na rys. 6.2 przedstawiono te same sygnały, ale kwantowane z różną rozdzielczością. Sygnał oryginalny jest zapisany z wykorzystaniem 16 bitów, a sygnał przetworzony 4 bitów. Oczywiście w przypadku dźwięku 4 bity nie są wystarczające do zachowania dobrej jakości dźwięku. Chodzi tu o pokazania zniekształceń amplitudy. Przebieg po skwantowaniu z rozdzielczością 4 bitów ma wyraźnie schodkowy charakter. Częstotliwość próbkowania w tym przypadku pozostała niezmieniona i wynosiła 44100 Hz.
Rys. 6.2. Sygnał dźwiękowy kwantowany z wykorzystaniem 16 bitów (góra) i 4 bitów (dół)
6.2. Analiza częstotliwościowa – szybka transformata Fouriera
Szybka transformata Fouriera umożliwia policzenie charakterystyk widmowych sygnału określonego w czasie. Zwykle bardziej interesuje nas amplitudowa charakterystyka widmowa. W pierwszym ćwiczeniu zostanie policzona charakterystyka amplitudowa sygnału sinusoidalnego. Najpierw należy wygenerować sygnał sinusoidalny jak na rys. 6.3 (amplituda 1, faza 0, częstotliwość sygnału 10Hz, czas trwania 0.2 s, częstotliwość próbkowania 200 Hz). Odpowiedni skrypt Matlaba jest zaprezentowany na Listingu 5.1.
Szybka transformata Fouriera umożliwia policzenie charakterystyk widmowych sygnału określonego w czasie. Zwykle bardziej interesuje nas amplitudowa charakterystyka widmowa. W pierwszym ćwiczeniu zostanie policzona charakterystyka amplitudowa sygnału sinusoidalnego. Najpierw należy wygenerować sygnał sinusoidalny jak na rys. 6.3 (amplituda 1, faza 0, częstotliwość sygnału 10Hz, czas trwania 0.2 s, częstotliwość próbkowania 200 Hz). Odpowiedni skrypt Matlaba jest zaprezentowany na Listingu 5.1.
Rys. 6.3. Sygnał sinusoidalny
Następnie, korzystając z szybkiej transformaty Fouriera, policzymy widmo amplitudowe tego sygnału stosując okno prostokątne (rys. 6.4).
Rys. 6.4. Widmo amplitudowe sygnału sinusoidalnego – analiza synchroniczna
Prążek w częstotliwości 0 Hz odpowiada wartości składowej stałej. Prążek w 10 Hz jest składową sinusoidalną o częstotliwości 10 Hz i amplitudzie 1 (wysokość prążka). Częstotliwość próbkowania jest równa 200 Hz. Zatem zakres analizy jest równy połowie częstotliwości próbkowania i wynosi 100 Hz. Prążek w 190 Hz jest odbiciem lustrzanym widma względem częstotliwości Nyquista (100 Hz w tym przypadku) i nie niesie żadnej dodatkowej informacji. W tym przypadku mamy do czynienia z analizą synchroniczną, dla której parametry są tak dobrane, że analiza obejmuje całkowitą liczbę okresów sygnału badanego. Jest to szczególny przypadek, który trudno jest uzyskać w warunkach rzeczywistych. Częstszym przypadkiem jest tzw. analiza asynchroniczna (rys. 6.5).
Rys. 6.5. Widmo amplitudowe sygnału sinusoidalnego - analiza asynchroniczna
Wyraźnie widać, że w widmie występuje dużo więcej prążków niż wynikałoby to z teorii. Jest to wynikiem tzw. przecieku widma. W tym przypadku rozdzielczość analizy wynosi 4 Hz, zatem punkty, w których obliczane są prążki widma to 0, 4, 8, 12, 16 … Hz. Nie można wystawić prążka dla 10 Hz. Prążki „rozpływają się” na sąsiednie. Amplituda najwyższego prążka jest równa 0.7 (a nie 1, jak było dla analizy synchronicznej). Widmo jest trudniej zinterpretować. Taka analiza jest najczęściej spotykana w warunkach rzeczywistych.
W drugim ćwiczeniu policzmy widmo amplitudowe sygnału prostokątnego. Dla analizy synchronicznej otrzymujemy przebiegi jak na rys. 6.6. Wyraźnie widać kolejne nieparzyste harmoniczne (10, 30, 50, 70, 90 Hz) wchodzące w skład sygnału prostokątnego.
Rys. 6.6. Sygnał prostokątny i jego widmo amplitudowe – analiza synchroniczna
Proszę sprawdzić jak wygląda widmo w przypadku analizy asynchronicznej. Jeśli chcemy zwiększyć zakres analizy widmowej wystarczy zwiększyć częstotliwość próbkowania, jeśli chcemy zwiększyć rozdzielczość analizy należy wydłużyć czas analizy. Proszę sprawdzić jak to działa w praktyce wykorzystując załączony skrypt Matlaba.
Skrypt Matlaba obliczający widmo sygnałów sinusoidalnego i prostokątnego jest zamieszczony na Listingu 6.1.
clear;<br />
clc;<br />
close all;<br />
<br />
%częstotliwość próbkowania<br />
Fs=200;<br />
<br />
%parametry sygnału<br />
fsyg=10;<br />
ok=1/fsyg;<br />
A=1;<br />
faza=0;<br />
sks=0.5;<br />
<br />
T=1/Fs;<br />
%czas analizy sygnału<br />
t=0:T:((4*ok)-T);<br />
<br />
%y=A*sin(2*pi*fsyg*t+faza)+sks;<br />
y=A*square(2*pi*fsyg*t+faza)+sks;<br />
<br />
figure<br />
plot(t,y,'-o');<br />
grid on;<br />
<br />
xlabel('Czas')<br />
ylabel('Amplituda')<br />
title('Sygnal')<br />
<br />
%liczba punktów sygnału i widma<br />
N=length(y);<br />
<br />
%obliczenie widma sygnału<br />
widmo=abs(fft(y));<br />
widmo(1)=widmo(1)/N;<br />
widmo(2:end)=widmo(2:end)./(N/2);<br />
<br />
dFs=Fs/N;<br />
f=0:dFs:Fs-dFs;<br />
<br />
figure<br />
stem(f,widmo,'-*r')<br />
axis tight<br />
xlabel('Hz');<br />
ylabel('Amplituda')<br />
title('Widmo amplitudowe')
Listing 6.1. Skrypt liczący widmo sygnałów sinusoidalnego i prostokątnego
W trzecim ćwiczeniu przeprowadzimy analizę widmową krótkiego sygnału dźwiękowego. Jest to dźwięk E1 grany na piszczałce (rys. 6.7). Widać poszczególne harmoniczne (kolejne wielokrotności) częstotliwości podstawowej.
Rys. 6.7. Sygnał dźwiękowy i jego widmo amplitudowe
Dodatkowe ćwiczenia:
Zmienić częstotliwość próbkowania sygnału i liczbę próbek w oknie czasowym. Zaobserwować wpływ tych parametrów na rozdzielczość analizy widmowej. Podać zależności określające zakres i rozdzielczość analizy widmowej.
Zastosować różne okna czasowe i zaobserwować ich wpływ na kształt widma. Podać jakie okna i w jakich przypadkach dają najlepsze efekty analizy.
Skrypt Matlaba realizujący analizę widmową sygnału dźwiękowego jest przedstawiony na Listingu 6.2.
clc<br />
clear<br />
close all<br />
<br />
% Wczytanie pliku dźwiękowego<br />
plik='.\sounds\E1.wav';<br />
[wav, fp] = audioread(plik);<br />
<br />
lprob=length(wav);<br />
tk=lprob/fp;<br />
t=linspace(0,tk,lprob);<br />
<br />
figure(1)<br />
subplot(211)<br />
plot(t,wav);<br />
grid on<br />
<br />
% Obliczenie widma sygnału dźwiękowego<br />
yw=abs(fft(wav));<br />
yw(1)=yw(1)/lprob;<br />
yw(2:end)=yw(2:end)./(lprob/2);<br />
f=linspace(0,fp,lprob);<br />
<br />
subplot(212)<br />
semilogy(f(1:ceil(lprob/2.5)),yw(1:ceil(lprob/2.5)));<br />
grid on<br />
axis tight
Listing 6.2. Skrypt liczący widmo sygnału dźwiękowego
6.3. Analiza czasowo-częstotliwościowa – krótkoczasowa transformata Fouriera
Licząc widmo z wykorzystaniem transformaty Fouriera nie mamy żadnej informacji o zmianach częstotliwości sygnału badanego w czasie. W pewnych przypadkach taka informacja jest bardzo pomocna. Można ją uzyskać stosując któtkoczasową transformatę Fouriera.
Załóżmy, że mamy sygnał y, którego częstotliwość zmienia się w funkcji kwadratowej w czasie od 100 Hz do 880 Hz. Fragment tego sygnału przedstawiony jest na rys. 6.8. Jeśli policzymy widmo amplitudowe tego sygnału, to otrzymamy wynik zaprezentowany na rys. 6.9.
Rys. 6.8. Sygnał y o zmiennej częstotliwości
Rys. 6.9. Widmo amplitudowe sygnału y o zmiennej częstotliwości
Rys. 6.10. Spektrogram sygnału o zmiennej częstotliwości
W widmie można znaleźć prążki reprezentujące wszystkie częstotliwości z przedziału 100-880 Hz, ale nie wiemy, w której chwili czasowej one występowały. Dużo więcej informacji można uzyskać stosując krótkoczasową transformatę Fouriera. W tym przypadku wynikiem analizy jest spektrogram zaprezentowany na rys. 6.10. Dominujące częstotliwości w sygnale (kolor żółty na rysunku) zaprezentowane są na płaszczyźnie czas-częstotliwość. Łatwo można odczytać, że na początku sygnału (dla t=0) częstotliwość wynosiła 100Hz, dla t=1 sek. częstotliwość jest równa 300 Hz itd. Widać też, że częstotliwość zmienia się w funkcji kwadratowej z czasem.
Skrypt Matlaba liczący widmo i spektrogram sygnału o zmiennej częstotliwości przedstawiony jest na Listingu 6.3.
clear<br />
close all<br />
<br />
% Częstotliwość próbkowania<br />
Fs=2000;<br />
<br />
tp=1/Fs;<br />
<br />
% Czas analizy sygnału<br />
t=0:tp:2; % częstotliwość próbkowania Fs=2000Hz; czas końcowy tk=2s<br />
<br />
% Analizowany Sygnał<br />
% t0 odpowiada f=100Hz; t=1s odpowiada f=300Hz<br />
y=chirp(t,100,1,300,'quadratic');<br />
<br />
M=length(y);<br />
<br />
% Obliczenie widma<br />
wid=abs(fft(y));<br />
N=length(wid);<br />
wid(1)=wid(1)/N;<br />
wid(2:end)=wid(2:end)./(N/2);<br />
<br />
df=Fs/N;<br />
fprintf('Rozdzielczość analizy = %1.2f Hz\n',df);<br />
f=0:df:(Fs-df);<br />
<br />
figure(1)<br />
<br />
subplot(211)<br />
%plot(t,y,'b');<br />
plot(t(1:1000),y(1:1000),'b');<br />
axis tight;<br />
grid on<br />
xlabel('Czas')<br />
ylabel('Amplituda')<br />
title('Sygnal')<br />
<br />
subplot(212)<br />
stem(f(1:fix(N/2)),wid(1:fix(N/2)),'.');<br />
axis tight;<br />
grid on<br />
xlabel('Czestotliwosc')<br />
ylabel('Amplituda')<br />
title('Widmo')<br />
<br />
figure(2)<br />
% Obliczenie spektrogramu<br />
spectrogram(y,256,250,256,Fs,'yaxis');
Listing 6.3. Skrypt Matlaba liczący widmo i spektrogram sygnału o zmiennej częstotliwości
Na rys. 6.11 przedstawiony jest wynik zastosowania krótkoczasowej transformacji Fouriera do sygnału mowy (kolejno wypowiadane słowa „jeden, dwa, trzy, cztery, pięć”). Widać złożoność takiego sygnału. Można zauważyć podstawową częstotliwość wypowiadanych słów oraz poszczególne harmoniczne.
Rys. 6.11. Spektrogram głosu
Skrypt Matlaba liczący spektrogram sygnału mowy przedstawiony jest na Listingu 6.4.
clear<br />
close all<br />
<br />
[y2,Fs]=audioread('..\sounds\123.wav');<br />
<br />
figure(1)<br />
spectrogram(y2,kaiser(2048,8),2000,4096,Fs,'yaxis');<br />
colormap jet<br />
xlabel('Time [Seconds]'); ylabel('Frequancy [Hz]');<br />
<br />
pause (1)<br />
ylim([0 Fs/(5*2*1000)])
Listing 6.4. Skrypt Matlaba liczący spektrogram sygnału mowy
Korzystając z załączonych skryptów (Listing 5.3 i 5.4) proszę policzyć spektrogramy innych sygnałów.
6.4. Badanie filtrów cyfrowych o skończonej i nieskończonej odpowiedzi impulsowej
Sygnał prostokątny może być rozłożony w szereg Fouriera. Zawiera on sinusoidę o podstawowej częstotliwości (takiej samej jak częstotliwość sygnału prostokątnego) oraz sinusoidy o nieparzystej wielokrotności tej częstotliwości (harmoniczne) o odpowiednich amplitudach. Przybliżenie sygnału prostokątnego zrekonstruowanego z czterech sinusoid jest przedstawione na rys. 6.12 (kolor czarny).
Rys. 6.12. Sygnał prostokątny zrekonstruowany z czterech sygnałów sinusoidalnych
W pierwszym ćwiczeniu spróbujemy przefiltrować sygnał prostokątny w taki sposób, aby pozostawić tylko cztery pierwsze harmoniczne. W prezentowanym przykładzie sygnał prostokątny ma częstotliwość 10 Hz. Aby pozostawić cztery pierwsze (nieparzyste) harmoniczne należy skonstruować filtr dolnoprzepustowy o częstotliwości odcięcia 80 Hz (czyli filtr przepuści sinusoidy o częstotliwości 10 Hz, 30 Hz, 50 Hz, 70 Hz, ale zablokuje 90 Hz i wyższe harmoniczne). Na początku zaprojektujmy filtr o skończonej odpowiedzi impulsowej (funkcja firpm() w Matlabie). Charakterystyka amplitudowa i fazowa tego filtru jest przedstawiona na rys. 6.14. Należy zwrócić uwagę, że charakterystyka fazowa jest liniowa w paśmie przepustowym. Filtr nie zniekształca więc sygnału. Sygnał oryginalny oraz przefiltrowany są zaprezentowane na rys. 6.13. Sygnał przefiltrowany jest przesunięty w stosunku do oryginalnego, ale nie zniekształcony. Filtry o skończonej odpowiedzi impulsowej mają duży rząd (w tym przypadku 500). Powoduje to, że aż 500 próbek sygnału musi przejść przez filtr, żeby on w pełni zadziałał. Stąd czas odpowiedzi takich filtrów jest stosunkowo długi.
Rys. 6.13. Sygnał oryginalny (zielony) oraz przefiltrowany (czerwony) z użyciem filtru o skończonej odpowiedzi impulsowej
Rys. 6.14. Charakterystyka amplitudowa i fazowa filtru o skończonej odpowiedzi impulsowej
Skrypt Matlaba realizujący filtr SOI jest przedstawiony na Listingu 6.5.
clear;<br />
clc;<br />
close all;<br />
<br />
% Częstotliwość próbkowania<br />
Fs=2000;<br />
<br />
%parametry sygnału<br />
fsyg=10;<br />
ok=1/fsyg;<br />
A=1;<br />
faza=0;<br />
sks=0;<br />
<br />
T=1/Fs;<br />
% Czas analizy<br />
t=0:T:((5*ok)-T);<br />
<br />
y=A*square(2*pi*fsyg*t+faza)+sks;<br />
%y=A*sawtooth(2*pi*fsyg*t+faza, 0)+sks;<br />
<br />
% Projekt filtru SOI - funkcja firpm()<br />
a=1;<br />
N=500;<br />
Ho=[1 1 0 0];<br />
fo=[0 75 85 (Fs/2)]/(Fs/2);<br />
b=firpm(N,fo,Ho);<br />
<br />
figure(1)<br />
freqz(b,a,512,Fs);<br />
<br />
yf = filter(b,a,y);<br />
<br />
figure(2)<br />
subplot(211)<br />
plot(t,y,'-g');<br />
hold on<br />
plot(t,yf,'-r');<br />
<br />
axis tight<br />
grid on;<br />
xlabel('Czas')<br />
ylabel('Amplituda')<br />
title('Sygnal')
Listing 6.5. Skrypt Matlaba realizujący filtr SOI
W drugim ćwiczeniu zróbmy to samo, ale z użyciem filtru o nieskończonej odpowiedzi impulsowej. Do zaprojektowania filtru użyjmy funkcji ellip(). Charakterystyka amplitudowa i fazowa tego filtru jest przedstawiona na rys. 6.16. Jeśli chodzi o charakterystykę amplitudową, to jest ona bardzo podobna do charakterystyki filtru o skończonej odpowiedzi impulsowej (ćwiczenie 1). Jednak charakterystyka fazowa jest nieliniowa w paśmie przepustowym. Chociaż na rysunku ta nieliniowość może wydawać się niewielka, ma ona znaczny wpływ na sygnał filtrowany. Sygnał oryginalny oraz przefiltrowany są zaprezentowane na rys. 6.16. Widać zniekształcenie sygnału przefiltrowanego. Jest ono spowodowane nieliniowym przesunięciem poszczególnych harmonicznych sygnału, które są później dodawane do siebie tworząc sygnał przefiltrowany. Filtry o nieskończonej odpowiedzi impulsowej mają znacznie mniejsze rzędy niż filtry o skończonej odpowiedzi impulsowej (w tym przypadku 8). Stąd też czas odpowiedzi takiego filtru jest bardzo krótki.
Rys. 6.15. Charakterystyka amplitudowa i fazowa filtru o skończonej odpowiedzi impulsowej
Rys. 6.16. Sygnał oryginalny (zielony) oraz przefiltrowany (czerwony) z użyciem filtru o nieskończonej odpowiedzi impulsowej
Skrypt Matlaba realizujący filtr NOI jest przedstawiony na Listingu 6.6.
clear;<br />
clc;<br />
close all;<br />
<br />
% Częstotliwość próbkowania<br />
Fs=2000;<br />
<br />
%parametry sygnału<br />
fsyg=10;<br />
ok=1/fsyg;<br />
A=1;<br />
faza=0;<br />
sks=0;<br />
<br />
T=1/Fs;<br />
% Czas analizy<br />
t=0:T:((5*ok)-T);<br />
<br />
y=A*square(2*pi*fsyg*t+faza)+sks;<br />
%y=A*sawtooth(2*pi*fsyg*t+faza, 0)+sks;<br />
<br />
% Projekt filtru NOI - funkcja ellip()<br />
N=8;<br />
Rp=0.1;<br />
Rs=50;<br />
wn=[80]/(Fs/2);<br />
[b,a]=ellip(N,Rp,Rs,wn);
figure(1)<br />
freqz(b,a,512,Fs);<br />
<br />
yf = filter(b,a,y);<br />
<br />
figure(2)<br />
subplot(211)<br />
plot(t,y,'-g');<br />
hold on<br />
plot(t,yf,'-r');<br />
<br />
axis tight<br />
grid on;<br />
xlabel('Czas')<br />
ylabel('Amplituda')<br />
title('Sygnal')
Listing 6.6. Skrypt Matlaba realizujący filtr NOI
W ćwiczeniu 3 zajmiemy się bardziej praktycznym przypadkiem. Mamy sygnał EKG, na który nakładają się zakłócenia od sieci (60 Hz) (rys. 6.18 – kolor niebieski). Zaprojektujmy filtr cyfrowy, który usunąłby te zakłócenia. Ponieważ zależy nam na szybkim zadziałaniu filtru, zastosujmy filtr eliptyczny (NOI). Wprowadzone przez ten filtr zniekształcenia fazowe w tym przypadku nie powinny mieć większego znaczenia. Najpierw wyznaczmy widmo sygnału EKG (rys. 6.17 – góra). Widać zakłócenia od sieci energetycznej – prążek 60 Hz. Zaprojektujmy filtr pasmowo-przepustowy tak by zablokować częstotliwości wokół 60 Hz (pasma przepustowe 0-55 Hz, 65-fs/2 Hz). Charakterystyki amplitudowa i fazowa tego filtru są przedstawione na rys. 6.19. Następnie przefiltrujmy sygnał. Rezultat działania takiego filtru jest przedstawiony na rys. 6.18 – kolor czerwony. Widać wyraźnie, że zakłócenia od sieci zostały odfiltrowane. Widmo sygnału po filtracji jest przedstawione na rys. 6.17 – dół. Tu też widać, że częstotliwości wokół 60 Hz zostały usunięte z sygnału.
Rys. 6.17. Widmo sygnału EKG przed i po filtracji
Rys. 6.18. Sygnał EKG przed i po filtracji
Rys. 6.19. Charakterystyka amplitudowa i fazowa zaprojektowanego filtru eliptycznego
Skrypt Matlaba użyty do filtracji sygnału EKG jest przedstawiony na Listingu 6.7.
clear;<br />
close all;<br />
<br />
load ekg.mat<br />
ekg=ekg-mean(ekg);<br />
<br />
fp=960;<br />
f=linspace(0,fp,3600);<br />
t=linspace(0,(3600/fp),3600);<br />
<br />
% Projekt filtru ellip<br />
Rp=0.1;<br />
Rs=50;<br />
wp=[45 75]/(fp/2);<br />
ws=[50 65]/(fp/2);<br />
[N,wn]=ellipord(wp,ws,Rp,Rs);<br />
[b,a]=ellip(N,Rp,Rs,wn,'stop');<br />
<br />
figure(1);<br />
freqz(b,a,512,fp);<br />
<br />
% Filtracja sygnału<br />
sf=filter(b,a,ekg);<br />
<br />
figure(2);<br />
hold on<br />
plot(t,ekg);<br />
plot(t(100:3600),sf(100:3600),'r');<br />
grid;<br />
hold off<br />
title('Sygnal przed i po filtracji');<br />
xlabel('Czas [s]');ylabel('Amplituda');<br />
<br />
<br />
w=fft(ekg);<br />
wlin=abs(w);<br />
wlog=20*log10(wlin/max(wlin));<br />
wf=fft(sf);<br />
wflin=abs(wf);<br />
wflog=20*log10(wflin/max(wflin));<br />
<br />
figure(3);<br />
subplot(211);<br />
plot(f(1:1800),wlog(1:1800));<br />
ylim([-100 10]);<br />
grid;<br />
title('Widmo sygnalu przed filtracja');<br />
xlabel('Czestotliwosc [Hz]');ylabel('Amplituda');<br />
subplot(212);<br />
plot(f(1:1800),wflog(1:1800));<br />
ylim([-100 10]);<br />
grid;<br />
title('Widmo sygnalu po filtracji');<br />
xlabel('Czestotliwosc [Hz]');ylabel('Amplituda');
Listing 6.7. Skrypt Matlaba użyty do filtracji sygnału EKG
Jako dodatkowe ćwiczenie proszę zaprojektować analogiczny filtr, ale o skończonej odpowiedzi impulsowej i porównać otrzymane rezultaty.
6.5. Transformata falkowa
W tym ćwiczeniu skorzystamy z narzędzia Matlaba o nazwie „waveletAnalyzer”. Umożliwia ono przeprowadzenie bardzo wielu operacji z użyciem falek. My skoncentrujemy się na obejrzeniu niektórych funkcji falkowych oraz przeprowadzeniu dekompozycji falkowej sygnałów jednowymiarowych.
Po wybraniu opcji „WaweletDisplay” mamy możliwość obejrzenia i porównania wielu funkcji falkowych. Na rys. 6.20. i 6.21. zostały zobrazowane funkcje falkowe Daubechies db2 i db6. Można zaobserwować kształt funkcji macierzystej i falkowej. Im rząd jest wyższy tym funkcja jest bardziej gładka. Przy dekompozycji falkowej należy dobrać kształt funkcji falkowej po kontem swoich potrzeb, albo do konkretnego sygnału. W dole rysunków przedstawione są współczynniki filtrów używanych do dekompozycji i rekonstrukcji falkowej. Widać, że liczba współczynników filtrów zależy od rzędu falki.
Rys. 6.20. Funkcje falkowe db2 oraz odpowiadające im filtry używane w procesie dekompozycji i rekonstrukcji
Rys. 6.21. Funkcje falkowe db6 oraz odpowiadające im filtry używane w procesie dekompozycji i rekonstrukcji
Kolejne przykłady przedstawiają dekompozycję falkową sygnałów jednowymiarowych. W pierwszym przykładzie analizowany jest sygnał skoku jednostkowego (rys. 6.21). Dekompozycja została wykonana z użyciem narzędzia „Wawelet 1-D” . Zastosowaną falką była db2, rozkład przeprowadzono na pięciu poziomach. Mamy więc sygnał aproksymacji a5 (najniższa częstotliwość) oraz pięć sygnałów detali d5 do d1. Detal d1 reprezentuje składową o najwyższej częstotliwości, a d5 o najniższej. W tym przypadku łatwo zaobserwować, że składowe dekompozycji przypominają kształtem zastosowaną falkę.
W drugim przykładzie sygnałem, który został poddany dekompozycji falkowej, jest sygnał zaprezentowany na rys. 6.23. Sygnał ten składa się z połączonych dwóch sygnałów sinusoidalnych. W miejscu połączenia występuje nieciągłość. Drugi sygnał sinusoidalny ma częstotliwość większą niż pierwszy. Zastosowano do dekompozycji falkę db2, a rozkład przeprowadzono na pięciu poziomach. W tym przypadku aproksymacja a5 reprezentuje w zasadzie pierwszy sygnał sinusoidalny o niższej częstotliwości. Natomiast drugi sygnał sinusoidalny został głównie zdekomponowany na detale d4 i d3. W miejscu nieciągłości występują wszystkie częstotliwości.
Rys. 6.22. Dekompozycja falkowa sygnału skoku jednostkowego
Rys. 6.23. Dekompozycja falkowa dwóch połączonych sinusoid z nieciągłością