Azzera filtri
Azzera filtri

How to improve speed when printing multiple images inside a for loop

5 visualizzazioni (ultimi 30 giorni)
My code generates a figure on each iteration of a for loop, which is printed to a png file each time. Is there a way to speed up this process by letting Matlab continue with the loop while the printing is ongoing? (like a fork-join kind of flow). Any help will be welcome. Example code:
for k=1:10
aux = randn(1e3);
fh = figure('visible','off'); imagesc(aux);
print(fh,'-dpng','-r0','./temp.png'); close(fh)
end
  2 Commenti
Rik
Rik il 1 Feb 2018
You are overwriting the image on each loop iteration. And have you tried parfor?
Mario A
Mario A il 1 Feb 2018
The actual code within the for loop (not the example I wrote above) is not compatible with parfor (neither it overwrites the image each time).

Accedi per commentare.

Risposta accettata

Mario A
Mario A il 1 Feb 2018
I just found a solution form the parallel computing toolbox, which is the use of parfeval function. This function allows an asynchronous running of another function. The original example is optimized by writing
for k=1:10
aux = randn(1e3);
fh = figure('visible','off'); imagesc(aux);
parfeval(@print,0,fh,'-dpng','-r0','./temp.png'); close(fh)
end

Più risposte (1)

Rik
Rik il 2 Feb 2018
It is also possible print is inherently slower than it could be, in which case the screencapture FEX submission by Yair Altman might result in a speed increase. You can even use that parfeval in combination with this.

Categorie

Scopri di più su Images in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by