fill() in parfor loop

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 件のコメント

Sean de Wolski
Sean de Wolski 2012 年 4 月 18 日
Do you actually expect to be able to differentiate 200000 polygons?

サインインしてコメントする。

 採用された回答

Titus Edelhofer
Titus Edelhofer 2012 年 4 月 18 日

1 投票

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 件のコメント

seb
seb 2012 年 4 月 18 日
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 2012 年 4 月 19 日
Hi Seb, your welcome. You might mark the question then as answered, if you think it is ...

サインインしてコメントする。

その他の回答 (1 件)

Edric Ellis
Edric Ellis 2012 年 4 月 18 日

2 投票

Unfortunately, you cannot use a PARFOR loop in this way. The workers cannot create graphics on your client.

1 件のコメント

seb
seb 2012 年 4 月 18 日
Many thanks Edric. Still wondering if there's any other way to speedup this tedious job, without parfor.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeParallel Computing Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by