% intfire
% Demonstrationsprogramm fuer die Simulation neuronaler Aktivitaet mit
% einem leaky integrate and fire Neuron.


 % Modellparameter
 tmax=3;           % Laenge der Simulation in sec
 bin=0.001;        % Zeitschritte in sec
 tau=10;           % Zeitkonstante
 uu=0;             % Ausgangspunkt des Membranpotentials
 theta=10;         % Feuerschwelle
 
 anzpunkte=tmax*bin;
 tau_bin=tau*bin;
 t=bin:bin:tmax;
 
 % Externer Strom
 I_ext=zeros(1,tmax/bin);
 I_ext(1/bin:2/bin)=12;

 %Integration mit Euler Methode
 for t_step=1:tmax/bin
     x=uu<theta;                                 % Schwelle ueberschritten?
     uu=x*(1-tau_bin)*uu+tau_bin*I_ext(t_step);  % Integration
     u(t_step)=uu;                               % resultierende U-Werte
     s(t_step)=1-x;                              % resultierende Spikes
 end

 %subplot fuer Strom
 subplot('position',[0.1 0.1 0.8 0.15])
   plot(t,I_ext);
   xlim([bin tmax])
   xlabel('time [sec]');
   ylabel('I_{ext}(t)')
    
 %subplot fuer Membranpotential  
 subplot('position',[0.1 0.3 0.8 0.5])
   plot(t,u);
   xlim([bin tmax])
   hold on; 
   plot([bin tmax],[theta theta],'--');
   set(gca,'xtick',[])
   ylabel('u(t)')

 %subplot fuer Spikes
 subplot('position',[0.1 0.85 0.8 0.1])
   plot(t,s,'.','markersize',20);
   axis([bin tmax 0.5 1.5])
   set(gca,'xtick',[],'ytick',[])
   ylabel('spikes')
   
 
