필터 지우기
필터 지우기

Why my level 2 s function runs very slow when the simulink is about taking the first step of integration?

조회 수: 9 (최근 30일)
Hi Guys
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
Birdman 2017년 10월 18일
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.
  댓글 수: 4
Husni Rois Ali
Husni Rois Ali 2017년 10월 19일
Thank you again. But sorry to be honest I am not familiar with this. Just another simple question: If I use matlab functions such as eig(A),svd(A). Is your solution going to work?
Birdman
Birdman 2017년 10월 19일
If you want to use matlab functions, you can embed them in a MATLAB Function in Simulink. You don't have to use them in S-function. The working principle of s-function is little bit different. I suggest you to read some documentation.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

태그

Community Treasure Hunt

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

Start Hunting!

Translated by