S-function input ports with different variable dimensions

Hi all,
I am writing a C S-function for Simulink, with two input ports. The width of both ports is set to DYNAMICALLY_SIZED, because the input is a one dimensional vector with 1 or 4 elements. Everything goes well as long as both input signals have the same dimension (1 or 4). However, when the input signals have different dimensions (1 for the first and 4 for the second, or vice versa) the S-function doesn't run. There is an error which says that the input port is vector with 1 element, allthough the signal that goes to the input port is a vector with 4 elements.
Does anyone have an idea on what I am doing wrong, or what might be the solution to this problem?

 채택된 답변

Kaustubha Govind
Kaustubha Govind 2013년 2월 26일
The documentation suggests that you implement mdlSetInputPortDimensionInfo. Please try adding these lines to your S-function:
#define MDL_SET_INPUT_PORT_DIMENSION_INFO
#if defined(MDL_SET_INPUT_PORT_DIMENSION_INFO) && defined(MATLAB_MEX_FILE)
void mdlSetInputPortDimensionInfo(SimStruct *S, int_T port,
const DimsInfo_T *dimsInfo)
{
if (!ssSetInputPortDimensionInfo(S, port, dimsInfo)) return;
}
#endif

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Simulink Coder에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by