Установите размерности по умолчанию сигналов, принятых или испускаемых MEX C порты S-функции
Нет
C, C++
#define MDL_SET_DEFAULT_PORT_DIMENSION_INFO
void mdlSetDefaultPortDimensionInfo(SimStruct *S)
S
SimStruct, представляющий Блок s-function.
Механизм Simulink® вызывает этот метод во время распространения размерности сигнала, когда модель не предоставляет достаточно информации, чтобы определить размерность сигналов, которые могут ввести или оставить блок представленным S
. Этот метод должен установить размерности любых портов ввода и вывода, которые динамически измерены к значениям по умолчанию. Этот метод только допустим для симуляции и должен быть заключен в оператор #if defined(MATLAB_MEX_FILE)
.
Если S-функция не реализует этот метод, механизм пытается найти набор размерностей, которые удовлетворят правила распространения размерности, реализованные с помощью mdlSetInputPortDimensionInfo
и mdlSetOutputPortDimensionInfo
. Этот процесс не может смочь произвести допустимый набор размерностей для S-функций со специальными требованиями размерности.
Механизм вызывает ошибку, если метод mdlSetDefaultPortDimensionInfo
пытается изменить размерности порта, когда размерности были ранее заданы mdlSetInputPortDimensionInfo
или mdlSetOutputPortDimensionInfo
. Если S-функция имеет несколько портов ввода или вывода, mdlSetDefaultPortDimensionInfo
должен проверять, являются ли размерности порта все еще динамическими прежде, чем попытаться установить размерности. Например, mdlSetDefaultPortDimensionInfo
использует следующие строки, чтобы проверять, неизвестны ли размерности первого выходного порта все еще.
if (ssGetOutputPortWidth(S, 0) == DYNAMICALLY_SIZED) { ssSetOutputPortMatrixDimensions(S, 0, 1, 1 ); }
Смотрите sfun_matadd.c
для примера того, как использовать эту функцию.