MATLAB の並べ替え行

Ammar Ali 2023年1月30日
  1. MATLAB で sortrows() 関数を使用して行列行を並べ替えます
  2. MATLAB で sortrows() 関数を使用してテーブル行を並べ替えます
MATLAB の並べ替え行

このチュートリアルでは、MATLAB の sortrows() 関数を使用して、行列に存在する行を並べ替える方法について説明します。データの分析と処理では、データを並べ替えるときにデータの分析と処理が容易になるため、並べ替えは不可欠です。

たとえば、病院に患者のテーブルがあり、特定の人を検索したい場合、テーブルが並べ替えられていない場合は、すべてのデータを調べて人を検索する必要があります。しかし、患者の名前の最初の文字に従ってテーブルを並べ替えると、特定の文字から始まる名前を見るだけで済むため、人を簡単に確認できます。

MATLAB で sortrows() 関数を使用して行列行を並べ替えます

Matlab の sortrows() 関数を使用して、行列に存在する行を並べ替えることができます。sortrows() 関数の最初の構文を以下に示します。

output = sortrows(matrix)

上記の構文は、最初の列の要素または各行の最初の要素に従って、指定されたマトリックスの行を昇順で並べ替えます。2つ以上の行に同じ最初の要素がある場合、関数は 2 番目の要素を比較します。

たとえば、上記の構文を使用して行列の行を並べ替えてみましょう。以下のコードを参照してください。

clc
clear

My_matrix = [5:10;2:7;3:8]
New_matrix = sortrows(My_matrix)

出力:

My_matrix =

     5     6     7     8     9    10
     2     3     4     5     6     7
     3     4     5     6     7     8


New_matrix =

     2     3     4     5     6     7
     3     4     5     6     7     8
     5     6     7     8     9    10

上記のコードで 3 行 6 列の行列を作成し、その行を並べ替えました。出力の 2つの行列を比較して、結果を確認できます。

My_matrix マトリックスの最初の列を見ると、2 番目の行の最初の要素が最小であるため、2 番目の行が最初に来て、最初の値が最も高い最初の行が最後に来ることがわかります。出力。sortrows() 関数内で任意のサイズの行列を渡すことができます。

sortrows() 関数の 2 番目の構文を以下に示します。

output = sortrows(matrix, column)

上記の構文を使用して、入力マトリックスから列番号を設定できます。これは、指定されたマトリックスに存在する行の並べ替えに使用されます。列番号を渡さない場合、関数は行の並べ替えに行列の最初の列を使用します。

ベクトルで複数の列番号を渡すこともでき、関数は最初の列番号に従って行を並べ替えます。現在の列に同じ値が 2つ以上存在する場合、関数は指定されたベクトルに存在する次の列番号に移動します。

たとえば、並べ替えに 2 番目と 3 番目の列を使用して行列の行を並べ替えましょう。以下のコードを参照してください。

clc
clear

My_matrix = [5:10;3:8;7:-1:2]
New_matrix = sortrows(My_matrix,[3 4])

出力:

My_matrix =

     5     6     7     8     9    10
     3     4     5     6     7     8
     7     6     5     4     3     2


New_matrix =

     7     6     5     4     3     2
     3     4     5     6     7     8
     5     6     7     8     9    10

New_matrix マトリックスの 3 番目と 4 番目の列を見ると、3 番目と 4 番目の列の要素が並べ替えられていることがわかります。同じ値が存在する単一の列番号のみを渡す場合、関数は行の位置を変更しません。

sortrows() の 3 番目の構文を以下に示します。

output = sortrows(matrix, column, direction)

上記の構文では、方向は、行の昇順の場合は ascend、行の降順の場合は descend のように、行を並べ替える順序を定義します。デフォルトでは、順序は昇順に設定されています。

複数の列番号の場合、各列に使用されるセルデータ型として複数の方向を追加することもできます。

たとえば、2つの列番号と 2つの方向を定義すると、最初の列は最初の方向に従って並べ替えられます。同じ値がある場合、関数は 2 番目の列に移動し、2 番目の方向に従って行を並べ替えます。

