Если все, что требуется, это выполнить модель с помощью команды sim
, я бы сказал, что это будет кандидатом на создание S-функции.Если у вас есть набор инструментов Real Time Workshop, вы можете щелкнуть правой кнопкой мыши подсистему верхнего уровня, выбрать Real-Time Workshop
, а затем Generate S-Function
.Это создаст модель S-функции, которую вы можете сохранить как библиотеку и использовать в файле y.mdl
вместо блока верхнего уровня.Этот метод будет генерировать и компилировать C-код, который будет выполняться намного быстрее, чем исходная модель.
Если вам нужно инициализировать определенные параметры, вы можете использовать маску Simulink и Simulink.Parameter
.Сначала создайте подсистему, которую вы хотите смоделировать.Затем замаскируйте подсистему, щелкнув правой кнопкой мыши по подсистеме и нажав Mask Subsystem
.Любой параметр, который вы хотите изменить, должен быть сопоставлен с маской.Итак, если в вашей модели 3 переменные, a
, b
и c
.В редакторе масок перейдите на вкладку параметров и введите данные, подобные следующим:
![Mask Editor](https://i.stack.imgur.com/mFw4o.png)
Затем в рабочей области введите Simulink.Parameter
s для своих переменных:
a_var = Simulink.Parameter;
a_var.Value = 42;
b_var = Simulink.Parameter;
b_var.Value = 4;
c_var = Simulink.Parameter;
c_var.Value = 2;
Конечно, любое нужное вам значение - точное, скалярное, массивное, матричное и т. Д. Затем введите эти имена переменных в маску подсистемы:
![Enter Mask Data](https://i.stack.imgur.com/WIeqM.png)
Затем, когда выщелкните правой кнопкой мыши, чтобы превратить в S-функцию, вы получите:
![RTW Screen](https://i.stack.imgur.com/YvPnK.png)
Отметьте все из них для настройки.Затем, когда вы запускаете свой скрипт, перед началом симуляции инициализируйте переменные в рабочей области следующим образом:
evalin('base','a_var.Value = 22')
Это не мой любимый метод, но он работает.Надеюсь, это приведет вас туда, куда вам нужно.