mdlSetWorkWidths

Задайте размеры рабочих векторов и создайте параметры времени выполнения, необходимые для этой S-функции C MEX

Необходимый

Нет

Языки

C, C++

Синтаксис

#define MDL_SET_WORK_WIDTHS
void mdlSetWorkWidths(SimStruct *S)

Аргументы

S

SimStruct, представляющий блок S-Function.

Описание

Simulink® engine вызывает этот необязательный метод, чтобы включить эту 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-функции C MEX, использующей векторы DWork, см. в файле sfun_rtwdwork.c используется в модели Simulink sfcndemo_sfun_rtwdwork.

Представлено до R2006a