Для меня я нашел решение.
Я использовал переменную M
для хранения массы объекта. И из simulink я только что вызвал M в вызовах функций. Например:
Но вызов функции Rho в блоке MATLAB Function
выглядит так:
Этот подход работает, только если M является статическим. Теперь я хочу динамически изменить M
. Итак, сначала я решил, что могу сделать M
глобальным и изменить его. Я написал функцию, создал функциональный блок, который вычислял новое значение M
и устанавливал его для глобальной переменной M
. Но это не сработало. Вы не можете одновременно использовать и изменять одну глобальную переменную в Simulink.
Так что я решил изменить весь подход. Поскольку M
теперь не является статическим параметром, я должен сделать M
в качестве сигнала. Так что теперь это выглядит так:
Здесь в блоке Constant
M
получает из рабочей области (или из некоторого файла init.m), а затем Simulink работает не с переменной M
из рабочей области, а с локальным сигналом M