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