主要内容

定点自动转换

定点自动转换功能

您可以转换浮点MATLAB®使用代码来定点代码定点转换器应用程序或在命令行中使用fiaccel函数-float2fixed选择。你可以选择提出基于模拟范围数据,数据类型派生(也称为静态)范围的数据,或两者兼而有之。

你可以手动输入静态范围。这些手动输入范围优先于模拟范围和应用提出了数据类型时使用它们。此外,您可以修改和锁定该类型,以便应用程序无法改变它。有关更多信息,请参见锁提出的数据类型

支持的MATLAB的特性和功金宝app能列表,看看MATLAB语言特性支持自动定点转换金宝app

在定点的转换,您可以:

  • 验证您的测试文件覆盖的全部预期工作范围使用代码覆盖率结果你的算法。

  • 提出分数基于违约单词长度的长度。

  • 提出基于违约部分单词长度的长度。

  • 优化整数。

  • 指定安全模拟最小/最大利润率数据。

  • 验证您可以构建您的项目与该数据类型。

  • 测试数字通过运行测试文件与定点应用类型。

  • 查看每个变量使用比特的直方图。

  • 检测溢出。

代码覆盖率

默认情况下,应用程序显示了代码覆盖率结果。你的测试文件必须行使算法对其完整的操作范围,以便模拟范围是准确的。提出的质量定点数据类型取决于算法的测试文件覆盖操作范围的准确性。

审查代码覆盖率结果可以帮助您验证您的测试文件是充分行使算法。如果代码覆盖率不足,修改测试文件或添加更多的测试文件增加覆盖范围。如果你模拟多个测试文件在一个运行,应用程序显示累计覆盖。然而,如果你指定多个测试文件,但运行一次,应用程序显示跑最后一个文件的覆盖率。

应用程序显示一个颜色范围栏左边的代码。

此表描述了颜色编码。

覆盖栏颜色 表明
绿色

下列情形之一:

  • 的入口点函数执行多次和代码执行一个以上的时间。

  • 的入口点函数执行一次和代码执行一次。

不同深浅的绿色表示不同范围的行执行计数。最黑暗的阴影绿色表示最高的范围。

橙色 的入口点函数执行多次,但是代码执行一次。
红色的 代码不执行。

当您将您的鼠标停留在覆盖酒吧,颜色高亮显示扩展的代码。对于每个部分的代码,应用程序显示部分执行的次数。

验证你的测试文件是测试算法在预期的操作范围,查看代码覆盖率结果。

覆盖栏颜色 行动
绿色 如果你期望的部分代码执行比报道显示,更频繁修改MATLAB代码或测试文件。
橙色 预计这种行为对于初始化代码,例如,持久变量的初始化。如果你期望的代码执行一个以上的时间,修改MATLAB代码或测试文件。
红色的 如果代码不执行一个错误条件,这种行为是可以接受的。如果你期望执行的代码,修改MATLAB代码或测试文件。如果代码写保守和有上下界的局限性,你不能修改测试文件到达这个代码,添加静态最大和最小值。看到计算出范围

代码覆盖率在默认情况下。关机后才确认你有足够的测试文件覆盖。关闭代码覆盖率可以加快模拟。关闭代码覆盖率,转换为定点页面:

  1. 单击分析箭头

  2. 清除显示代码覆盖率复选框。

提出数据类型

在定义输入类型的步骤中,您指定一个测试文件,它将调用的入口点函数。应用程序运行测试文件分析代码和推断入口点输入参数的类型。

定义输入类型窗格的定点转换器应用。

基于计算的应用提出了定点数据类型范围和这个词的长度或分数设置。计算范围是基于模拟数据范围,导出数据(也称为静态范围),或两者兼而有之。如果你运行一个模拟和计算范围,应用合并模拟和派生的范围。

请注意

你不能提出基于派生数据类型为MATLAB类范围。

派生的范围分析不支持非标量变量。金宝app

你可以手动输入静态范围。这些手动输入范围优先于模拟范围和应用提出了数据类型时使用它们。如果你单独分析范围使用派生的范围分析,您必须输入静态范围。

您可以修改和锁定该类型工具不能改变它。有关更多信息,请参见锁提出的数据类型

运行一个仿真

在定点的转换过程中,应用程序生成一个测试函数对你的墨西哥人入口点MATLAB文件。如果构建完成,没有错误,应用程序显示编译信息(类型、大小、复杂性)代码中的函数和变量。导航到本地功能,单击功能选项卡。如果出现构建错误,应用程序提供了错误信息,链接代码,导致构建问题。你必须解决这些错误在运行模拟。使用链接导航到违规行MATLAB代码的编辑和修改代码解决这个问题。如果你的代码使用功能不支持定点转换,应用程序显示他们金宝app函数替换选项卡。看到函数替换

在运行模拟之前,指定测试文件或文件你想要运行。当您运行一个模拟,应用程序运行测试文件,称的墨西哥人的功能。如果你修改MATLAB设计代码,程序自动生成一个墨西哥人更新函数之前运行一个测试文件

