Main Content

coder.Constant クラス

名前空間: coder
スーパークラス: coder.Type

コード生成用の定数値の指定

説明

coder.Constant オブジェクトを使用して、コードの生成中に定数となる入力値を定義します。このオブジェクトを codegen -args および -globals オプションと共に使用して、それぞれ入力引数とグローバル変数のプロパティを指定します。これを生成された MEX 関数に入力として渡さないでください。

coder.Constant オブジェクトを coder.Type オブジェクトの代わりに使用して、エントリポイント入力またはグローバル変数の特定の定数値を指定できます。

作成

const_type = coder.Constant(v) では、値 v から coder.Constant 型が作成されます。

const_type = coder.newtype('constant', v) では、値 v から coder.Constant 型が作成されます。

メモ

coder.Constant オブジェクトの作成後に、codegen コマンド codegen -globals {'g', coder.Constant(v)} を使用して、値 v をもつ定数のグローバル変数 g を作成できます。

プロパティ

すべて展開する

定数の実際の値また、入力引数の型の構築に使用される入力引数値 v も示します。

ここで、最初の例では、値 v42 として kcodegen に渡されると、対応する入力の型は double と推測されます。同様に、2 番目の例では、値 v42 として kcodegen に渡されると、対応する入力の型は uint8 と推測されます。

例: k = coder.Constant(42);

例: k = coder.Constant(uint8(42));

すべて折りたたむ

2 つの値の合計を返す MATLAB® 関数 myAdd を記述します。

function c = myAdd(a,b) %#codegen
c = a + b;
end

MEX 関数 myAdd_mex を生成します。入力引数を値 1 および 3 の定数として指定します。

codegen myAdd -args {1,3} -report

13 以外の定数入力値 (たとえば 25) で myAdd_mex を呼び出します。

myAdd_mex(2,5)
ans =

     7

生成された MEX 関数は、codegen コマンド内の入力引数で指定した型の任意の定数値を受け入れます。

coder.Constant オブジェクトを入力引数の 1 つとして指定して MEX 関数 myAdd_mex を生成します。最初の入力引数を double 型のスカラー、2 番目の入力引数を値 1 の定数として指定します。

codegen myAdd -args {1, coder.Constant(3)} -report

定数入力値 25myAdd_mex を呼び出します。

myAdd_mex(2,5)
Constant function parameter 'b' has a different run-time value than the compile-time value.

Error in myAdd_mex

MEX 関数は入力値 5 についてエラーを表示します。エラーを修正するには、コンパイル時に渡した値である定数値 3 を割り当てます。

定数入力をもつ MATLAB 関数の MEX コードを生成します。ConstantInputs 構成パラメーターを使用して MEX 関数のシグネチャに定数入力を含めるかどうか、また定数入力の値がコンパイル時の値と一致しなければならないかどうかを制御します。

2 つの値の合計を返す MATLAB 関数 myAdd を記述します。

function c = myAdd(a,b) %#codegen
c = a + b;
end

MEX コード生成用の構成オブジェクトを作成します。

mexcfg = coder.config('mex');

定数入力チェックの構成パラメーターの値を確認します。

mexcfg.ConstantInputs
ans =

    'CheckValues'

既定値が設定されています。

MEX 関数 myAdd_mex を生成します。最初の引数が double 型のスカラーで、2 番目の引数が値 3 の定数であることを指定します。

codegen myAdd -config mexcfg -args {1, coder.Constant(3)}

myAdd_mex を呼び出します。2 番目の引数に入力 3 を指定します。

myadd_mex(1,3)
ans =

    4

MEX 関数が入力値とコード生成時に指定された値が一致していることをチェックしないように、ConstantInputs を変更します。

mexcfg.ConstantInputs = 'IgnoreValues';

myAdd_mex を生成します。

codegen myAdd -config mexcfg -args {1, coder.Constant(3)}

3 以外の定数入力値 (たとえば 5) で myAdd_mex を呼び出します。

myadd_mex(1,5)
ans =

    4

MEX 関数は入力値 5 を無視します。myAdd_mex の生成時に定数引数 b に対して指定した値である 3 が使用されます。

MEX 関数のシグネチャに定数入力の引数が含まれないように ConstantInputs を変更します。

mexcfg.ConstantInputs = 'Remove';

myAdd_mex を生成します。

codegen myAdd -config mexcfg -args {1, coder.Constant(3)}

myAdd_mex を呼び出します。a に対して値 1 を指定します。定数引数 b に対しては値を指定しないでください。

myAdd_mex(1)
ans =

    4

入力が定数値をもつ場合に特化した関数の C コードを生成します。

入力を出力にコピーする MATLAB 関数 identity を記述します。

function y = identity(u) %#codegen
y = u;

C コード生成のコード構成オブジェクトを作成します。

cfg = coder.config('lib');

定数入力 42 をもつ identity の C コードを生成し、レポートを生成します。

codegen identity -config cfg -args {coder.Constant(42)} -report

レポートで、[C コード] タブの identity.c をクリックします。

identity の関数シグネチャは次のようになります。

double identity(void)

コンパイル時にグローバル変数の定数値を指定します。

グローバル定数 g の値を返す MATLAB 関数 myFunction を記述します。

function  y = myFunction() %#codegen
global g;

y = g;

end

MEX コード生成用の構成オブジェクトを作成します。

cfg = coder.config('mex');

g が値 5 をもつ定数のグローバル変数であることを宣言する cell 配列 globals を定義します。

globals = {'g', coder.Constant(5)};

-globals オプションを使用してグローバル データを指定し、myFunction の MEX 関数を生成します。

codegen -config cfg -globals globals myFunction

生成された MEX 関数を実行します。

myFunction_mex
ans =

     5

制限

  • スパース行列またはスパース行列を含む構造体、cell 配列、クラスで coder.Constant を使用することはできません。

バージョン履歴

R2011a で導入