たとえば、上記の行列を 2つの方向に従って並べ替えてみましょう。以下のコードを参照してください。

clc
clear

My_matrix = [5:10;3:8;7:-1:2]
New_matrix = sortrows(My_matrix,[3 4],{'ascend' 'descend'})

出力:

My_matrix =

     5     6     7     8     9    10
     3     4     5     6     7     8
     7     6     5     4     3     2


New_matrix =

     3     4     5     6     7     8
     7     6     5     4     3     2
     5     6     7     8     9    10

上記の出力では、関数が 3 番目の列に存在する 2つの同じ値(5)に達すると、4 番目の列に移動し、6 と 4 の値を使用して、2 番目の列番号は降順です。次に、sortrows() 関数を使用してテーブルの行を並べ替えることについて説明します。

MATLAB で sortrows() 関数を使用してテーブル行を並べ替えます

上記の行列の行を並べ替えたのと同じ方法で、sortrows() 関数を使用してテーブルの行を並べ替えることもできます。並べ替えに使用する変数または列、および並べ替えの方向または順序を設定することもできます。

たとえば、テーブルを作成し、変数に従ってその行を並べ替えてみましょう。以下のコードを参照してください。

clc
clear

P_Name = {'Smith';'John';'Will';'Jones';'Brown'};
P_Age = [37;47;37;40;49];
P_Height = [72;68;63;67;64];

P_table = table(P_Age,P_Height,'RowNames',P_Name)
Sorted_table = sortrows(P_table,'P_Height','descend')

出力:

P_table =

  5×2 table

             P_Age    P_Height
             _____    ________

    Smith     37         72
    John      47         68
    Will      37         63
    Jones     40         67
    Brown     49         64


Sorted_table =

  5×2 table

             P_Age    P_Height
             _____    ________

    Smith     37         72
    John      47         68
    Jones     40         67
    Brown     49         64
    Will      37         63

上記のコードでは、名前、年齢、身長を含む患者のテーブルを作成し、患者の身長に応じて降順でテーブルを並べ替えました。出力では、テーブルが患者の身長の降順に従って並べ替えられていることがわかります。

行列の場合と同様に、並べ替えに複数の変数と方向を使用することもできます。複数の変数の場合、セルに変数名と方向名を渡す必要があります。

デフォルトでは、sortrows() 関数はすべての変数と昇順を使用して、指定されたテーブルの行を並べ替えます。変数名の代わりに RowNames 引数を使用して、名前に従って行を並べ替えることもできます。

テーブルに欠落しているプレースメントがあり、欠落しているプレースメントに従ってテーブルを並べ替える場合は、MissingPlacement 引数を使用できます。その後、first のような値を渡して欠落している値を最初に配置し、last で値を最後に配置し、auto で要素を昇順で最初に配置し、降順の場合は最後に配置します。

ComparisonMethod 引数を使用して、値の比較に使用されるメソッドを変更することもできます。その後、実数値の場合は real、複素数値の場合は abs、複素数値の場合は実数値を使用し、複素入力の場合は複素数値を使用する auto などのメソッドの名前を渡す必要があります。。

比較方法は、複雑な値の場合に役立ちます。たとえば、複素数値の実数部のみを比較する場合は、real メソッドを使用できます。複素数値の絶対値を取得する場合は、abs メソッドを使用できます。

sortrows() 関数からインデックスを取得することもできます。この関数は、入力行列またはテーブルの行の再配置を示します。上記のプロパティの構文を以下に示します。

[Sorted_table, index] = sortrows(P_table,'RowNames','MissingPlacement','last','ComparisonMethod','abs')

入力行列またはテーブルから特定の数の行を並べ替える場合は、それらを別の行列またはテーブルに格納してから、sortrows() 関数を使用して結果を元のテーブルまたは行列に格納する必要があります。sortrows() 関数の詳細については、このリンクを確認してください。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - MATLAB Matrix