반응형
이동평균 필터는 과거 데이터를 모두 더한 후 갯수만큼 나누면 된다. 하지만, 이러한 방법은 이동평균 윈도우 크기가 커지면 연산량이 매우 많아진다.
과거 데이터를 모두 더하지 않고도 다음과 같이 이동평균 필터를 구현할 수 있다. (윈도우 크기 100개)
sum += input; // 가장 최근 데이터
sum -= buf[buf_idx]; // 가장 과거 데이터
buf[buf_idx] = input;
buf_idx++;
if(buf_idx>=100) buf_idx = 0;
output = sum / 100;
sum에 가장 과거 데이터를 빼고 가장 최근 데이터를 합하여 윈도우내의 데이터 합을 구한다.
이 방식은 buf에 들어있는 데이터의 합과 sum이 동일해야 한다. 만약 실행 도중 sum 값이나 buf가 임의로 변하면 비정상적인 출력이 계속해서 나오고 시간이 지나도 정상적으로 회복되지 못한다.
반응형
'전자 > 신호 및 시스템' 카테고리의 다른 글
DFT 주파수 응답특성 (1) | 2022.11.13 |
---|---|
2개 신호의 차이 비교 방법 (0) | 2022.05.15 |
Matlab 임의의 입력신호 응답 (0) | 2022.05.10 |
이동평균 필터의 주파수 응답특성 (0) | 2022.04.29 |
차분 방정식의 시간에 대한 함수 계산 (0) | 2022.03.30 |
댓글