データ型最適化が成功しない
問題
固定小数点ツールで関数 fxpopt
または [固定小数点の最適化された変換]
ワークフローを使用して、モデルまたはサブシステムのデータ型を最適化できます。最適化が成功しない場合があります。以下の節では、そのような場合にトラブルシューティングする方法について説明します。
考えられる解決策
問題をモデル化できない — 制約が指定されていない
新しい固定小数点実装の動作が許容可能かどうかを判定するために、最適化には正しく定義された動作の制約が必要です。fxpOptimizationOptions
クラスの addTolerance
メソッドを使用して、最適化設定の数値の制約を指定します。あるいは、Model Verification ライブラリのブロックを使用します。詳細については、動作の制約の指定を参照してください。
問題をモデル化できない — モデルがサポートされていない
最適化するシステムを含むモデルには、次の特性が必要です。
モデル内のすべてのブロックで固定小数点データ型がサポートされていなければなりません。
モデル内のブロックに指定されている設計範囲は、シミュレーション範囲と一致していなければなりません。
モデルに MATLAB Function ブロックが含まれる場合、固定小数点変換でサポートされている MATLAB® 言語機能を使用しなければなりません。詳細については、固定小数点の自動変換でサポートされる MATLAB 言語機能を参照してください。
モデルのデータ ログ形式は、
[データセット]
に設定しなければなりません。この設定を行うには、[コンフィギュレーション パラメーター] の [データのインポート/エクスポート] ペインで、[形式] を
[データセット]
に設定します。モデルには有限のシミュレーションの停止時間が設定されていなければなりません。
Data Type Conversion ブロックが最適化で無視された
Data Type Conversion ブロックの [等価な値をもつ入力と出力] パラメーターが [整数格納 (SI)]
に設定されている場合、Data Type Conversion ブロックは最適化で無視されます。
許容誤差を満たす固定小数点実装が見つからない
最適化で実行可能解が見つからない場合は、次の解決法を試してください。
信号許容誤差を緩和する。
より長い語長を許可して探索空間を拡張する。
信号許容誤差の指定時に時間枠を使用することを検討する。詳細については、許容誤差の計算を参照してください。
個々の信号に対して下位レベルの許容誤差を指定する代わりに、Model Verificationライブラリのブロックを使用して上位レベルの動作の制約を指定することを検討する。詳細については、動作の制約の指定を参照してください。
結果を探索できない
最適化によって新しい有効な結果が見つからない場合、関数 fxpopt
は OptimizationResult
出力を生成しません。無効な結果の多くは、最適化でサポートされていないモデルを使用した結果です。詳細については、問題をモデル化できない — モデルがサポートされていないを参照してください。
最適化が正常に完了した場合、最適化プロセス中に見つかった設計の異なる実装を複数探索できます。新しい設計で満足な結果が得られるまで、モデルを保存しないでください。モデルを保存すると、他の実装の探索を続行できなくなります。
エラーの解決: RowNames
プロパティは、string 配列または cell 配列でなければなりません。また、それぞれの名前に 1 つ以上の文字が含まれていなければなりません。
このエラーは、固定小数点ツールで固定小数点の変換ワークフロー中に clear all
が使用された場合に発生する可能性があります。現在、clear all
は固定小数点の変換ワークフローでサポートされていません。初期化関数 (InitFcn
) や MATLAB コマンド ウィンドウ (固定小数点ツールの使用時) で clear all
は使用しないでください。
派生範囲の解析がアキュムレータのデータ型に対して機能しない
派生範囲の解析に関与するのはブロックの出力信号のみです。アキュムレータや中間結果などに対する追加のデータ型の制御がブロックに含まれている場合、それらの要素についての範囲の派生は行われません。その結果、最適化でシミュレーション範囲と派生範囲の両方が考慮された場合、シミュレーション範囲情報のみがアキュムレータ データ型の最適化に使用されます。そのため、特定のブロックの最適化されたアキュムレータ データ型と出力データ型は異なる可能性があります。詳細については、範囲解析の機能についてを参照してください。