Autokorelacja

Wykresy w dziedzinie czasu porównujące a) (po lewej) czysty biały szum gaussowski b) (po prawej) silnie zaszumiony sygnał, w którym składowa okresowa jest całkowicie zamaskowana
Funkcje autokorelacji a) (po lewej) funkcja autokorelacji szumu białego jest zerowa dla , b) (po prawej) okresowość funkcji autokorelacji wskazuje na okresowość sygnału. Na obu wykresach , co świadczy o normalizacji funkcji autokorelacji
Analiza gęstości widmowej mocy (PSD) a) (po lewej) widmo szumu białego w całym zakresie o zbliżonych wartościach b) (po prawej) wyraźny pik widmowy dla częstotliwości 1 Hz, ujawniający ukrytą składową sinusoidalną

Autokorelacja – narzędzie matematyczne stosowane w analizie procesów stochastycznych, szeregów czasowych oraz w przetwarzaniu sygnałów (np. obrazów czy dźwięków). Służy do badania stopnia zależności wartości danego procesu, szeregu lub sygnału w określonej chwili od jego wartości przesuniętych w czasie w tył lub w przód. Obliczenie autokorelacji pozwala na wykrycie regularnych struktur – takich jak okresowość – ukrytych w szumie. Daje to możliwość odfiltrowania istotnych danych od zakłóceń w celu dokładniejszej analizy lub poprawy jakości odbieranego sygnału.

Autokorelacja w opisie procesów stochastycznych

Niech dany będzie proces stochastyczny , taki że jest wartością tego procesu w czasie .

Def. Jeśli proces jest stacjonarny w szerszym sensie (słabo stacjonarny), tzn. ma niezmienną z upływem czasu wartość oczekiwaną równą , skończoną wariancję równą , a jego autokowariancja zależy wyłącznie od przesunięcia w czasie, to współczynnik autokorelacji dwóch zmiennych czasowych oddalonych o opóźnienie ma postać:

gdzie oznacza wartość oczekiwaną, a licznik ułamka stanowi funkcję autokowariancji . W tym przypadku autokorelacja jest funkcją jednej zmiennej (opóźnienia ).

Def. Jeśli proces nie spełnia założeń stacjonarności w szerszym sensie, współczynnik autokorelacji dwóch zmiennych czasowych i zależy od konkretnych momentów czasu oraz i przyjmuje ogólną postać:

gdzie to wartości oczekiwane, a to odchylenia standardowe procesu odpowiednio w momentach czasu oraz .

Relacja do stacjonarności w węższym sensie

Proces stacjonarny w węższym sensie (ściśle stacjonarny) charakteryzuje się niezmiennością całego łącznego rozkładu prawdopodobieństwa przy przesunięciu w czasie. Jeżeli proces ten posiada skończoną wartość oczekiwaną i skończoną wariancję, to automatycznie jest również stacjonarny w szerszym sensie; wówczas jego autokorelacja zależy wyłącznie od opóźnienia .

