Main Content

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.

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