void series_smooth(series_t *series, series_t *res, int window) { point_t tmp; double sum; int i, j; series_init(res); if (window < 0) { return; } else if (window % 2 == 0) { // need a odd number for mean smoothing window += 1; } for (i = 0; i < series->pts_used; i++) { if (i > (window / 2) && i < (series->pts_used - (window / 2))) { sum = 0.0; for (j = i - (window / 2); j < i + (window / 2); j++) { sum += series->pts[j].y; } tmp.x = series->pts[i].x; tmp.y = sum / window; series_append(res, tmp); } } }
//Initialize functions for the board //Starts up void init(void) { setup_flash(); setup_clocks(); setup_nvic(); systick_init(SYSTICK_RELOAD_VAL); board_setup_gpio(); setup_timers(); board_setup_usb(); series_init(); disableDebugPorts(); }