전자/신호 및 시스템
이동평균필터 프로그램 코드
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 필터에 비해 훨씬 좋다.
반응형