Vectorise for loop checking for values in intervals
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
Respuesta aceptada
  Guillaume
      
      
 el 12 de En. de 2018
        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)
Más respuestas (0)
Ver también
Categorías
				Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
