最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

浮動小数点と固定小数点の結果の差の可視化

次の例では、生成された固定小数点コードと元の浮動小数点の MATLAB® コードの動作を比較するために、カスタムのプロット関数を使用するように関数 fiaccel を構成する方法を説明します。

既定では、LogIOForComparisonPlotting オプションを有効にすると、時系列ベースのプロット関数を使用して、浮動小数点と固定小数点の結果とそれらの差が示されます。また、固定小数点に変換するときに、アプリケーションの分野に適する表示を使用して数値的な差を可視化することができます。次の例では、固定小数点への変換プロセスの数値のテスト ステップで散布図が作成されるように、プロット関数をカスタマイズする方法を説明します。

必要条件

この例を実行するには、次の製品をインストールしなければなりません。

新規フォルダーの作成と関連ファイルのコピー

  1. ローカルの作業フォルダー (例: c:\custom_plot) を作成します。

  2. docroot\toolbox\fixpoint\examples フォルダーに移動します。MATLAB コマンド ラインで以下のように入力します。

    cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples')) 

  3. myFilter.mmyFilterTest.mplotDiff.m および filterData.mat の各ファイルを、ローカルの作業フォルダーにコピーします。

    入力の読み込みや、入力値の設定、テストする関数の呼び出し、テスト結果の出力など、すべての前処理と後処理を実行するための独立したテスト スクリプトを作成することをお勧めします。

    タイプ名前説明
    関数のコードmyFilter.mエントリ ポイントの MATLAB 関数
    テスト ファイルmyFilterTest.mmyFilter.m をテストする MATLAB スクリプト
    プロット関数plotDiff.mカスタムのプロット関数
    MAT ファイルfilterData.matフィルター処理するデータ

 関数 myFilter

 myFilterTest テスト ファイル

 関数 plotDiff

構成オブジェクトの設定

  1. coder.FixptConfig オブジェクトを作成します。

    fxptcfg = coder.config('fixpt');
  2. テスト ファイル名とカスタムのプロット関数名を指定します。ログの記録と数値テストを有効にします。

    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

語長を増加したことにより結果が改善されました。今回は、固定小数点の結果と浮動小数点の結果が一致しています。

関連するトピック