function [u,s]=intfire(I_ext) % function [u,s]=intfire(I_ext) % Demonstrationsprogramm fuer die Simulation neuronaler Aktivitaet mit % einem leaky integrate and fire Neuron. % I_ext ist der extern injezierte Strom mit einer Bingroesse von 0.01msec % zurueckgegeben werden Vektor u mit dem errechneten Membranpotential und % Vektor s als binaere Spikefolge % Ueberpruefung der Eingabe if isvector(I_ext) anzpunkte=length(I_ext); else error('Input muss ein Vektor sein') end % Modellparameter und Initialisierung bin=0.01; % Zeitschritte in msec tau=100; % Zeitkonstante in msec theta=15; % Feuerschwelle in mV R=10; % Eingangswiderstand der Zelle C=tau/R; % Kapazitaet tmax=anzpunkte*bin; % Laenge der Simulation in msec t=bin:bin:tmax; % Zeitvektor zum plotten u=zeros(anzpunkte,1); %Initialisierungen s=zeros(anzpunkte,1); %Integration mit Euler Methode for t_step=2:anzpunkte u(t_step)=u(t_step-1)-bin*((u(t_step-1)/tau)-(I_ext(t_step)/C)); if u(t_step)>theta %Spike ausloesen und u zuruecksetzen s(t_step)=1; u(t_step)=0; end end %Abbildungen figure %subplot fuer Strom subplot('position',[0.1 0.1 0.8 0.15]) plot(t,I_ext); xlim([bin tmax]) xlabel('time [ms]'); 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')