Plots via s-function

11 views (last 30 days)
Tobias Gemaßmer
Tobias Gemaßmer on 24 Nov 2011
Hello,
I've written a Level2 S-Function, that plots space vector diagramms during my Simulink simulations. This is working so far, but the problem is that the execution time of the s-function slows down my simulation due to the matlab interpreter.
So my question is, is there any way to create and modify matlab-figures with a mex S-Function? After a lot of searching, I could not find any commands for doing that.
Thank you for your help
Tobias Gemaßmer

Accepted Answer

Titus Edelhofer
Titus Edelhofer on 24 Nov 2011
Hi Tobias,
hmm, then there is indeed not much more that can be done ... writing the S-function in C will not make much of a difference in this case I guess. You might profile your S-function (just call
profile on
before running the simulation and
profile report
afterwards. The report should show up the time spent in your S-Function. I don't expect much interesting there, but just to be sure ...
Titus

More Answers (3)

Titus Edelhofer
Titus Edelhofer on 24 Nov 2011
Hi Tobias,
not really. What I would suggest is to reduce the sample time of the output so that the S-function (plotting) is not done every time step but e.g. every 10th step only ...
Second: how does the plotting work, do you redraw the entire plot every time step (plot(x,y)), or (preferably) do you store the handle of the plot in some work vector and do only update the line, something like
set(h, 'xdata', newXData, 'ydata', newYData);
This is usually significantly faster.
Titus

Tobias Gemaßmer
Tobias Gemaßmer on 24 Nov 2011
Hi Titus
thank you for your answer.
Since the plot is a space-vector-diagram, it consits of a couple of lines. I store the handle of every line in a work vector and update the x and y data. I already reduced the sample time of the S-function, which speeded up the simulation, but for me was kind of dissatisfactory.

Tobias Gemaßmer
Tobias Gemaßmer on 25 Nov 2011
Hi Titus,
By using the profiler, I recognized, that most of the calculation time is needed on some function according to the legend. So I was able to speed up the update function of my figure by having a static legend using
% Static legend
set(gca,'LegendColorbarListeners',[]);
setappdata(gca,'LegendColorbarManualSpace',1);
setappdata(gca,'LegendColorbarReclaimSpace',1);
So anyway, my function doesn't slow down the simulation any more. Thank you for your good advice
Tobias
  1 Comment
Titus Edelhofer
Titus Edelhofer on 25 Nov 2011
Good to hear, so I guess the question might be seen as answered ...

Sign in to comment.

Categories

Find more on Block and Blockset Authoring in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!