生成されたコードのデータ型の問題
固定小数点への変換のレポート内で、double、single、あるいは計算量の多い固定小数点演算を行う MATLAB® コードを強調表示するオプションがあります。厳密な single または固定小数点の設計を行うときは、このオプションを有効にすることを検討してください。
これらのチェック機能は、既定で無効になっています。
MATLAB Coder アプリの強調表示オプションの有効化
[固定小数点に変換] ページで [設定] ダイアログ ボックスを開くために [設定] 矢印
をクリックします。
[プロットとレポート] の下の [潜在的なデータ型の問題を強調表示] を
[はい]
に設定します。
変換の完了後、固定小数点への変換のレポートを開き、強調表示されている部分を確認します。[型の検証の出力] タブの [レポートの表示] をクリックします。
コマンド ラインでの強調表示オプションの有効化
固定小数点コードの構成オブジェクトを作成します。
cfg = coder.config('fixpt');
構成オブジェクトの
HighlightPotentialDataTypeIssues
プロパティをtrue
に設定します。cfg.HighlightPotentialDataTypeIssues = true;
潜在的な double の検出
厳密な single または固定小数点の設計を行うときに、コードを手動で検査するのは時間がかかる上、間違いも起こりがちです。このチェックでは、double の演算になる式をすべて強調表示します。
厳密な単精度の設計では、単精度の実装をサポートする言語標準を指定します。プロジェクトのライブラリを変更するには、コード生成ステップ中に [プロジェクト設定] ダイアログ ボックスの [カスタム コード] タブで、[言語標準] を [C99 (ISO)]
に設定します。
潜在的な single の検出
このチェックでは、single の演算になる式をすべて強調表示します。
計算量の多い固定小数点演算
計算量の多い固定小数点演算のチェックでは、固定小数点コードの最適化の機会が特定されます。煩雑な乗除算、計算量の多い丸め、計算量の多い比較またはマルチワード処理を必要とする MATLAB コード内の式が強調表示されます。生成される固定小数点コードの最適化の詳細は、生成コードをより効率的にするためのヒント (Fixed-Point Designer)を参照してください。
煩雑な演算
煩雑な演算が発生する原因の多くは、出力範囲が不足していることです。乗算や除算の入力に、プロセッサの基本整数型より長い語長を使用しないでください。長い語長のデータ演算はソフトウェアで扱うことができますが、大量のコードを必要とし、演算に要する時間が長くなります。
計算量の多い丸め
従来の手書きコード、特に制御アプリケーション用コードでは、ほとんどの場合に "簡単" な丸めが使用されています。たとえば、符号なしの整数と 2 の補数の符号付き整数の場合、右にシフトしてビットを切り捨てることは、負方向の丸めと等価です。従来の手書きコードと同等以上の結果を得るには、floor
の丸め方法を使用してください。このチェック機能は、乗算と除算に含まれる計算量の多い丸め演算を特定します。
計算量の多い比較演算
比較を実行するために型変換が必要な場合、比較演算時に追加のコードが生成されます。たとえば、符号なし整数と符号付き整数を比較するときには、あらかじめ一方の入力が他方の符号属性にキャストされる必要があります。生成されたコードで型変換が不要になるように、入力引数のデータ型を最適化することを検討してください。
マルチワード処理
ハードウェアのマルチワード処理は、非効率になる可能性もあります。プロセッサの最大ワード サイズより大きい入力または出力データ型がある処理の場合、生成されたコードにはマルチワード処理が含まれます。変数のローカル fimath
プロパティを指定することで、生成されたコード内のマルチワード処理を回避できます。また、マルチワード コードを生成する処理の入力と出力の語長を手動で指定することもできます。