Следующий пример кода от линий 243 - 261 из sfun_user_fxp_asr.c
дает пример использования типа данных входа к вашей S-функции, чтобы вычислить тип выходных данных. Заметьте, что в этом коде
Выход подписывается или без знака, чтобы совпадать с входом (a)
.
Выход является тем же размером слова как вход (b)
.
Дробная продолжительность выхода зависит от входной длины части и количества рабочих смен (c)
.
#define MDL_SET_INPUT_PORT_DATA_TYPE static void mdlSetInputPortDataType(SimStruct *S, int port, DTypeId dataTypeIdInput) { if ( isDataTypeSupported( S, dataTypeIdInput ) ) { DTypeId dataTypeIdOutput; ssSetInputPortDataType( S, port, dataTypeIdInput ); dataTypeIdOutput = ssRegisterDataTypeFxpBinaryPoint( S, ssGetDataTypeFxpIsSigned( S, dataTypeIdInput ),(a)
ssGetDataTypeFxpWordLength( S, dataTypeIdInput ),(b)
ssGetDataTypeFractionLength( S, dataTypeIdInput ) - V_NUM_BITS_TO_SHIFT_RGHT,(c)
0 /* false means do NOT obey data type override setting for this subsystem */ ); ssSetOutputPortDataType( S, 0, dataTypeIdOutput ); } }