У меня есть ряд точек данных, каждая из которых принадлежит определенному кластеру (группа). Я должен потянуть полигон вокруг каждого из этих кластеров. Кто-либо знает, как сделать это?
Не имеет значения, если я использую или не использую фактические точки данных для рисования полигона. Мне просто нужны они, чтобы быть перенесенным в полигон.
Попробуйте использовать функцию convhull . Он возвращает индексы из точек в вашем наборе данных, которые будут определять выпуклую оболочку. Вам нужно будет сделать это для каждого кластера, который вы строите.
Например:
x=rand(1,100); %#generate x and y data for your clusters
y=rand(1,100);
k=convhull(x,y); %#generate indices marking the outermost points
hold on
plot(x,y,'b.') %# plot your cluster points
plot(x(k),y(k),'r-') %# plots only k indices, giving the convex hull
Это даст вам многоугольник, индексы которого совпадают с выбросами ваших кластеров.
Я не уверен, есть ли предварительно сделанное решение для этого, так как я не слишком знаком с MATLAB, однако это звучит так, как будто вам нужно выпуклое решение корпуса.
Надеюсь, это укажет вам правильное направление.