I have a 1xN vector of samples, for which I need to calculate the indices of when a moving sum exceeds a threshold.
One could think of the samples as current that is charging a capacitor, and once the capacitor is charged to the threshold, a pulse is fired and the capacitor is reset. I need to find the times when the pulse is fired.
I have a working loop implementation below, however, it is relatively slow and I'd like to find a more efficient method. Is there a vectorized or built-in method for finding these pulse times?
samples;threshold = 50;pulseIdx = zeros(size(samples));runningSum = 0;for i = 1:length(samples) runningSum = runningSum + samples(i); if runningSum > threshold pulseIdx(i) = 1; runningSum = runningSum - threshold; % allow spillover to next cycle
endend
Best Answer