saving graphs by parfor command cause to empty figure
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Yura
el 9 de Feb. de 2015
Comentada: Yura
el 11 de Feb. de 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
0 comentarios
Respuesta aceptada
Edric Ellis
el 10 de Feb. de 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 comentarios
Edric Ellis
el 10 de Feb. de 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
Más respuestas (0)
Ver también
Categorías
Más información sobre Parallel for-Loops (parfor) en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!