Этот пример показывает, как сгруппировать точки данных, имеющий разброс на основе их близости к интересным местам.
Создайте набор случайных 2D точек. Затем создайте и постройте сетку равномерно распределенных точек сверху случайных данных.
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)
Используйте ismembertol
, чтобы определить местоположение точек данных в x
, которые являются в допуске узлов решетки в gridPoints
. Используйте эти опции с ismembertol
:
Задайте ByRows
как true
, поскольку координаты точки находятся в строках x
.
Задайте OutputAllIndices
как true
, чтобы возвратить все индексы для строк в x
, которые являются в допуске соответствующей строки в gridPoints
.
[LIA,LocB] = ismembertol(gridPoints, x, 0.05, ... 'ByRows', true, 'OutputAllIndices', true);
Для каждого узла решетки постройте точки в x
, которые являются в допуске того узла решетки.
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)