Как интегрировать выражение внутри блока simulink между временем t и t + T? - PullRequest
0 голосов
/ 21 июня 2019

Я хочу интегрировать математическое выражение внутри блока simulink, которое выглядит примерно так:

enter image description here

Чтобы вычислить определенный интеграл, границы которого меняются с каждым шагом по времени в simulink, я интегрировал выражение внутри интеграла, используя блок интегратора simulink, а затем добавил блок задержки с шагом по времени T. Я вычел значение сигнала до и после задержки блока. Я хотел убедиться, что мой подход правильный или неправильный?

PS: в интеграле заглавная T фиксирована, а малый t - шаг по времени среды Simulink. Q и R являются фиксированными матрицами подходящего размера, и все другие сигналы, а именно, x, u, доступны для меня через другие блоки simulink.

1 Ответ

0 голосов
/ 21 июня 2019

Как я понимаю, мы говорим здесь о двух областях интеграции: 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 (тау) и u: u (тау) ), тогда вам нужно предоставить вызываемый Matlabфункции, которые вычисляют эти переменные. Это, в зависимости от остальной части вашей проблемы, может оказаться невозможным (например, когда x и u являются сигналами, интегрированными в вашу модель Simulink).

...