function [ counts, bins ] = counthist( spikes, w ) % computes count histogram and compare them with Poisson distribution % spikes: a cell array of vectors of spike times % w: observation window duration for computing the counts % collect spike counts: tmax = spikes{1}(end); n = []; r = []; for k = 1:length(spikes) for tk = 0:w:tmax-w nn = sum( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ); %nn = length( find( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ) ); n = [ n nn ]; end rate = (length(spikes{k})-1)/(spikes{k}(end) - spikes{k}(1)); r = [ r rate ]; end % histogram of spike counts: maxn = max( n ); [counts, bins ] = hist( n, 0:1:maxn+1 ); counts = counts / sum( counts ); if nargout == 0 bar( bins, counts ); hold on; % Poisson distribution: rate = mean( r ); x = 0:1:20; l = rate*w; y = l.^x.*exp(-l)./factorial(x); plot( x, y, 'r', 'LineWidth', 3 ); xlim( [ 0 20 ] ); hold off; xlabel( 'counts k' ); ylabel( 'P(k)' ); end end