如果测试文件成功运行,模拟最大和最小值和该类型显示在变量选项卡。如果您手动输入静态变量的范围,手动输入范围优先于模拟范围。如果您手动修改类型通过输入或使用直方图,提出的数据类型都是锁着的,这样应用程序不能修改它们。

如果测试文件失败,上显示的错误输出选项卡。

测试文件必须锻炼你的算法对其完整的操作范围。提出的质量取决于如何定点数据类型测试文件覆盖算法的运行范围的准确性。您可以添加测试文件并选择在仿真运行不止一个的测试文件。如果你运行多个测试文件,应用仿真结果合并。

可选地,您可以选择为直方图日志数据。运行仿真后,您可以查看每个变量的直方图。有关更多信息,请参见日志数据的直方图

计算出范围

提出了基于派生数据类型范围的优势是,您不需要提供测试文件,锻炼你的算法对其完整的操作范围。运行这些测试文件通常需要很长时间。应用程序可以计算派生范围仅供标量变量。

计算范围和提出基于这些数据类型范围,提供静态最大和最小值或提出所有输入变量的数据类型。提高分析、输入尽可能多的静态范围信息对其他变量。你可以手动输入范围或促进模拟范围作为静态范围。手动输入静态范围总是优先于模拟范围。

如果你知道什么数据类型硬件目标使用,设置提出这种类型的数据类型相匹配。手动输入数据类型都是锁着的,这样应用程序不能修改它们。这个应用程序使用这些数据类型来计算输入最小和最大值和获得其它变量的范围。有关更多信息,请参见锁提出的数据类型

当您选择计算出范围,应用程序运行一个派生的范围分析计算静态范围为变量在MATLAB算法。当分析完成后,显示在静态范围变量选项卡。如果运行生产+ /负派生的范围,考虑为所有持久性变量定义范围。

可选地,您可以选择快速提取范围分析。这个选项,程序执行更快的静态分析。计算范围可能超过必要的。选择这个选项的情况下静态分析比你可以花更多的时间。

如果派生范围分析为您的项目在很长一段时间,您可以设置一个超时。达到超时时,程序中止的分析。

锁提出的数据类型

你可以锁提出更改的数据类型应用程序使用下列方法之一:

  • 手动设置提出了数据类型的应用程序。

  • 右击并选择提出的一种工具锁计算值

应用程序以粗体显示锁定的数据类型,这样他们很容易识别。你可以解锁一个类型使用下列方法之一:

  • 手动覆盖它。

  • 右键单击它并选择撤消修改。这个动作只打开选中的类型。

  • 右击并选择撤销所有变量的变化。这一行动解锁所有锁提出的类型。

查看功能

转换为定点定点转换过程的步骤,您可以在您的项目视图的列表功能在左窗格中。这个列表还包括功能专门化和类方法。当你从列表中选择一个函数,该函数或类方法的MATLAB代码显示在代码窗口并显示在他们所使用的变量变量选项卡。

转换后,左窗格也显示输出文件的列表包括原始算法的定点版本。如果你的函数并不专业,应用保留原来的函数名的定点文件名和附加定点后缀。例如,这里的定点版本ex_2ndOrder_filter.mex_2ndOrder_filter_fixpt.m

类的应用程序显示信息和它的每个方法。例如,考虑一个类,计数器有一个静态方法,MAX_VALUE一个方法,下一个

如果您选择类,应用程序显示的类及其属性变量选项卡。

如果你选择一个方法,应用程序只会显示该方法使用的变量。

专门化

如果一个函数是专业,应用程序列出每个专业化和数字顺序。例如,考虑一个函数,dut调用子函数,喷火酒吧,多次与不同的输入类型。

函数y = dut (u, v) tt1 = foo (u);(u v) tt2 = foo ();tt3 = foo(复杂(u, v));魔法石,第1章= bar (u);ss2 =酒吧([u v]);ss3 =酒吧(复杂(u, v));y = (tt1 +魔法石,第1章)+ (tt2 + ss2) +和真正的(tt3) + (ss3);结束函数y = foo (u) y = u * 2;结束函数y =酒吧(u) y = u * 4;结束

如果您选择顶级函数,应用程序显示上的所有变量变量选项卡。

如果您选择树视图时,应用程序也会显示的行号调用每个专业化。

如果你选择了一个专业化、专门化的应用只会显示变量的用途。

在代码生成的定点,每个专业定点匹配中的数字源代码列表,这使得它容易跟踪浮点和定点之间的代码的版本。例如,生成的定点函数foo > 1被命名为foo_s1

查看变量

