fill() in parfor loop

4 visualizaciones (últimos 30 días)
seb
seb el 18 de Abr. de 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 comentario
Sean de Wolski
Sean de Wolski el 18 de Abr. de 2012
Do you actually expect to be able to differentiate 200000 polygons?

Iniciar sesión para comentar.

Respuesta aceptada

Titus Edelhofer
Titus Edelhofer el 18 de Abr. de 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 comentarios
seb
seb el 18 de Abr. de 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 el 19 de Abr. de 2012
Hi Seb, your welcome. You might mark the question then as answered, if you think it is ...

Iniciar sesión para comentar.

Más respuestas (1)

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

Iniciar sesión para comentar.

Categorías

Más información sobre Parallel Computing Toolbox 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!

Translated by