2015-07-16 3 views
0

Я использую S-функцию уровня 1 Matlab несколько раз в модели, но не хочу взаимной перезаписи глобальных/постоянных переменных.Level1 Matlab S-function - «Рабочие векторы»

Решение может быть рабочим вектором, но имеется небольшая документация об объектах работы S-функции уровня 1. Где я могу получить SimStruct S для функции ssSetNumRWork?

Спасибо!

ответ

1

Правильная вещь - это модернизировать код, чтобы быть S-функцией уровня 2, что не должно быть сложно.

S-функции уровня 1 не имеют рабочих векторов (и все функции ssGet/Set для S-функций в любом случае). Причина, по которой они больше не рекомендуются, заключается в том, что они имеют ограниченную функциональность - нет никакого хорошего способа обойти это без использования функциональности уровня 2.

Вы можете использовать постоянные переменные (в пределах каждой подфункции S-функции уровня 1). Но точка глобальных переменных, чтобы их можно было увидеть повсюду, поэтому попытка использовать их, не желая видеть их, кажется бессмысленной. (Примечание: в любом случае вы никогда не должны использовать глобальные переменные.)

Сказав, что если вы действительно хотите использовать функциональность уровня 1, то в каждой S-функции вы можете использовать функции getappdata и setappdata, чтобы действовать как рабочий вектор место хранения. Но если вы решите пойти на эту проблему, в любом случае обновление до S-функции уровня 2 будет проще.

+0

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

+0

См. [S-Functions MATLAB для написания уровня 2] (http://www.mathworks.com/help/simulink/sfg/writing-level-2-matlab-s-functions.html) doc для примера работы Векторы и способы их использования. –

+0

Возможно ли, что время выполнения функции s-уровня уровня 2 больше, чем у уровня 1, даже если это «тот же» код? от 1мин до 2 мин .. – user4672571

Смежные вопросы