Why my level 2 s function runs very slow when the simulink is about taking the first step of integration?
6 views (last 30 days)
I implemented a block on level 2 s-function (implemented in m file) that does the same job as the built-in state-space function. When I compared the result, they produced the same result. However when I compared the elapsed time I noticed that my s function run slower than simulink build in block (in particular if the size of systems is very large (4000 states)). I noticed that the long simulation time occurs before simulink taking the first step of integration. After the first step, it run at comparable speed to state-space build in block. I realized it may be caused by the inefficiency in implementation. But any other reason for this?
Birdman on 18 Oct 2017
In the generated code, Level 2 S-function is called upon a pointer called SimStruct, which is used to call the output function of the system. Therefore, this situation slows down the application. To get rid of this, you can inline the S-function by either using S-Function Builder in Simulink from User Defined Functions library, or you can write a tlc file for your S-function by hand which is harder and requires more effort. For detailed information and documentation, please see the following links.