Main Content

coder.approximation

関数置換構成オブジェクトの作成

説明

q = coder.approximation(function_name) はコード生成または固定小数点変換の最中に使用する関数置換構成オブジェクトを作成します。この構成オブジェクトは、function_name で指定された MATLAB® 関数に対してルックアップ テーブルの近似を作成する方法を指定します。関数 codegen で使用するためにこの近似を coder.FixptConfig オブジェクトに関連付けるには、coder.FixptConfig 構成オブジェクトの addApproximation メソッドを使用します。

この構文は coder.approximation が自動的に置換可能な関数に対してのみ使用します。これらの関数は、引数 function_name にリストされます。

q = coder.approximation('Function',function_name,Name,Value) は、1 つ以上の名前と値の引数ペアで指定された追加オプションを使用して、関数置換構成オブジェクトを作成します。

すべて折りたたむ

既定の設定を使用して関数置換の構成オブジェクトを作成します。生成されたコード内のルックアップ テーブルでは 1000 個の点が使用されます。

logAppx = coder.approximation('log');	

関数置換の構成オブジェクトを作成します。入力範囲と置換関数の名前に追加する接頭辞を指定します。生成されたコード内のルックアップ テーブルでは 1000 個の点が使用されます。

logAppx = coder.approximation('Function','log','InputRange',[0.1,1000],...
'FunctionNamePrefix','log_replace_');	

関数置換の構成オブジェクトを作成します。'OptimizeLUTSize' オプションを使用して、最適化されたルックアップ テーブルによる関数 log の置換を指定します。生成されたコード内のルックアップ テーブルでは、既定の数よりも少ない点が使用されます。

	logAppx = coder.approximation('Function','log','OptimizeLUTSize', true,...
'InputRange',[0.1,1000],'InterpolationDegree',1,'ErrorThreshold',1e-3,...
'FunctionNamePrefix','log_optim_','OptimizeIterations',25);	 

カスタム関数 saturateExp を最適化されたルックアップ テーブルで置換するように指定した関数置換の構成オブジェクトを作成します。

カスタム関数 saturateExp を作成します。

saturateExp = @(x) 1/(1+exp(-x));	 

関数 saturateExp を最適化されたルックアップ テーブルで置換するように指定した関数置換の構成オブジェクトを作成します。関数 saturateExp は、coder.approximation によって自動的に近似を生成可能な関数としてリストされていないため、CandidateFunction プロパティを指定しなければなりません。

saturateExp = @(x) 1/(1+exp(-x));	 
custAppx = coder.approximation('Function','saturateExp',...
'CandidateFunction', saturateExp,...
'NumberOfPoints',50,'InputRange',[0,10]); 

入力引数

すべて折りたたむ

置換する関数名。文字列で指定します。関数はリストした関数のいずれかでなければなりません。

例: 'sqrt'

データ型: char

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'Function', 'log'

ルックアップ テーブルの近似のアーキテクチャ。'Architecture' と文字列で構成されるコンマ区切りのペアとして指定します。ルックアップ テーブルのアーキテクチャを指定する場合は、この引数を使用します。Flat アーキテクチャは内挿を使用しません。

データ型: char

置換関数の関数ハンドル。'CandidateFunction' と関数ハンドルまたは関数ハンドルを参照する文字列で構成されるコンマ区切りのペアとして指定します。置換する関数が function_name の一覧にない場合にこの引数を使用します。置換する関数の関数ハンドルまたは関数ハンドルを参照する文字列を指定します。関数は、ファイルで定義するか、無名関数として定義できます。

候補関数を指定しない場合は、Function プロパティを使用して置換することを選択した関数が CandidateFunction として設定されます。

例: 'CandidateFunction', @(x) (1./(1+x))

データ型: function_handle | char

最適なルックアップ テーブルのサイズを計算するために使用される誤差のしきい値。'ErrorThreshold' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。'OptimizeLUTSize'true の場合、この引数は必須です。

ルックアップ テーブルの近似に置き換える関数の名前。'Function' と文字列で構成されるコンマ区切りのペアとして指定します。連続で状態をもたない関数でなければなりません。function_name にリストされているいずれかの関数を指定した場合、変換プロセスでは自動的に置換関数が生成されます。それ以外の場合は、引数 'CandidateFunction' に置換する関数も指定しなければなりません。

例: 'Function','log'

例: 'Function', 'my_log','CandidateFunction',@my_log

データ型: char

生成される固定小数点の関数名の接頭辞。'FunctionNamePrefix' と文字列で構成されるコンマ区切りのペアとして指定します。生成される関数の名前は、接頭辞とそれに続く元の MATLAB 関数の名前で構成されます。

例: ‘log_replace_’

関数を置換する範囲。'InputRange' と 2 行 1 列の行ベクトルまたは 2 行 N 列の行列で構成されるコンマ区切りのペアとして指定します。

例: [-1 1]

内挿の次元。'InterpolationDegree'1 (線形)、0 (なし)、2 (2 次) または 3 (3 次) で構成されるコンマ区切りのペアとして指定します。

ルックアップ テーブルの点の数。'NumberOfPoints' と正の整数値で構成されるコンマ区切りのペアとして指定します。

ルックアップ テーブルのサイズを最適化する際に実行する反復回数。'OptimizeIterations' と正の整数で構成されるコンマ区切りのペアとして指定します。

ルックアップ テーブルのサイズの最適化。'OptimizeLUTSize' と logical 値で構成されるコンマ区切りのペアとして指定します。このプロパティを true に設定すると、領域で最適化されたルックアップ テーブルが生成されます。このルックアップ テーブルには可能な限り少ない数の点が含まれます。このルックアップ テーブルはサイズについては最適化されていますが、速度については効果的でない場合があります。

パイプライン有効化オプション。'PipelinedArchitecture' と logical 値で構成されるコンマ区切りのペアとして指定します。

出力引数

すべて折りたたむ

関数の置き換えの構成オブジェクト。coder.FixptConfig 構成オブジェクトの addApproximation メソッドを使用して、この構成オブジェクトを coder.FixptConfig オブジェクトに関連付けます。そして関数 codegen-float2fixed オプションを coder.FixptConfig と共に使用して、浮動小数点の MATLAB コードを固定小数点のコードに変換します。

プロパティ既定値

Auto-replace function

''

InputRange

[]

FunctionNamePrefix

'replacement_'

Architecture

LookupTable (読み取り専用)

NumberOfPoints

1000

InterpolationDegree

1

ErrorThreshold

0.001

OptimizeLUTSize

false

OptimizeIterations

25

バージョン履歴

R2014b で導入