指定行为约束
要确定新定点实现的数值行为是否可接受,请通过设置信号容差、使用一个或多个 Model Verification 模块或同时使用这两种方式来定义约束。
在定点工具的优化的定点转换工作流中,或在命令行中使用 fxpopt 时,您必须指定至少一个行为约束。数据类型经过优化以满足所有指定的约束。
在定点工具的迭代定点转换工作流中,或在命令行中使用 DataTypeWorkflow.Converter 时,您可以指定行为约束来验证具有嵌入类型的模型的数值行为。使用嵌入类型进行仿真后,工作流浏览器会指示与范围收集运行相比,嵌入运行是否满足指定的信号容差。有关详细信息,请参阅Verify New Settings。
指定信号容差
您可以为模型中已启用信号记录的信号指定容差。要启用信号记录,请执行以下操作:
在 Simulink® 编辑器中,选择一个或多个信号。
在 Simulink 编辑器的信号选项卡中,点击记录信号。
在定点工具的信号容差下的表中指定单个信号容差。该表包含模型中启用了信号记录的所有信号。如果您在打开定点工具后记录其他信号,请点击刷新信号来更新信号容差表。在命令行中,使用 addTolerance 方法指定容差。
您可以指定以下任何类型的容差:
绝对容差 - 原始信号和转换设计中的信号之间可接受的最大差的绝对值。
相对容差 - 原始信号和转换设计中的信号之间的最大相对差,以百分比形式指定。例如,值
1e-2表示最大相对差为百分之一。时间容差(秒) - 时间间隔,其中最大值和最小值定义要对照比较的上限值和下限值。
使用任何返回有限非负值的有效 MATLAB® 表达式输入信号容差。 (自 R2023a 起)
您可以使用绝对、相对和时间容差值的任意组合来定义容差带。当您使用多种类型的容差为信号指定容差时,通过为每个数据点选择最宽松的容差结果来计算总容差带。有关如何计算容差的详细信息,请参阅容差计算。
使用 Model Verification 模块
您可以使用启用的 Model Verification 模块来指定对系统行为的约束。
当输入信号保持指定的期望行为时,Model Verification 库中的模块保持 true (1) 断言。如果没有保持 true (1) 断言,则默认情况下该模块会停止仿真并返回一条错误消息。如果新定点实现无法在仿真期间为 Model Verification 模块保持 true (1) 断言,则该组数据类型被视为对该模型不可行,因为它不满足指定的约束。
当使用为数据类型覆盖选择的浮点数据类型仿真模型时,所有 Model Verification 模块必须能够保持 true (1) 断言,以便为模型行为建立基线。
以下示例使用 Model Verification 模块进行数据类型优化。
Optimize Data Types Using Multiple Simulation Scenarios包含一个模型,该模型使用 Assertion 模块来验证布尔信号在仿真期间保持
true (1)值。Image Denoising Using Fixed-Point Quantized Restricted Boltzmann Machine Algorithm包含一个模型,该模型使用 Check Static Range 模块来验证两个信号之间的均方误差保持在指定的阈值范围内。
另请参阅
Optimize Fixed-Point Data Types for a System