Laboratorium Przetwarzania Sygnałów Biomedycznych Ćwiczenie 1 Wydobywanie sygnałów z szumu z wykorzystaniem uśredniania Opracowali: - prof. nzw. dr hab. inż. Krzysztof Kałużyński - mgr inż. Tomasz Kubik Politechnika Warszawska, Wydział Mechatroniki, Instytut Metrologii i Inżynierii Biomedycznej, Zakład Inżynierii Biomedycznej Warszawa, 2011
1. Cel ćwiczenia. W ramach ćwiczenia studenci zapoznają się techniką wydobywania sygnału z szumu nieskorelowanego metodą uśredniania. W ćwiczeniu analizie poddawane będą różne deterministyczne przebiegi z dodanym szumem białym. W ramach ćwiczenia studenci zapoznają się z wpływem liczby uśrednień na stosunek sygnału do szumu S/N, oraz z wpływem synchronizacji uśredniania na wynik tej procedury. Kolejny element ćwiczenia stanowi badanie właściwości estymatora widmowej gęstości mocy metodą bezpośredniej transformacji Fouriera z uśrednianiem i bez uśredniania. 2. Wymagane wiadomości. 1. Klasyfikacja sygnałów (deterministyczne, losowe, ciągłe, dyskretne). 2. Właściwości sygnałów stochastycznych (losowych), podstawowe pojęcia dotyczące estymacji parametrów. 3. Szum biały i jego właściwości. 4. Wartość skuteczna sygnału, funkcja i współczynnik autokorelacji, widmowa gęstość mocy. 3. Literatura 1. T. P. Zieliński Cyfrowe przetwarzanie sygnałów. Od teorii do zastosowań, WKŁ, Warszawa 2007, 2. materiały wykładowe. 2
4. Spis niestandardowych funkcji Matlaba przydatnych podczas realizacji ćwiczenia. [f WGM] = WGM(syg, nfft, fp, okno, beta, typ_wykresu) Funkcja wyznaczająca widmową gęstość mocy sygnału wejściowego syg. Parametry wyjściowe: 1. f wektor częstotliwości dla których zostały obliczone wartości widmowej gęstości mocy 2. WGM wektor wartości widmowej gęstości mocy sygnału wejściowego syg. Parametry wejściowe: 1. syg sygnał wejściowy, 2. nfft długość (w próbkach) okna danych poddanych DTF, jeżeli nfft jest większe od długości danych wejściowych syg to dane uzupełniające są zerami tak aby długość okna danych wynosiła nfft, w odwrotnej sytuacji tylko próbki od pierwszej do nfft są poddane analizie. Jeżeli jako wartość zostanie podana pusta tablica ( [] ) to nfft automatycznie będzie równe długości wektora danych wejściowych, 3. fp częstotliwość próbkowania sygnału wejściowego syg. 4. okno - rodzaj okna czasowego (funkcji granic): a. prostokatne okno prostokątne, b. hann okna Hanna, c. hamming okno Hamminga, d. blackman okno Blackmanna, e. kaiser okno Kaisera, 5. beta współczynnik okna Kaisera, 6. typ_wykresu określa typ prezentacji graficznej, a. liniowy generowany jest liniowy wykres ciągły widmowej gęstości mocy wyrażonej w 1/Hz, b. logarytmiczny generowany ciągły wykres widmowej gęstości mocy wyrażonej w decybelach. Wykres jest znormalizowany do wartości maksymalnej, c. [] brak wykresu Przykład: [f3, WGM3] = WGM(s3, 512, 1000, hann, [], logarytmiczny ); Powyższa komenda wyznaczy wartości widmowej gęstości mocy (wgm3) sygnału s3 o długości DTF 512 próbek dla częstotliwości próbkowania 10000 Hz, wynik zostanie zapisany w zmiennych f3 i wgm3. Utworzony zostanie wykres logarytmiczny danych wyjściowych. 3
[czas kor] = korelacja(a, B, fp, typ_estymatora) Funkcja wyznacza wartości funkcji korelacji lub współczynnika korelacji wzajemnej sygnałów A i B a następnie wykreśla jej przebieg w funkcji opóźnienia. Uwaga: jeśli A=B, wyznaczana jest funkcja bądź współczynnik autokorelacji. Parametry wyjściowe: 1. czas wektor opóźnień, dla których wyznaczone są kolejne wartości korelacji, 2. kor wektor wartości korelacji wzajemnej lub autokorelacji. Parametry wejściowe: 1. A wektor reprezentujący wartości pierwszego sygnału, 2. B wektor reprezentujący wartości drugiego sygnału, 3. fp częstotliwość próbkowania sygnałów wejściowych A i B, 4. typ_estymatora rodzaj użytego estymatora: a. obciazony estymator obciążony funkcji korelacji, b. nieobciazony estymator nieobciążony funkcji korelacji, c. wsp estymator współczynnika korelacji Przykład: [tau67, kor67] = korelacja(s6, s7, 500, wsp ); Polecenie estymuje współczynnik korelacji wzajemnej (kor67) pomiędzy sygnałami s6 i s7. Oba sygnały są próbkowane z częstotliwością 500 Hz. Wynik zostanie zapisany w zmiennych tau67 i kor67 oraz zostanie utworzony wykres danych wyjściowych. 4
[signal gpack] = gausspackwithnoise(snratio, typ, k) Funkcja generuje k przebiegów o długości 700 próbek z paczką gaussowską usytuowaną w połowie długości przebiegu. Do każdego z przebiegów dodany jest nieskorelowany szum biały. Stosunek sygnału do szumu określa parametr snratio. Używając funkcji należy explicite określić stosunek częstotliwości sygnału cosinusoidalnego w paczce gaussowskiej do częstotliwości próbkowania. Parametry wyjściowe: 1. signal macierz o wymiarze kx700 zawierająca w każdym z k wierszy realizacje sygnału deterministycznego (paczki gaussowskiej wypełnionej sygnałem sinus) z dodanym szumem białym o wartości skutecznej 1. 2. gpack przebieg niezaszumionego sygnału deterministycznego umieszczonego w macierzy signal, Parametry wejściowe: 1. snratio stosunek sygnału do szumu w wynikowym przebiegu, wyrażony w decybelach. 2. typ parametr określający sposób lokalizowania paczki sygnału deterministycznego. a. stable paczka w każdym przebiegu umieszczona jest w tym samym miejscu w czasie b. vibration paczka w każdym przebiegu umieszczona jest w innym, losowo określonym położeniu. Zmiana położenia w kolejnych przebiegach wynosi do 10% okresu paczki. 3. k liczba realizacji sygnału w zwracanej macierzy. Wartość skuteczna szumu w wygenerowanym sygnale jest równa 1. Amplituda paczki sygnału deterministycznego dobierana jest w taki sposób, by uzyskać zadaną wartość S/N (snratio). W zależności od wartości podanej przez użytkownika (snratio) jej wartość wynosi: U s =10 snratio 20. Przykład: [sig gausp] = gausspackwithnoise(-20, stable, 1000); Powyższe wywołanie funkcji wygeneruje przebieg zawierający zsumowany szum biały i paczkę gaussowską pośrodku przebiegu. Stosunek sygnału do szumu wynosi -20dB. W wyniku wywołania funkcji otrzymamy 1000 realizacji przebiegu. Zmienna gausp zawiera paczkę gaussowską, którą można wykorzystać do obliczenia wartości skutecznej sygnału deterministycznego. 5
[signal gpack] = rectwithnoise(snratio, typ, k) Funkcja generuje k przebiegów o długości 700 próbek z impulsem prostokątnym usytuowanym w środku przebiegu. Do każdego przebiegu dodany jest szum biały, a stosunek sygnału do szumu określa parametr snratio. Parametry wyjściowe: 1. signal macierz o wymiarze kx700 zawierająca w każdym z k wierszy realizacje sygnału deterministycznego (impuls prostokątny o czasie trwania 100 próbek) z dodanym szumem białym o wartości skutecznej 1. 2. gpack przebieg niezaszumionego sygnału deterministycznego umieszczonego w macierzy signal, Parametry wejściowe: 1. snratio stosunek sygnału do szumu w wynikowym przebiegu, wyrażony w decybelach 2. typ parametr określający położenie w każdej kolejnej realizacji impulsu prostokątnego. a. stable impuls w każdym przebiegu umieszczony jest w tym samym miejscu w czasie b. vibration impuls w każdym przebiegu umieszczony jest w innym, losowo określonym położeniu. Zmiana położenia impulsu wynosi do 15% czasu trwania impulsu. 3. k liczba realizacji sygnału w zwracanej macierzy. Wartość skuteczna szumu w wygenerowanym sygnale jest równa 1. Do tej wartości dostosowywany jest poziom impulsu sygnału deterministycznego. W zależności od wartości podanej przez użytkownika (snratio) jego wartość wynosi: U s =10 snratio 20. Przykład: [sig rect] = rectwithnoise(-20, stable, 1000); Powyższe wywołanie funkcji wygeneruje przebieg zawierający zsumowany szum biały i impuls prostokątny pośrodku przebiegu. Stosunek sygnału do szumu wynosi -20dB. W wyniku wywołania funkcji otrzymamy 1000 realizacji zadanego przebiegu. Zmienna rect zawiera niezaszumiony impuls prostokątny, który można wykorzystać do obliczenia wartości skutecznej sygnału deterministycznego. 6
[nmed variance] = varpsd(signal, k) Funkcja oblicza widmową gęstość szumu i uśrednia ją k-krotnie wyznaczając następnie wariancję widmowej gęstości mocy (WGM). Podczas działania funkcji rysowane są przebiegi widmowej gęstości mocy dla 10 pośrednich liczb uśrednień oraz obliczana jest wariancja tych przebiegów. Dodatkowo po skończeniu działania wyświetlana jest zależność wariancji WGM od liczby uśrednień. Zwracanymi parametrami są wektor argumentów i wartości tej ostatniej zależności. Widmowa gęstość mocy wewnątrz funkcji obliczana jest przy użyciu funkcji WGM z następującymi parametrami: nfft = 128, fp = 1, okno = prostokatne. Parametry wejściowe: 1. signal macierz o wymiarze kx700 zawierająca w każdym z k wierszy realizacje sygnału deterministycznego z dodanym szumem białym o wartości skutecznej 1. 2. k docelowa liczba uśrednień widmowej gęstości mocy. Parametry wyjściowe: 1. nmed wektor argumentów dla zależności wariancji widmowej gęstości mocy od liczby uśrednień. 2. variance wektor wartości dla zależności wariancji widmowej gęstości mocy od liczby uśrednień. Przykład: [nmed variance] = varpsd(signal, 100); Zakładamy, że macierz signal zawiera macierz sygnału zwróconą przez funkcję gausspackwithnoise lub rectwithnoise. Dla parametru k=100 przebiegi widmowej gęstości mocy zostaną uśrednione 100 razy. W wyniku otrzymamy wartości wariancji dla nieuśrednionej WGM oraz dla WGM po 10, 20, 30, 40, 50, 60, 70, 80, 90 oraz 100 uśrednieniach. 7
5. Przebieg ćwiczenia. 1. Szum biały Używając funkcji randn wygenerować kilka wektorów (o długości 1000 próbek) zawierających szum biały. Przy użyciu funkcji WGM wyznaczyć jego widmową gęstość mocy. Następnie wyznaczyć wartość skuteczną wygenerowanych przebiegów. Widmowa gęstość mocy dla sygnałów dyskretnych: P xx 2 N 1 1 1 2 1 ( f ) = lim E{ x( n) exp( j2πnf / N) } = lim E{ X N ( f ) } X N ( f ) N NT N n 0 NT = NT 2 gdzie x(n) próbki sygnału,, X N wartości transformaty Fouriera ciągu próbek x(n), N długość okna danych w próbkach T, f pr okres i częstotliwość próbkowania. Uwaga: operacja wyznaczania wartości oczekiwanej E{} wymaga dysponowania zbiorem realizacji sygnału, co umożliwa wyznaczenie zbioru widmowych gestości mocy; w sytuacjach praktycznych nie zawsze jest realizowalna. Wartość skuteczna dla sygnałów dyskretnych: RMS = P x = 1 lim N N N 1 n= 0 x 2 ( n) 1 N N 1 n= 0 x 2 ( n) Używając funkcji korelacja zbadać przebieg funkcji autokorelacji szumu białego. Korelację wyznaczyć dla przesunięć k=[0;500]. Estymator funkcja korelacji dla sygnałów dyskretnych ma postać: R xy = E * { x( n) y ( n k) } gdzie E{} jest operatorem wyznaczania wartości oczekiwanej, natomiast * jest operatorem wartości sprzężonej. Estymator obciążony funkcji korelacji przyjmuje postać: R xy ( k) = 1 N N 1 k n= 0 * x( n) y ( n k) Estymator nieobciążony funkcji korelacji ma postać: R xy ( k) = 1 N k N 1 k n= 0 * x( n) y ( n k) 8
Narysować wykresy funkcji autokorelacji szumu białego wyznaczonej przy użyciu estymatora obciążonego i nieobciążonego. Wyjaśnić różnice otrzymanych wykresów autokorelacji szumu białego. 2. Generacja sygnałów deterministycznych z szumem. Używając funkcji rectwithnoise i gausspackwithnoise wygenerować wygenerować 10000 realizacji przebiegów zaszumionych sygnałów deterministycznych, określonych następująco: paczka gaussowska z szumem białym ze stałym położeniem paczki w kolejnych realizacjach; wartości SNR: 0[dB], -20[dB], -40[dB]. impuls prostokątny z szumem białym ze stałym położeniem impulsu w kolejnych realizacjach; wartości SNR: 0[dB], -20[dB]. impuls prostokątny z szumem białym ze zmiennym położeniem impulsu w kolejnych realizacjach (parametr: vibration ) ; wartości SNR: 0[dB], -20[dB]. przy użyciu funkcji korelacja wykreślić funkcję korelacji dwóch dowolnie wybranych realizacji dla jednego z wygenerowanych sygnałów oraz funkcję autokorelacji dla innego wybranego przebiegu. 3. Badanie właściwości uśrednionego estymatora funkcji widmowej gęstości mocy w zależności od liczby uśrednień. Przy użyciu funkcji varpsd zbadać właściwości estymatora widmowej gęstości mocy w zależności od liczby uśrednień. Zbadać wartość wariancji WGM dla 10, 100 oraz 1000 uśrednień. Wywołanie funkcji varpsd dla 10000 uśrednień: [nmed variance] = varpsd(signal, 10000) gdzie signal jest macierzą zawierającą 10000 wierszy, z których każdy zawiera kolejne realizacje szumu białego o długości 250 próbek. Macierz taką można uzyskać pobierając z dowolnego przebiegu wygenerowanego w punkcie 2. podmacierz składającą się z pierwszych 250 kolumn macierzy signal uzyskanej w wyniku wywołania funkcji gausspackwithnoise lub rectpackwithnoise. Jak wariancja widmowej gęstości mocy zależy od liczby uśrednień przebiegów WGM? Odpowiedź uzasadnić. 9
4. Wydobywanie sygnału z szumu poprzez uśrednianie Napisać funkcję lub określić ciąg poleceń umożliwiający wykonanie następujących operacji na wygenerowanych sygnałach: dla każdego z sygnałów ze stałym położeniem paczki deterministycznej (zarówno paczki gaussowskiej jak i impulsu prostokątnego) wyznaczyć wartości stosunku sygnału do szumu (db) oraz wartość skuteczną szumu dla kolejno: 10, 100, 500, 1000 uśrednień. Narysować przebiegi dla 10, 100 i 10000 uśrednień oraz zależność wartości skutecznej szumu od liczby uśrednień. dla sygnału ze zmiennym położeniem impulsu prostokątnego w kolejnych realizacjach pokazać przebiegi i wyznaczyć stosunek sygnału do szumu dla 10, 100 i 1000 uśrednień oraz zależność wartości skutecznej szumu od liczby uśrednień. Wskazówka: do badania wartości skutecznej szumu w kolejnych uśrednieniach można pobrać z przebiegu ostatnie 250 próbek przebiegu nie ma tam próbek sygnału deterministycznego. Przy użyciu napisanej funkcji dla jednego z sygnałów wygenerowanych w punkcie 2 wyznaczyć zależność S/N od liczby uśrednień, Wskazać inne niż zastosowane w ćwiczeniu sposoby eliminacji szumów w sygnałach. Jak w kategoriach przetwarzania sygnałów (analiza widmowa, filtracja etc.) zinterpretować można niedoskonałość uśredniania zasymulowaną w p. 4. Jakiej operacji dokonywanej na sygnale będącym przedmiotem zainteresowania (prostokąt) odpowiada? 10
5. Sprawozdanie Ćwiczenie nr 1 Data... L.p. Imię i nazwisko Grupa Data 1. 2. Punkt ćwiczenia Liczba punktów Uzyskana liczba punktów Uwagi prowadzącego 1 2 2 0,5 3 1,5 4 2 11