평균필터 (average filter)

유명현·2022년 1월 9일
0

Raw 데이터를 읽어오면 항상 데이터가 일정하지 않은것을 볼 수 있다.

칼만 필터는 어렵지 않아 책을 일고 공부한 내용을 작성하려고 한다.

<평균 필터 (average filter)>

<일반적인 평균 배치식>

배치식이란 위처럼 모든 데이터를 모두 모아서 한꺼번에 계산을 하는것을 말합니다.
이럼 배치식은 코딩에서 매우 비효율 적인것이 데이터를 추가하게 되면 모든 데이터를 다시 더한 후 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;
}

위와 같이 평균필터를 작성할 수 있다.

profile
기억보다 기록을

0개의 댓글