使用Matlab正确绘制曲线?

时间:2015-06-27 08:07:44

标签: matlab sorting plot

我有几个与曲线对应的数据x0y0。它包含8个点,例如:K(x0(2),y0(2))

问题在于,当我像这样绘制x0y0时:

plot(x0,y0,'c*');
plot(x0,y0,'k');

我把青色点放在一个好地方,但曲线很乱。检查屏幕截图:

enter image description here

我可以做某种Sorting吗?

这个问题看似简单,但我是新手。

2 个答案:

答案 0 :(得分:3)

由于这些点定义了凸多边形,因此您只需使用convhull - 函数即可。 convhull返回x0y0中最外点的索引。对于这个问题,我们利用它们在船体周围逆时针排列,所以你可以很好地绘制它们。

h = convhull(x0,y0);
plot(x0(h),y0(h),'k');

结果如下:

result

用于生成输出的点:

x0 = [1 2 3 4 4 3 2 1];
y0 = [2 3 0 2 1 3 0 1]; 

答案 1 :(得分:0)

如果您有Mapping Toolbox,函数poly2ccw也会为您执行该任务。 Convex Hull是一种更通用的算法,用于处理任何凸多边形。如果你已经有了形状的四肢,你可以简单地使用重新排序的poly2ccw返回坐标,这样你就可以按逆时针顺序绘制形状的周长。

具体来说,你会这样做:

[x1, y1] = poly2ccw(x0, y0);

x1y1将包含x0y0的混洗点,以便它们现在按逆时针顺序排列。然后,您可以通过以下方式绘制它们:

plot(x1, y1, 'k');