find nearest value on matrix
    2 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
find nearest value on matrix
Can someone help with this problem please..... for example a= 1250
matrix_b=[98 125 945 1005; 105 204 1105 1249; 200 250 1299 1450; 300 450 1350 1850]
want to find nearest equal or greater than a=1250 and the answer should be 1299
0 comentarios
Respuestas (2)
  Roger Stafford
      
      
 el 9 de Mayo de 2016
           result = min(b(b>=1250));
For this to work, there has to be at least one element of b that is greater than or equal to 1250.
1 comentario
  Image Analyst
      
      
 el 9 de Mayo de 2016
				Or, using the poster's names for variables:
closestValue = min(matrix_b(matrix_b >= a));
  Walter Roberson
      
      
 el 9 de Mayo de 2016
        
      Editada: Walter Roberson
      
      
 el 11 de Ag. de 2020
  
         v = sort(matrix_b(:));
   vidx = floor(interp1(v, 1:length(v), a, 'linear', 'extrap'));
   if vidx ~= 0
      result = v(vidx);
   end
Or
   v = sort(matrix_b(:));
   vidx = find(v >= a, 1, 'first');
   if ~isempty(vidx)
     result = v(vidx);
   end
or
   v = sort(matrix_b(:));
   [~, vidx] = histc(a, v);
   if vidx ~= 0
     result = v(vidx);
   end
The middle of these is probably the easiest to think about, but it cannot be generalized to a list of a values like the other ones can (aside from the testing to be sure that a result was found.)
4 comentarios
  Walter Roberson
      
      
 el 11 de Ag. de 2020
				The first of them did have a mistake, which I have now corrected.
Could you give an example that fails for the others?
  Walter Roberson
      
      
 el 11 de Ag. de 2020
				Another approach:
v(interp1(v,1:length(v), a, 'nearest', 'extrap'))
Ver también
Categorías
				Más información sobre Number Theory 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!




