/* * Associative Memory * 2006.5.26 A.Date * (last modified at 1 May 2009) * */ #include /* drand48() */ #include #include "kanji1.h" #define MAX_X 20 #define MAX_Y 20 #define MAX_UNITS 400 /* Change the following values */ int RAND_SEED = 12345678; int N_SUPERIMPOSED = 8; double NOISE_LEVEL = 0.4; /* set this value according to your data */ int N_XUNITS = 20; int N_YUNITS = 20; int N_UNITS = 400; /* shoud be N_XUNITS*N_YUNITS */ int N_DYNAMICS = 10; int N_ITERATE = 10; /* #demonstrations */ /* if too slow or too fast, change this */ int SLEEP1 = 500000; int SLEEP = 1000000; void write_data(); void init_state(int i); void add_noise(); void init_connection(); void dynamics(int i); void backup_state(); double inner_product(int k); FILE *gp1, *gp2; double W[MAX_UNITS][MAX_UNITS]; int X[MAX_UNITS]; int BX[MAX_UNITS]; int main (int argc, char *argv[] ) { int i,j,k; int p; double x,y; double dc; double noise_prob; long seed = RAND_SEED; for (i=1; i 0.0){ X[i] = 1; } else{ X[i] = -1; } } double inner_product(int k){ int i; int c = 0; for (i=0; i