내가 뭔 짓거리를 하는지 나도 잘 모르겠다.
온도가 오르내리는 속도의 이동평균을 구하려고 했는데, 내가 뭘 한 건지는 나도 잘 모르겠다.
해당 부분 raw 데이터 뽑아서 엑셀로 직접 분산 그래프를 그려보고 나서야, 비슷한 현상이 나타나는 것을 보고 경악함. 많은 온도변화값이 누적되면 누적될수록 평균값이 0에 근접해가는 거였다. 이런... 그래서 그래프가 절대로 매끈해지지 않았나 보다. 더 많은 구간의 이동평균을 만들면 그 평균값은 0에 가까워지고, 그만큼 이동평균을 구하기 위한 부분합에서 새로 추가되는 데이터와 빠져나가는 데이터 데이터가 평균값을 상대적으로 흔들어놓는 정도는 줄어들지 않는다. 그래서 아무런 패턴도 발견할 수가 없었다. 추세선을 그려보면 그냥 기울기가 0이다.
왜 이렇게 되는지는 지금도 납득이 되질 않는다.
평균값을 구해서 1년치로 환산하면 0.03도 상승?
아무튼 엄청 헷갈리는데, 고작 500줄밖에 되지 않은 C언어 코드가 상당히 복잡하게 느껴진다. 어딘가 잘못한 것만 같다.
이런 식으로 대충 생각해서 짜다보니 대충 복사해서 붙여넣기하고, 또 중간과정을 살짝 바꾼다고 코드가 꼬였다. 거기다 맨 처음에 짠 기본 함수 빼고 나머지 로직을 전부 main 함수에 박아넣었으니 가독성은 극악으로 떨어졌다. 거기다 필요하지도 않은 데이터 (8개 항목)까지 일일이 출력하도록 하느라 복사해서 붙여넣기를 하고, 해당 항목에 맞게 일일이 수정하는 일은 귀찮았다.
중간에 데이터 확인할 때 이동평균이 이상하게 뜨는데, 합계를 구할 시 부동소수점이 float로 되어 있어서 정밀도가 부족한 것이 아닌가 해서 float를 전부 double로 바꾸고, 바이너리 데이터의 float 항목은 버퍼에 받았다가 형식변환하는 식으로 노가다했는데, 이전 실행결과를 그냥 삭제해버려서 똑같은지 다른지 알 수 없었다. 그냥 비슷해 보인다고 생각해서 로직을 바꿨는데, 그대로 해결되었다.
나중에 다른 항목에 대해 이동평균 구할 때 double변수와 float 두 개의 경로를 통한 결과값이 서로 달랐던 것 같았다. 아무튼 이 부분의 부분합에 대해서만 double 사용하는걸로 해결봤고, 자세하게 추적해보지 않았다. 머리가 빠개져서 그냥 대충 넘어가 버림.
이 프로젝트 자체가 중간에 하다 만 것인데다, 기상청에서 데이터를 받아오는 php 소스와, 그 데이터를 다시 바이너리로 변환하는 소스코드가 SSD 데이터가 날아가면서 없어지는 바람에, 이 바이너리 값이 올바르게 작성된 것인지에 대해서도 확신이 없다. 2년 전에 데이터를 받아왔을 때에는 서귀포인가 성산일출봉인가 하는 데에서 텅 빈 데이터 때문에 오류가 생겼었는데, 이번엔 결과 이미지상으로는 나타나지 않았다.
아무튼 간에 조만간 데이터를 전부 검증해봐야 한다. 어차피 데이터도 새로 받아와야 하기도 하고. 이건 C언어와 PHP를 조합할 생각이다.
처음에 그래프를 그릴 때 OPENGL 할 거라고, 그리고 데이터 부분합 구할 때 OPENCL을 사용할 거라고, 그 딴 식으로 생각했다. 개발경험이라곤 하나도 없는 주제에. 아무튼
현실은 그냥 데이터를 바이너리파일로 저장한 다음 gnuplot으로 그려주고, 데이터는 그냥 단순한 프로그래밍으로 짜고, 그나마도 스파게티 코드다.
안동에서만 그래프가 사인곡선 형태로 진동하는 현상이 있었는데, 내가 해당 항목을 텍스트파일 한줄로 쭉 저장하고 raw 값도 그래프상에 나타내 봤지만, 겨울쯤 된 부분에서 그래프가 비정상적으로 높게 솟아오른 현상이 있었다는 것 빼고 텍스트파일상으로는 딱히 이상한 부분을 찾는 데에 실패했다.
암튼 나도 내가 뭘 한 건지 잘 모르는데, 내 인생도 이런 식이 아닌가 하는 생각이 들었다.
뭐라고 길게 썼는데, 그 전에도 몇 번 썼다가 그냥 삭제했는데, 이건 그냥 대충 포스팅하고 끝.
읽다가 제 체온의 평균값이 0으로 회귀하고
읽다가 제 체온의 평균값이 0으로 회귀하고 있습니다..;;
아무튼 화이팅!
------------------------------------------------------------------------
컴퓨터를 좋아하는 일반인이에요..
행복하고 싶어요