变量选项卡提供以下信息为每个变量在函数中选择导航面板:

  • 类型——原始数据类型的变量在MATLAB算法。

  • Sim卡敏Sim马克斯——分配给变量的最小和最大值在模拟。

    您可以编辑模拟最小和最大值。编辑字段都以粗体显示。编辑这些字段不触发静态范围分析,但在随后的分析工具使用编辑值。你可以回复提出的应用程序类型。

  • 静态分静态马克斯——静态最大和最小值。

    计算范围和提出基于这些数据类型范围,提供所有输入变量的静态最大和最小值。提高分析、输入尽可能多的静态范围信息对其他变量。

    计算派生的范围时,应用程序运行一个静态分析计算静态代码范围的变量。当分析完成,静态显示范围。您可以编辑计算结果。编辑字段都以粗体显示。编辑这些字段不触发静态范围分析,但在随后的分析工具使用编辑值。你可以回复提出的应用程序类型。

  • 整数期间,是否所有的值分配给变量模拟是整数。

    应用程序确定一个变量总是一个整数。你可以修改这个字段。编辑字段都以粗体显示。编辑这些字段不触发静态范围分析,但在随后的分析应用程序使用编辑值。你可以回复提出的应用程序类型。

  • 拟议中的定点数据类型为指定的词(或分数)的长度。提出了数据类型使用numerictype符号。例如,numerictype(12) 1, 16日代表一个签署了定点类型的字长16和一小部分的长度12。numerictype(0, 16日12)表示无符号定点类型的字长16和一小部分的长度12。

    不适用,因为应用程序数据类型的表达式,它不显示提出的类型。相反,它显示原来的数据类型。

您还可以查看和编辑代码中的变量信息面板通过将鼠标移一个变量名。

您可以使用Ctrl + F搜索在MATLAB代码和变量变量选项卡。应用亮点出现在代码和只显示变量的指定名称变量选项卡。

为MATLAB类查看信息

这个应用程序显示:

  • MATLAB代码类和类方法的代码覆盖的代码窗口。使用源代码列表上的转换为定点页面选择要查看的类或类方法。如果您选择一个类方法,应用了该方法在代码窗口中。

  • 关于MATLAB的类信息变量选项卡。

日志数据的直方图

日志数据的柱状图:

  • 转换为定点页面,点击分析箭头

  • 选择日志数据的直方图

  • 点击分析范围

仿真后,查看变量的直方图,变量选项卡上,单击建议类型字段的变量。

直方图提供的范围提出的数据类型和比例的模拟值,该数据类型。一点重量显示沿着x轴,沿着轴出现的百分比。直方图中的每个箱子对应的二进制字。例如,这个柱状图显示类型的变量的范围numerictype(14) 1日16日

您可以查看数据类型提出的改变的影响:

  • 拖动的边界框的边缘直方图窗口改变拟议中的数据类型。

  • 选择或清除签署

提出的回归类型自动转换,在直方图窗口中,点击

函数替换

如果你的MATLAB代码使用功能没有定点的支持,应用这些函数的列表金宝app函数替换选项卡。你可以选择不支持的功能替换为一个自定义函数替换或查找表。金宝app

你可以从这个列表中添加和删除功能置换。如果你为一个函数,输入一个函数替换替换函数构建项目时使用。如果你不输入替换,这个应用程序使用原始的MATLAB代码函数中指定类型。

请注意

使用此表,您可以替换函数的名字但你不能取代论证模式。

如果代码生成准备筛选是禁用的,不支持的函数的列表金宝app函数替换标签可以不完整或不正确的。在这种情况下,手动添加功能。看到的。

验证类型

将代码转换为定点验证使用提出了构建定点数据类型。如果验证成功,您已经准备好测试的数值行为定点MATLAB算法。

如果在验证时发生错误或警告,它们显示在输出选项卡。如果发生错误或警告:

  • 变量选项卡,检查该类型和手动修改类型来验证他们是有效的。

  • 函数替换选项卡,验证您提供了函数替代不支持的功能。金宝app

测试数字

后将代码转换为定点和验证该定点数据类型,点击测试来验证定点MATLAB算法的行为。默认情况下,如果你添加了一个测试文件定义输入和模拟运行,应用程序使用此测试文件测试数值。可选地,您可以添加测试文件并选择运行不止一个测试文件。应用比较的数值行为定点MATLAB代码生成与原始浮点MATLAB代码。如果您选择日志输入和输出比较图,应用程序为每个标量输出生成额外的阴谋。这图显示了浮点和定点结果以及它们之间的区别。仅供nonscalar输出,显示错误信息。

定点仿真后,如果计算结果的精度不符合你想要的,修改定点数据类型设置和重复验证类型和数值测试步骤。你可能需要多次遍历这些步骤来实现你想要的结果。

检测溢出

当测试数值,选择使用缩放双打检测溢出使溢出检测。当这个选项被选中时,转换应用仿真运行,使用了双版本的提议定点类型。因为缩放双打将它们的数据存储在双精度浮点,他们在全面执行算术。他们还保留其定点设置,所以他们能够报告时计算出的定点类型的范围。有关更多信息,请参见按比例缩小的双打

如果应用程序检测到溢出,在它溢出选项卡,它提供了:

  • 的变量和表达式的列表了

  • 每个变量溢出多少信息

  • 链接到代码中的变量或表达式窗口

如果你的原始算法使用了双打,应用程序还提供了这些表达式的溢出信息。

另请参阅

检测溢出