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()
関数の詳細については、このリンクを確認してください。