Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Looping a function m-file, figures not closing

Asked by Michael on 20 Nov 2011

Hi,

I'm running a script which repeatedly calls a function I wrote (using a for loop). In this function there is a command to plot some data, save it to a .jpg, save the workspace to a .mat, then close the figure.

If I run the function on its own it does all this perfectly, but when I run the script, the function plots the image, saves it, but doesn't close it. The figure hangs there until it's time to plot it again in the next iteration.

I can't work out why MATLAB is not processing this command.

side question: is there a way to plot an image, save it, but not actually have it pop up? This code takes hours to run and it keeps minimising my screen when I'm watching the TV!

Thanks,

Mike

0 Comments

Michael

Products

No products are associated with this question.

3 Answers

Answer by Jan Simon on 20 Nov 2011
Accepted answer

I assume a DRAWNOW after closing the figure might solve the problem.

Opening new figures needs a lot of time. It is much faster to open one figure only and update the axes only, or even better the drawn object:

tic;
for i = 1:100
  FigH = figure;
  plot(1:10, rand(1, 10));
  drawnow;
  delete(FigH);
end
toc;
% >> Elapsed time is 15.660328 seconds.
tic;
FigH = figure;
LineH = plot(1:10, rand(1, 10));
for i = 1:100
  set(LineH, 'YData', rand(1, 10));
  drawnow;
end
toc;
% >> Elapsed time is 0.914224 seconds.

0 Comments

Jan Simon
Answer by Naz on 20 Nov 2011

Try to make the figure invisible:

set(gcf, 'Visible', 'off') 

0 Comments

Naz
Answer by Michael on 21 Nov 2011

Thanks, both comments helped.

0 Comments

Michael

Contact us