获取求解器类型和步长(对于固定步长求解器)

时间:2012-08-08 16:00:46

标签: matlab simulink

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

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以使用

获取当前的求解器名称
get_param('modelName', 'SolverName');

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

AbsTol
FixedStep
InitialStep
ZcThreshold
ExtrapolationOrder
MaxStep
MinStep
RelTol
SolverMode

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

答案 1 :(得分:1)

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

我认为以下内容可以为您提供所需内容:

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

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

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

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