Правильная вещь - это модернизировать код, чтобы быть S-функцией уровня 2, что не должно быть сложно.
S-функции уровня 1 не имеют рабочих векторов (и все функции ssGet/Set для S-функций в любом случае). Причина, по которой они больше не рекомендуются, заключается в том, что они имеют ограниченную функциональность - нет никакого хорошего способа обойти это без использования функциональности уровня 2.
Вы можете использовать постоянные переменные (в пределах каждой подфункции S-функции уровня 1). Но точка глобальных переменных, чтобы их можно было увидеть повсюду, поэтому попытка использовать их, не желая видеть их, кажется бессмысленной. (Примечание: в любом случае вы никогда не должны использовать глобальные переменные.)
Сказав, что если вы действительно хотите использовать функциональность уровня 1, то в каждой S-функции вы можете использовать функции getappdata и setappdata, чтобы действовать как рабочий вектор место хранения. Но если вы решите пойти на эту проблему, в любом случае обновление до S-функции уровня 2 будет проще.
OK! я попробую обновить, используя это [link] (http://de.mathworks.com/help/simulink/sfg/maintaining-level-1-matlab-s-functions.html#bq3i98j) - есть элементарные w.v. [link] (http://de.mathworks.com/help/simulink/sfg/elementary-work-vectors.html), но как получить доступ, например. «RWork» в matlab, если ssGet/Set для C? – user4672571
См. [S-Functions MATLAB для написания уровня 2] (http://www.mathworks.com/help/simulink/sfg/writing-level-2-matlab-s-functions.html) doc для примера работы Векторы и способы их использования. –
Возможно ли, что время выполнения функции s-уровня уровня 2 больше, чем у уровня 1, даже если это «тот же» код? от 1мин до 2 мин .. – user4672571