fill() in parfor loop

2 visualizzazioni (ultimi 30 giorni)
seb
seb il 18 Apr 2012
I've got ~200,000 polygons to be plotted with fill().
for i=1:size(data,1);
x=data(i,3:2:9);
y=data(i,4:2:10);
f=fill(x,y,data(i,2));
hold on;
end
It works well but takes a bit of time. When I use 'matlabpool open local 4' and change 'for' to 'parfor', I've got no figure output. Any solutions please?
  1 Commento
Sean de Wolski
Sean de Wolski il 18 Apr 2012
Do you actually expect to be able to differentiate 200000 polygons?

Accedi per commentare.

Risposta accettata

Titus Edelhofer
Titus Edelhofer il 18 Apr 2012
Hi,
you should be able to call fill with the corresponding matrices directly, something like
f = fill(data(:, 3:2:9)', data(:, 4:2:10)', data(:,2)');
Titus
  2 Commenti
seb
seb il 18 Apr 2012
Many thanks Titus, it's much quicker as run time is 34s:112s! I really shouldn't have abused for loops.
Titus Edelhofer
Titus Edelhofer il 19 Apr 2012
Hi Seb, your welcome. You might mark the question then as answered, if you think it is ...

Accedi per commentare.

Più risposte (1)

Edric Ellis
Edric Ellis il 18 Apr 2012
Unfortunately, you cannot use a PARFOR loop in this way. The workers cannot create graphics on your client.
  1 Commento
seb
seb il 18 Apr 2012
Many thanks Edric. Still wondering if there's any other way to speedup this tedious job, without parfor.

Accedi per commentare.

Categorie

Scopri di più su Parallel Computing Toolbox in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by