我得到了数据集(由子集的总和形成,因此它是未排序的)和Id想要将它变成多边形。将XY数据转换成多边形,然后顺时针排序
是否有一个简单的Matlab程序,将数据集排序/变成多边形?多边形的数据形式轮廓,但它们不是正确的顺序:
(在左边)。多边形必须由所有点组成,并且线条与CANT相交。
可悲的是多边形不是凸的,所以convhull
不会工作:C
感谢您的任何想法,本
编辑:继承人什么,我需要做一个小例子 - 我需要转换的蓝色多边形变成红色,所以没有交点。
x1 = [0, 1, 2, 1, 2, 0]
x2 = [0, 1, 2, 2, 1, 0]
y1 = [2, 1, 3, 3, 1, 2]
y2 = [2, 1, 1, 3, 3, 2]
plot(x1,y1,'b-*')
axis([0,3,0,4])
pause
hold on, plot(x2,y2,'r-o')
编辑2:香港专业教育学院终于成功地摆脱多余的数据,所以这里的实际数据我试着去适应(蓝点),使用convhull到左侧时,通过MATLAB数据拟合,其应该如何看,用绿线编辑 - 在右边。
我试着在Matlab中寻找哈密尔顿路径,但没有找到任何直接的命令,是否有一个呢? 而这里的数据:
data1=[19.4500010000000 50500000;19.4500010000000 52810000;19.4500010000000 55200000;19.4599990000000 55200000;19.6900010000000 48800000;19.7910002000000 55200000;19.8560000000000 55200000;20.0100000000000 55200000;20.1500000000000 55200000;26.8099990000000 54700000;26.8099990000000 54700000;27.8300000000000 54500000;27.8300000000000 54500000;27.8300000000000 54500000;25.4047236012803 43066163.6552646;38.2799990000000 8420000;38.2799990000000 8420000;38.2799990000000 8420000;36.4199980000000 5270000;36.4199980000000 5270000;36.4199980000000 5270000;36.4199980000000 5270000;49.1845567757586 1577538.50621129;47.4100000000000 926524;47.4100000000000 926524;47.4100000000000 926524.000000004;47.4100000000000 926524;61.1736702657022 365441.704934877;58.3499980000000 230682;58.3499980000000 230682;71.8983466422650 108263.586243626;69.5500030000000 74543.3000000000;79.6100010000000 30424.7000000000;79.7029992000000 30424.7000000000;79.7699970000000 30424.7000000000;83.6800000000000 31281.3000000000;83.6800000000000 31693.1300000000;83.6800000000000 32131.1000000000]
c1=[1;5;19;24;29;32;33;34;35;36;37;38;12;11;9;8;7;6;4;3;2;1]
semilogy(data1(:,1),data1(:,2),'-*b')
hold on, semilogy(data1(c1,1),data1(c1,2),'r')
有关StackOverflow的问题一般应包含[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。请[编辑](http://stackoverflow.com/posts/34898713/edit)您的问题,以确保您的问题中的代码是**最小**(只需要重现的代码),**完整**(所有需要重现的代码)和**可验证的**(我们应该能够仅使用问题中的代码重现问题,没有什么比这更重要)。 – excaza
我一直希望我的一般解释能够适用于现在,因为我仍在努力获取所述数据集,但是我现在添加一个小例子来使用。 – Benjikshoo
不清楚你如何定义多边形,想想例子'[0 0; 0 1; 1 0; -1 0; 0 -1]'。哪个订单是正确的?什么时候通过中心点? – Daniel