Выход Simout из команды sim, вызванной из функционального блока Matlab в Simulink

Я пытаюсь смоделировать модель "inner.mdl" (несколько временных шагов) за один временной шаг корневой модели "outer.mdl". Я подумал о вызове simout = sim("inner.mdl") из функционального блока Matlab. Проблема в следующем: поскольку я использую внешнюю sim-карту (в обход генерации кода), simout возвращается как MxArray, и я не могу извлечь из него зарегистрированные сигналы. Любые идеи будут оценены, будь то моделирование в моделировании или получение зарегистрированных сигналов с использованием метода, который я пытаюсь использовать.

Основная причина, по которой я это делаю, заключается в том, что как часть контроллера я пытаюсь смоделировать систему на несколько шагов вперед в будущем, чтобы каким-то образом использовать эту информацию. Я не хочу превращать свой контроллер в код, и даже если я избавлюсь от блоков, зависящих от времени моделирования, я не знаю, как запустить блок в течение нескольких временных шагов без того, чтобы вся модель продвигалась вперед во времени.


person EdibleRobot    schedule 20.05.2014    source источник
comment
Очень сложно ответить на такой вопрос, исходя из общего описания того, что вы пытаетесь сделать. Покажите, как именно вы что-то делаете и как вы терпите неудачу, или будьте более конкретными.   -  person Dennis Jaheruddin    schedule 21.05.2014
comment
Jusr напишите m-кодовую S-функцию. Тогда у вас не будет проблем с вводом данных.   -  person Phil Goddard    schedule 21.05.2014


Ответы (1)


Обычно, если вы инициализируете переменную значением 0 или эквивалентным до вызова внешней функции, которая возвращает эту переменную, переменная будет иметь тип double, а не MxArray. Не уверен, что это работает для simout, поскольку я, кажется, помню, что simout - это структура. Все еще стоит попробовать.

См. Работа с mxArrays в документацию для более подробной информации.

person am304    schedule 21.05.2014