Istnieją jednak procesy ściśle stacjonarne mające rozkłady o tzw. grubych ogonach (np. rozkład Cauchy'ego), dla których wartość oczekiwana i wariancja nie istnieją – w ich przypadku klasyczny współczynnik autokorelacji nie może być zdefiniowany.

Autokorelacja w przetwarzaniu sygnałów

W przetwarzaniu sygnałów pojęcie autokorelacji jest stosowane najczęściej w sensie deterministycznym i bez normalizacji statystycznej (tj. bez odejmowania wartości średniej oraz bez dzielenia przez wariancję ).

Sygnały ciągłe

(1) Dla sygnału ciągłego o skończonej energii funkcję autokorelacji definiuje się jako całkę splotową, będącą funkcją przesunięcia :

lub równoważnie

gdzie:

  • jest przesunięciem czasowym (opóźnieniem),
  • oznacza splot funkcji,
  • to sprzężenie zespolone sygnału (dla sygnałów rzeczywistych ).

(2) Jeśli analizowany sygnał jest okresowy o okresie (przy czym ma skończoną moc, ale nieskończoną energię), autokorelację dla przesunięcia czasowego oblicza się jako średnią po jednym okresie:

Sygnały dyskretne

Dla sygnału dyskretnego złożonego z próbek odległych w czasie o , estymatę funkcji autokorelacji dla przesunięcia o próbek (czyli przesuniętych w czasie o , ) określa wzór:

Normalizacja autokorelacji

W praktyce inżynierskiej i numerycznej (np. przy użyciu biblioteki NumPy) wektor autokorelacji poddaje się skalowaniu, dzieląc go przez wartość uzyskaną dla zerowego przesunięcia (tj. dla dla procesu dyskretnego lub dla procesu ciągłego). Znormalizowaną funkcję autokorelacji definiuje wzór:

Proces ten stosuje się w celu:

Obliczenia numeryczne autokorelacji sygnału z szumem

Omówiono tu program, który realizuje numerycznie zadanie z zakresu cyfrowego przetwarzania sygnałów (ang. Digital Signal Processing – DSP): detekcję słabego sygnału okresowego ukrytego w silnym szumie (jako szum wybrano szum biały o rozkładzie normalnym). Program wykorzystuje do tego analizę korelacyjną (w dziedzinie czasu) oraz analizę spektralną (w dziedzinie częstotliwości).

Na grafikach, utworzonych za pomocą tego programu, pokazano: 1) biały szum gausowski, 2) mocno zaszumiony sygnał (w którym składowa użyteczna jest całkowicie niewidoczna), 3) obliczoną funkcję autokorelacji dla szumu białego, 4) obliczoną funkcję autokorelacji dla sygnału – przebieg funkcji autokorelacji ujawnia zaskakującą okresowość ukrytego sygnału, której nie da się odczytać z jego przebiegu czasowego, 5) gęstość widmową mocy (widmo) szumu białego, 6) gęstość widmową mocy (widmo) zaszumionego sygnału – widoczny jest wyraźny pik dla częstotliwości , który jednoznacznie identyfikuje częstotliwość ukrytego komponentu okresowego na tle równomiernego widma szumu.

Kod programu znajduje się w opisie pierwszej grafiki: trzeba kliknąć w tę grafikę i wybrać opcję „Więcej szczegółów”.

Próbkowanie sygnału

Sygnał ciągły zostaje poddany procesowi próbkowania (dyskretyzacji) z okresem próbkowania s, co definiuje częstotliwość próbkowania jako:

Zgodnie z twierdzeniem Nyquista-Shannona, maksymalna częstotliwość, jaką można zarejestrować bez aliasingu, wynosi:

Generowany sygnał dyskretny składa się z komponentu użytecznego (sinusoidy o częstotliwości ) oraz szumu losowego:

,

gdzie reprezentuje dyskretny szum biały o rozkładzie normalnym, średniej zero i wariancji . Ponieważ amplituda sinusoidy wynosi (co oznacza moc składowej zmiennej równą ), a moc szumu wynosi , stosunek mocy sygnału do szumu (SNR) jest bardzo niski i wynosi ().

Funkcja autokorelacji

Autokorelacja sygnału dyskretnego mierzy stopień powtarzalności i podobieństwa sygnału do samego siebie przesuniętego w czasie o opóźnienie wynoszące próbek. Teoretyczna funkcja autokorelacji dla sygnału jest definiowana wzorem:

Ponieważ sygnał wyjściowy jest sumą sinusoidy i szumu

,

to otrzymamy:

Dzięki liniowości operatora wartości oczekiwanej

możemy zapisać jako sumę czterech oddzielnych wartości oczekiwanych (wcześniej mnożąc odpowiednie wyrażenia w nawiasach):

Każdy z tych czterech składników pełni inną rolę fizyczną i matematyczną:

(1)
– autokorelacja sygnału użytecznego; dla fali sinusoidalnej autokorelacja zachowuje okresowość i przyjmuje postać funkcji cosinus
(2)
oraz
– wyrazy korelacji wzajemnej sygnału użytecznego i szumu zerują się, gdyż losowy szum jest całkowicie niezależny od deterministycznej sinusoidy,
(3)
– autokorelacja szumu białego jest różna od zera tylko wtedy, gdy mnożymy próbkę przez tę samą próbkę, czyli dla , zaś dla przesunięcia autokorelacja szumu zeruje się (jest tak dlatego, że szum biały nie wykazuje pamięci i jego kolejne próbki są całkowicie niezależne od siebie)

