浮動小数点と固定小数点の結果の差の可視化
この例では、生成された固定小数点コードと元の浮動小数点の MATLAB® コードの動作を比較するために、カスタムのプロット関数を使用するように固定小数点コンバーター アプリを構成する方法を説明します。
既定では、[比較プロット用の入力と出力を記録] オプションを有効にすると、時系列ベースのプロット関数を使用して、浮動小数点と固定小数点の結果とそれらの差が示されます。しかし、固定小数点に変換するときに、適用分野に合った表示方法で数値の差を可視化することが望ましい場合があります。次の例では、固定小数点への変換プロセスの数値のテスト ステップで散布図が作成されるように、プロット関数をカスタマイズする方法を説明します。
関連ファイルのコピー
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 | フィルター処理するデータ |
固定小数点コンバーター アプリを開く
この例で使用するファイルを含むフォルダーに移動します。
MATLAB ツールストリップの [アプリ] タブの [コード生成] の下で、アプリ アイコンをクリックします。
ソース ファイルの選択
プロジェクトにエントリポイント関数
myFilter
を追加するために、ファイルmyFilter.m
を探して [開く] をクリックします。既定では、アプリはこのプロジェクトの情報および設定を現在のフォルダーの
myFilter.prj
というファイルに保存します。[次へ] をクリックして [入力の型を定義] ステップに進みます。
myFilter.m
のコード違反および固定小数点変換の準備状態の問題が検査されます。myFilter.m
には問題は検出されません。
入力の型の定義
[入力の型を定義] ページで、
myFilterTest
をテスト ファイルとして追加するためにmyFilterTest.m
を参照して [開く] をクリックします。[入力の型の自動定義] をクリックします。
アプリはテスト ファイルから、
in
の入力型をcomplex(double(1x1))
とすることを決定します。[次へ] をクリックして [固定小数点に変換] ステップに進みます。
固定小数点への変換
エントリポイント MATLAB 関数用にインストルメント化された MEX 関数がアプリによって生成されます。コードに含まれる変数についてコンパイルされた情報が表示されます。詳細は、変数情報の表示と変更を参照してください。
[設定] ダイアログ ボックスを開くために、[設定] 矢印
をクリックします。
[既定の語長] が
16
に設定されていることを確認します。[詳細設定] で、[符号属性] を
Signed
に設定します。[プロットとレポート] の下で [カスタムのプロット関数] を
plotDiff
に設定します。
[解析] 矢印
をクリックします。テスト ファイルが
myFilterTest
であることを確認します。[解析] をクリックします。
テスト ファイル
myFilterTest
が実行され、[変数] タブにシミュレーションの最小および最大範囲がアプリによって表示されます。ソフトウェアは、シミュレーション範囲のデータを使用し、既定の型推奨の設定に基づき固定小数点の型を変数ごとに推奨し、[推奨された型] 列に表示します。浮動小数点アルゴリズムを固定小数点に変換するには、[変換] をクリックします。
推奨された型がソフトウェアによって検証され、エントリポイント関数の固定小数点バージョンが生成されます。
数値のテストと比較プロットの表示
[テスト] 矢印
をクリックして [比較プロット用の入力と出力を記録] を選択し、[テスト] をクリックします。
入力型を定義するために使用したテスト ファイルが実行され、固定小数点 MATLAB コードがテストされます。比較プロット用の入力と出力を記録し、カスタムのプロット関数
plotDiff.m
を使用するように指定したので、アプリではこの関数を使用して比較プロットが生成されます。プロットは、固定小数点の結果と浮動小数点の結果があまり一致していないことを示しています。[設定] で、[DefaultWordLength] を
24
に増やして再度固定小数点に変換します。アプリは
myFilter.m
を固定小数点に変換し、新しい既定の語長を使用して固定小数点データ型を推奨します。数値のテストのステップを再度実行します。
語長を増やしたことにより結果が改善されました。今回は、固定小数点の結果と浮動小数点の結果が一致しています。