4

我们正在尝试将仿真模型作为一个模块集成到 Simulink 中。我们有一个自定义的连续块,它加载一个包含函数 Derivatives、Outputs 等的 m 文件。

我的问题是:有没有办法找出当前使用哪个求解器以及使用哪些参数?我们的模型将无法支持可变时间求解器,我想发出警告。同样,模型需要固定的步长进行初始化。

提前致谢。

4

2 回答 2

3

您可以使用获取当前求解器名称

get_param('modelName', 'SolverName');

其他一些常见的求解器参数是

AbsTol
FixedStep
InitialStep
ZcThreshold
ExtrapolationOrder
MaxStep
MinStep
RelTol
SolverMode

您可以通过在您喜欢的文本编辑器中打开.mdl文件并深入研究它来找到您可能希望查询的其他参数。

于 2012-08-08T16:14:30.010 回答
1

如果我正确理解了您的用例,您正在尝试确定包含您的模块的顶级 simulink 系统的求解器类型(和其他求解器参数)。

我认为以下内容应该给你你想要的:

get_param(bdroot, 'SolverType');  % //Returns 'Variable-step' or 'Fixed-step'
get_param(bdroot, 'FixedStep');   % //Returns the fixed step size

请注意,出于通用性/可重用性的目的,这使用bdroot来标识顶级系统(而不是明确指定此系统的名称)。

如果您想了解有关可以获取/设置的其他模型参数的更多信息,我会查看此文档

此外,我很想知道为什么您的模型不支持可变步长求解器?

于 2012-08-14T00:45:24.913 回答