このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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
string 配列の並べ替え
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
配列の並べ替えとインデックス付け
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"
3 次元配列の並べ替え
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
— 入力配列
ベクトル | 行列 | 多次元配列
入力配列。ベクトル、行列または多次元配列として指定します。
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
複素数のサポート: あり
dim
— 演算の対象の次元
正の整数スカラー
演算の対象の次元。正の整数のスカラーとして指定します。値を指定しない場合、既定値は、サイズが 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
direction
— 並べ替える方向
'ascend'
(既定値) | 'descend'
並べ替える方向。'ascend'
または 'descend'
として指定します。A
が cell 配列の場合、direction
はサポートされないため、sort
は昇順でのみ並べ替えを実行します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: sort(A,'MissingPlacement','last')
MissingPlacement
— 欠損値の配置
'auto'
(既定値) | 'first'
| 'last'
欠損値 (NaN
、NaT
、<undefined>
、missing
) の配置。'MissingPlacement'
と、次のいずれかで構成されるコンマ区切りのペアとして指定します。
'auto'
— 欠損値の要素は、昇順では最後、降順では最初に配置されます。'first'
— 欠損値の要素は最初に配置されます。'last'
— 欠損値の要素は最後に配置されます。
ComparisonMethod
— 要素の比較方法
'auto'
(既定値) | 'real'
| 'abs'
要素の比較方法。'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
— 並べ替えられた配列
ベクトル | 行列 | 多次元配列
並べ替えられた配列。ベクトル、行列または多次元配列として返されます。B
のサイズと型は A
と同じです。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| cell
| categorical
| datetime
| duration
I
— 並べ替えインデックス
ベクトル | 行列 | 多次元配列
並べ替えインデックス。ベクトル、行列または多次元配列として返されます。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]
を返します。
詳細
文字配列と string 配列の並べ替え順序
MATLAB® は UTF-16 文字エンコード スキームを使用して、文字を Unicode® として保存します。文字配列と string 配列は UTF-16 コード ポイント順に基づいて並べ替えられます。ASCII 文字でもある文字の場合、この順序では大文字が小文字よりも前になることを意味します。数字と一部の記号も文字より前にあります。
ヒント
関数
sortrows
は、行列または table 入力の複数の列にわたるサブソート機能の柔軟性を高めます。関数
sort
と関係演算子は、複素数に対して異なる並べ替えを使用します。詳細については、関係演算を参照してください。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を制限付きでサポートしています。
sort(X,dim)
のように、並べ替える次元を指定しなければなりません。sort(X,1)
のように、tall 次元の並べ替えは列ベクトルでのみサポートされています。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
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 Coder)を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
table 入力、timetable 入力、datetime 入力、duration 入力はサポートされていません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)