0

我已经仔细阅读了 Mathworks 文档,并尝试在论坛上找到解决方案。但是,我还没有找到解决我的问题的方法。

我正在使用 Matlab/Simulink 来模拟车辆的动力学,该车辆在运行期间拾取物体。我打算这样做的方式是:

  • 在模拟开始时自行模拟车辆的运动;
  • 停止模拟,保存最终状态,更新模型参数(让它们现在代表车辆和物体)
  • 从上次运行的结束时间开始再次初始化模拟,并使用以前的最终状态作为新模拟的输入状态。

为此,我一直在使用选项FastRestartSaveFinalState和。不幸的是,模拟无缝运行,但模型参数没有更新。SaveCompleteFinalSimStateupdate

车辆和车辆+车身的动力学由相同的 C 编码 S 函数建模。该函数接收动态方程的参数(例如惯性、阻尼等)作为 S-Function 模块的参数。我认为这是我的方法的主要问题:即使我运行update命令,S-Function 也无法识别工作区中参数的更新。我需要重新编译它吗?我想这在快速重启模式下是不可行的,是吗?

任何建议都非常感谢!谢谢!

4

1 回答 1

0

在不同的情况下,我也有类似的问题。尝试更新旋转关节的初始状态目标,快速重启选项不会更改属性。

我有一些运气使用其他参数在快速重启中更新模型,但是,使用:

set_param('Model_Name','TunableVars','Variable Name')

不确定这是否对您的情况有所帮助,也许将最终状态保存为变量并将相应的变量作为初始参数。

于 2022-02-28T11:34:57.240 回答