[英]pre allocation for struct ,matlab
在matlab中預先分配struct是一個問題。 請參閱matlab profiler中的以下代碼
time calls line
2 65 sizeofTLS= 10000;
< 0.01 2 66 LaserS(sizeofTLS).POI(n)={0};
0.03 2 67 LaserS(sizeofTLS).dis(n)={0};
0.04 2 68 LaserS(sizeofTLS).plane(n)={0};
69
70
< 0.01 2 71 for it=1:sizeofTLS
16.74 2823212 72 LaserS(it).POI(1:n)={0};
16.91 2823212 73 LaserS(it).dis(1:n)={0};
16.88 2823212 74 LaserS(it).plane(1:n)={0};
1.04 2823212 75 end
我該如何改進它(72,73,74)?
預分配結構的最佳方法是使用以下語法:
myEmptyCell = num2cell( zeros(1,n) );
b = repmat( struct('POI', myEmptyCell ,...
'dis', myEmptyCell,...
'plane', myEmptyCell ) , sizeofTLS, 1 );
這比不在我的筆記本電腦上預分配快約10倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.