//// Dynamic Neural Field Model (1D) clear; clf; nn = 100; dx=2*%pi/nn; sig = 2*%pi/10; C=0.5; //// 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 for loc=1:nn; i=(1:nn)'; dis=min(abs(i-loc),nn-abs(i-loc)); pat(:,loc)=exp(-(dis*dx).^2/(2*sig^2)); end w=pat*pat'; w=w/w(1,1); w=4*(w-C); //// Update with localised input tall = []; rall = []; t=(0:10)'; I_ext=zeros(nn,1); I_ext(nn/2-floor(nn/10):nn/2+floor(nn/10))=1; u=ode(zeros(nn,1),0,t,rnn_ode); r=ones(nn,size(u,2))./(1+exp(-u)); 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=ones(nn,size(u,2))./(1+exp(-u)); tall=[tall;t]; rall=[rall,r]; //// Plotting results surf(tall,1:nn,rall);