Weather casting with Machine Learning (SVM and SRNN).

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

Committer:
yukari_hinata
Date:
Thu Feb 19 08:20:46 2015 +0000
Revision:
3:5add3759e08a
Parent:
2:20ecfe6edd71
Child:
5:b61f3f5b0fc8
a bit of stable ver

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