fill() in parfor loop

3 vues (au cours des 30 derniers jours)
seb
seb le 18 Avr 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 commentaire
Sean de Wolski
Sean de Wolski le 18 Avr 2012
Do you actually expect to be able to differentiate 200000 polygons?

Connectez-vous pour commenter.

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (1)

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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Parallel Computing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by