findInRange
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 (2024). findInRange (https://www.mathworks.com/matlabcentral/fileexchange/47864-findinrange), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.