Main Content

sort

シンボリック配列の要素の並べ替え

説明

Y = sort(X)X の要素を辞書式順序の昇順で並べ替えます。

  • X がベクトルの場合、sort(X)X のベクトルの要素を並べ替える。

  • X が行列の場合、sort(X)X の列をベクトルとして扱い、各列を個別に並べ替える。

  • X が多次元配列の場合、sort(X) はサイズが 1 でない最初の配列次元に沿って動作し、要素をベクトルとして扱う。

Y = sort(X,dim) は、次元 dim に沿って X の要素を並べ替えます。たとえば、X が 2 次元行列である場合、sort(X,1)X の各列の要素を並べ替え、sort(X,2) は各行の要素を並べ替えます。

Y = sort(___,direction) は、前述の構文のいずれかを使用して、direction で指定した順序で並べ替えた X の要素を返します。'ascend' は昇順 (既定)、'descend' は降順を示します。

[Y,I] = sort(___) は前述の構文のいずれかについて、インデックス ベクトルの集合も返します。IX と同じサイズで、並べ替えられた次元に沿った、Y に対する X の要素の配置を表します。たとえば、Xmn 列の行列で、各列の要素 (dim = 1) を並べ替える場合、I の各列は、次のような X の並べ替えられた列のインデックス ベクトルです。

for j = 1:n
    Y(:,j) = X(I(:,j),j); 
end

すべて折りたたむ

シンボリック行ベクトルを作成し、その要素を昇順で並べ替えます。

syms a b c d e
sort([7 e 1 c 5 d a b])
ans = (157abcde)

行列の要素を並べ替える際、sort を使用して行列の列と行を並べ替えることができます。

シンボリック行列を作成します。

X = magic(3)*sym('a')
X = 

(8aa6a3a5a7a4a9a2a)

行列 X を並べ替えます。既定の設定では、sort コマンドは各列の要素を並べ替えます。

Y = sort(X)
Y = 

(3aa2a4a5a6a8a9a7a)

各行の要素を並べ替えるには、dim オプションの値を 2 に設定します。

Y = sort(X,2)
Y = 

(a6a8a3a5a7a2a4a9a)

シンボリック行列を作成します。

X = magic(3)*sym('a')
X = 

(8aa6a3a5a7a4a9a2a)

各行の要素を降順に並べ替えます。

Y = sort(X,2,'descend')
Y = 

(8a6aa7a5a3a9a4a2a)

行列 Y の各要素が元の行列 X でもっていたインデックスを検出するには、2 つの出力引数を使用して sort を呼び出します。

シンボリック行列 X を作成します。

X = magic(3)*sym('a')
X = 

(8aa6a3a5a7a4a9a2a)

X の各列を並べ替え、並べ替えられた要素のインデックスを I に返します。I の各列には、Y のエントリの並べ替えられた位置が格納されます。

[Y,I] = sort(X)
Y = 

(3aa2a4a5a6a8a9a7a)

I = 3×3

     2     1     3
     3     2     1
     1     3     2

実数と複素数を含むシンボリック ベクトル X を並べ替えます。X がシンボリックな実数と複素数を含む場合、sort(X) は並べ替えられた実数を返し、続けて実数部に基づいて並べ替えられた複素数を返します。

X = sort(sym([2 -1/2 3+4i 5i 4+3i]))
X = 

(-1225i3+4i4+3i)

シンボリック数、シンボリック変数、およびシンボリック関数を含む 2 x 2 x 2 のシンボリック配列を作成します。

syms x y f(x);
X(:,:,1) = [y 1; 1/3 x];
X(:,:,2) = [x -2; 1/4 f(x)];
X
X(:,:,1) = 

(y113x)

X(:,:,2) = 

(x-214f(x))

要素を 3 番目の次元に沿って昇順に並べ替えます。

Y = sort(X,3)
Y(:,:,1) = 

(x-214x)

Y(:,:,2) = 

(y113f(x))

X の列表現 X(:) を使用して、X のすべての要素を並べ替えます。

Y = sort(X(:))
Y = 

(-214131xxyf(x))

入力引数

すべて折りたたむ

入力配列。シンボリック ベクトル、シンボリック行列、またはシンボリック多次元配列として指定します。sort は以下の規則を使用します。

  • X に有理であるシンボリックな実数のみが含まれる場合、sort(X) は要素を数値的に並べ替える。

  • X に有理な実数部と虚数部をもつシンボリック複素数のみが含まれる場合、sort(X) は要素をまず実数部で並べ替え、次に虚数部で並べ替えて結びつきを解消する。

  • X にシンボリック変数のみが含まれる場合、sort(X) は要素をアルファベット順に並べ替える。

  • X にシンボリック数 (有理部をもつ) と変数が混在している場合、sort(X) は、並べ替えられた実数、並べ替えられた複素数、並べ替えられた変数のシーケンスを返す。

  • X にシンボリックな無理数、シンボリック式、およびシンボリック関数が含まれている場合、要素の比較や並べ替えの計算が複雑になる可能性がある。そのため、sort は内部の並べ替え規則を使用してパフォーマンスを最適化する。

演算の対象の次元。正の整数スカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。

次の 2 次元の入力配列 X について考えます。

  • sort(X,1)X の列の要素を並べ替える。

    Sorting of a 2-by-3 matrix along the columns.

  • sort(X,2)X の行の要素を並べ替える。

    Sorting of a 2-by-3 matrix along the rows.

dimndims(X) より大きい場合、sortX を返します。

並べ替え方向。'ascend' または 'descend' として指定します。

出力引数

すべて折りたたむ

並べ替えられた配列。シンボリック ベクトル、シンボリック行列、またはシンボリック多次元配列として返されます。Y のサイズと型は X と同じです。

並べ替えインデックス。シンボリック ベクトル、シンボリック行列、またはシンボリック多次元配列として返されます。IX と同じサイズです。インデックス ベクトルの方向は、sort の対象となる次元と同じです。たとえば、X が 2 行 3 列の行列の場合、[Y,I] = sort(X,2)X の各行の要素を並べ替えます。出力 IY の各行の並べ替えられた位置が格納された 1 行 3 列の行インデックス ベクトルの集合です。

ヒント

  • シンボリック オブジェクトではない数値の配列について sort を呼び出すと、MATLAB® 関数 sort が呼び出されます。

  • 関数 sort は、シンボリック複素数を MATLAB の浮動小数点複素数とは別に並べ替えます。複素数を含むシンボリック入力 X について、sort(X) は、複素数をまず実数部で並べ替え、次に虚数部で並べ替えて結びつきを解消します。浮動小数点入力 X の場合、既定では、sort(X) は、複素数をその大きさで並べ替えた後、区間 (−π, π] での位相角で並べ替えて結びつきを解消します。

バージョン履歴

R2006a より前に導入

すべて展開する