MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

# determine axis limits *before* plotting..?

Hi everyone,

I need to determine the y-axis limits "before" rendering my plot, b/c the elements are rendered in a loop, one at a time. xlim() isn't any use in this case. Will I have to reverse-engineer MATLAB's algorithm, or is there another approach?

Oleg Komarov on 9 Sep 2012

I don't understand your question. Can't you use xlim after the loop?

Brad Stiritz on 9 Sep 2012

Hi Oleg,

Thanks for your question. Let me clarify: within the rendering loop, MATLAB is forced to reset the y-axis limits & re-render the whole plot each time a new figure element is drawn which exceeds the current limits. Doing this hundreds of times for a single plot is significantly time-consuming.

Therefore, as I said, I want to determine & set the y-axis limits via ylim() "before" the rendering loop. Does this make sense?

Oleg Komarov on 9 Sep 2012

## Products

Answer by Jan Simon on 9 Sep 2012
Edited by Jan Simon on 10 Sep 2012

Yair has explained some tricks to http://undocumentedmatlab.com/blog/plot-performance/. You can set the XLimMode of the current axes to 'fixed' and let Matlab determine the limits at the end only by resetting it to 'auto'.

Brad Stiritz on 9 Sep 2012

Jan, thanks, I this this might work for me. I'll test out & report back here.

Brad Stiritz on 10 Sep 2012

Yair, thanks for the very helpful blog postings. Your work is greatly appreciated, as always!

Answer by Image Analyst on 9 Sep 2012

You can save the y and x limits for the current axes at any time by using the ylim and xlim functions:

```% Save initial limits.
initial_ylim_values = ylim();
initial_xlim_values = xlim();
% Now plot something that will change the ylimits
plot(x, y); % Some y that will change the y limits.
after_ylim_values = ylim();
after_xlim_values = xlim();
```