【问题标题】:Getting the solver type and step size (for fixed step solvers)获取求解器类型和步长(对于固定步长求解器)
【发布时间】:2012-08-05 19:12:16
【问题描述】:

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

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

提前致谢。

【问题讨论】:

  • 时间步长:可以在配置中放一个变量(如Ts)作为时间步长,只需要在初始化时(如在init回调中)设置,即可再次使用稍后在其他区块中。

标签: matlab simulink


【解决方案1】:

您可以使用

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

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

AbsTol
FixedStep
InitialStep
ZcThreshold
ExtrapolationOrder
MaxStep
MinStep
RelTol
SolverMode

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

【讨论】:

    【解决方案2】:

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

    我认为以下内容应该可以满足您的需求:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2014-11-01
      • 1970-01-01
      相关资源
      最近更新 更多