我们正在尝试将模拟模型集成到Simulink中作为块。我们有一个自定义连续块,它加载一个包含Derivatives,Outputs等函数的m文件。
我的问题是:有没有办法找出目前使用哪种求解器以及哪些参数?我们的模型将无法支持变量时间求解器,我想发出警告。同样,模型需要固定的步骤时间进行初始化。
提前致谢。
答案 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。
此外,我很想知道为什么你的模型不支持变步长求解器?