Вычислите производные S-функции MEX C
Нет
C, C++
#define MDL_DERIVATIVES void mdlDerivatives(SimStruct *S)
S
SimStruct, представляющий Блок s-function.
Механизм Simulink® вызывает этот дополнительный метод на каждом временном шаге, чтобы вычислить производные непрерывных состояний S-функции. Этот метод должен сохранить производные в векторе производных S-функции состояния. В S-функции MEX C используйте ssGetdX
, чтобы получить указатель на вектор производных.
Каждый раз, когда стандартная программа mdlDerivatives
называется, она должна явным образом установить значения всех производных. Производный вектор не поддерживает значения от последней возможности до этой стандартной программы. Память, выделенная производному вектору, изменяется во время выполнения.
Если у вас есть Simulink Coder™ при генерации кода для невстроенной S-функции MEX C, которая содержит этот метод, убедитесь, что метод не перенесен в оператор #if defined(MATLAB_MEX_FILE)
. Например:
#define MDL_DERIVATIVES #if defined(MDL_DERIVATIVES) && defined(MATLAB_MEX_FILE) static void mdlDerivatives(SimStruct *S) { /* Add mdlDerivatives code here * } #endif
define
делает метод mdlDerivatives
доступным только для файла MEX MATLAB®. Если S-функция не встраивается, продукт Simulink Coder не может использовать этот метод, приводящий к ссылке или ошибкам времени выполнения.Для примера S-функции MEX C смотрите csfunc.c
c.