Laboratorium 9: Ruchoma średnia

Zadanie

Wyobraźmy sobie że mamy zestaw danych (pochodzących z jakichś pomarów). Są one lekko zaszumione. Naszym zadaniem jest zastosowane metody ruchomej średniej aby je wygładzić.

Na potrzby tego zadania trzeba będzie:

  • na podstawie zadanej liczby N (długość seri danych)

  • wygenerować N wartości zmennoprzecinkowych

  • a następnie „wygładzić dane" stosując metodę ruchomej średniej o m składnikach.

Trzeba też zadać w odpowiedni sposób wartość m.

Następnie program dokonuje odpowiednich przeliczeń i wyprowadza na ekran dwie kolumny liczb: dane oryginalne i dane przetworzone.

Ruchoma średnia

Niech $w_i,\quad i=0, 1,\ldots, N-1$1. Ruchoma średnia to metoda wygładzania danych polegająca na wyliczeniu na podstawie danych z tablicy $w$ nowej tablicy $t$ w sposób następujący:

$$t_i = \frac{1}{m}\sum_{j=-(m-1)/2}^{j=(m-1)/2} w_{i+j}$$

Wartość $m$ przyjmowana jest jako liczba nieparzysta (3, 5, 7,…)2.

Zdecydować trzeba, co robimy z elementami tablicy, dla których nie można3 wyliczyć pełnej średniej. Można wybrać jeden z dwu wariantów:

  1. Przepisujemy je bez zmian;

  2. Wyliczamy taką średnią jaką się da wyliczyć.

To znaczy gdy $m = 5$, $j$ zmienia się w zakresie od -2 do 2 (włącznie), zatem niedostępne są elementy $w_{-1}$ i $w_{-2}$ potrzebne do wyliczenia $t_0$. Czyli albo:

  1. przepisujemy bez zmian $t_0\leftarrow w_0$ i $t_1\leftarrow w_1$, kolejne elementy liczymy zgodnie z wzorem. Podobnie na drugim końcu tablicy.

  2. Wyliczamy to „co się da":

    $$t_0=\frac{1}{3} (w_0 + w_1 + w_2)$$

    $$t_1=\frac{1}{4} (w_0 + w_1 + w_2 +w_3)$$

    (a $t_2$ już „normalnie": $t_2=\frac{1}{5}(w_0+w_1+w_2+w_3+w_4)$). I podobnie na końcu tablicy.


  1. Zwracam uwagę, że w opisie dane numerowane są od 0, podobnie jak w przypadku języka C (gdzie indeksy tablicy rozpoczynają się od zera). ↩︎

  2. Czemu? ↩︎

  3. Pierwsze i ostatnie elemanty tablicy. ↩︎

Poprzedni
Następny