Vectorise for loop checking for values in intervals
2 ビュー (過去 30 日間)
古いコメントを表示
Hi there,
I have the following datasets:
a =
5
7
8
9
10
12
b =
3 6
11 13
20 22
I want to look if each element of a is in any of the intervals in b, without a for-loop. The for loop is:
result = zeros(length(a),1);
for i =1:length(a)
for j= 1:size(b,1)
if a(i)>=b(j,1) && a(i)<= b(j,2)
result(i) = 1
break;
end
end
end
I am hoping to speed this up.
0 件のコメント
採用された回答
Guillaume
2018 年 1 月 12 日
If using R2016b or later:
result = any(a >= b(:, 1).' & a <= b(:, 2).', 2)
Otherwise
result = any(bsxfun(@ge, a, b(:, 1).') & bxfun(@le, a, b(:, 2).'), 2)
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!