Vectorise for loop checking for values in intervals
조회 수: 3 (최근 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개)
참고 항목
카테고리
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!