Contiguous memory and relational operators
Show older comments
I have a 2D matrix of floats called data (approx size 1E5 x 2E2) and wish to test some conditions many times (>1e9 times) eg
data(i:j, h) <= k, where k is a float
This process is a real bottleneck in my code according to the profiler.
I have been reading http://www.mathworks.com/matlabcentral/answers/64457-why-are-relational-operators-so-slow-in-this-case
Here the author (Jan) seems to suggest running permute.m to make the memory contiguous before applying the inequality operator.
I am unclear how to order the permutation though. What have I missed? (or is the permute trick only valid in dimensions above 2?)
tmp = permute(data(i:j, h) , orderVec); %where does orderVec come from???
tmp <= k %this is now fast
2 Comments
James Tursa
on 22 Feb 2013
The permute "trick" was mentioned because the other post had : for the trailing dimension. What is your exact situation for subscripting? Is it always of the form (i:j,h) with i, j, and h scalars but changing each iteration?
Matlab2010
on 5 Mar 2013
Edited: Matlab2010
on 5 Mar 2013
Accepted Answer
More Answers (0)
Categories
Find more on Multidimensional Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!