Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

fiaccel

固定小数点コードの高速化と浮動小数点 MATLAB コードの固定小数点 MATLAB コードへの変換

説明

fiaccel -options fcn では、MATLAB® ファイル fcn.m が、固定小数点コードを高速化する MEX 関数に変換されます。fiaccel を使用するには、コードが次の要件のいずれかを満たしていなければなりません。

  • 最上位の関数が入力や出力をもたず、コードで fi が使用されている。

  • 最上位の関数が出力または非定数の入力をもち、少なくとも 1 つの出力または入力が fi である。

  • 最上位の関数が組み込み整数クラス (int8uint8int16uint16int32uint32int64 または uint64) を含む入力または出力を少なくとも 1 つもち、コードで fi が使用されている。

fiaccel -float2fixed fcn は、浮動小数点 MATLAB 関数 fcn を固定小数点 MATLAB コードに変換します。

すべて折りたたむ

この例では、関数 fiaccel を使用して固定小数点 MATLAB コードを高速化する方法を示します。

移動平均を計算する関数を定義します。

type("moving_average.m")
function [avg,z] = moving_average(x,z)
%#codegen

if nargin < 2
    z = fi(zeros(10,1),1,16,15);
end


z(2:end) = z(1:end-1);  % Update buffer
z(1) = x;               % Add new value
avg = mean(z);          % Compute moving average
end

テスト ファイルを作成します。

type("test_moving_average.m")
function avg = test_moving_average(x)
%#codegen

if nargin < 1
    x = fi(rand(100,1),1,16,15);
end

z = fi(zeros(10,1),1,16,15);
avg = x;
for k = 1:length(x)
    [avg(k),z] = moving_average(x(k),z);
end
end

関数 fiaccel を使用し、MEX 関数を作成して MATLAB コードを高速化します。

x = fi(rand(100,1),1,16,15);
fiaccel test_moving_average -args {x} -report

高速化されていないコードと高速化されたコードを比較します。

tic avg = test_moving_average(x); toc       % Non-compiled version
tic avg = test_moving_average_mex(x); toc   % Compiled version

coder.FixptConfig オブジェクト fixptcfg を既定の設定で作成します。

fixptcfg = coder.config('fixpt');

テスト ベンチの名前を設定します。この例では、テスト ベンチ関数名は dti_test です。

fixptcfg.TestBenchName = 'dti_test';

浮動小数点の MATLAB 関数を固定小数点の MATLAB コードに変換します。この例では、MATLAB 関数名は dti です。

fiaccel -float2fixed fixptcfg dti

入力引数

すべて折りたたむ

MEX を生成する MATLAB 関数。現在の作業フォルダーまたはパス上に存在する関数として指定します。

メモ

最上位レベル ファイルが Unicode 文字を含むパス上にある場合、コード生成はそのファイルを検出できない場合があります。

コンパイラ オプション。スペースで区切られたオプション値のリストとして指定します。fiaccel では、構成オブジェクトを使用して指定されたオプションよりも、個々のコマンド ライン オプションが優先されます。コマンド ライン オプションが競合する場合は、最も右にあるオプションが優先されます。

以下の 1 つ以上の値として指定します。

-args example_inputs

サンプル入力値の cell 配列を指定して、MATLAB 関数入力のサイズ、クラスおよび実数/複素数を定義します。cell 配列におけるサンプル入力の位置は、MATLAB 関数定義における入力引数の位置に対応していなければなりません。関数定義よりも入力引数が少ない関数を生成するには、適用しない引数に対するサンプル値を省略します。

サンプル入力は、そのサンプル入力を適用する関数の直後に指定します。

サンプル値の代わりに、coder.Type オブジェクトを指定できます。coder.Type オブジェクトの作成には関数 coder.typeof を使用します。

-config config_object

config_object に基づき、coder.mexconfig を使用して MATLAB 変数として定義される、MEX 生成パラメーターを指定します。

以下に例を示します。

