簡體   English   中英

預分配struct,matlab

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM