浮動小数点と固定小数点の結果の差の可視化
次の例では、生成された固定小数点コードと元の浮動小数点の MATLAB® コードの動作を比較するために、カスタムのプロット関数を使用するように関数 fiaccel を構成する方法を説明します。
既定では、LogIOForComparisonPlotting オプションを有効にすると、時系列ベースのプロット関数を使用して、浮動小数点と固定小数点の結果とそれらの差が示されます。しかし、固定小数点に変換するときに、適用分野に合った表示方法で数値の差を可視化することが望ましい場合があります。次の例では、固定小数点への変換プロセスの数値のテスト ステップで散布図が作成されるように、プロット関数をカスタマイズする方法を説明します。
関連ファイルのコピー
myFilter.m、myFilterTest.m、plotDiff.m、および filterData.mat の各ファイルをローカルの作業フォルダーにコピーします。
前提条件
この例を実行するには、次の製品をインストールしなければなりません。
MATLAB
Fixed-Point Designer™
C コンパイラ
サポートされるコンパイラ を参照してください。
mex -setupを使用して既定のコンパイラを変更できます。既定のコンパイラの変更を参照してください。
例のファイルの検査
入力の読み込みや、入力値の設定、テストする関数の呼び出し、テスト結果の出力など、すべての前処理と後処理を実行するための独立したテスト スクリプトを作成することをお勧めします。
| タイプ | 名前 | 説明 |
|---|---|---|
| 関数のコード | myFilter.m | エントリポイントの MATLAB 関数 |
| テスト ファイル | myFilterTest.m | myFilter.m をテストする MATLAB スクリプト |
| プロット関数 | plotDiff.m | カスタムのプロット関数 |
| MAT ファイル | filterData.mat | フィルター処理するデータ |
構成オブジェクトの設定
coder.FixptConfigオブジェクトを作成します。fxptcfg = coder.config('fixpt');テスト ファイル名とカスタムのプロット関数名を指定します。ログの記録と数値テストを有効にします。
fxptcfg.TestBenchName = 'myFilterTest'; fxptcfg.PlotFunction = 'plotDiff'; fxptcfg.TestNumerics = true; fxptcfg.LogIOForComparisonPlotting = true; fxptcfg.DefaultWordLength = 16;
固定小数点への変換
浮動小数点の MATLAB 関数 myFilter を固定小数点の MATLAB コードに変換します。fiaccel コマンドの入力の型はテスト ファイルの型から推定されるので、指定する必要はありません。
fiaccel -args {complex(0, 0)} -float2fixed fxptcfg myFilter
既定の語長 16 を使用して固定小数点コードが生成されます。次に、関数 myFilterTest.m を実行して固定小数点バージョンの myFilter.m を呼び出すことにより、固定小数点のシミュレーションが実行されます。
比較プロット用の入力と出力を記録し、カスタムのプロット関数 plotDiff.m を使用するように指定したので、変換プロセスではこの関数を使用して比較プロットが生成されます。

プロットは、固定小数点の結果と浮動小数点の結果があまり一致していないことを示しています。
語長を 24 に増加してから、再び固定小数点に変換します。
fxptcfg.DefaultWordLength = 24; fiaccel -args {complex(0, 0)} -float2fixed fxptcfg myFilter
語長を増加したことにより結果が改善されました。今回は、固定小数点の結果と浮動小数点の結果が一致しています。

