定点插桩和数据类型覆盖
模型从浮点到定点的转换需要配置定点插桩和数据类型覆盖 (DTO)。定点插桩控制哪些对象在仿真期间记录最小、最大和溢出数据。您可以通过数据类型覆盖,使用双精度、单精度或定标双精度数据类型来对模型进行仿真。
控制插桩设置
当您点击定点工具中的收集范围按钮时,该工具会自动启用定点插桩。默认情况下,定点工具使用在模型上设置的当前数据类型覆盖。您还可以选择用双精度、单精度或定标双精度来覆盖数据类型。当仿真或推导完成时,如果在工具中选择了数据类型覆盖,则工具会自动禁用插桩并删除数据类型覆盖。当您点击用嵌入类型进行仿真按钮时,工具会在仿真期间启用插桩。模型上的数据类型覆盖设置不受影响。
使用定点工具收集仿真范围(包括最小值、最大值和溢出数据)需要插桩。这些范围用于建议模型的数据类型。当您不主动将模型转换为定点时,请禁用定点插桩,以还原模型的最大仿真速度。在转换后保留插桩和数据类型覆盖设置可能导致意外结果。
要在定点工具之外启用插桩,请在命令行中将 MinMaxOverflowLogging 参数设置为 MinMaxAndOverflow 或 OverflowOnly。
set_param('MyModel','MinMaxOverflowLogging','MinMaxAndOverflow')
插桩需要 Fixed-Point Designer™ 许可证。要在模型上禁用插桩,请将该参数设置为 ForceOff 或 UseLocalSettings。
set_param('MyModel','MinMaxOverflowLogging','UseLocalSettings')
控制数据类型覆盖
您可以通过数据类型覆盖,使用双精度、单精度或定标双精度数据类型来对模型进行仿真。如果您没有 Fixed-Point Designer,您仍可以将数据类型覆盖设置为对指定了定点数据类型的模型进行仿真。使用此设置时,软件会在仿真期间临时用浮点数据类型覆盖数据类型。
set_param('MyModel','DataTypeOverride','Double')
要观察模型的真实行为,请将数据类型覆盖参数设置为 UseLocalSettings 或 Off。
set_param('MyModel','DataTypeOverride','Off')
防止定点工具覆盖整数数据类型
在对选定系统执行数据类型覆盖 (DTO) 时,定点工具会覆盖系统中每个模块的输出数据类型。DTO 永远不会影响的模块只有具有 boolean 或枚举输出数据类型的模块,以及在设计上不受 DTO 影响的模块(例如,Lookup Table 模块)。根据您的应用,您可能希望保留某些信号的数据类型,例如,表示索引的模块。
要防止定点工具覆盖特定模块的数据类型,请将模块数值类型的 DataTypeOverride 设置设为 Off。
通过双击模块打开“模块参数”对话框。
在信号属性选项卡下的输出数据类型字段中,指定所需的数据类型,并将
DataTypeOverride属性设置为 Off。
您可以通过更改信号的 numerictype 的“数据类型覆盖”设置在命令行中将此覆盖设置为关闭。在此示例中,即使在执行数据类型覆盖后,此模块的输出数据类型仍是内置的 uint8。
您也可以通过使用在许多模块上可用的锁定输出数据类型设置以防止被定点工具更改参数来防止定点工具替换当前数据类型。有关详细信息,请参阅 Use Lock Output Data Type Setting。
模型引用层次结构的插桩设置和数据类型覆盖
当您仿真一个包含引用模型的模型时,顶层模型的数据类型覆盖和定点插桩设置不会控制引用模型的设置。您必须为引用模型单独指定这些设置。如果设置不一致,例如顶层模型数据类型覆盖设置为双精度,而引用模型设置为使用本地设置,并且引用模型使用定点数据类型,则可能会出现数据类型传播问题。
当您更改引用模型的任何实例的定点插桩和数据类型覆盖设置时,该模型的所有实例和引用模型本身的设置都会发生变化。
数据类型覆盖限制
以下模块不支持数据类型覆盖。
使用 MATLAB® 作为动作语言的 Stateflow® Chart 模块
使用 MATLAB 作为动作语言的 State Transition Table 模块
使用 MATLAB 作为动作语言的 Truth Table 模块
Test Sequence 模块
MATLAB Function 模块
MATLAB Discrete-Event System 模块
Requirements Table 模块