1

定義済みの値から始まる配列の要素を並べ替える方法はありますか?

たとえば、変換したい: V = [5 6 7 1 2]in V2 = [2 5 6 7 1]

この場合、値 2 から始めたいと思いました

ありがとう

4

1 に答える 1

2

そのように(Vが行ベクトルであると仮定して):

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

説明: まず、ソートする必要がありますVvalue次に、最初の要素のインデックスが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
于 2013-09-23T20:37:50.350 に答える