cfg = coder.mexconfig;

-d out_folder

生成されたファイルを out_folder で指定された絶対パスまたは相対パスに保存します。out_folder で指定されたフォルダーが存在しない場合、関数 fiaccel はフォルダーを作成します。

フォルダーの場所を指定しない場合、fiaccel は既定のフォルダー fiaccel/mex/fcn 内にファイルを生成します。ここで、fcn はコマンド ラインで指定された MATLAB 関数の名前です。

フォルダー名にはアスタリスク (*)、疑問符 (?)、ドル記号 ($)、およびシャープ記号 (#) は使用できません。

-float2fixed float2fixed_cfg_name

float2fixed_cfg_name という名前の、浮動小数点から固定小数点に変換する構成オブジェクトで指定された設定を使用して、固定小数点 MATLAB コードを生成します。

このオプションでは、fiaccel はファイルを codegen/fcn_name/fixpt フォルダーに生成します。

float2fixed_cfg_nameTestBenchName プロパティを設定しなければなりません。

たとえば、次のようにします。

fixptcfg.TestBenchName = 'myadd_test';
これは、myadd_test が浮動小数点から固定小数点への構成オブジェクト fixptcfg のテスト ファイルであることを指定します。

このオプションは、-global オプションと一緒に使用できません。

-g

最適化を無効にして、デバッグ モードで MEX 関数をコンパイルします。指定しない場合、fiaccel は最適なモードで MEX 関数を生成します。

-global global_values

MATLAB ファイルのグローバル変数の初期値を指定します。コンパイルする関数でグローバル変数を初期化するために cell 配列 global_values 内の値を使用します。cell 配列には各グローバル変数の名前と初期値を指定しなければなりません。関数 fiaccel を使用してコンパイルする前にグローバル変数を初期化しなければなりません。-global オプションを使用してグローバル変数に初期値を提供しない場合、fiaccel は MATLAB グローバル ワークスペース内の変数をチェックします。初期値を指定しないと fiaccel はエラーを生成します。

生成された MEX コードと MATLAB は、それぞれ独自のグローバル データのコピーをもっています。一貫性を維持するために、これらの 2 つが情報をやり取りするときには必ずそれらのグローバル データを同期しなければなりません。データを同期しないと、グローバル変数は異なるものになる可能性があります。

このオプションは、-float2fixed オプションと一緒に使用できません。

-I include_path

include_path をコード生成パスの先頭に追加します。

MATLAB コードを MEX コードに変換する際には、fiaccel は "最初に" コード生成パスを検索します。

-launchreport

コード生成レポートを生成して開きます。このオプションを指定しないと、fiaccel ではエラー メッセージまたは警告メッセージが発生した場合、あるいは -report オプションを指定した場合にのみレポートが生成されます。

-nargout

生成されたエントリポイント関数で出力引数の数を指定します。コード ジェネレーターは指定した数の出力引数を MATLAB 関数定義での発生順に生成します。

-o output_file_name

output_file_name を基本名とし、プラットフォーム固有の拡張子を付けて、MEX 関数を生成します。

output_file_name にはファイル名を指定するかまたは既存のパスを含めることができます。

出力ファイル名を指定しないと、基本名は fcn_mex になります。これによって、元の MATLAB 関数と MEX 関数を実行して、結果を比較できます。

-O optimization_option

optimization_option の値に基づいて、生成される MEX コードを最適化します。

  • enable:inline — 関数インライン化を有効にします。

  • disable:inline — 関数インライン化を無効にします。

指定しない場合、fiaccel ではインライン化を使用して最適化が行われます。

-report

コード生成レポートを生成します。このオプションを指定しないと、fiaccel ではエラー メッセージまたは警告メッセージが発生した場合、あるいは -launchreport オプションを指定した場合にのみレポートが生成されます。

-?

fiaccel コマンドのヘルプを表示します。

バージョン履歴

R2011a で導入

すべて展開する