전자/신호 및 시스템

이동평균필터 프로그램 코드

Begi 2020. 5. 10. 16:12
반응형

대표적인 FIR 필터인 이동 평균 (Moving Average, MA) 필터는 다음과 같다.

 

정수형 변수를 사용하여 위 식을 그대로 코딩하면 N으로 나눌 때 오차가 발생하고 그 오차가 누적된다. 이동 평균을 실제로 코딩할 때는 다음과 같이 s를 사용하여 나누기 연산을 제거한다.

 

여기서 s는 다음과 같다.

 

C로 나타낸 MA 필터는 다음과 같다.

 

 s = s + input;
 s = s - buf[buf_idx];
 buf[buf_idx] = input;
 buf_idx++;
 if(buf_idx>=500) buf_idx = 0;
 output = s / 500;

 

MA 필터는 메모리를 많이 사용하는 단점이 있지만 IIR 필터에 비해 동작이 확실하고 디버깅을 아주 쉽게 할 수 있다. 메모리의 여유가 있다면 MA 필터를 사용하는 것이 IIR 필터에 비해 훨씬 좋다.

 

반응형