Next: この文書について ...
Up: 付録C サーチアクセスプログラム
Previous: C.1 内積値と想起度の関係調査用プログラム
C.1 のプログラム中の関数 kyori を
次のように改良した。ただし,変数は main() の前で定義し,
初期化は for(kai = 0; kai < kai_max ; kai++) のすぐ前におく
必要がある。
/* 改良に用いた変数 */
double keika_z[2]; /* 周期を判定するために距離を格納する配列 */
int kuri,kuri1,kuri2,kuri3[2],kuri4; /* シナプス前抑制を制御する変数 */
/* 初期化 */
keika_z[0]=keika_z[1]=0; kuri=0; kuri1=0;
kuri2=0; kuri3[0]=kuri3[1]=0; kuri4=0;
/* サーチパターンと出力パターンの距離と抑制関数の計算 */
kyori()
{
int i;
z=0;
/* 距離計算 */
for(i=0; i<U; i++)
z += fabs(x[i] - out_in[search][i]); /* 絶対値関数 */
z /= U;
/* 距離の途中経過 */
keika_z[0]=keika_z[1];
keika_z[1]=z;
/* 抑制関数の出力計算 */
kuri++; kuri4++;
/* 周期が判定できない場合の制御 */
if(kuri>=300 || kuri4>=100){
rsnp=0.1; kuri=kuri4=0; kuri2=kuri1; kuri1++;
return;
}
/* 通常の制御 */
if(z <= gs){
rsnp = 1; kuri2=0; kuri3[0]=kuri3[1]=0; return;
}
else
rsnp = rcha;
/* 周期がある場合の制御 */
if(kuri2>0){
rsnp=0.1; kuri2--; kuri3[1]++; return;
}
/* 距離が減少した場合の制御(0.5 未満) */
if(keika_z[1]<keika_z[0] && keika_z[1]<0.5){
rsnp=1;
if(kuri3[0]==kuri3[1] && kuri3[1]!=0){
kuri1++; kuri2=kuri1; kuri4=0;
}
kuri3[0]=kuri3[1]; kuri3[1]=0;
}
else kuri3[1]++;
}
Deguchi Toshinori
1996年09月05日 (木) 11時50分24秒 JST