Определите Выходной тип Используя входной тип

Следующий пример кода от строк 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 );
        }
    }