自动定点转换

自动化的固定点转换功能

您可以转换浮点Matlab®使用该代码到固定点代码Matlab Coder™应用程序或使用该应用程序Codegen.函数-float2混合选项。您可以选择基于模拟范围数据提出数据类型,导出(也称为静态)范围数据,或两者。

可以手动输入静态范围。这些手工输入的范围优先于模拟范围,应用程序在建议数据类型时使用它们。此外,您可以修改和锁定所建议的类型,使应用程序不能更改它。有关更多信息,请参阅锁定提出的数据类型

有关支持的MATLAB特性和万博1manbetx函数的列表,请参见支持自动定点转换的MATLAB语言特性万博1manbetx(定点设计师)。

在定点转换期间,您可以:

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

  • 基于默认字长度提出分数长度。

  • 基于默认分数长度提出单词长度。

  • 优化整数。

  • 指定用于模拟MIN / MAX数据的安全边距。

  • 验证您可以使用所提出的数据类型构建项目。

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

  • 查看每个可变使用的位的直方图。

  • 检测溢出。

代码覆盖率

默认情况下,应用程序显示代码覆盖率结果。您的测试文件必须在整个操作范围内执行算法,以便模拟范围准确。建议的定点数据类型的质量取决于测试文件以您想要的精度覆盖算法的操作范围的程度。

查看代码覆盖率结果有助于验证测试文件是否充分地使用了该算法。如果代码覆盖率不足,请修改测试文件或添加更多测试文件以增加覆盖率。如果在一次运行中模拟多个测试文件,应用程序将显示累积覆盖率。但是,如果指定多个测试文件,但每次运行一个,则应用程序将显示上次运行的文件的覆盖率。

该应用程序将在代码左侧显示颜色编码的覆盖条。

此表描述了颜色编码。

覆盖酒吧颜色 表明
绿色的

下列情形之一:

  • 入口点函数多次执行,代码执行多次。

  • 入口点函数执行一次,并且代码执行一次。

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

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

当您将光标放在覆盖栏上时,颜色突出显示将扩展到代码上。对于代码的每个部分,应用程序显示该部分执行的次数。

要验证您的测试文件在预期的工作范围内测试算法,请查看代码覆盖结果。

覆盖酒吧颜色 行动
绿色的 如果您希望代码部分的执行频率高于覆盖率显示的频率,请修改MATLAB代码或测试文件。
橙色的 这种行为在初始化代码中是必需的,例如,持久化变量的初始化。如果您希望代码执行不止一次,那么可以修改MATLAB代码或测试文件。
红色的 如果未执行的代码是错误条件,则此行为是可接受的。如果希望代码执行,可以修改MATLAB代码或测试文件。如果代码是保守地编写的,并且有上限和下限限制,并且您不能修改测试文件以达到此代码,则添加静态最小值和最大值。看到计算出范围

默认情况下,代码覆盖范围是开启的。只有在验证您有足够的测试文件覆盖范围后,才会关闭它。关闭代码覆盖范围可以加速模拟。关闭代码覆盖范围转换为固定点页:

  1. 单击分析箭头

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

建议数据类型

该应用程序提出了基于计算的范围和字长或分数长度设置的定点数据类型。计算的范围基于仿真范围数据,导出的范围数据(也称为静态范围)或两者。如果您运行模拟和计算派生范围,则该应用程序会合并模拟和派生范围。

笔记

您无法基于MATLAB类的派生范围提出数据类型。

对于非标量变量,不支持派生范围分析。万博1manbetx

可以手动输入静态范围。这些手工输入的范围优先于模拟范围,应用程序在建议数据类型时使用它们。您可以修改并锁定建议的类型,以便工具无法更改它。有关更多信息,请参阅锁定提出的数据类型

运行模拟

在固定点转换期间,该应用程序为您的仪器生成仪器化的MEX函数入口点MATLAB文件.如果构建完成没有错误,则应用程序将显示代码中的函数和变量的已编译的信息(类型,大小,复杂性)。要导航到本地功能,请单击“功能选项卡。如果出现构建错误,应用程序会提供错误消息,链接到导致构建问题的代码行。您必须在运行模拟之前解决这些错误。使用该链接在MATLAB编辑器中导航到有问题的代码行,并修改代码以修复问题。如果你的代码使用了不支持定点转换的函数,应用程序会将它们显示在万博1manbetx功能替换选项卡。看到功能替换

在运行模拟之前,请指定测试文件或文件你想要运行。运行模拟时,该应用程序运行测试文件,调用仪表化的MEX函数。如果你修改MATLAB设计代码时,应用程序在运行前自动生成一个更新过的MEX函数测试文件

