将Matlab矩阵排序为序列序列

时间:2016-10-31 13:19:38

标签: matlab sorting matrix

我想订购一个Nx2矩阵,以便给出的点将被分类,就好像你正在播放将点与值连接一样。意思是如果我在我的矩阵中有值[1 1]和我的矩阵[1 2]中的其他地方,我想以这样的方式对它进行排序,使它们相互跟随。如果“连接点”的下一个值是[1 23]和[2 23],它将从那里继续排序。

对于这种类型,“连接点”仅适用于相邻点,因此[1 1]只能连接到[1 2],[2 1],[2 2],[0 1],[0 0 ],[1 0],[2 0]或[0 2](左,右,上,下和基本对角线)。

1 个答案:

答案 0 :(得分:0)

从技术上讲,您可以使用2-norm解决您的问题。由于只允许上,下,右,左和一个对角线,因此元素差异的2范数必须为1或sqrt(2):

例如:

a = [1 2];
b = [2 2];

if(norm(a-b,2) == 1 || norm(a-b,2) == sqrt(2))
    %apply sorting algorithm (quicksort, bubblesort, etc.)
end

但是,如果可能有多个答案,您必须定义放置哪个元素(例如[0 0],[0 1],[1 0],[1 1]或[0 0],[1 1] ,[1 0],[0 1]等。) 对于较大的N,这将变得更成问题。

也许您应该考虑使用an adjacency matrix,因为您的问题听起来就像是在搜索图表中节点之间的连接。