我们正在尝试将仿真模型作为一个模块集成到 Simulink 中。我们有一个自定义的连续块,它加载一个包含函数 Derivatives、Outputs 等的 m 文件。
我的问题是:有没有办法找出当前使用哪个求解器以及使用哪些参数?我们的模型将无法支持可变时间求解器,我想发出警告。同样,模型需要固定的步长进行初始化。
提前致谢。
您可以使用获取当前求解器名称
get_param('modelName', 'SolverName');
其他一些常见的求解器参数是
AbsTol
FixedStep
InitialStep
ZcThreshold
ExtrapolationOrder
MaxStep
MinStep
RelTol
SolverMode
您可以通过在您喜欢的文本编辑器中打开.mdl文件并深入研究它来找到您可能希望查询的其他参数。
如果我正确理解了您的用例,您正在尝试确定包含您的模块的顶级 simulink 系统的求解器类型(和其他求解器参数)。
我认为以下内容应该给你你想要的:
get_param(bdroot, 'SolverType'); % //Returns 'Variable-step' or 'Fixed-step'
get_param(bdroot, 'FixedStep'); % //Returns the fixed step size
请注意,出于通用性/可重用性的目的,这使用bdroot来标识顶级系统(而不是明确指定此系统的名称)。
如果您想了解有关可以获取/设置的其他模型参数的更多信息,我会查看此文档。
此外,我很想知道为什么您的模型不支持可变步长求解器?