44 lines
1.3 KiB
Matlab
44 lines
1.3 KiB
Matlab
function rasterplot(spikes, tmax)
|
|
% Display a spike raster of the spike times given in spikes.
|
|
%
|
|
% rasterplot(spikes, tmax)
|
|
%
|
|
% Arguments:
|
|
% spikes: a cell array of vectors of spike times in seconds
|
|
% tmax: plot spike raster up to tmax seconds
|
|
in_msecs = tmax < 1.5
|
|
spiketimes = [];
|
|
trials = [];
|
|
ntrials = length(spikes);
|
|
for k = 1:ntrials
|
|
times = spikes{k};
|
|
times = times(times<tmax);
|
|
if in_msecs
|
|
times = 1000.0*times; % conversion to ms
|
|
end
|
|
% (x,y) pairs for start and stop of stroke
|
|
% plus nan separating strokes:
|
|
spiketimes = [spiketimes, ...
|
|
[times(:)'; times(:)'; times(:)'*nan]];
|
|
trials = [trials, ...
|
|
[ones(1, length(times)) * (k-0.4); ...
|
|
ones(1, length(times)) * (k+0.4); ...
|
|
ones(1, length(times)) * nan]];
|
|
end
|
|
% convert matrices into simple vectors of (x,y) pairs:
|
|
spiketimes = spiketimes(:);
|
|
trials = trials(:);
|
|
% plotting this is lightning fast:
|
|
plot(spiketimes, trials, 'k')
|
|
if in_msecs
|
|
xlabel('Time [ms]');
|
|
xlim([0.0 1000.0*tmax]);
|
|
else
|
|
xlabel('Time [s]');
|
|
xlim([0.0 tmax]);
|
|
end
|
|
ylabel('Trials');
|
|
ylim([0.3 ntrials+0.7]);
|
|
end
|
|
|