このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
この例では、浮動小数点の乗算を使用して勾配設定を補正する方法を示します。生成されたコードで浮動小数点データ型を固定小数点データ型に変換する場合、固定小数点データ型をスケーリングする 1.つの方法として勾配設定の補正があります。固定小数点データ型のスケーリングにより、オーバーフロー状態を回避し、量子化誤差を最小に抑えます。
効率的な乗算をサポートするプロセッサの場合、勾配設定を補正する浮動小数点の乗算を使用して、コードの効率を向上します。勾配設定の補正に 2.のべき乗以外の値がある場合、除算を使用して精度を向上します。
メモ:この例には 定点设计器™ のライセンスが必要です。
モデルrtwdemo\u浮点数\u mul\u用于净斜率\u校正では、转换ブロックは入力信号を浮動小数点データ型から固定小数点データ型に変換します。勾配設定の補正には3.
の値があります。
模型=“rtwdemo\U浮点\U mul\U用于净斜率\U校正”开放式系统(模型);
ビルドと検査プロセス用に一時フォルダーを作成します。
currentDir=pwd;[~,cgDir]=rtwdemodir();
モデルを作成します。
slbuild(模型)
###开始:rtwdemo_float_mul_for_net_slope_correction####成功完成:rtwdemo_float_mul_for_net_slope_correction构建过程摘要顶层模型目标已构建:模型操作重建原因======================================================================================================================rtwdemo\u float\u mul\u for\u net\u slope\u生成的校正代码和编译的代码生成信息文件不存在。生成了1个模型中的1个(0个模型已更新)生成持续时间:0h 0m 17.399s
rtwdemo\u float\u mul\u用于净斜率校正。c
コードの以下の行で、コード ジェネレーターは入力信号を3.0F
で除算します。
cfile=fullfile(cgDir,“rtwdemo\u float\u mul\u用于净斜率校正\u ert\u rtw”,...“rtwdemo\u float\u mul\u用于净斜率校正。c”); rtwdemodbtype(cfile,“/*模型步骤”,“/*模型初始化”, 1, 0);
/*模型步长函数*/void rtwdemo\u float\u mul\u for_net\u slope\u correction\u step(void){/*输出端口:'/Output'包含:*数据类型转换:' /Data Type Conversion'*Inport:' /Input'*/rtY.Output=(int16_T)(real32_T)floor((real_T)(rtU.Input/3.0F))}
[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。
[数学とデータ型]ペインで、[浮動小数点の乗算を使用して勾配設定を補正]を選択します。既定の設定では、最適化はオンです。
代わりに、コマンド ライン 美国石油学会を使用して最適化を有効にできます。
设置参数(模型,“UseFloatMulNetSlope”,“开”);
slbuild(模型)
###第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第第三方的第第三方的第四方的第三方的第第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第三方的第第四方的第四方的第三方的第三方的第三方的第三方的第三方的第三方的第第四方的第四方的第三方的第三方的第三方的第三方的第三方的第三方的第四方的第第第第四方的第第第四方的第第四方的第四方的第第第第第第=rtwde生成的mo_float_mul_for_net_slope_校正代码和编译生成的代码已过期。生成的1个模型中的1个(0个模型已更新)生成持续时间:0h 0m 14.074s
最適化されたコードで、コード ジェネレーターは3.0F
の逆数、つまり0.333343F
で入力信号を乗算します。
rtwdemodbtype(cfile,“/*模型步骤”,“/*模型初始化”, 1, 0);
/*模型步长函数*/void rtwdemo\u float\u mul\u for_net\u slope\u correction\u step(void){/*输出端口:'/Output'包含:*数据类型转换:' /Data Type Conversion'*输入端口:' /Input'*/rtY.Output=(int16_T)(real32_T)floor((real_T)(rtU.Input*0.3333 43f))}
モデルおよびコード生成レポートを閉じます。
bdclose(型号)rtwdemoclean;cd(当前目录)