rmeddis@0: function [PSTH dt]=UTIL_PSTHmaker(inputData, dt, PSTHbinWidth) rmeddis@0: % UTIL_PSTHmaker accumulates values into bins. rmeddis@0: % No corrections are applied rmeddis@0: % usage: rmeddis@0: % PSTH=UTIL_PSTHmaker(inputData, method) rmeddis@0: % rmeddis@0: % arguments rmeddis@0: % inputData is a channel x time matrix rmeddis@35: % dt is the sampling interval of the input signal (not clear why this is rmeddis@35: % returned?!) rmeddis@0: % PSTH is the reduced matrix, the sum of all elements in the bin rmeddis@0: % rmeddis@35: % e.g. rmeddis@35: % [PSTH dt]=UTIL_PSTHmaker(inputData, dt, PSTHbinWidth) rmeddis@26: rmeddis@0: [numChannels numDataPoints]= size(inputData); rmeddis@0: rmeddis@0: % Multiple fibers is the same as repeat trials rmeddis@0: % Consolidate data into a histogram rmeddis@0: dataPointsPerBin=round(PSTHbinWidth/dt); rmeddis@0: if dataPointsPerBin<=1; rmeddis@0: % Too few data points rmeddis@0: PSTH=inputData; rmeddis@0: return rmeddis@0: end rmeddis@0: rmeddis@0: numBins=floor(numDataPoints/dataPointsPerBin); rmeddis@0: PSTH=zeros(numChannels,numBins); rmeddis@0: rmeddis@0: % take care that signal length is an integer multiple of bin size rmeddis@0: % by dropping the last unuseable values rmeddis@0: useableDataLength=numBins*dataPointsPerBin; rmeddis@0: inputData=inputData(:,1:useableDataLength); rmeddis@0: rmeddis@0: for ch=1:numChannels rmeddis@0: % Convert each channel into a matrix where each column represents rmeddis@0: % the content of a single PSTH bin rmeddis@0: PSTH2D=reshape (inputData(ch,:), dataPointsPerBin, numBins ); rmeddis@0: % and sum within each bin (across the rows rmeddis@0: PSTH(ch,:)=sum (PSTH2D,1); rmeddis@0: end rmeddis@0: