How can I write a Level-2 MATLAB S-Function where the input and output

G
grense_ehtha_shah · Oct 22, 2021 · 2.5K views
Question
How can I write a Level-2 MATLAB S-Function where the input and output might have unknown dimensions, or even be variable-size signals?   I need to write a Level-2 MATLAB S-Function where the input and/or output dimensions are unknown, and might also change during simulation.   Specifically, I would like to implement the two following scenarios:   A) Input: 1-D array of unknown fixed size. Two outputs: sorted array, and sum of all the elements.   B) Same as A), but the size of the array might vary during simulation.
Expert Answer
Profile picture of Kshitij Singh
Kshitij Singh PhD Expert
Answered Aug 17, 2026
A)
 
In the setup function of your MATLAB S-Function, you need to configure port properties to be inherited or dynamic:
 
>> block.SetPreCompInpPortInfoToDynamic;>> block.SetPreCompOutPortInfoToDynamic;
 
You can then override the only properties that you known, as for example:
 
>> block.InputPort(1).DatatypeID  = 0;>> block.InputPort(1).Complexity  = 'Real';>> block.InputPort(1).DirectFeedthrough = true;
 
>> block.OutputPort(1).DatatypeID  = 0;>> block.OutputPort(1).Complexity  = 'Real';>> block.OutputPort(2).Dimensions  = 1;>> block.OutputPort(2).DatatypeID  = 0;>> block.OutputPort(2).Complexity  = 'Real';
 
Note how the field 'Dimensions' has not been set for InputPort(1) and OutputPort(1).
 
B)
 
Similar to A), but the required input and output ports need to be configured so that they can handle variable-size signals:
 
>> block.InputPort(1).DimensionsMode  = 'Variable';>> block.OutputPort(1).DimensionsMode  = 'Variable';
 
In addition, in the Outputs function, you need to set the current dimensions of the output port:
 
>> block.OutputPort(1).CurrentDimensions = block.InputPort(1).CurrentDimensions;
 
 
For further details, please refer to the attached files:
 
A) matlabSfunUnknownSize.m and simpleTestMsfUnknownSize.slx
 
B) matlabSfunVarSize.m and simpleTestMsfVarSize.slx
 
and simulate the models step-by-step.
100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!