如果是测试文件运行成功后,仿真的最大值和最小值以及建议的类型将显示在变量选项卡。如果手动输入变量的静态范围,手动输入的范围优先于模拟范围。如果通过键入或使用直方图手动修改所提出的类型,则锁定数据类型,以便该应用程序无法修改它们。

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

测试文件必须在其完全操作范围内锻炼算法。所提出的定点数据类型的质量取决于测试文件以您想要的精度覆盖算法的操作范围。您可以添加测试文件,并选择在模拟期间运行多个测试文件。如果运行多个测试文件,应用程序将合并模拟结果。

您还可以选择记录直方图的数据。运行模拟之后,可以查看每个变量的直方图。有关更多信息,请参阅针对直方图的日志数据

计算出范围

提出基于派生范围的数据类型的优点是您不必在完全操作范围内提供锻炼算法的测试文件。运行此类测试文件通常需要很长时间。该应用程序只能计算标量变量的派生范围。

要计算衍生范围并基于这些范围建议数据类型,请为所有输入变量提供静态最小值和最大值或建议的数据类型。要改进分析,请为其他变量输入尽可能多的静态范围信息。可以手动输入范围或升级模拟范围以用作静态范围。手动输入的静态范围始终优先于模拟范围。

如果您知道硬件目标使用的数据类型是什么,请设置建议的数据类型以匹配此类型。手动输入的数据类型被锁定,以便该应用程序无法修改它们。该应用程序使用这些数据类型来计算输入最小值和最大值,并为其他变量导出范围。有关更多信息,请参阅锁定提出的数据类型

当你选择计算派生范围,该应用程序运行派生范围分析,以计算Matlab算法中变量的静态范围。分析完成后,静态范围显示在变量标签。如果运行产生+ /负派生的范围,考虑定义所有持久变量的范围。

(可选)您可以选择快速派生范围分析.使用此选项,应用程序执行更快的静态分析。计算范围可能比需要的更大。如果静态分析所需的时间超出您的承受能力,请选择此选项。

如果项目的派生范围分析需要很长时间,可以选择设置超时。当达到超时时,应用程序中止分析。

锁定提出的数据类型

您可以使用以下方法之一锁定建议的数据类型以防止应用程序的更改:

  • 在应用程序中手动设置建议的数据类型。

  • 右键单击工具提出的类型和选择锁定计算值

该应用程序以粗体显示锁定的数据类型,以便它们易于识别。您可以使用以下方法之一解锁类型:

  • 手动覆盖它。

  • 右键单击并选择取消更改. 此操作仅解锁选定类型。

  • 右键单击并选择撤消所有变量的更改.此操作将解锁所有锁定的建议类型。

观看功能

转换为固定点“定点转换过程的步骤”,您可以在左窗格中查看项目中的项目中的函数列表。此列表还包括函数专用和类方法。从列表中选择函数时,代码窗口中显示该函数或类方法的MATLAB代码以及它们使用的变量变量选项卡。

转换后,左窗格还显示包含原始算法的固定点版本的输出文件列表。如果您的函数不专业化,则应用程序将在“固定点文件名”中保留原始函数名称,并附加固定点后缀。例如,这里的固定点版本ex_2ndOrder_filter.mex_2ndOrder_fixpt.m过滤器

班级

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

如果选择该类,应用程序将在屏幕上显示该类及其属性变量选项卡。

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

专业

如果函数是专门的,则该应用程序列出了每个专业化和顺序编号。例如,考虑一个函数,DUT.,呼叫子宫功能,酒吧,具有不同输入类型的多次。

函数y=dut(u,v)tt1=foo(u);tt2=foo([u-v]);tt3=foo(复合物(u,v));ss1=巴(u);ss2=巴([u v]);ss3=巴(复合物(u,v));y=(tt1+ss1)+和(tt2+ss2)+实(tt3)+实(ss3);结束函数Y = foo(u) Y = u * 2;结束函数Y = bar(u) Y = u * 4;结束

如果选择顶级功能,应用程序将显示屏幕上的所有变量变量选项卡。

如果选择树视图,则该应用程序还会显示对每个专业化的呼叫的行号。

如果选择一个专门化,应用程序只显示专门化使用的变量。

在生成的定点代码中,每个定点专业化的数量与数字匹配源代码列表,它可以方便地跟踪代码的浮点版本和定点版本。例如,生成的定点函数foo> 1被命名foo_s1.

