annotate utilities/UTIL_CV.m @ 38:c2204b18f4a2 tip

End nov big change
author Ray Meddis <rmeddis@essex.ac.uk>
date Mon, 28 Nov 2011 13:34:28 +0000
parents f233164f4c86
children
rev   line source
rmeddis@0 1 function [cv, cvTimes, allTimeStamps, allISIs]= UTIL_CV(earObject, dt, timeStep)
rmeddis@0 2 % UTIL_CV computes coefficient of variation for multiple spike trains
rmeddis@0 3 % earObject must be logical 0/1. Each row is a separate run
rmeddis@0 4 % CV is computed for successive time regions specified by timeStep
rmeddis@0 5
rmeddis@0 6 if ~islogical(earObject),error('UTIL_CV: input is not logical/ spikes'), end
rmeddis@0 7
rmeddis@0 8 [rows cols]=size(earObject);
rmeddis@0 9 totalDuration=cols*dt;
rmeddis@0 10
rmeddis@0 11 if nargin<3, timeStep=totalDuration/5; end
rmeddis@0 12
rmeddis@0 13 % identify all intervals
rmeddis@0 14 allISIs=[]; allTimeStamps=[];
rmeddis@0 15 for i=1:rows
rmeddis@0 16 temp=find(earObject(i,:))*dt; % find spikes
rmeddis@0 17 isi{i}=diff(temp); % find ISIs
rmeddis@0 18 timeStamps{i}=temp(2:end); % time of isi is time of second spike
rmeddis@0 19 allISIs=[allISIs isi{i}];
rmeddis@0 20 allTimeStamps=[allTimeStamps timeStamps{i}];
rmeddis@0 21 end
rmeddis@0 22
rmeddis@0 23 count=0;
rmeddis@0 24 cvTimes=0: timeStep:totalDuration-timeStep; % bin edges
rmeddis@0 25 for t= cvTimes
rmeddis@0 26 % sort ISIs according to when they happened
rmeddis@0 27 idx=find(allTimeStamps>t & allTimeStamps<=t+timeStep);
rmeddis@0 28 count=count+1;
rmeddis@0 29 if ~isempty(allISIs(idx))
rmeddis@0 30 cv(count)=std(allISIs(idx))/mean(allISIs(idx));
rmeddis@0 31 else
rmeddis@0 32 cv(count)=0;
rmeddis@0 33 end
rmeddis@0 34 end
rmeddis@0 35