定步长(基础采样时间)
定步长求解器的步长
模型配置窗格: 求解器
描述
定步长(基本采样时间)参数指定定步长求解器的步长。
当您将引用模型配置为使用本地求解器时,引用模型的定步长(基本采样时间)参数指定本地求解器的步长。
设置
auto
| 双精度正标量auto
默认情况下,定步长为
auto
。软件根据以下规则确定适合仿真的步长:如果模型包括周期性离散采样时间,则软件会选择等于模型中周期性采样时间的最大公约数的步长。此步长确保仿真在模型中的每个采样时间内都采取一步。
如果模型不包含周期性离散采样时间并指定有限采样时间,则求解器会选择将仿真分为 50 个相等步骤的步长。
如果模型不包括周期性采样时间并将停止时间指定为
Inf
,则仿真使用步长0.2
。如果模型没有周期性采样时间并使用 Sine Wave 或 Signal Generator 模块,则软件还会考虑源模块生成的周期信号的最大频率。计算步长以确保步长不小于模型中周期信号最小周期的三分之一,该周期由最大频率 的倒数确定。
对于具有有限停止时间的仿真,如果最小周期的三分之一小于将仿真分成五十个等步计算出的步长,则仿真使用通过最大频率确定的步长。
对于具有无限停止时间的仿真,如果最小周期的三分之一小于
0.2
,则仿真使用最大频率确定的步长。当模型配置为从指定为
Simulink.op.ModelOperatingPoint
对象的初始状态开始仿真时,软件使用存储在ModelOperatingPoint
对象中的定步长。
当您允许求解器确定定步长时,您可以看到求解器通过几种方式确定的值:
模型编译完成后,求解器信息窗口和工具提示将提供有关求解器和定步长的信息。要查看求解器信息,点击或暂停在 Simulink® 编辑器右下角的求解器信息字符串上。
几个操作会导致模型编译,包括更新模块图和仿真模型。
当使用
get_param
函数获取FixedStep
参数的值时,如果参数值指定为auto
,则该函数返回'auto'
。模型编译完成后,您可以通过使用get_param
函数获取CompiledStepSize
参数的值,以编程方式访问软件选择的定步长。fixedStepSize = get_param("mdlName","CompiledStepSize");
当您将仿真结果作为单个仿真输出对象返回时,
Simulink.SimulationOutput
对象中的元数据包括仿真中使用的定步长。定步长作为模型信息的一部分存储在Simulink.SimulationMetadata
对象中的求解器信息中。simMetadata = out.SimulationMetadata; simModelInfo = simMetadata.ModelInfo; simSolverInfo = simModelInfo.SolverInfo; simFixedStep = simSolverInfo.FixedStepSize;
- 双精度正标量
要使用除
auto
之外的值,请将定步长(以秒为单位)指定为双精度值。指定的步长必须小于或等于模型中的最小离散采样时间,并且模型中的所有离散采样时间都必须能够被指定的步长整除。
当您指定局部求解器的步长时:
局部步长必须小于或等于通信步长,后者决定了父求解器和局部求解器交换数据的速率。
在 R2024a 之前的版本中: 当父求解器是定步长求解器时,局部求解器步长必须为父求解器步长的整数倍。
当局部步长小于通信步长时,通信步长必须能被局部步长整除。
例如,当通信步长为 0.1 秒时,本地求解器可以为 0.1 秒、0.05 秒、0.025 秒等等。
有关详细信息,请参阅Use Local Solvers in Referenced Models。
编程用法
参数:FixedStep |
类型:字符串 | 字符向量 |
值: "auto" | 正标量 |
默认值:"auto" |
参数:CompiledStepSize |
类型:字符串 | 字符向量 |
值:正标量 |
版本历史记录
在 R2006a 之前推出