我有一个带有许多控制输入的simulink过程模型。 我使用了许多susbsytems(m-file block in series and parallel)对流程模型建模,并使用每个子系统的集成器完成集成。
我可以运行此模型并获取状态和输出(Is is possible to programmatically play a Simulink model and measure its states?),但我还希望能够有时获得状态的时间导数。
例如,如果我正在运行optimal control problem,我需要一个以编程方式返回状态变量导数以用作约束的函数。理想情况下,我会重复使用相同的模型,但不使用simulink软件进行集成。
我想我可以将输入收集到模型中的每个积分器中并将其用作衍生物,但这是一种可怕的方式(难以维护,对于初学者而言)。
答案 0 :(得分:0)
运行simulink时遇到同样的问题,您可能会发现以下命令很有用:
[sys,x0,str,ts] = model([],[],[],'sizes');
[sys,x0,str,ts] = model([],[],[],'compile');
outputs = model(t,x,u,'outputs');
derivs = model(t,x,u,'derivs');
dstates = model(t,x,u,'update');
model([],[],[],'term');
有关详细信息,请参阅页面:https://www.mathworks.com/help/simulink/slref/model_cmd.html