Main Content

コード生成のための構造体の配列の定義

フィールドの整合性を確保する

コード生成で MATLAB® 構造体の配列を作成する場合、配列要素内の対応するフィールドは同じサイズ、型および実数/複素数をもたなければなりません。

構造体の配列を作成したら、coder.varsize (MATLAB Coder) を使用して構造体フィールドを可変サイズにすることができます。可変サイズの構造体フィールドの宣言 (MATLAB Coder)を参照してください。

repmat を使用して整合性のとれたフィールド プロパティをもつ構造体の配列を定義

MATLAB 関数 repmat を使い、スカラー構造体から構造体の配列を作成することができます。この関数は、既存のスカラー構造体を複製し、タイル処理を行います。

  1. コード生成のためのスカラー構造体の定義の説明に従って、スカラー構造体を作成します。

  2. repmat を呼び出し、スカラー構造体と配列の次元を渡します。

  3. 各構造体に対し、標準の配列インデックスと構造体のドット表記を使用して値を代入します。

たとえば、次のコードは 1 行 3 列のスカラー構造体の配列 X を作成します。配列の各要素は、構造体 s で定義されます。これには、ab の 2 つのフィールドがあります。

...
s.a = 0;
s.b = 0;
X = repmat(s,1,3);
X(1).a = 1;
X(2).a = 2;
X(3).a = 3;
X(1).b = 4;
X(2).b = 5;
X(3).b = 6;
...

struct を使用した構造体の配列の定義

関数 struct を使用して構造体の配列を作成するには、フィールド値の引数を cell 配列として指定します。各 cell 配列要素は対応する構造体の配列要素内のフィールドの値です。コード生成では、構造体内の対応するフィールドは同じ型をもたなければなりません。したがって、フィールド値の cell 配列内の要素は同じ型でなければなりません。

たとえば、次のコードは 1 行 3 列の構造体の配列を作成します。構造体の配列内の各構造体で、a は型 doubleb は型 char をもちます。

s = struct('a', {1 2 3}, 'b', {'a' 'b' 'c'});

連結を使用して構造体の配列を定義する

構造体の小規模な配列を作成するには、連結演算子である大かっこ ( [ ] ) を使用して 1 つ以上の構造体をつなげて配列にすることができます。行列の作成、連結、および拡張を参照してください。コードを生成するには、連結する構造体が同じサイズ、クラス、実数/複素数でなければなりません。

たとえば、次のコードは連結とローカル関数を使って 1 行 3 列の構造体配列の要素を作成しています。

...
W = [ sab(1,2) sab(2,3) sab(4,5) ];

function s = sab(a,b)
  s.a = a;
  s.b = b;
...

参考

関連するトピック