Я пытаюсь передать структуру параметров S-функции в MATLAB. У меня есть куча параметров, и я хотел бы избежать их передачи следующим образом:
% Общая форма синтаксиса S-функции MATLAB: % [SYS,X0,STR,TS,SIMSTATECOMPLIANCE] = SFUNC(T,X,U,FLAG,P1,...,Pn)
Я бы предпочел передать единую структуру, включающую все мои параметры. Я загрузил данные в рабочую область модели как:
Сначала я попробовал (в ответ Филу):
функция [sys, x0, str, ts, simStateCompliance] = system1 (t, x, u, флаг, DATA_HMMWV)
размеры.NumInputs = 2;
также,
Но я получаю эту ошибку:
Фил, вот почему я попытался добавить еще один входной порт в S-Function, я думал, что он должен быть там.
Я также пробовал: размеры.NumInputs = 1;
Кроме того, вы уверены, что DATA_HMMWV является параметром? В этом окне он выглядит немного иначе, чем Param:
НОВОЕ:::: 25.01.2016
Фил, проблема не в моей производной функции, проблема в том, что я до сих пор не передаю структуру в функцию. Вот картинка. Обратите внимание, что данные находятся в рабочей области модели, и я передал их (DATA_HMMWV) в функцию, но когда я останавливаю симуляцию в строке 13 (режим отладки), DATA_HMMWV не находится в рабочей области функции.
Если код продолжается (to flag = 1), мы получаем:
Если код продолжает работать, он вылетает с ошибкой:
Итак, в функцию было передано недостаточно входных аргументов. Кроме того, функция очень проста:
% function sys = mdlDerivatives(t,x,u,DATA_HMMWV)
sys = DATA_HMMWV.g;
% end mdlПроизводные
Он просто пытается получить параметр из структуры.
P1
должна иметь тот же тип данных, что и переменная, которую вы передаете, поэтому просто передайте структуру в качестве входных данных. (Для S-функций уровня 2 вам нужно научиться использовать объекты шины.) - person Phil Goddard   schedule 20.01.2016DATA_HMMVW
является параметром. Дважды щелкните блок S-Function и введите имя переменной в строке S-Function Parameters диалогового окна. - person Phil Goddard   schedule 20.01.2016Param
в одном из ваших изображений. Это разные вещи (и объекты Simulink.Parameter не имеют ничего общего с вашей проблемой). - person Phil Goddard   schedule 26.01.2016