프로그래밍/기록, 개념, 용어
실시간으로 평균 값 구할 때 좋은, 평균 필터 알고리즘.
제페
2021. 4. 25. 12:03
반응형
실시간으로 들어오는 값들로 부터 실시간으로 평균 값을 계산할 때 유용.
이전 값들의 목록 또는 이전 값들의 총 누산 값들을 저장할 필요가 없다.
#include <iostream>
using namespace std;
/// @params prevAvgVal 이전 평균 값.
/// @params numSample 몇 번째 샘플인지.
/// @params sampleVal 샘플 값.
int avg(int prevAvgVal, int numSample, int sampleVal)
{
return (prevAvgVal * (numSample - 1) / numSample) + (sampleVal / numSample);
}
int main()
{
int prevAvgVal = 0;
int sample = 4;
int totalAccVal = 0;
for (int numSample = 1; numSample <= sample; ++numSample)
{
const int sampleVal = numSample * 100;
const int avgVal = avg(prevAvgVal, numSample, sampleVal);
totalAccVal += sampleVal;
cout << "sample: " << numSample << endl;
cout << "sampleVal: " << sampleVal << endl;
cout << "avgVal: " << avgVal << endl;
cout << endl;
prevAvgVal = avgVal;
}
// 일반적으로 평균 구하는 방법과 비교를 위해 찍어 봄.
cout << "avgVal: " << totalAccVal / sample << endl;
return 0;
}
결과는 아래와 같이 나온다.
아래 링크한 글이 이해하기 쉽게 정리 됨.
실시간 데이터의 평균을 효율적으로 구하기 | Evans Library (evan-moon.github.io)
실시간 데이터의 평균을 효율적으로 구하기
이번 포스팅에서는 실시간으로 빠르게 쌓이는 데이터들의 평균을 효율적으로 구할 수 있는 방법에 대해서 간단하게 설명하려고 한다. 이런 실시간 데이터의 평균을 구해야하는 경우는 생각보
evan-moon.github.io
반응형