function [FiringRate,TimeWin] = FiringRateEst(SpikeTrain,GroupIndex,WinLength,StepLength,FsEMG,MeanFlag) [NumGroup,~] = size(GroupIndex); [N,~] = size(SpikeTrain); WinNumSample = floor(FsEMG*WinLength); StepNumSampe = floor(FsEMG*StepLength); count = 1; for j = 1:StepNumSampe:N-WinNumSample+1 for ii = 1:NumGroup Indextemp = nonzeros(GroupIndex(ii,:)); SpikeSegtemp = SpikeTrain(j:WinNumSample+j-1,Indextemp); Firingtemp = sum(SpikeSegtemp,1); FiringNumMU1temp = length(find(Firingtemp~=0)); if FiringNumMU1temp~=0 FiringRate(count,ii) = sum(sum(SpikeSegtemp))/WinLength; else FiringRate(count,ii) = 0; end end count = count+1; end TimeMax = (j+WinNumSample/2)/FsEMG; TimeWin = WinNumSample/2/FsEMG:StepNumSampe/FsEMG:TimeMax; if strcmp(MeanFlag,'On') for ii = 1:NumGroup Indextemp = nonzeros(GroupIndex(ii,:)); FiringRate = FiringRate/length(Indextemp); end end end