最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

coder.StructType クラス

パッケージ: coder
スーパークラス: coder.ArrayType

MATLAB 構造体配列のセットを表す

説明

生成されたコードが受け入れる構造体配列のセットを指定します。codegen -args オプションでのみ使用します。生成された MEX 関数に入力として渡さないでください。

構築

t=coder.typeof(struct_v) では、スカラー構造体 struct_v と同じフィールドをもつ構造体の coder.StructType オブジェクトが作成されます。

t=coder.typeof(struct_v, sz, variable_dims) では、sz で指定された上限のサイズと、可変の次元 variable_dims をもつ coder.typeof(struct_v) の変更されたコピーが返されます。sz で次元に inf を指定する場合は、次元のサイズは無限で、次元は可変サイズとみなされます。sz が [] の場合は、struct_v の上限のサイズは変化しません。variable_dims 入力パラメーターを指定しないと、制限のない次元を除き、この型の次元は固定とみなされます。variable_dims がスカラーの場合は、1 または 0 (固定とみなされる) ではない制限付き次元に適用されます。

t=coder.newtype('struct', struct_v, sz, variable_dims) では、スカラー構造体 struct_v と同じフィールドをもち、上限サイズ sz と可変の次元 variable_dims をもつ構造体配列の coder.StructType オブジェクトが作成されます。sz で次元に inf を指定する場合は、次元のサイズは無限で、次元は可変サイズとみなされます。variable_dims を指定しない場合は、制限のない次元を除き、この型の次元は固定とみなされます。variable_dims がスカラーの場合は、この型の次元に適用されます。ただし、次元が 1 または 0 で固定とみなされる場合を除きます。

入力引数

struct_v

新しい構造体型でフィールドの指定に使用されるスカラー構造体。

sz

型オブジェクトの各次元を指定するサイズ ベクトル。

既定値: coder.newtype に対して [1 1]

variable_dims

各次元のサイズが可変 (true) か、固定 (false) かを指定する論理ベクトル。

既定値: coder.newtype に対して false(size(sz)) | sz==Inf

プロパティ

Alignment

この型の構造体での実行時のメモリ配置 (バイト単位)。Embedded Coder® ライセンスをお持ちの場合、コード置換ライブラリ (CRL) を使用している場合は、置換関数に渡したデータ オブジェクトを指定の境界に配置する機能が CRL によって提供されます。この機能を使用すると、データを境界に合わせる必要があるターゲット固有の関数実装を利用できるようになります。既定では、この構造体は特定の境界に配置されていないため、配置を必要とする CRL の関数とは一致しません。

Alignment-1 または 2 のべき乗のいずれかで、128 以下でなければなりません。

ClassName

このセットの値のクラス。

Extern

構造体の型が外部で定義されているかどうかを示します。

Fields

構造体内の各フィールドの coder.Type を指定する構造体。

HeaderFile

構造体の型が外部で定義されている場合、その構造体の外部定義を含むヘッダー ファイルの名前。たとえば、"mystruct.h" などです。codegen -I オプションまたは MATLAB® Coder™ の [プロジェクトの設定] ダイアログ ボックスの [カスタム コード] タブにある [追加インクルード ディレクトリ] パラメーターを使用して、ファイルへのパスを指定します。

既定では、生成されたコードには、標準ヘッダー ファイルの後にカスタム ヘッダー ファイル用の #include ステートメントが含まれます。標準ヘッダー ファイルがカスタムの構造体型を参照している場合は、コンパイルが失敗します。HeaderFile オプションを指定すると、MATLAB Coder によって、ヘッダー ファイルが必要とされる正確な場所にインクルードされます。

空でない文字ベクトルまたは string スカラーでなければなりません。

SizeVector

このセットの配列のサイズの上限。

VariableDims

配列の各次元のサイズが固定か可変かを指定するのに使用するベクトル。ベクトルの要素が true の場合、対応する次元のサイズは可変です。

コピーのセマンティクス

値。値クラスがコピー操作に与える影響については、オブジェクトのコピー (MATLAB)を参照してください。

可変サイズ フィールドをもつ構造体の型を作成します。

x.a = coder.typeof(0,[3 5],1);
x.b = magic(3);
coder.typeof(x)
% Returns 
% coder.StructType
%    1x1 struct
%      a:  :3x:5 double
%      b:  3x3  double
% ':' indicates variable-size dimensions

coder.StructType オブジェクトを作成し、次に codegen 呼び出して、この型の入力パラメーターを 1 つもつ関数 fcn.m のための C ライブラリを生成します。

  1. 新しい構造体型を作成します。

    ta = coder.newtype('int8',[1 1]);
    tb = coder.newtype('double',[1 2],[1 1]);
    z = coder.newtype('struct',struct('a',ta,'b',tb))
    % Returns
    % coder.StructType
    %   1x1 struct
    %      a: 1x1 int8 
    %      b: :1x:2 double  
  2. codegen を呼び出して、この型の入力パラメーターを 1 つもつ MATLAB 関数 fcn.m のための C ライブラリを生成します。

    % Use the -config:lib option to generate a C library
    codegen -config:lib fcn -args {z}

外部で定義された構造体型を使用する coder.StructType オブジェクトを作成します。

  1. 外部で定義された構造体型を使用する型を作成します。

    S.a = coder.typeof(double(0));
    S.b = coder.typeof(single(0));
    T = coder.typeof(S);
    T = coder.cstructname(T,'mytype','extern','HeaderFile','myheader.h');
    
    T = 
    
    coder.StructType
       1x1 extern mytype (myheader.h) struct
          a: 1x1 double 
          b: 1x1 single
  2. 構造体フィールドの型を表示します。

    T.Fields
    ans = 
    
        a: [1x1 coder.PrimitiveType]
        b: [1x1 coder.PrimitiveType]

R2011a で導入