定義済みの値から始まる配列の要素を並べ替える方法はありますか?
たとえば、変換したい: V = [5 6 7 1 2]
in 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
は行ベクトルであるため、2 番目の次元に沿って回転する必要があるため、circshift の 2 番目の引数として使用する必要があります[1, ...]
。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