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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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: [1×1 struct]
h: 50
S
は構造体ですが、S.a
、S.a.b
、S.a.b.e
の各フィールドも構造体です。
S.a
ans = struct with fields:
b: [1×1 struct]
S.a.b
ans = struct with fields:
c: 1
d: 2
e: [1×1 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: [1×1 struct]
ドット表記を使用して値を代入することもできます。
S.a.b.d = 2048; S.a.b
ans = struct with fields:
c: 1
d: 2048
e: [1×1 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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 … ] (1×100 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
の各要素は、すべての要素が同じ名前の同じフィールドをもつ構造体となります。
フィールド名。文字ベクトルまたは string スカラーとして指定します。
インデックス。数値の 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]
と等価です。
値。任意のサイズの任意の配列タイプとして指定します。
拡張機能
使用上の注意および制限:
フィールド名は定数でなければなりません。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)