Data Smoothing #2 (Savitzky Golay) C++
Mathematics Algorithm2023. 3. 30. 09:46
반응형
데이타 스무징 기법 중에 하나인 Savitzky Golay 필터 입니다. 제가 수학 출신이 아니라서 수학적 이론은 잘 모릅니다.
그래서 모르는 내용을 어딘가에서 주워 담아 쓸수도 있겠지만 그런 내용은 더 잘 설명해놓은 분들이 있을테니 저는 그냥 제가 사용하는 코드만 올려 놓습니다.
1. Savitzky Golay 를 적용한 결과 그래프 입니다.
* 파란색원 원본 데이타
* 붉은색이 Savitzky Golay 데이타 입니다.
2. 구현을 위한 코드는 아래와 같습니다.
void Savitzky_Golay_smoothing(double* y_series, double* destY, int point_number)
{
// int A[] = { -2, 3, 6, 7, 6, 3, -2 };
// int A[] = { -21,14,39,54,59,54,39,14,-21};
int A[] = {-36,9,44,69,84,89,84,69,44,9,-36};
// int A[] = {-1,9,44,69,84,89,84,69,44,9,-1};
int n = 5;
int k = 0;
for(k = 0; k < n; k++)
{
destY[k] = y_series[k] ;
}
for(k = n; k < point_number-n; k++)
{
int i = 0;
double nominator = 0;
double denominator = 0;
for(i = -n; i <= n; i++)
{
nominator += (A[n+i]*y_series[k+i]);
denominator += A[n+i];
}
double y = nominator / denominator;
if(destY != NULL) destY[k] = y ;
}
for(k = point_number-n ; k < point_number ; k++)
{
destY[k] = y_series[k] ;
}
}
반응형
'Mathematics Algorithm' 카테고리의 다른 글
순차적인 작업처리에 대한 알고리즘 구현 (0) | 2023.09.05 |
---|---|
Data Smoothing #1 알고리즘 C++ (0) | 2023.03.30 |
Gaussian Fitting 함수 C++ (0) | 2023.03.23 |
C# 유전 알고리즘을 적용한 최적의 길찾기 (1) | 2023.03.14 |
Least Square(최소 자승법) (2) | 2023.02.26 |
댓글()