Weather casting with Machine Learning (SVM and SRNN).

Dependencies:   EthernetInterface GraphicHandler NTPClient SRNN SVM SensorModule mbed-rtos mbed

Committer:
yukari_hinata
Date:
Wed Feb 18 15:02:16 2015 +0000
Revision:
2:20ecfe6edd71
Child:
3:5add3759e08a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yukari_hinata 2:20ecfe6edd71 1 #include "main_util.hpp"
yukari_hinata 2:20ecfe6edd71 2
yukari_hinata 2:20ecfe6edd71 3 void check_file_open(FILE* file_p, const char* file_name)
yukari_hinata 2:20ecfe6edd71 4 {
yukari_hinata 2:20ecfe6edd71 5 if ( file_p == NULL ) {
yukari_hinata 2:20ecfe6edd71 6 fprintf( stderr, "Error : file %s open faild. \r\n", file_name );
yukari_hinata 2:20ecfe6edd71 7 exit(1);
yukari_hinata 2:20ecfe6edd71 8 }
yukari_hinata 2:20ecfe6edd71 9 }
yukari_hinata 2:20ecfe6edd71 10
yukari_hinata 2:20ecfe6edd71 11 // データ系列ファイルの行数をLEN_DATA_SEQUENCEまで切り詰める
yukari_hinata 2:20ecfe6edd71 12 void truncate_data_file(void)
yukari_hinata 2:20ecfe6edd71 13 {
yukari_hinata 2:20ecfe6edd71 14 FILE* dat_file_fp;
yukari_hinata 2:20ecfe6edd71 15 const char tmp_file_name[] = "/local/TMP_DAT.CSV";
yukari_hinata 2:20ecfe6edd71 16 int line;
yukari_hinata 2:20ecfe6edd71 17 char trunc_buf_str[BUF_SIZE];
yukari_hinata 2:20ecfe6edd71 18 // 最初に現在の行数を数える
yukari_hinata 2:20ecfe6edd71 19 dat_file_fp = fopen( SEQUENCE_DATA_NAME, "r");
yukari_hinata 2:20ecfe6edd71 20 check_file_open( dat_file_fp, SEQUENCE_DATA_NAME);
yukari_hinata 2:20ecfe6edd71 21 line = 0;
yukari_hinata 2:20ecfe6edd71 22 while(fgets(trunc_buf_str, BUF_SIZE, dat_file_fp) != NULL) {
yukari_hinata 2:20ecfe6edd71 23 line++;
yukari_hinata 2:20ecfe6edd71 24 // printf("line %d : %s\r\n", line, trunc_buf_str);
yukari_hinata 2:20ecfe6edd71 25 }
yukari_hinata 2:20ecfe6edd71 26 // printf("current num of line : %d \r\n", line);
yukari_hinata 2:20ecfe6edd71 27 fclose( dat_file_fp );
yukari_hinata 2:20ecfe6edd71 28
yukari_hinata 2:20ecfe6edd71 29 // 切り詰め開始
yukari_hinata 2:20ecfe6edd71 30 if ( line > LEN_DATA_SEQUENCE ) {
yukari_hinata 2:20ecfe6edd71 31 FILE* tmp_fp;
yukari_hinata 2:20ecfe6edd71 32 int diff_line = line - LEN_DATA_SEQUENCE;
yukari_hinata 2:20ecfe6edd71 33 dat_file_fp = fopen(SEQUENCE_DATA_NAME, "r");
yukari_hinata 2:20ecfe6edd71 34 check_file_open( dat_file_fp, SEQUENCE_DATA_NAME );
yukari_hinata 2:20ecfe6edd71 35 line = 0;
yukari_hinata 2:20ecfe6edd71 36 while(fgets(trunc_buf_str, BUF_SIZE, dat_file_fp) != NULL) {
yukari_hinata 2:20ecfe6edd71 37 line++;
yukari_hinata 2:20ecfe6edd71 38 if (line == diff_line) break;
yukari_hinata 2:20ecfe6edd71 39 }
yukari_hinata 2:20ecfe6edd71 40 // diff_line以降をテンポラリにコピー
yukari_hinata 2:20ecfe6edd71 41 tmp_fp = fopen( tmp_file_name, "w");
yukari_hinata 2:20ecfe6edd71 42 check_file_open( tmp_fp, tmp_file_name );
yukari_hinata 2:20ecfe6edd71 43 fflush( tmp_fp );
yukari_hinata 2:20ecfe6edd71 44 fflush( dat_file_fp );
yukari_hinata 2:20ecfe6edd71 45 while( fgets( trunc_buf_str, BUF_SIZE, dat_file_fp) != NULL) {
yukari_hinata 2:20ecfe6edd71 46 fputs( trunc_buf_str, tmp_fp);
yukari_hinata 2:20ecfe6edd71 47 }
yukari_hinata 2:20ecfe6edd71 48 //fclose( tmp_fp );
yukari_hinata 2:20ecfe6edd71 49 //fclose( dat_file_fp );
yukari_hinata 2:20ecfe6edd71 50
yukari_hinata 2:20ecfe6edd71 51 // 更新
yukari_hinata 2:20ecfe6edd71 52 tmp_fp = freopen( tmp_file_name, "r", tmp_fp);
yukari_hinata 2:20ecfe6edd71 53 check_file_open( tmp_fp, tmp_file_name );
yukari_hinata 2:20ecfe6edd71 54 dat_file_fp = freopen(SEQUENCE_DATA_NAME, "w", dat_file_fp);
yukari_hinata 2:20ecfe6edd71 55 check_file_open( dat_file_fp, SEQUENCE_DATA_NAME );
yukari_hinata 2:20ecfe6edd71 56 // 一時ファイルからコピー
yukari_hinata 2:20ecfe6edd71 57 fflush( tmp_fp );
yukari_hinata 2:20ecfe6edd71 58 fflush( dat_file_fp );
yukari_hinata 2:20ecfe6edd71 59 while( fgets( trunc_buf_str, BUF_SIZE, tmp_fp) != NULL) {
yukari_hinata 2:20ecfe6edd71 60 fputs( trunc_buf_str, dat_file_fp);
yukari_hinata 2:20ecfe6edd71 61 }
yukari_hinata 2:20ecfe6edd71 62
yukari_hinata 2:20ecfe6edd71 63 fclose( dat_file_fp );
yukari_hinata 2:20ecfe6edd71 64 fclose( tmp_fp );
yukari_hinata 2:20ecfe6edd71 65
yukari_hinata 2:20ecfe6edd71 66 // テンポラリの削除
yukari_hinata 2:20ecfe6edd71 67 remove( tmp_file_name );
yukari_hinata 2:20ecfe6edd71 68 }
yukari_hinata 2:20ecfe6edd71 69 }