% % Generates 2Hz square waves with 0.5 dutycycle. % function insignal = makeTrainInsignal(corr_syn, nSyn, ... upFreq, downFreq, maxTime) nShare = nSyn - sqrt(corr_syn)*(nSyn-1); baseFreq = 3.333; dutyCycle = 0.5; stateTime = dutyCycle/baseFreq; for i=1:nShare isUpstate = 1; % Start with upstate startTime = 0; trainSpikes{i} = []; for startTime = 0:stateTime:(maxTime-stateTime) if(isUpstate) curFreq = upFreq; else curFreq = downFreq; end trainSpikes{i} = [trainSpikes{i}; ... startTime + poissonMaxTime(curFreq, stateTime)]; isUpstate = ~isUpstate; end end allSpikes = []; for i=1:nShare allSpikes = [allSpikes; trainSpikes{i}]; end % Sortera spikarna! allSpikes = sort(allSpikes); % disp('total antal spikar unika') % [length(allSpikes) length(unique(allSpikes))] for i=1:nSyn finalSpikes{i} = []; end for i=1:length(allSpikes) repeats = nSyn / nShare; repeats = floor(repeats) + (rand(1) < mod(repeats,1)); freeTrains = 1:nSyn; for j=1:repeats idx = ceil(length(freeTrains)*rand(1)); trainIdx = freeTrains(idx); freeTrains(idx) = []; finalSpikes{trainIdx} = [finalSpikes{trainIdx}; allSpikes(i)]; end end for i=1:nSyn trainLen(i) = length(finalSpikes{i}); end maxLen = max(trainLen); insignal = inf*ones(maxLen,nSyn); for i=1:nSyn insignal(1:length(finalSpikes{i}),i) = finalSpikes{i}; end