/* Self-Organizing Map: A demo using C language and gnuplot !!! 2005. 4.15 by A.Date Last modified 1 May 2009 */ #include #include #include #define N_XUNITS 20 #define N_YUNITS 1 #define DIM_INPUT 3 /* dimension of input */ #define Z_RANGE 1.0 // #define SLEEP 1000 #define SLEEP 10 double X_RANGE = 0.01; double Y_RANGE = 0.01; void som2d(); void init_reference(); void write_data(); double ALPHA=0.01; double SIGMA=0.8; int N_LEARNING = 10000; int N_SUB_LEARNING = 1000; double S[DIM_INPUT]; /* input */ double RV[N_XUNITS][N_YUNITS][DIM_INPUT]; int T[N_XUNITS][N_YUNITS]; FILE *gp; typedef struct _Position Position; struct _Position { int x; int y; }; int main (int argc, char *argv[] ) { int i,j; int r1, r2; double x,y; long seed = 1234567; for (i=1; i X_RANGE ){ S[0] = drand48()*X_RANGE; S[1] = drand48()*X_RANGE; } S[0] = S[0] - 0.5*X_RANGE; S[1] = S[1] - 0.5*X_RANGE; S[2] = drand48()*Z_RANGE; /* for (k=0; k