fill() in parfor loop

3 Ansichten (letzte 30 Tage)
seb
seb am 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 Kommentar
Sean de Wolski
Sean de Wolski am 18 Apr. 2012
Do you actually expect to be able to differentiate 200000 polygons?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Parallel Computing Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by