Weather casting with Machine Learning (SVM and SRNN).
Dependencies: EthernetInterface GraphicHandler NTPClient SRNN SVM SensorModule mbed-rtos mbed
main_util.cpp@3:5add3759e08a, 2015-02-19 (annotated)
- 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?
User | Revision | Line number | New 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 | } |