Вычислите производные S-функции C MEX
Нет
C, C++
#define MDL_DERIVATIVES void mdlDerivatives(SimStruct *S)
S
SimStruct, представляющий блок S-Function.
Simulink® engine вызывает этот необязательный метод на каждом временном шаге, чтобы вычислить производные непрерывных состояний S-функции. Этот метод должен хранить производные в векторе производных S-функции. В функции MEX S на C используйте ssGetdX
чтобы получить указатель на производный вектор.
Каждый раз, когда mdlDerivatives
вызывается подпрограмма, она должна явно задать значения всех производных. Вектор производной не поддерживает значения от последнего вызова к этой стандартной программе. Память, выделенная производному вектору, изменяется во время выполнения.
Примечание
Если у вас есть Simulink Coder™, при генерации кода для неинлинфицированной S-функции C MEX, которая содержит этот метод, убедитесь, что метод не упакован в #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
метод, доступный только для MATLAB® Файл MEX. Если S-функция не встроена, продукт Simulink Coder не может использовать этот метод, что приводит к ошибкам ссылки или времени выполнения.Пример S-функции на C MEX см. в csfunc.c
.