MATLAB i zagadka korelacji

Badanie podobieństwa między sygnałami jest ważnym elementem wielu dziedzin nauki i techniki – nie tylko cyfrowego przetwarzania sygnałów. W tym wpisie zajmę się problemem ilościowego obliczania korelacji pomiędzy dwoma, a nawet wieloma sygnałami.

Do problemu można podejść na wiele różnych sposobów. Teoria daje nam co najmniej kilka narzędzi do badania korelacji między sygnałami. Tak samo w MATLABie jest kilka funkcji do obliczeń numerycznych w tym zakresie. Można je podzielić ze względu na liczbę badanych sygnałów/zmiennych na:

  • Współczynniki – czyli pojedyncze liczby, określające podobieństwo dwóch sygnałów,
  • Macierze – zawierające tabele współczynników, a więc określające podobieństwo między wieloma sygnałami,
  • Funkcje  - a więc wartości współczynników w funkcji przesunięcia dwóch sygnałów między sobą.

Jednak, żeby nie było zbyt łatwo, w literaturze znajdujemy informacje o tym, że wymienione powyżej miary podobieństwa występują w dwóch wariantach, jako:

  • Kowariancja
  • Korelacja

Należy podkreślić, że nomenklatura stosowana w literaturze nie jest tu spójna i również w MATLABie nie zawsze jest zgodna z ogólnie przyjętymi zasadami. Niemniej aby uporządkować wiedzę na ten temat musimy przyjąć, że:

Kowariancja – niezależnie od tego czy dotyczy macierzy czy funkcji jest wielkością nieunormowaną, to znaczy może ona przyjmować wartości z zakresu liczb rzeczywistych. Tym samym trudno porównać ze sobą dwa współczynniki kowariancji wyznaczone dla różnych sygnałów, gdyż otrzymana wartość zależy od wartości tych sygnałów. Kowariancja ma trzy charakterystyczne cechy:

  • Jeżeli jest równa 0 to między badanymi sygnałami nie ma żadnego podobieństwa,
  • Jeżeli jest dodatnia, to między sygnałami występuje „dodatnie” podobieństwo (np. sygnały we fazie),
  • Jeżeli jest ujemna, to między sygnałami występuje „ujemne” podobieństwo (np. sygnały w przeciwfazie)

Korelacja – w przeciwieństwie do kowariancji, wartości korelacji są unormowane, najczęściej w taki sposób, że przyjmują one wartości z przedziału od -1 do 1. Dzięki temu, można z łatwością porównywać ze sobą tak unormowane liczby. Wartość 1 oznacza pełną korelację, czyli np. mamy do czynienia z dwoma identycznymi sygnałami. Wartość -1 oznacza pełną korelację ujemną, a 0 brak korelacji. Wartości pomiędzy -1 a 1 określają stopień podobieństwa.

Niektóre źródła literaturowe rozróżniają kowariancję i korelację w zależności od tego czy od badanych sygnałów odejmowane są ich wartości średnie przed policzeniem współczynników czy funkcji podobieństwa. I tak, jeżeli od sygnałów nie odejmujemy wartości średnich to mamy do czynienia z korelacją, a jeżeli odejmujemy to mamy do czynienia z kowariancją..

Jak widać można się w tym nieco pogubić.. W MATLABie nie ma spójności w tym zakresie. Współczynniki kowariancja/korelacja są rozróżniane ze względu na to czy są normowane do jedności czy nie. Natomiast funkcje kowariancji/korelacji są rozróżniane ze względu na to, czy od sygnałów są odejmowane ich wartości średnie czy nie. Na dodatek funkcje kowariancji/korelacji można dodatkowo w MATLABie normować do jedności…

Można się pogubić..

MATLAB

Mimo zawiłości nomenklatury patrząc na funkcje dostępne w MATLABie można wiedzę dodatkowo uporządkować. Do obliczania kowariancji są dostępne funkcje: cov – macierz kowariancji oraz xcov – funkcja kowariancji.

Do obliczania korelacji są funkcje: corrcoef – macierz korelacji oraz xcorr – funkcja korelacji.

Użycie funkcji cov – oblicza więc nieunormowaną macierz kowariancji, a użycie funkcji corrcoef normuje te obliczenia do jedności dzięki czemu otrzymujemy macierz korelacji.

Funkcja xcov – oblicza funkcje kowariancji z sygnałów z odjętą od nich wartością średnią, a funkcja xcorr oblicza funkcję korelacji czyli z sygnałów bez odejmowania od nich wartości średniej.

Dodatkowo funkcje xcov i xcorr mogą być normowane do jedności dla zerowego przesunięcia czasowego między sygnałami…

Uff.. trudno powiedzieć jaka logika stała za takim skonstruowaniem narzędzi do badania podobieństwa w MATLABie.. Muszę przyznać, że to jeden z bardziej zawiłych zakątków obliczeń numerycznych w pakiecie Mathworksa. Mam nadzieję, że przykłady, które umieszczę w następnym poście dodatkowo wyjaśnią sytuacje.

(Visited 1 043 times, 1 visits today)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *