サブ構造体とフィールドのインデックス付け
コード生成時にサブ構造体およびフィールドにインデックス付けを行う場合は次のガイドラインを使用してください。
ドット表記を使ってサブ構造体のフィールドの値を個別に参照する
たとえば、次の MATLAB® コードは、ドット表記を使用してフィールドとサブ構造体にインデックスを付けています。
... substruct1.a1 = 15.2; substruct1.a2 = int8([1 2;3 4]); mystruct = struct('ele1',20.5,'ele2',single(100), 'ele3',substruct1); substruct2 = mystruct; substruct2.ele3.a2 = 2*(substruct1.a2); ...
生成コードでは、この例の構造体の要素に対し、次のようにシンボルを解釈することでインデックスを付けます。
ドット表記 | 記号の解釈 |
---|---|
substruct1.a1 | ローカル構造体 substruct1 のフィールド a1 |
substruct2.ele3.a1 | ローカル構造体 substruct2 のサブ構造体のフィールド ele3 のフィールド a1 の値 |
substruct2.ele3.a2(1,1) | ローカル構造体 substruct2 のサブ構造体のフィールド ele3 のフィールド a2 の行 1、列 1 の値 |
構造体配列内のフィールドの値を参照するには、目的の構造体の配列にインデックスを付けてから、ドット表記でその構造体のフィールドを個別に参照しなければなりません。以下に例を示します。
... y = X(1).a % Extracts the value of field a % of the first structure in array X ...
配列の各構造体の特定のフィールド値をすべて参照するには、以下の例のように、この表記を for
ループで使用します。
... s.a = 0; s.b = 0; X = repmat(s,1,5); for i = 1:5 X(i).a = i; X(i).b = i+1; end
この例では、関数 repmat
を使用して構造体の配列を定義しています。各構造体は、s
で定義された a
と b
の 2 つのフィールドをもっています。詳細については、コード生成のための構造体の配列の定義を参照してください。
構造体の中のフィールドを、動的な名前を使用して参照することはできません。動的な名前は、実行時に MATLAB が評価する可変の式としてフィールドを表現します (変数からフィールド名を生成を参照してください)。
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)