orderfields
構造体配列のフィールドの並べ替え
構文
説明
例
名前によるフィールドの並べ替え
複数のフィールドをもつ構造体を作成します。
S1 = struct('b',1,'B',2,'a',3,'A',4)
S1 = struct with fields:
b: 1
B: 2
a: 3
A: 4
そのフィールドを並べ替えます。この構文は、ASCII 順に名前でフィールドを並べ替えます。
S = orderfields(S1)
S = struct with fields:
A: 4
B: 2
a: 3
b: 1
別の構造体を使用したフィールドの並べ替え
同じフィールドをもつ 2 つの構造体を異なる順序で作成します。フィールド名は同じですが、フィールド値は異なります。
S1 = struct('b',1,'B',2,'a',3,'A',4)
S1 = struct with fields:
b: 1
B: 2
a: 3
A: 4
S2 = struct('a',0,'b',20,'B',10,'A',0)
S2 = struct with fields:
a: 0
b: 20
B: 10
A: 0
S1
のフィールドの順序は S2
のフィールドの順序と一致します。
S = orderfields(S1,S2)
S = struct with fields:
a: 3
b: 1
B: 2
A: 4
cell 配列でのフィールド名のリスト
構造体を作成します。
data.x = linspace(0,2*pi);
data.y = sin(data.x);
data.title = 'y = sin(x)'
data = struct with fields:
x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
title: 'y = sin(x)'
cell 配列に名前をリストしてフィールドを並べ替えます。
C = {'title','x','y'}; data = orderfields(data,C)
data = struct with fields:
title: 'y = sin(x)'
x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
置換ベクトルを使用した位置によるフィールドのリスト
構造体を作成します。
data.x = linspace(0,2*pi);
data.y = sin(data.x);
data.title = 'y = sin(x)'
data = struct with fields:
x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
title: 'y = sin(x)'
元の位置をリストして異なる順序でフィールドを並べ替えます。たとえば、出力構造体の最初のフィールドになるように 3 番目のフィールドを移動します。
P = [3 1 2]; data = orderfields(data,P)
data = struct with fields:
title: 'y = sin(x)'
x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
別の構造体からの置換ベクトルを使用した並べ替え
構造体を作成します。
data1.x = linspace(0,2*pi);
data1.y = sin(data1.x);
data1.title = 'y = sin(x)';
関数 orderfields
を使用して構造体を並べ替えます。置換ベクトル Pout
に新しいフィールド順序を保存します。
[S,Pout] = orderfields(data1,{'title','x','y'})
S = struct with fields:
title: 'y = sin(x)'
x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
Pout = 3×1
3
1
2
同じフィールドをもつ 2 番目の構造体を作成します。
data2.x = data1.x;
data2.y = cos(data2.x);
data2.title = 'y = cos(x)';
Pout
を使用して data2
のフィールドを並べ替えます。同じフィールド名を持つ構造体が多数ある場合は、同じ方法で Pout を使用してすべて並べ替えることができます。
S2 = orderfields(data2,Pout)
S2 = struct with fields:
title: 'y = cos(x)'
x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
y: [1 0.9980 0.9920 0.9819 0.9679 0.9501 0.9284 0.9029 0.8738 0.8413 0.8053 0.7660 0.7237 0.6785 0.6306 0.5801 0.5272 0.4723 0.4154 0.3569 0.2969 0.2358 0.1736 0.1108 0.0476 -0.0159 -0.0792 -0.1423 -0.2048 -0.2665 -0.3271 ... ] (1x100 double)
入力引数
S1
— 入力構造体
構造体配列
入力構造体。構造体配列として指定されます。
S2
— 構造体によるフィールド順序
構造体配列
構造体によるフィールド順序。構造体配列として指定します。S2
には S1
と同じフィールドがありますが、異なる順序で指定されます。
C
— 名前によるフィールド順序
文字ベクトルの cell 配列 | string 配列
名前によるフィールド順序。文字ベクトルの cell 配列、または string 配列として指定します。C
の名前は S1
のフィールド名と一致しなければなりません。
P
— 数値によるフィールド順序
数値ベクトル
数値によるフィールド順序。数値ベクトルとして指定します。数値は 1
~ n
の整数でなければなりません。n
は S1
のフィールドの数です。
出力引数
S
— 並べ替えられた構造体
構造体配列
並べ替えられた構造体。構造体配列として返されます。S
は S1
と同じフィールドをもちますが、順序は異なる場合があります。
Pout
— 出力フィールドの順序
数値ベクトル
出力フィールドの順序。数値ベクトルとして返されます。Pout
の要素は 1
~ n
の整数です。n
は S1
のフィールドの数です。整数の置換はフィールドの順序の変更を表します。
ヒント
関数
orderfields
は、最上位フィールドをのみを並べ替えます。これは、リカーシブではありません。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2006a より前に導入
参考
struct
| isfield
| fieldnames
| setfield
| getfield
| rmfield
| struct2cell
| cell2struct
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)