//// Continuous time ANN clear; clf; nn = 500; dx=1/nn; C=0; //// ode function function udot=rnn_ode(t,u) // odefile for recurrent network tau_inv = 1.; // inverse of membrane time constant r=ones(nn,1)./(1+exp(-u)); sum1=w*r*dx; udot=tau_inv*(-u+sum1+I_ext); endfunction //// Training weight matrix pat=floor(2*rand(nn,10))-0.5; w=pat*pat'; w=w/w(1,1); w=100*(w-C); //// Update with localised input tall = []; rall = []; t=(0:10)'; I_ext=pat(:,1)+0.5; I_ext(1:10)=1-I_ext(1:10); u=ode(zeros(nn,1)+0.0001,0,t,rnn_ode); r=1.*(u>0); tall=[tall;t]; rall=[rall,r]; //// Update without input I_ext=zeros(nn,1); t=(10:20)'; u=ode(u(:,size(u,2)),10,t,rnn_ode); r=1.*(u>0); tall=[tall;t]; rall=[rall,r]; //// Plotting results plot(tall,4*(rall'-0.5)*pat/nn)