setfield
構造体配列フィールドへの値の代入
構文
説明
例
フィールドへの値の代入
スカラー構造体を作成します。
S.x = linspace(0,2*pi);
S.y = sin(S.x);
S.title = ''
S = 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: ''
関数 setfield
を使用してフィールドに値を代入します。
S = setfield(S,'title','y = sin(x)')
S = 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)'
別のフィールドに値を代入します。存在しないフィールドを指定すると、setfield
によってそれが作成されます。
e = sqrt(abs(S.y));
S = setfield(S,'sqrty',e)
S = 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)'
sqrty: [0 0.2518 0.3558 0.4350 0.5011 0.5586 0.6096 0.6556 0.6973 0.7353 0.7700 0.8017 0.8307 0.8571 0.8810 0.9025 0.9218 0.9389 0.9537 0.9665 0.9772 0.9858 0.9924 0.9969 0.9994 0.9999 0.9984 0.9949 0.9893 0.9818 0.9721 0.9604 ... ] (1x100 double)
ドット表記を使用してフィールドに値を代入することもできます。
S.title = 'y = sin(x), with error bar values'
S = 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), with error bar values'
sqrty: [0 0.2518 0.3558 0.4350 0.5011 0.5586 0.6096 0.6556 0.6973 0.7353 0.7700 0.8017 0.8307 0.8571 0.8810 0.9025 0.9218 0.9389 0.9537 0.9665 0.9772 0.9858 0.9924 0.9969 0.9994 0.9999 0.9984 0.9949 0.9893 0.9818 0.9721 0.9604 ... ] (1x100 double)
入れ子にされた構造体のフィールド
入れ子にされた構造体を作成します。入れ子にされた構造体では、どのレベルの構造体においても、構造体であるフィールドと、構造体でない他のフィールドをもつことができます。
S.a.b.c = 1; S.a.b.d = 2; S.a.b.e = struct('f',[3 4],'g',5); S.h = 50
S = struct with fields:
a: [1x1 struct]
h: 50
S
は構造体ですが、S.a
、S.a.b
、S.a.b.e
の各フィールドも構造体です。
S.a
ans = struct with fields:
b: [1x1 struct]
S.a.b
ans = struct with fields:
c: 1
d: 2
e: [1x1 struct]
S.a.b.e
ans = struct with fields:
f: [3 4]
g: 5
関数 setfield
を使用して値を S.a.b.d
に代入します。入れ子にされた構造体名のコンマ区切りのリストを指定する場合、最上位のフィールドと指定したフィールド名の間にあるすべてのレベルの構造体名を含めます。この場合、構造体名のコンマ区切りのリストは 'a','b'
で、フィールド名は 'd'
です。
S = setfield(S,'a','b','d',1024); S.a.b
ans = struct with fields:
c: 1
d: 1024
e: [1x1 struct]
ドット表記を使用して値を代入することもできます。
S.a.b.d = 2048; S.a.b
ans = struct with fields:
c: 1
d: 2048
e: [1x1 struct]
構造体配列の要素のフィールド
構造体配列の要素のフィールドに値を代入します。
最初に、構造体配列を作成します。すべての構造体配列と同様に、各要素は同じフィールドをもつ構造体です。
S.x = linspace(0,2*pi); S.y = sin(S.x); S(2).x = S.x; S(2).y = cos(S(2).x)
S=1×2 struct array with fields:
x
y
setfield
を使用して値を代入することもできます。フィールドが存在しない場合、setfield
によってそれが作成されます。title
という名前のフィールドを作成します。
S = setfield(S,{1},'title','y = sin(x)')
S=1×2 struct array with fields:
x
y
title
関数 setfield
は個々の要素のフィールドに値を代入しますが、出力引数は構造体配列全体です。
S
の最初の要素を表示します。
S(1)
ans = 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)'
あるいは、構造体配列にインデックスを付けてから、ドット表記を使用して要素のフィールドに値を代入します。
S(2).title = 'y = cos(x)';
S(2)
ans = 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: [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)
title: 'y = cos(x)'
入れ子にされた構造体配列のインデックス
一部のレベルで構造体が構造体配列である、入れ子にされた構造体のフィールドに値を代入します。この例では、S
は 1 行 2 列の構造体配列です。2 番目の要素である S(2)
には入れ子にされた構造体 a.b
があります。ここで、b
は 1 行 3 列の構造体配列です。
最初に、入れ子にされた構造体を作成します。ドット表記を使用して構造体を作成した後、関数 struct
を使用して別の非スカラー構造体配列を作成し、これをフィールドとして追加します。
S.a = 1;
S(2).a.b = struct('d',{5,10,20});
S
S=1×2 struct array with fields:
a
S(2).a.b
ans=1×3 struct array with fields:
d
S(2).a.b
の 3 番目の要素を表示します。
S(2).a.b(3)
ans = struct with fields:
d: 20
関数 setfield
を使用して S(2).a.b(3)
のフィールド d
に新しい値を代入します。更新されたフィールドで構造体を表示します。
S = setfield(S,{2},'a','b',{3},'d',3.1416); S(2).a.b(3)
ans = struct with fields:
d: 3.1416
フィールドの要素
値が配列であるフィールドをもつ構造体を作成します。
S.a = [5 10 15 20 25]
S = struct with fields:
a: [5 10 15 20 25]
関数 setfield
を使用して S.a
の要素に値を代入します。特定の要素に値を代入するには、フィールドの名前の後にインデックスを指定します。cell 配列内のインデックスを指定しなければなりません。ただし、データ型がフィールドのデータ型に一致する配列に新しい値を指定します。
S = setfield(S,'a',{3:5},[0 -50 -100])
S = struct with fields:
a: [5 10 0 -50 -100]
ドット表記と配列インデックス付けを使用して同じ要素に値を代入することもできます。
S.a(3:5) = [20 40 80]
S = struct with fields:
a: [5 10 20 40 80]
入力引数
S
— 構造体配列
構造体配列
構造体配列。S
が非スカラーの場合、S
の各要素は、すべての要素が同じ名前の同じフィールドをもつ構造体となります。
field
— フィールド名
文字ベクトル | string スカラー
フィールド名。文字ベクトルまたは string スカラーとして指定します。
idx
— インデックス
数値の cell 配列または logical 値
インデックス。数値の cell 配列または logical 値として指定します。S
および 1
から N-1
のフィールドのインデックスにより、構造体配列の個々の要素を指定します。フィールド N
のインデックスは、そのフィールド内の配列の、1 つ以上の任意の型の要素を指定します。
例: S = setfield(S,{1,2},'a',1)
は S(1,2).a = 1
と等価です。
例: S.a = [5 10 20]
の場合、S = setfield(S,'a',{[2,3]},[50 100])
は S.a(2:3) = [50 100]
と等価です。
value
— 値
配列
値。任意のサイズの任意の配列タイプとして指定します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
フィールド名は定数でなければなりません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
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)