Ostatecznie mamy:

Wynik ten oznacza, że funkcja autokorelacji dla każdego jest funkcją okresowa, o okresie równym okresowi składowej sinusoidalnej sygnału, pozwalając na wyodrębnienie jej z szumu; wpływ szumu teoretycznie spada do zera.

Widmo Gęstości Mocy (PSD)

Drugą metodą detekcji jest transformacja sygnału z dziedziny czasu do dziedziny częstotliwości za pomocą Dyskretnej Transformaty Fouriera (ang. Discrete Fourier Transformation – DFT), realizowanej algorytmem szybkiej transformaty Fouriera (ang. Fast Fourier Transformation – FFT):

Widmo gęstości mocy (ang. Power Spectral Density – PSD) definiuje rozkład mocy sygnału w dziedzinie częstotliwości:

Szum biały charakteryzuje się płaskim widmem (jednostajna gęstość mocy w całym pasmie), natomiast sygnał sinusoidalny skupia swoją energię, tworząc wyraźny, ostry prążek (pik) dokładnie dla częstotliwości .

Realizacja w kodzie programistycznym

Program implementuje powyższą teorię w języku Python przy użyciu bibliotek NumPy (obliczenia wektorowe) oraz Matplotlib (wizualizacja).

Estymacja autokorelacji

W kodzie zastosowano skończony, nieobciążony estymator funkcji autokorelacji dla przesunięć dyskretnych :

,

gdzie oznacza całkowitą liczbę próbek sygnału. Dzielenie przez kompensuje zmniejszającą się liczbę par próbek biorących udział w sumowaniu dla rosnących przesunięć .

W programie operacja ta została zoptymalizowana wektorowo poprzez pętlę wyznaczającą iloczyn skalarny (funkcja np.dot) na odpowiednio przyciętych wycinkach tablic:

for r in range(m):
    kor_yn[r] = np.dot(yn[:N-r], yn[r:]) / (N-r)
    kor_y[r]  = np.dot(y[:N-r],  y[r:])  / (N-r)

gdzie wycinek y[:N-r] odpowiada czynnikowi , natomiast przesunięty wycinek y[r:] reprezentuje czynnik .

Następnie przeprowadzana jest normalizacja względem punktu startowego :

W skrypcie operację tę realizują linie kor_yn_norm = kor_yn / kor_yn[0] oraz kor_y_norm = kor_y / kor_y[0].

Analiza częstotliwościowa i prezentacja danych

  • Obliczenie widma: Za pomocą funkcji np.fft.fft wyznaczana jest transformata spektralna. Ponieważ sygnał wejściowy jest rzeczywisty, jego widmo jest symetryczne. Program odrzuca częstotliwości ujemne (instrukcja freqs >= 0) i mnoży wynik jednostronny razy 2, aby zachować całkowitą energię sygnału w analizowanym pasmie.
  • Skalowanie wykresów czasowych: Aby gęsty szum nie zlał się w nieczytelną plamę, wykresy sygnałów w czasie ograniczono do pierwszych 500 próbek (czyli pierwszych 5 sekund trwania sygnału). Wizualne linie ciągłe są wynikiem interpolacji liniowej pomiędzy dyskretnymi próbkami przez funkcję plt.plot.
  • Prezentacja piku autokorelacji: Oś X wykresu autokorelacji została celowo przesunięta o margines wynoszący za pomocą funkcji plt.axis([-20, m, -0.5, 1.1]). Zapobiega to nakładaniu się potężnej szpilki autokorelacji szumu dla na lewą ramkę wykresu.
  • Zmarszczki na wykresie: Drobne, nieregularne oscylacje („zmarszczki”) pojawiają się na wykresie wyjściowej fali autokorelacji, jeśli liczba próbek będzie niewielka (); wtedy przy skończonym czasie trwania sygnału szum losowy nie jest w stanie uśrednić się idealnie do zera.

Zobacz też

Bibliografia