speed up line: find(c>a(:,1) & c<= a(:,2))
1 次查看(过去 30 天)
显示 更早的评论
How can I speed up this line:
a=[3 4; 5 6; 4 5;2 8; 1 9; 23 24;1 12;3 6;12 25; 15 30;...]
b=find(5>a(:,1) & 5<= a(:,2));
when size(a) is 100,000,000 *2, this line is super slow. Any idea?
Thank you!
6 个评论
David Fletcher
2018-3-25
In that case, I think shaving a few tenths off here and there isn't going to make much of a dent in your issue. Fundamentally, you are trawling through millions upon millions of elements hundreds of thousands of times. I've had little experience of the parallel toolbox, so I'm not sure if that could help in some way, but I suspect it would be like chucking chisels at Everest.
Jan
2018-3-25
Then it is time to think twice: Is this approach efficient? Do you have any further information, which can be exploited, e.g. if the data is sorted, or the positions are near to the ones of the last iteration? A brute search is time-consuming in large data. There is no magic trick to reduce the time. Maybe you can parallelize the iterations?
I assume you can get more help, if you explain the actual problem and post the relevant code.
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!