Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Agrupar datos dispersos utilizando una tolerancia

Este ejemplo muestra cómo agrupar puntos de datos dispersos según su proximidad a los puntos de interés.

Cree un conjunto de puntos 2D aleatorios. Después, cree y represente una cuadrícula de puntos equidistantes en la parte superior de los datos aleatorios.

x = rand(10000,2);
[a,b] = meshgrid(0:0.1:1);
gridPoints = [a(:), b(:)];
plot(x(:,1), x(:,2), '.')
hold on
plot(gridPoints(:,1), gridPoints(:,2), 'xr', 'Markersize', 6)

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

Utilice ismembertol para localizar los puntos de datos en x que se encuentren dentro de la tolerancia de los puntos de la cuadrícula en gridPoints. Utilice estas opciones con ismembertol:

  • Especifique ByRows como true, ya que las coordenadas de los puntos se encuentran en las filas de x.

  • Especifique OutputAllIndices como true para devolver todos los índices de las filas en x que se encuentran dentro de la tolerancia de la fila correspondiente en gridPoints.

[LIA,LocB] = ismembertol(gridPoints, x, 0.05, ...
    'ByRows', true, 'OutputAllIndices', true);

Por cada punto de la cuadrícula, represente los puntos en x que se encuentren dentro de la tolerancia de dicho punto de la cuadrícula.

figure
hold on
for k = 1:length(LocB)
    plot(x(LocB{k},1), x(LocB{k},2), '.')
end
plot(gridPoints(:,1), gridPoints(:,2), 'xr', 'Markersize', 6)

Figure contains an axes object. The axes object contains 122 objects of type line.

Consulte también

Temas relacionados