MATLAB: Matlab function Interface Error

interface errorsimulink

I have a function which accepts 2 inputs (scalar) and outputs an array of values. I have to use this in Simulink by using the Matlab Function block. The input value can vary and the output array size depends on that. This function is for Curve generation (computing an integral using trapezoidal approximation). I did define the outputs as variable size using the ports and data manager, and also by 'coder.varsize'. However this error still remains. Does anyone has any idea?
MATLAB Function Interface Error: Unable to propagate the variable-size mode from the input 'MATLAB Function' of 'MATLAB Function'. This input expects a fixed-size mode. The variable-size mode originates from 'trapapprox_clo/MATLAB Function/ SFunction '. Examine the configurations of 'MATLAB Function' for one of the following scenarios: 1. The block does not support variable-size signals 2. The block supports variable-size signals but needs to be configured for them. You can enable variable-sizing for 'MATLAB Function' from the ports and data manager dialog.

Best Answer

Signals that change size during simulation are called variable-size signals in Simulink. You need to configure your MATLAB Function block's output as a variable-size signal and specify the maximum possible (upper bound) size of the signal in the Ports and Data Manager, since Simulink does not support dynamic allocation of memory, and uses the upper bound to allocate memory for the output instead. Please see