Hello guys, My code works with recursion, receiving an image as input, but it's taking a really long time to process it. I wonder if is there anything I can do to speed it up.
Here is the code:
ROTULO=0;
for i=xi:xf
for j=yi:yf
if(out(i,j,1)==-1)
ROTULO=ROTULO+1;
rotular(i,j);
end
end
end
And the function rotular:
function rotular(w,z)
out(w,z,1)=ROTULO;
if(w < xf && out(w+1,z,1)==-1)
rotular(w+1,z);
end
if(z < yf && out(w,z+1,1)==-1)
rotular(w,z+1);
end
if(w > xi && out(w-1,z,1)==-1)
rotular(w-1,z);
end
if(z > yi && out(w,z-1,1)==-1)
rotular(w,z-1);
end
end
The variable out is a matrix corresponding to the input image. I'm running MATLAB R2015b on Windows 8.1, 64-bit, 6.0GB RAM, Intel i5-3470S CPU @ 2.90GHz I'm not having any trouble concerning RAM. I am also not getting any errors. Just want to improve the performance.
Thanks.

 採用された回答

Walter Roberson
Walter Roberson 2016 年 3 月 4 日

1 投票

In MATLAB, passing parameters explicitly is a little more efficient than shared variables, so it would be a little more efficient to pass in ROTULO and to return "out" from rotular
Shared variables are not so bad -- much more efficient than global -- but explicit variables are faster.
Also, R2015b apparently improved the efficiency of recursive routines.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Simscape Driveline についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by