Установите размерности по умолчанию сигналов, принятых или излучаемых портами S-функции MEX C
Нет
C, C++
#define MDL_SET_DEFAULT_PORT_DIMENSION_INFO
void mdlSetDefaultPortDimensionInfo(SimStruct *S)
S
SimStruct, представляющий блок S-Function.
Simulink® engine вызывает этот метод во время распространения размерности сигнала, когда модель не предоставляет достаточной информации, чтобы определить размерность сигналов, которые могут войти или покинуть блок, представленный 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
для примера использования этой функции.