有没有办法从预定义的值开始对数组的元素进行排序?
例如我想转换:V = [5 6 7 1 2]
在V2 = [2 5 6 7 1]
.
在这种情况下,我想从值 2 开始
谢谢
像这样(假设V
是一个行向量):
value = 2
V2 = sort(V);
V2 = circshift(V2, [1, -find(V2 == value, 1) + 1]);
解释:首先你需要排序V
。然后你会发现第一个元素的索引等于value
with find(V2 == value, 1)
。最后,您必须将已排序的向量“旋转”正确的数量才能进入value
第一个位置。由于V
是行向量,因此您需要沿第二维旋转,因此您必须将其[1, ...]
用作 circshift 的第二个参数。请注意,这仅在value
实际上是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
和
>> 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