如何在时间t和t + T之间将表达式集成到simulink块中?

时间:2019-06-21 09:19:24

标签: matlab simulink

我希望在simulink块中集成一个数学表达式,看起来像这样-

enter image description here

为了计算simulink中每个时间步的边界都变化的定积分,我使用simulink的积分器对表达式进行积分,然后在时间步T中添加一个延迟块。我减去了信号值延迟块之前和之后。我想验证我的方法是对还是错?

PS:在积分中,资本T是固定的,而小t是simulink环境的时间步长。 Q和R是尺寸合适的固定矩阵,所有其他信号,即x,u都可以通过其他simulink模块获得。

1 个答案:

答案 0 :(得分:0)

据我了解,我们在这里谈论的是两个集成领域: 1)“ Simulink域”,它沿 t 集成。 2)带自变量 tau 的积分域。 除非您能够将整个问题数学上转换为单个域,否则您需要引入另一个积分器。为此,您可以使用Matlab功能块https://www.mathworks.com/help/simulink/ug/creating-an-example-model-that-uses-a-matlab-function-block.html并使用Matlab提供的ODE求解器(例如ode45)来计算定积分,或者,如果您考虑代码生成并希望拥有更多控制权,请实施自己的积分器(一整套显式RK解算器很容易实现https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods)。

如果 x u 变量在积分区间 tT T 中不是恒定的(即等式中) x:x(tau) u:u(tau)),那么您需要提供可调用的Matlab函数,该函数可计算这些变量。这可能取决于您的其余问题(例如,当 x u 是Simulink模型中集成的信号时)。