saving graphs by parfor command cause to empty figure

2 Ansichten (letzte 30 Tage)
Yura
Yura am 9 Feb. 2015
Kommentiert: Yura am 11 Feb. 2015
Hi,
I want to save 12 graphs created in other functions with using the "parfor" command. For this I collect all the handles in a single function named "SaveGraphs". Since the command "print" takes a long of time, I decided to apply the "parfor". My code looks as following
function SaveGraphs(f1,f2,...,f12)
graphs=[f1;f2;...f12];
filePath={'path1';'path2;...'path12'};
SizeVec= matrix 12 X 2 with appropriated sizes
for k=1:length(graphs)
set(figure(graphs(k)),'PaperUnits','inches','PaperPosition',[0 0 SizeVec(k,:)])
print(graphs(k),'-dpng','-r1',filePath{k})
end
parfor k=1:length(graphs)
print(figure(graphs(k)),'-dpng','-r1',filePath{k})
end
The graphs are saved but they are empty. Any hint at a solution?
If I change the "parfor" to "for", it works.
Thanks in advance for helping

Akzeptierte Antwort

Edric Ellis
Edric Ellis am 10 Feb. 2015
If I've understood correctly, you are creating the figures at the client and trying to call print from the workers. This will not work because the workers are separate MATLAB processes, and cannot access the figures defined at the client. To do something like this, you need the workers to create the figures and then call print.
  5 Kommentare
Edric Ellis
Edric Ellis am 10 Feb. 2015
I'm not entirely sure what you're after, but how about something like this:
parfor idx = 1:10
f = gcf();
clf(f);
subplot(1,2,1);
imagesc(magic(idx));
subplot(1,2,2);
peaks(10*idx);
print('-dpng', sprintf('fig%d.png', idx));
end
Yura
Yura am 11 Feb. 2015
In this case it not helps me because I create graphs out of function. In any case thanks for answer

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Parallel for-Loops (parfor) finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by