Raw 데이터를 읽어오면 항상 데이터가 일정하지 않은것을 볼 수 있다.
칼만 필터는 어렵지 않아 책을 일고 공부한 내용을 작성하려고 한다.
배치식이란 위처럼 모든 데이터를 모두 모아서 한꺼번에 계산을 하는것을 말합니다.
이럼 배치식은 코딩에서 매우 비효율 적인것이 데이터를 추가하게 되면 모든 데이터를 다시 더한 후 k + 1을 해야한다는 점입니다.
하지만 재귀식을 이용하면 이전 결과를 활용하기 떄문에 효율적입니다.
재귀식을 사용하게 되면 계산 효율과 메모리 저장곤가의 측면에서 배치식보다 유리합니다.
배치식을 재귀식으로 변환해보겠습니다.
위식(배치식)에서 양변에 k를 곰하면
위식이 되고 다시 k-1로 나누면
위식이 되고 양변에 k-1/k 을 양변에 곱하면
위와 같이 재귀식이 완성 됩니다.
상수식으로 만들면
위와 같이 상수식으로 만들 수 있습니다.
c코드로 작성하면
#define SAMPLE_NORMAL_VALUE 10
uint8_t number_of_sample = SAMPLE_NORMAL_VALUE;
uint32_t avr filter (uint32_t new_value)
{
static uint32_t prev_value;
static uint32_t alpha;
uint32_t average;
number_of_sample++;
alpha = (number_of_sample - 1) / number_of_sample;
average = alpha * prev_value + (1 - alpha) * new_value;
prev_value = average;
return average;
}
위와 같이 평균필터를 작성할 수 있다.