/*************************/ /* */ /* kohonen.h */ /* */ /* Alan Dix */ /* */ /* February 1993 */ /* */ /*************************/ #ifndef KOHONEN_H #define KOHONEN_H #include #include #ifndef SEEK_SET #define SEEK_SET 0 #endif #ifdef __ZTC__ #define RAND_MAX 32767 #endif typedef double *Ds; typedef double **Dss; typedef double ***Dsss; typedef char *Cs; typedef char **Css; typedef char ***Csss; struct data_s { int wid, len; Dss val; Css labels; }; struct code_s { int wid, X, Y; Dsss val; Csss labels; }; struct label_s { int nos; Css labels; }; #define label_t label_type typedef struct data_s data_t, *data_p; typedef struct code_s code_t, *code_p; typedef struct label_s label_t, *label_p; #if 0 extern int code_wid, code_X, code_Y; extern Dsss code; extern int data_wid, data_len; extern Dss data; #endif #ifdef ANSI /* ko_main.c */ /* ko_train.c */ /* ko_work.c */ int set_prox(char *name); int set_index(char *name); double find_closest_data(Ds vec,int *close_j,data_p data); double find_closest_code(Ds vec,int *close_x,int *close_y,code_p code); int update(Ds vec,double alpha,double diam,code_p code); int train_code(long rlen,double alpha,double diam,double K,data_p data,code_p code); label_p gen_label_list(data_p data); code_p label_code_stats(data_p data,label_p labs,code_p code); int label_code_prop(code_p stats,label_p labs,code_p code,double hi,double lo); int label_code(code_p stats,label_p labs,code_p code,double hi,double lo); /* ko_io.c */ data_p read_data_file(char *mess,char *name); int write_data_file(char *mess,char *name,data_p data); code_p read_code_file(char *mess,char *name); int write_code_file(char *mess,char *name,code_p code); int skip_to_end_line(FILE *fp); int write_vec(FILE *fp,Ds vec,int wid); char *read_label(FILE *fp); data_p read_data(FILE *fp); int write_data(FILE *fp,data_p); code_p read_code(FILE *fp); int write_code(FILE *fp,code_p); code_p gen_code( int wid, int X, int Y, double lo, double hi ); int fill_code_labels(char *label,code_p code); code_p alloc_code( int wid, int X, int Y ); #else /* ko_main.c */ /* ko_train.c */ /* ko_work.c */ int set_prox(); int set_index(); double find_closest_data(); double find_closest_code(); int update(); int train_code(); label_p gen_label_list(); code_p label_code_stats(); int label_code_prop(); int label_code(); /* ko_io.c */ data_p read_data_file(); int write_data_file(); code_p read_code_file(); int write_code_file(); int skip_to_end_line(); int write_vec(); char *read_label(); data_p read_data(); int write_data(); code_p read_code(); int write_code(); code_p gen_code(); int fill_code_labels(); code_p alloc_code(); #endif #endif /* KOHONEN_H */