2013-05-22 3 views
-1

Если у меня есть точки в графе в matlab, которые сортируются случайным образом, а при построении производятся различные закрытые фигуры. Учитывая конкретную точку на левой стороне одной из замкнутых фигур, как я могу получить все точки этой формы в векторной форме, имея в виду, что соглашение о сборе точек движется по часовой стрелке.Получение точек определенного графика в matlab

+0

Может быть, это [вопрос/ответ] (HTTP://stackoverflow.com/questions/11631934/sort-coordinates-points-in-matlab) полезен для вас? – Schorsch

+0

Или [этот код из Matlab Central] (http://www.mathworks.com/matlabcentral/fileexchange/35488-connect-randomly-ordered-2d-points-into-a-minimal-nearest-neighbor-closed-contour) ? – Schorsch

ответ

1

Комментированный пример:

cla 
% Random data 
x = rand(15,1); 
y = rand(15,1); 
scatter(x,y) 
% Random point to the left 
hold on 
p = [-0.1, rand(1)*0.2 + 0.5]; 
plot(p(1),p(2),'*r') 

% Separate points that lie above your point 
idx = y >= p(2); 

% Sort x then y increasing for upper half and x then y decreasing for lower half 
shape = [sortrows([x(idx) y(idx)],[1 2]) 
     sortrows([x(~idx) y(~idx)],[-1 -2])]; 

Убедитесь, что shape содержит по часовой стрелке отсортирован координат, откладывая открытую линию:

% Plot clockwise open line 
plot(shape(1:end ,1),shape(1:end,2),'k') 

enter image description here