Задайте размеры векторов работы и создайте параметры периода выполнения, требуемые этой S-функцией MEX C
Нет
C, C++
#define MDL_SET_WORK_WIDTHS
void mdlSetWorkWidths(SimStruct *S)
S SimStruct, представляющий Блок s-function.
Механизм Simulink® вызывает этот дополнительный метод, чтобы позволить этой S-функции установить размеры состояния и работать векторы, что это должно хранить глобальные данные и создать параметры периода выполнения (см., Создают и Параметры периода выполнения S-функции Обновления). Механизм вызывает этот метод после того, как это определило ширину входного порта, ширину выходного порта и частоты дискретизации S-функции. Это позволяет S-функции измерять состояние и работать векторы на основе номера и размеров вводов и выводов и/или количества частот дискретизации. Этот метод задает состояние, и работайте векторные размеры через макросы ssGetNumContStates, ssSetNumDiscStates, ssSetNumRWork, ssSetNumIWork, ssSetNumPWork, ssSetNumModes и ssSetNumNonsampledZCs.
S-функция C-MEX должна реализовать этот метод, только если это не знает размеров всех векторов работы, которых требуется, когда механизм вызывает метод mdlInitializeSizes функции. Если эта S-функция реализует mdlSetWorkWidths, она должна инициализировать размеры любого, работают векторы, в которых она нуждается к DYNAMICALLY_SIZED в mdlInitializeSizes, даже для тех, точный размер которых она знает в той точке. S-функция должна затем задать фактический размер в mdlSetWorkWidths. Этот метод только допустим для моделирования и должен быть заключен в оператор #if defined(MATLAB_MEX_FILE).
Для полного примера S-функции MEX C с помощью векторов DWork смотрите файл sfun_rtwdwork.c, используемый в модели Simulink sfcndemo_sfun_rtwdwork.