固定小数点の自動変換
固定小数点への自動変換機能
浮動小数点の MATLAB® コードを固定小数点コードに変換するには、コマンド ラインで fiaccel
関数の -float2fixed
オプションを使用します。シミュレーション範囲データまたは派生 (静的とも呼ばれる) 範囲データのいずれかまたは両方に基づいてデータ型を推奨するよう選択できます。
サポートされている MATLAB の機能と関数のリストは、固定小数点の自動変換でサポートされる MATLAB 言語機能を参照してください。
固定小数点の変換では、以下を実行できます。
既定の語長に基づいた小数部の長さの推奨。
既定の小数部の長さに基づいた語長の推奨。
固定小数点型を適用してテスト ファイルを実行し、数値をテスト。
オーバーフローの検出。
データ型の推奨
入力の型を定義するには、MATLAB 関数を呼び出すテストベンチを指定します。固定小数点コードの生成時に、テスト ファイルを使用してエントリポイントの入力引数の型が推定されます。
固定小数点の自動変換では、計算された範囲と、語長または小数部の長さの設定に基づいて固定小数点データ型が推奨されます。範囲はシミュレーション範囲データと派生範囲データのいずれかまたは両方に基づいて計算されます。シミュレーションを実行して派生範囲を計算した場合、シミュレーション範囲と派生範囲はマージされます。
メモ
MATLAB クラスには、派生範囲に基づいてデータ型を推奨することはできません。
派生範囲の解析は非スカラー変数ではサポートされていません。
固定小数点変換用の構成オブジェクトの作成
coder.FixPtConfig
オブジェクトを使用して、固定小数点変換用のコンフィギュレーション パラメーターを設定します。coder.FixPtConfig
オブジェクトには、固定小数点コードの生成に必要なパラメーターが含まれています。
シミュレーションの実行
生成された固定小数点コードを使用してシミュレーションを手動で実行するには、テスト ファイル (複数可) 内のインストルメント化された MEX 関数を呼び出します。
テスト ファイルによってアルゴリズムが動作範囲全体にわたって実行されます。推奨される固定小数点データ型の性質は、テスト ファイルが適切な精度でアルゴリズムの動作範囲をどの程度カバーしているかによって決まります。シミュレーション中に複数のテスト ファイルを実行して結果を向上できます。テスト ファイルが正常に実行されなかった場合、エラーがコマンド ウィンドウに表示されます。
関数の置換
MATLAB コードで固定小数点に対応していない関数を使用している場合、サポートされていない関数を、カスタム関数とルックアップ テーブルのどちらに置き換えるかを指定できます。
関数に対して関数の置換を入力すると、プロジェクトの作成時に置換関数が使用されます。置換を入力しない場合、関数には元の MATLAB コード内で指定された型が使用されます。
あるいは、coder.float2fixed.skip
を使用して関数を固定小数点変換の対象から除外することもできます。たとえば、既に固定小数点データ型を使用しているカスタム関数を使用している場合や、HDL コード生成用にネイティブ浮動小数点サポートを利用する場合は、関数を固定小数点変換の対象から除外できます。詳細については、coder.float2fixed.skip
を参照してください。
数値のテスト
coder.FixPtConfig
オブジェクトの TestNumerics
プロパティを true
に設定して、固定小数点 MATLAB アルゴリズムの動作を検証します。入力の定義またはシミュレーションの実行に使用されたテスト ファイルを使用して数値がテストされます。
生成された固定小数点 MATLAB コードを元の浮動小数点 MATLAB コードの数値的な動作と比較できます。LogIOForComparisonPlotting
パラメーターを true
に設定すると、比較プロット用に入力と出力のログが作成され、スカラー出力ごとにプロットが 1 つ生成されます。このプロットは浮動小数点と固定小数点の結果およびこれらの差を示します。非スカラー出力についてはエラー情報のみを示します。
固定小数点シミュレーション後に数値的な結果が所要の精度を満たさない場合は、固定小数点データ型の設定を修正し、型の検証と数値的なテストの手順を繰り返します。必要な結果を得るには、これらのステップを複数回繰り返す必要がある場合があります。
オーバーフローの検出
DetectFixPtOverflows
を設定すると、オーバーフロー検出が有効になります。このオプションが選択されている場合、変換プロセスは推奨された固定小数点型のスケーリングされた double バージョンを使用してシミュレーションを実行します。スケーリングされた double は、倍精度浮動小数点のデータを格納するため、演算を全範囲で実行します。また、固定小数点設定も保持するため、計算が固定小数点型の範囲から外れた場合に報告することが可能です。詳細については、スケーリングされた doubleを参照してください。
オーバーフローが検出されると、オーバーフローした変数と式のリストおよび各変数のオーバーフローの量に関する情報がコマンド ウィンドウで報告されます。