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.