Задайте размеры векторов работы и создайте параметры периода выполнения, требуемые этой S-функцией MEX C
Нет
C, C++
#define MDL_SET_WORK_WIDTHS
void mdlSetWorkWidths(SimStruct *S)
S
SimStruct, представляющий Блок s-function.
Simulink® механизм вызывает этот дополнительный метод, чтобы позволить этой S-функции установить размеры состояния и работать векторы, что это должно хранить глобальные данные и создать параметры периода выполнения (см., Создают и Параметры периода выполнения S-функции Обновления). Механизм вызывает этот метод после того, как это определило ширину входного порта, ширину выходного порта и шаги расчета S-функции. Это позволяет S-функции измерять состояние и работать векторы на основе номера и размеров вводов и выводов и/или количества шагов расчета. Этот метод задает состояние, и работайте размеры вектора через макросы ssSetNumContStates
, 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_directlook.c
.