この例では,固定小数点コンバーターアプリを使用して静的範囲に基づいて固定小数点データ型を推奨する方法を示します。派生範囲に基づいてデータ型を推奨すると,操作範囲全体でアルゴリズムを実行するテストファイルを用意する必要がなくなります。一般に,このようなテストファイルの実行には時間がかかります。代わりに範囲を派生させることで時間を節約できます。
メモ
派生范囲の解析は非スカラー変数ではサポートされていません。
この例には次の製品が必要です。
马铃薯草®
固定点设计器™
Cコンパイラ
サポートされるコンパイラを参照してください。
mex-setup.
を使用して既定のコンパイラを変更できます。既定のコンパイラの変更を参照してください。
ローカル作業フォルダーを作成します。たとえば,c: \ dti
のようにします。
docroot \工具箱\ fixpoint \例子
フォルダーに変更します。MATLABコマンドラインで次のように入力します。
CD(fullfile(docroot,'toolbox','fixpoint','examplear'))
dti.m
およびdti_test.m.
ファイルをローカル作業フォルダーにコピーします。
次のような事前処理と事後処理を行う別のテストスクリプトを作成することをお勧めします。
入力の読み込み
入力値の設定
テスト結果の出力
タイプ | 名字 | 説明 |
---|---|---|
关键词 | dti.m |
MATLABのエントリポイント関数 |
テストファイル | dti_test.m. |
MATLABスクリプト。次をテストします。dti.m |
この例で使用するファイルを含む作業フォルダーに移動します。
MATLABツールストリップの[アプリ]タブの[コード生成)の下で,アプリアプリをクリックし。
プロジェクトにエントリポイント関数贸易工业部
を追加するために,ファイルdti.m
を探して[開く]をクリックします。既定では,アプリはこのプロジェクトの情報および設定を現在のフォルダーのdti.prj
というファイルに保存します。
(次へ]をクリックして(入力の型を定義]ステップに进みます。
dti.m
のコード違反および固定小数点変換の準備状態の問題が検査されます。dti.m
には問題は検出されません。
(入力の型を定義]ページで,dti_test.
をテストファイルとして追加するためにdti_test.m.
を選択して[開く]をクリックします。
[入力の型の自动定义]をクリックします。
テストファイルが実行されます。アプリはテストファイルから,u_in
の入力型を双(1 x1)
とすることを决定します。
(次へ]をクリックして[固定小数点に変换]ステップに进みます。
エントリポイントMATLAB关有用にたたMEX关键词コードに含まれる変数についてコンパイルされた情報(データ型,サイズ,実数/複素数)が表示されます。詳細は,変数情報の表示と変更を参照してください。
关节が固定小数点変换に対応していない料,それらが[关键词]タブに表示されます。
[解析]矢印をクリックします。
(派生範囲の解析を使用した範囲の解析]を選択します。
[シミュレーションシミュレーション使使用した范囲の解析]チェックボックスをオフにします。
派生范囲の解析解析をには,设计范囲が必要。
[固定小数点に変换]ページの[変数]タブで,入力u_in
に対して[静的最小値]を選択して-1
に设定します。[静的最大値]を1
に设定します。
派生範囲情報を計算するには,すべての入力変数の静的最小値および最大値または推奨されたデータ型を少なくとも指定しなければなりません。
メモ
手はシミュレーションますますれますますますますますます。変更およびロックすることもますます。
[解析]をクリックします。
範囲解析によって派生範囲が計算され,[変数]タブに表示されます。これらの派生範囲を使用して,既定の型推奨設定に基づく固定小数点型が変数ごとに推奨されます。推奨されるデータ型が(推奨された型)に表示されます。
関数贸易工业部
で,出力clip_status
の最小値は-2
,最大値は2
です。
%计算输出如果(u_state > limit_upper) y = limit_upper;clip_status = 2;elsef.(u_state> = limit_upper)y = limit_upper;clip_status = -1;elsef.(u_state < limit_lower) y = limit_lower;clip_status = 2;elsef.(u_state <= limit_lower)y = limit_lower;剪辑_status = 1;其他的y = u_state;clip_status = 0;结束
范囲をを生物させる,アプリによって关键がさ,次のようなclip_status
の最小値と最大値が计算されます。
このアプリでは,(派生範囲のクイック解析]オプションを選択できるほか,解析に長い時間がかかる場合にタイムアウトを指定するオプションもあります。派生範囲の計算を参照してください。
浮動小数点アルゴリズムを固定小数点に変換するには,[変換]をクリックします。
固定小数点の変换プロセスででは,推奨推奨された型がソフトウェア検证検证されれささ,ローカル作业codegen \ dti \ fixpt
フォルダーに次のファイルが生成されます。
dti_fixpt.m
- - - - - -dti.m
の固定小数点バージョン。
dti_wrapper_fixpt.m.
——このファイルは,テストファイルにより入力された浮動小数点データを,変換時に入力用に指定された固定小数点型に変換します。これらの固定小数点の値は変換された固定小数点設計dti_fixpt.m
に入力されます。
dti_fixpt_report.html.
- このレポートは,生成された小数点コードと固定小数点计测计测结果表示表示しします。
dti_report.html
- このレポートは,元のアルゴリズムと固定小数点点の计测结果をしししし
dti_fixpt_args.mat
——入力引数用の構造体,出力引数用の構造体および固定小数点ファイルの名前を含む垫ファイル。
検证中にエラーまたは警告が発生しし场合,それらは[出力]タブに表示されます。型の検证を参照してください。
(出力ファイル]リストで,dti_fixpt.m
を選択します。生成された固定小数点コードがアプリによって表示されます。
シミュレーションデータインスペクターを使用して浮動小数点と固定小数点の結果をプロットします。
[設定]矢印をクリックします。
[プロットプロットと]設定を展開して[シミュレーションデータインスペクターを用いてプロット]を[はい]
に设定します。
[テスト]矢印をクリックします。(比較プロット用の入力と出力を記録]を選択します。[テスト]をクリックします。
入力型を定義するために使用したテストファイルが実行され,固定小数点MATLABコードがテストされます。オプションでテストファイルを追加し,数値のテスト用に1つを超えるテストファイルを実行することを選択できます。浮動小数点と固定小数点の両方のシミュレーションが実行され,出力変数y
ののが计算されます。比较比较用のの力ととの记录と,プロットにシミュレーションデータををすること选択しためため,シミュレーションを选択たため,シミュレーションデータインスペクターたため,シミュレーションデータインスペクターが开。
シミュレーションデータインスペクターを使用して,浮動小数点と固定小数点の実行情報の表示や結果の比較を行うことができます。たとえば出力y
の驾驶小数点のとと小数点の値比较するには,[y
]を选択します。[比较]をクリックします。[ベースライン]を元の実行に,[比較対象]をコンバーターの実行に設定します。[比较]をクリックします。
シミュレーションデータインスペクターは,ベースラインの浮動小数点の実行と固定小数点の実行のプロットおよびそれらの差を表示します。
[検证のの力]タブに,固定小数点レポートへのリンクが表示されます。
レポートを开くためにdti_fixpt_report.html.リンクをクリックします。
(次へ]をクリックして[ワークフローの完了)ページに進みます。
[ワークフローの完了)ページでは,プロジェクトのサマリーと生成された出力ファイルへのリンクが表示されます。
固定小数点バージョンのコードをシステムレベルのシミュレーションに統合するために,墨西哥人関数を生成して固定小数点アルゴリズムを高速化します。元のMATLABアルゴリズムの代わりにこの墨西哥人関数を呼び出します。
dti_fixpt.m
をローカル作用フォルダーににします。
入力引数のfimath
プロパティを取得するには,dti_fixpt.m
内の関数get_fimath.
を确认します。
函数FM = get_fimath()'roundingmethod',“地板”,“OverflowAction”,'裹','ProductMode','FullPrecision',“MaxProductWordLength”, 128,“SumMode”,'FullPrecision','maxsumwordlength', 128);结束
入力u_in
の固定小数点データ型を取得するには,型推奨レポートを確認します。
dti_fixpt.m
の墨西哥人関数を生成します。
fm = fimath('roundingmethod',“地板”,“OverflowAction”,'裹','ProductMode','FullPrecision',“MaxProductWordLength”, 128,“SumMode”,'FullPrecision','maxsumwordlength', 128);fiacceldti_fixptarg游戏{fi(0,1,16,14,fm)}
fiaccel
は現在のフォルダーに墨西哥人関数dti_fixpt_mex
を生成します。
これで,元のMATLABアルゴリズムの代わりにこのMEX关数を呼び出すことができます。