Matlab 从预定义值开始排序数组

Matlab 从预定义值开始排序数组,matlab,sorting,Matlab,Sorting,是否有一种方法可以从预定义值开始对数组的元素进行排序 例如,我想在V2=[25671]中转换:V=[56712] 在本例中,我想从值2开始 感谢诸如此类(假设V是行向量): 说明:首先需要对V进行排序。然后通过find(V2==value,1)找到第一个元素的索引,该索引等于value。最后,您必须按正确的数量“旋转”排序向量,以在第一个位置获得值。由于V是行向量,因此需要沿第二维度旋转,因此必须使用[1,…]作为circshift的第二个参数。请注意,只有当值实际上是V的一部分时,这才有效 演

是否有一种方法可以从预定义值开始对数组的元素进行排序

例如,我想在
V2=[25671]
中转换:
V=[56712]

在本例中,我想从值2开始

感谢诸如此类(假设
V
是行向量):

说明:首先需要对
V
进行排序。然后通过
find(V2==value,1)
找到第一个元素的索引,该索引等于
value
。最后,您必须按正确的数量“旋转”排序向量,以在第一个位置获得
值。由于
V
是行向量,因此需要沿第二维度旋转,因此必须使用
[1,…]
作为circshift的第二个参数。请注意,只有当
实际上是
V
的一部分时,这才有效

演示:

>> V = [5 6 7 1 2];
>> value = 2;
>> V2 = sort(V);
>> V2 = circshift(V2, [1, -find(V2 == value, 1) + 1])
V2 =
     2     5     6     7     1


不清楚你在问什么。什么定义了“以值2开头”的排序顺序?@sfstewman如果我不清楚,很抱歉。我想对向量V进行升序排序,但不是像排序那样从1开始,而是从某个值开始排序,然后在末尾附加较小的值。在这种情况下,我想从2开始,因此1将在V2Sorting的末尾,需要一种排序元素的方法。不清楚您将如何对元素进行排序。对于小于2的元素,如何处理?如果您的数组是
[-1-2-1 0 1 2]
,您希望的排序顺序是什么?未排序的元素将以什么顺序放入排序的数组中?我知道它们将被放入数组的末尾,但顺序是什么?我相信
value
成为
V
一部分的必要性可以这样消除:
V2=circshift(V2[1,-find(V2>=value,1)+1])
。这应该是可行的,因为
V2
已经被排序了。是的,这已经更好了,但我想当
value>max(V)
时它仍然失败。我不知道OP会用它做什么,但这应该适用于正数:
V2=circshift(V2,[1,-find(V2>=(value*)(value
>> V = [5 6 7 1 2];
>> value = 2;
>> V2 = sort(V);
>> V2 = circshift(V2, [1, -find(V2 == value, 1) + 1])
V2 =
     2     5     6     7     1
>> V = [ -1 -2 -1 0 0 1 1 2];
>> value = 2;
>> V2 = sort(V);
>> V2 = circshift(V2, [1, -find(V2 == value, 1) + 1])
V2 =
     2    -2    -1    -1     0     0     1     1