检测溢出
方法检测溢出,此示例演示如何使用定点转换器在转换过程中的数值测试阶段,您选择使用缩放双精度来模拟定点代码。然后,应用程序报告生成的代码中哪些表达式产生了溢出定点数据类型的值。
先决条件
本例需要以下产品:2022世界杯八强谁会赢?
创建一个新文件夹并复制相关文件
创建一个本地工作文件夹,例如:
c: \溢出
.改为
docroot \工具箱\ fixpoint \例子
文件夹中。在MATLAB命令行输入:Cd (fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
复制
overflow.m
而且overflow_test.m
文件到您的本地工作文件夹。最好的做法是创建一个单独的测试脚本来进行预处理和后处理,例如:
加载输入。
设置输入值。
输出测试结果。
有关更多信息,请参见创建测试文件.
类型 名字 描述 函数代码 overflow.m
MATLAB入口函数 测试文件 overflow_test.m
测试的MATLAB脚本 overflow.m
打开定点转换器应用程序
导航到包含本例文件的工作文件夹。
在MATLAB工具条上应用程序选项卡,在代码生成,点击应用程序图标。
选择源文件
添加入口点函数
溢出
对于项目,浏览到文件overflow.m
,然后按开放.默认情况下,该应用程序将此项目的信息和设置保存在当前文件夹中的一个名为overflow.prj
.点击下一个去定义输入类型的一步。
应用程序屏幕
overflow.m
用于违反代码和定点转换准备问题。该应用程序不发现问题overflow.m
.
定义输入类型
在定义输入类型页,添加
overflow_test
作为测试文件,浏览到overflow_test.m
,然后按开放.点击自动定义输入类型.
测试文件运行。应用程序从测试文件中确定输入类型
b
是双(1 x12)
,x
是双(256 x1)
,重置
是逻辑(1 x1)
.点击下一个去转换为定点的一步。
转换为定点
该应用程序为您的入口点MATLAB函数生成一个仪表MEX函数。应用程序会显示代码中变量的编译信息——类型、大小和复杂性。有关更多信息,请参见查看和修改变量信息.
在函数替换标签应用程序显示不支持定点转换的功能。看到运行模拟.
若要查看fimath设置,请单击设置箭头.设置fimath产品模式而且和模式来
KeepLSB
.这些设置模拟了C语言中整数运算的行为。点击分析.
测试文件,
overflow_test
,运行。该应用程序显示模拟最小和最大范围变量选项卡。使用模拟范围数据,该软件根据默认类型建议设置为每个变量提出定点类型,并将它们显示在建议类型列。单击,将浮点算法转换为定点算法转换.
该软件验证所提议的类型,并生成入口点函数的固定版本。
如果在验证过程中出现错误和警告,应用程序将在输出选项卡。看到验证类型.
测试数字并检查溢出
单击测试箭头.验证测试文件是
overflow_test.m
.选择使用缩放双精度值来检测溢出,然后按测试.应用程序运行用于定义输入类型以测试定点MATLAB代码的测试文件。因为您选择了检测溢出,所以它还使用建议的定点类型的伸缩双版本运行模拟。缩放双精度变量将数据存储在双精度浮点数中,因此它们在全范围内执行运算。因为它们保留了它们的定点设置,所以当计算超出定点类型的范围时,它们可以报告。
模拟运行。应用程序检测溢出。该应用程序报告溢出溢出选项卡。若要突出显示溢出的表达式,请单击溢出。
判断溢出的是和还是乘法。
在fimath设置,设置产品模式来
FullPrecision
,然后重复转换并再次测试定点代码。溢出仍然会发生,这表明溢出的是表达式中的加法。