主要内容

删除将NaN映射为整数零的代码

这个例子展示了如何删除映射的代码到整数零。对于涉及饱和的浮点到整数转换,Simulink会在模拟期间将NaN转换为整数零。如果您的模型包含的输入值为万博1manbetx,您可以指定代码生成器生成将NaN映射为0的代码。如果没有这段代码,模拟结果和代码生成结果之间就会不匹配,因为在标准C中,涉及的每个条件计算结果为false。

如果输入如果应用程序中不存在,则可以删除将NaN映射为整数零的代码。删除此代码会减小生成代码的大小并提高生成代码的速度。

示例模型

打开示例模型rtwdemo\u浮点数\u mul\u用于净斜率\u校正通过在命令窗口中输入模型名称。

模型包含一个数据类型转换块。配置模型转换输入信号从auint8

1.打开“数据类型转换”对话框。为输出数据类型参数,选择uint8

2.选择整数溢出饱和参数复选框。选择此参数指定超出范围的信号值等于数据类型可以表示的最小值或最大值。

3.打开“配置参数”对话框。选择万博1manbetx支持:非有限数参数复选框。选择此参数可以生成非限定数据和对非限定数据的操作。

生成无优化的代码

1.为构建和检查过程创建一个临时文件夹。

2.打开“配置参数”对话框。在“优化”窗格上,清除从浮点到整数转换中删除将NaN映射为零的饱和代码参数复选框。

3.构建的模型。

### rtwdemo_float_mul_for_net_slope_correction: rtwdemo_float_mul_for_net_slope_correction: rtwdemo_float_mul_for_net_slope_correction模型重建行动的原因  =========================================================================================================================== rtwdemo_float_mul_for_net_slope_correction代码生成和编译代码生成信息文件不存在。建造时间:0小时0米15.778秒

4.检查生成的rtwdemo_float_mul_for_net_slope_correction_step阶跃函数rtwdemo_float_mul_for_net_slope_correction.c

/*模型步进函数*/ void rtwdemo_float_mul_for_net_slope_correction_step(void) {/* DataTypeConversion: '/Data TypeConversion '合并:* import: '/Input' */ if (rtU. txt . txt . txt . txt . txt . txt . txt . txt . txt . txt . txt . txt . txt . txt。Input < 256.0F) {if (rtU。输入> = 0.0 f){/ *外港:根> < /输出的* /而无。输出= (uint8_T) rtU.Input;} else {/* Outport: '/Output' */ rtY. txt;输出u = 0;}} else if (rtU。Input >= 256.0F) {/* Outport: '/Output' */ rtY. txt . txt输出= MAX_uint8_T;} else {/* Outport: '/Output' */ rtY. txt;输出u = 0;} /* DataTypeConversion的结束:'/Data TypeConversion ' */}

代码生成器将条件应用于map零浮点数值用。在这种情况下,生成的代码较大,但生成的代码的结果与模拟结果相匹配。

通过优化生成代码

1.打开“配置参数”对话框。

2.在“优化”窗格中,选择从浮点到整数转换中删除将NaN映射为零的饱和代码参数。

3.构建的模型。

### rtwdemo_float_mul_for_net_slope_correction: rtwdemo_float_mul_for_net_slope_correction: rtwdemo_float_mul_for_net_slope_correction模型重建行动的原因  ========================================================================================================== rtwdemo_float_mul_for_net_slope_correction代码生成和编译生成的代码是过时了。建造时间:0小时0米12.515秒

4.检查生成的rtwdemo_float_mul_for_net_slope_correction_step阶跃函数的优化设计rtwdemo_float_mul_for_net_slope_correction.c

/*模型步进函数*/ void rtwdemo_float_mul_for_net_slope_correction_step(void) {/* DataTypeConversion: '/Data TypeConversion '合并:* import: '/Input' */ if (rtU. txt . txt . txt . txt . txt . txt . txt . txt . txt . txt . txt . txt . txt . txt。Input < 256.0F) {if (rtU。输入> = 0.0 f){/ *外港:根> < /输出的* /而无。输出= (uint8_T) rtU.Input;} else {/* Outport: '/Output' */ rtY. txt;输出u = 0;}} else {/* Outport: '/Output' */ rtY. txt;输出= MAX_uint8_T;} /* DataTypeConversion的结束:'/Data TypeConversion ' */}

生成的代码映射到255,而不是整数零。没有将NaN映射为整数0的额外代码,生成的代码更加高效。但是也有可能生成的代码的执行并不会产生与模拟相同的结果值。

另请参阅

相关话题