このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
sort
配列要素の並べ替え
説明
は並べ替えのための追加パラメーターを指定します。たとえば、B
= sort(___,Name,Value
)sort(A,'ComparisonMethod','abs')
は A
の要素を大きさの順に並べ替えます。
例
行ベクトルを作成してその要素を昇順に並べ替えます。
A = [9 0 -7 5 3 8 -10 4 2]; B = sort(A)
B = 1×9
-10 -7 0 2 3 4 5 8 9
行列を作成してその各行を昇順に並べ替えます。
A = [3 6 5; 7 -2 4; 1 0 -9]
A = 3×3
3 6 5
7 -2 4
1 0 -9
B = sort(A,2)
B = 3×3
3 5 6
-2 4 7
-9 0 1
行列を作成してその列を降順に並べ替えます。
A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3]
A = 4×4
10 -12 4 8
6 -9 8 0
2 3 11 -2
1 1 9 3
B = sort(A,'descend')
B = 4×4
10 3 11 8
6 1 9 3
2 -9 8 0
1 -12 4 -2
R2017a 以降、二重引用符を使用して string 配列を作成し、関数 sort
を使用して並べ替えられるようになりました。Unicode® の辞書順に従って string 配列の各列にある文字列を並べ替えます。
A = ["Santos","Burns"; ... "Jones","Morita"; ... "Petrov","Adams"]; B = sort(A)
B = 3x2 string
"Jones" "Adams"
"Petrov" "Burns"
"Santos" "Morita"
各行の string を並べ替えます。
B = sort(A,2)
B = 3x2 string
"Burns" "Santos"
"Jones" "Morita"
"Adams" "Petrov"
datetime
値の配列を作成し、昇順で古い日付から新しい日付に並べ替えます。
ds = {'2012-12-22';'2063-04-05';'1992-01-12'}; A = datetime(ds,'Format','yyyy-MM-dd')
A = 3x1 datetime
2012-12-22
2063-04-05
1992-01-12
[B,I] = sort(A)
B = 3x1 datetime
1992-01-12
2012-12-22
2063-04-05
I = 3×1
3
1
2
B
は、並べ替えられた日付を一覧表示し、I
は、対応する A
のインデックスを含みます。
並べ替えた要素に元の配列から直接アクセスするには、インデックス配列 I
を使用します。
A(I)
ans = 3x1 datetime
1992-01-12
2012-12-22
2063-04-05
関連データを対応する要素に格納した 2 つの行ベクトルを作成します。
X = [3 6 4 2 1 5]; Y = ["yellow" "purple" "green" "orange" "red" "blue"];
まずベクトル X
を並べ替えてから、ベクトル Y
を X
と同じ順序で並べ替えます。
[Xsorted,I] = sort(X)
Xsorted = 1×6
1 2 3 4 5 6
I = 1×6
5 4 1 3 6 2
Ysorted = Y(I)
Ysorted = 1x6 string
"red" "orange" "yellow" "green" "blue" "purple"
2×2×2 の配列を作成し、要素を 3 番目の次元に沿って昇順に並べ替えます。
A(:,:,1) = [2 3; 1 6]; A(:,:,2) = [-1 9; 0 12]; A
A = A(:,:,1) = 2 3 1 6 A(:,:,2) = -1 9 0 12
B = sort(A,3)
B = B(:,:,1) = -1 3 0 6 B(:,:,2) = 2 9 1 12
A
のすべての要素を並べ替えるには、A
の列表現 A(:)
を使用します。
B = sort(A(:))
B = 8×1
-1
0
1
2
3
6
9
12
複素数ベクトルの要素を、実数部で並べ替えます。既定では、関数 sort
は複素数値を大きさで並べ替え、同順位の並べ替えには位相角を使用します。代わりに複素数値を実数部で並べ替えるには、'ComparisonMethod'
の値を 'real'
と指定します。実数部が等しい要素については、sort
は虚数部を基準として並べ替え順序を決定します。
A = [1+2i 3+1i 1i 0 -1i]; B = sort(A,'ComparisonMethod','real')
B = 1×5 complex
0.0000 - 1.0000i 0.0000 + 0.0000i 0.0000 + 1.0000i 1.0000 + 2.0000i 3.0000 + 1.0000i
入力引数
入力配列。ベクトル、行列または多次元配列として指定します。
A
がスカラーの場合、sort(A)
はA
を返します。A
が複素数の場合、sort
は既定では要素を大きさの順に並べ替えます。大きさの等しい要素が複数ある場合、区間 (−π, π] で位相角の順にこれらの要素を並べ替えます。A
が文字ベクトルの cell 配列または string 配列の場合、sort(A)
は UTF-16 文字エンコード スキームのコードの順序に従って要素を並べ替えます。並べ替えでは大文字小文字が区別されます。文字配列と string 配列の並べ替えの詳細については、文字配列と string 配列の並べ替え順序を参照してください。A
が string 配列の場合、sort
は配列の要素を並べ替えますが、string 内の文字は並べ替えません。A
が categorical 配列の場合、並べ替え順序はcategories(A)
によって返されるカテゴリの順序に基づきます。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| cell
| categorical
| datetime
| duration
複素数のサポート: あり
演算の対象の次元。正の整数のスカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。
行列
A
を考えます。sort(A,1)
はA
の列の要素を並べ替えます。sort(A,2)
はA
の行の要素を並べ替えます。
dim
が ndims(A)
より大きい場合、sort
は A
を返します。A
が cell 配列の場合、dim
はサポートされないため、sort
はサイズが 1 でない最初の配列の次元のみに沿って動作します。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
並べ替える方向。'ascend'
または 'descend'
として指定します。A
が cell 配列の場合、direction
はサポートされないため、sort
は昇順でのみ並べ替えを実行します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: sort(A,'MissingPlacement','last')
欠損値 (NaN
、NaT
、<undefined>
、missing
) の配置。'MissingPlacement'
と、次のいずれかで構成されるコンマ区切りのペアとして指定します。
'auto'
— 欠損値の要素は、昇順では最後、降順では最初に配置されます。'first'
— 欠損値の要素は最初に配置されます。'last'
— 欠損値の要素は最後に配置されます。
数値入力の要素の比較方法。'ComparisonMethod'
と以下のいずれかで構成される、コンマ区切りペアとして指定します。
'auto'
—A
が実数の場合はreal(A)
によって、A
が複素数の場合はabs(A)
を基準にしてA
を並べ替えます。'real'
—A
が実数または複素数の場合に、real(A)
を基準にしてA
を並べ替えます。A
の要素の実数部が等しい場合、imag(A)
を使用して同順位のものを並べ替えます。'abs'
—A
が実数または複素数の場合に、abs(A)
を基準にしてA
を並べ替えます。A
の要素の大きさが等しい場合、区間 (-π,π] でangle(A)
を使用して同順位のものを並べ替えます。
出力引数
並べ替えられた配列。ベクトル、行列または多次元配列として返されます。B
のサイズと型は A
と同じです。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| cell
| categorical
| datetime
| duration
並べ替えインデックス。ベクトル、行列または多次元配列として返されます。I
のサイズは A
と同じです。インデックス ベクトルは sort
が作用する次元に沿って方向付けされます。たとえば、A
が 2 行 3 列の行列である場合、[B,I] = sort(A,2)
は A
の各行の要素を並べ替えます。出力 I
は 1 行 3 列の行インデックス ベクトルの集合で、A
の各行の並べ替えられた順を表しています。
関数 sort
は安定した並べ替えアルゴリズムを使用します。そのため、入力に繰り返しの値が含まれている場合、並べ替えインデックスは、並べ替えの方向に関係なく、入力における元の順序のままになります。たとえば、A = [1 2 1 2]
の場合、[Ba,Ia] = sort(A,'ascend')
は並べ替えインデックス Ia = [1 3 2 4]
を返し、[Bd,Id] = sort(A,'descend')
は並べ替えインデックス Id = [2 4 1 3]
を返します。
詳細
MATLAB® は UTF-16 文字エンコード スキームを使用して、文字を Unicode® として保存します。文字配列と string 配列は UTF-16 コード ポイント順に基づいて並べ替えられます。ASCII 文字でもある文字の場合、この順序では大文字が小文字よりも前になることを意味します。数字と一部の記号も文字より前にあります。
ヒント
関数
sortrows
は、行列または table 入力の複数の列にわたるサブソート機能の柔軟性を高めます。関数
sort
と関係演算子は、複素数に対して異なる並べ替えを使用します。詳細については、関係演算を参照してください。
拡張機能
この関数は tall 配列を制限付きでサポートしています。
sort(X,dim)
のように、並べ替える次元を指定しなければなりません。sort(X,1)
のように、tall 次元の並べ替えは列ベクトルでのみサポートされています。
詳細については、tall 配列を参照してください。
使用上の注意および制限:
A
が複素数で、その虚数部がすべて 0 である場合、MATLAB はsort(A)
を呼び出す前にA
をreal(A)
に変換することがあります。この場合、MATLAB はA
をreal(A)
で並べ替えますが、生成されるコードはA
をabs(A)
で並べ替えます。生成されるコードを MATLAB と一致させるには、sort(real(A))
またはsort(A,'ComparisonMethod','real')
を使用します。ゼロ値の虚数部をもつ複素数データのコード生成 (MATLAB Coder)を参照してください。dim
を指定する場合は、定数でなければなりません。入力 cell 配列が異種混合の場合は、可変サイズのサポートが有効でなければなりません。
可変サイズ入力に関連した制限については、既定の次元の選択に関する MATLAB との非互換性 (MATLAB Coder)を参照してください。
使用上の注意事項および制限事項については、「C/C++ コード生成」セクションを参照してください。GPU コード生成にも同じ制限が適用されます。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
sort
関数は、GPU 配列を完全にサポートします。GPU 上で関数を実行するには、入力データを gpuArray
(Parallel Computing Toolbox) として指定します。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
使用上の注意および制限:
table 入力、timetable 入力、datetime 入力はサポートされません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)