/* Self-Organizing Map (2D): 2006.5.14 A.Date Last modified at 3 Jun 2010 % gcc lab060515som221.c -lm % a.out */ #include #include #include #define N_XUNITS 20 #define N_YUNITS 1 #define DIM_INPUT 2 /* #dimensions of input signal*/ double X_RANGE=1.0; double Y_RANGE=1.0; int SLEEP=100000; double ALPHA=0.2; double SIGMA=0.8; int N_LEARNING = 10; int N_SUB_LEARNING = 1000; double S[2]; /* input */ double RV[N_XUNITS][N_YUNITS][DIM_INPUT]; int T[N_XUNITS][N_YUNITS]; FILE *gp; void som2d(); void init_reference(); void write_data(); typedef struct _Position Position; struct _Position { int x; int y; }; int main (int argc, char *argv[] ) { int i,j; double x,y; long seed = 1234567; /* set your favorite number */ for (i=1; i