findInRange

Find elements within many ranges. Faster than find() for large N. Useful for PSTHs and rasterplots.

You are now following this Submission

When constructing peri-event time histograms and raster-plots it's often necessary to repeatedly do the following operation:
find(X > T1 & X <= T2)
where X is a vector of the times of some measurements (eg a spike train) and T1 and T2 are the left and right edges of an event-aligned window (eg stimulus onset).
While find() is generally fast, it can get quite slow for large numbers of events/trials because it is necessary to loop over the vector of alignment-events. findInRange() uses mex to achieve much greater speeds:

X = rand(1e6,1)*1e6;
T1 = rand(1e3,1)*1e3;
T2 = T1 + 5;

tic;
V1 = findInRange(X, T1, T2);
time1 = toc;

tic;
for i=1:length(T1)
V2{i} = X(X > T1(i) & X <= T2(i));
end
time2 = toc;

time2/time1

ans =

91.3441

Cite As

Joseph O'Doherty (2026). findInRange (https://www.mathworks.com/matlabcentral/fileexchange/47864-findinrange), MATLAB Central File Exchange. Retrieved .

General Information

MATLAB Release Compatibility

  • Compatible with any release

Platform Compatibility

  • Windows
  • macOS
  • Linux
Version Published Release Notes Action
1.4.0.0

Don't crash when X is a 0-by-N matrix.

1.3.0.0

Actually upload the files this time. :)

1.2.0.0

.

1.1.0.0

Bugfix for the case of X being unsorted.

1.0.0.0