このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
浮動小数点と固定小数点の結果の差の可視化
次の例では、生成された固定小数点コードと元の浮動小数点の MATLAB® コードの動作を比較するために、カスタムのプロット関数を使用するように関数 codegen
を構成する方法を説明します。
既定では、LogIOForComparisonPlotting
オプションを有効にすると、時系列ベースのプロット関数を使用して、浮動小数点と固定小数点の結果とそれらの差が示されます。また、固定小数点に変換するときに、アプリケーションの分野に適する表示を使用して数値的な差を可視化することができます。次の例では、固定小数点への変換プロセスの数値のテスト ステップで散布図が作成されるように、プロット関数をカスタマイズする方法を説明します。
必要条件
この例を実行するには、次の製品をインストールしなければなりません。
MATLAB
MATLAB Coder™
Fixed-Point Designer™
C コンパイラ
サポートされるコンパイラ を参照してください。
mex -setup
を使用して既定のコンパイラを変更できます。既定のコンパイラの変更を参照してください。
新規フォルダーの作成と関連ファイルのコピー
ローカルの作業フォルダー (例:
c:\custom_plot
) を作成します。docroot\toolbox\fixpoint\examples
フォルダーに移動します。MATLAB コマンド ラインで以下のように入力します。cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
myFilter.m
、myFilterTest.m
、plotDiff.m
およびfilterData.mat
の各ファイルを、ローカルの作業フォルダーにコピーします。型 名前 説明 関数のコード 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 コードに変換します。codegen
コマンドの入力の型はテスト ファイルの型から推定されるので、指定する必要はありません。
codegen -args {complex(0, 0)} -float2fixed fxptcfg myFilter
既定の語長 16
を使用して固定小数点コードが生成されます。次に、関数 myFilterTest.m
を実行して固定小数点バージョンの myFilter.m
を呼び出すことにより、固定小数点のシミュレーションが実行されます。
比較プロット用の入力と出力を記録し、カスタムのプロット関数 plotDiff.m
を使用するように指定したので、変換プロセスではこの関数を使用して比較プロットが生成されます。
プロットは、固定小数点の結果と浮動小数点の結果がかなり異なることを示します。
語長を 24
に増加してから、再び固定小数点に変換します。
fxptcfg.DefaultWordLength = 24; codegen -args {complex(0, 0)} -float2fixed fxptcfg myFilter
語長を増加したことにより結果が改善されました。今回は、固定小数点の結果と浮動小数点の結果が一致しています。