【问题标题】:How to integrate an expression inside simulink block between time t and t+T?如何在时间 t 和 t+T 之间集成 simulink 块内的表达式?
【发布时间】:2019-11-04 03:04:37
【问题描述】:

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

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

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

【问题讨论】:

    标签: matlab simulink


    【解决方案1】:

    据我了解,我们在这里讨论的是两个集成领域: 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)计算定积分,或者,如果您考虑代码生成并希望拥有更多控制权,请实现您自己的积分器(a显式 RK 求解器系列的实现相当简单 https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods)。

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

    【讨论】:

    • 嗨!感谢您的回复,我相信整合只发生在一个变量上。
    猜你喜欢
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2015-11-15
    • 2016-09-07
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多