function [cnt, pd] = poisscnt(mrate,interval,maxcount) % poisscnt: function which returns the probability density for the % distribution of the spike count of a Poisson process in a fixed time % interval. If called without output arguments, the probability % distribution is plotted. % % [cnt, pd] = poisscnt(mrate,interval,maxcount) % % where % mrate = mean rate of the Poisson process [Hz] % interval = the length of the interval (in msec) % maxcount = maximal count taken into account % % The return parameters are: % cnt = vector of spike counts. % pd = corresponding probability distribution. % % For an I&F neuron with exponentially distributed threshold under % constant current injection, the mean rate is given by I/CVthres. % % if ( nargin ~= 3 ) disp(' '); disp('usage: poisscnt(mrate,interval,maxcount) '); disp(' for more information type "help poisscnt" in the main'); disp(' matlab window'); disp(' '); return; end; %initializes the various variables lambda = mrate*interval*1e-3; cnt = (0:1:maxcount)'; pd = zeros(maxcount+1,1); pd(1) = exp(-lambda); for k = 2:maxcount+1 pd(k) = lambda/cnt(k)*pd(k-1); end; if ( nargout == 0 ) %looks for the figure 'countprob', otherwise creates it %and sets it to current fig_name = 'countprob'; Figures = get(0,'Chil'); new_fig = 1; for i=1:length(Figures) if strcmp(get(Figures(i),'Type'),'figure') if strcmp(get(Figures(i),'Name'),fig_name) new_fig = 0; h_fig = Figures(i); set(0,'CurrentFigure',h_fig); end; end; end; if (new_fig == 1) h_fig = figure('Name',fig_name); end; %sets decorations and plots the isi distribution plot(cnt,pd,'g--'); titt = sprintf('Spike count distribution for an interval of %g [msec]',... interval); title(titt); xlabel('spike count'); ylabel('probability'); clear cnt, pd; end;