Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB自定义条件排序_Matlab_Sorting - Fatal编程技术网

MATLAB自定义条件排序

MATLAB自定义条件排序,matlab,sorting,Matlab,Sorting,我在MATLAB中有一个二维笛卡尔点数组,我想对它们进行排序,以便将它们放入绘图中将创建一个没有线重叠的多边形 (注意,我实际上不打算在MATLAB中绘图,我只需要以这种方式对它们进行排序) 我在考虑写一个循环,找到一个向量的极坐标系“θ”,从我知道的多边形内的一个新点到多边形的每个点,然后根据该值排序,但它看起来非常粗糙和低效 有什么建议吗?我认为你的想法还可以 这将是一个简单而优雅的解决方案 要查找中心点,可以使用“avarege” 没有检查,但应该可以 复杂性是n*log(n)的原因。有很

我在MATLAB中有一个二维笛卡尔点数组,我想对它们进行排序,以便将它们放入
绘图中
将创建一个没有线重叠的多边形

(注意,我实际上不打算在MATLAB中绘图,我只需要以这种方式对它们进行排序)

我在考虑写一个循环,找到一个向量的极坐标系“θ”,从我知道的多边形内的一个新点到多边形的每个点,然后根据该值排序,但它看起来非常粗糙和低效


有什么建议吗?

我认为你的想法还可以

这将是一个简单而优雅的解决方案

要查找中心点,可以使用“avarege”

没有检查,但应该可以


复杂性是n*log(n)的原因。

有很多不同的解决方案。这里有几个拼写错误,但建议非常好!这是一种享受-谢谢!
len=length(points(:,1));
p(1)=sum(points(:,1))/len;
p(2)=sum(points(:,2))/len;

angle=atan2(points(:,2)-p(2),points(:,1)-p(1));

[angle_sorted,perm]=sort(angle);
p_sorted=points
p_sotred(:,1)=points(perm,1);
p_sotred(:,2)=points(perm,2);