查看变量

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

  • 类型-MATLAB算法中变量的原始数据类型。

  • 辛敏Sim马克斯- 在模拟期间分配给变量的最小值和最大值。

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

  • 静态分静态最大值- 静态最小值和最大值。

    要计算派生范围并基于这些范围提出数据类型,请为所有输入变量提供静态最小值和最大值。要改进分析,请为其他变量输入尽可能多的静态范围信息。

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

  • 完整的号码- 在模拟期间分配给变量的所有值是否为整数。

    该应用程序确定变量是否始终为整个数字。您可以修改此字段。编辑的字段以粗体显示。编辑这些字段不会触发静态范围分析,但该应用程序在后续分析中使用编辑值。您可以恢复到应用程序提出的类型。

  • 指定字(或分数)长度的提议的定点数据类型。建议的数据类型使用numerictype.符号。例如,数字类型(1,16,12)表示有符号定点类型,字长为16,分数长度为12。numerictype(0, 16日12)表示字长为16、分数长度为12的无符号定点类型。

    由于应用程序不将数据类型应用于表达式,因此它不会为它们显示建议类型。相反,它显示其原始数据类型。

还可以将光标放在变量名称上,在“代码”窗格中查看和编辑变量信息。

您可以使用Ctrl + F在MATLAB代码和上搜索变量变量选项卡。应用程序突出显示代码中出现的事件,并仅在变量选项卡。

查看MATLAB类信息

应用程序显示:

  • MATLAB类的代码和代码窗口中类方法的代码覆盖。使用源代码列表上的转换为固定点页面要选择要查看的哪个类或类方法。如果选择类方法,则应用程序将突出显示代码窗口中的方法。

  • 有关MATLAB类的信息,请参见变量选项卡。

针对直方图的日志数据

要记录直方图的数据:

  • 在这一点转换为固定点页面中,单击分析箭头

  • 选择对数数据的直方图

  • 点击分析范围

仿真后,要查看变量的直方图,请执行变量标签,单击提出的类型字段为该变量。

直方图提供了所提出的数据类型的范围和所提出的数据类型封面的模拟值的百分比。位重量沿X轴显示,沿Y轴的出现百分比。直方图中的每个垃圾箱对应于二进制单词中的一位。例如,该直方图显示类型的变量的范围数字类型(1,16,14)

您可以通过以下方式查看更改所提出的数据类型的效果:

  • 拖动直方图窗口中边界框的边沿更改所提出的数据类型。

  • 选择或清除签署

要恢复到自动转换建议的类型,请在直方图窗口中单击

功能替换

如果MATLAB代码使用没有固定点支持的函数,则该应用程序列出了这些功能万博1manbetx功能替换选项卡。您可以选择使用自定义功能替换或查找表替换不支持的函数。万博1manbetx

您可以从这个列表中添加或删除函数替换。如果为函数输入函数替换,则在构建项目时使用替换函数。如果不输入替换项,应用程序将使用原MATLAB代码中指定的函数类型。

笔记

使用这个表,您可以替换函数的名称,但不能替换参数模式。

如果禁用代码生成就绪筛选,则屏幕上不支持的功能列表万博1manbetx功能替换选项卡可能不完整或不正确。在这种情况下,手动添加函数。看见Matlab编码器应用程序中的代码生成准备筛选

验证类型

将代码转换为固定点使用所提出的固定点数据类型验证构建。如果验证成功,则可以测试定点MATLAB算法的数值行为。

如果在验证过程中出现错误或警告,它们将显示在输出选项卡。如果出现错误或警告:

  • 在这一点变量选项卡,检查建议的类型和手动修改的类型,以验证它们是有效的。

  • 在这一点功能替换选项卡,验证是否已为不受支持的函数提供函数替换。万博1manbetx

测试数字

将代码转换为修复点并验证所提出的固定点数据类型后,单击试验验证固定点MATLAB算法的行为。默认情况下,如果添加了一个测试文件要定义输入或运行模拟,应用程序使用测试文件测试数字。(可选)您可以添加测试文件,然后选择运行多个测试文件。该应用程序将生成的定点MATLAB代码与原始浮点MATLAB代码进行比较。如果选择要记录比较图的输入和输出,则该应用程序为每个标量输出生成额外的绘图。此曲线显示浮点和定点结果以及它们之间的差异。对于Nonscalar输出,仅显示错误信息。

定点模拟后,如果数值结果不符合所需的精度,请修改定点数据类型设置,并重复类型验证和数值测试步骤。您可能需要多次重复这些步骤才能获得所需的结果。

检测溢出

测试数字时,选择使用缩放倍数检测溢出启用溢出检测。选择此选项后,转换应用程序使用所提出的固定点类型的缩放双倍版本运行模拟。由于缩放双打在双精度浮点中存储其数据,因此它们在全系列中进行算术。它们还保留了其定点设置,因此它们能够在计算超出定点类型的范围内报告。。

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

  • 溢出的变量和表达式列表

  • 关于每个变量溢出量的信息

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

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

另见

检测溢出