Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
struct的预分配,matlab_Matlab - Fatal编程技术网

struct的预分配,matlab

struct的预分配,matlab,matlab,Matlab,matlab中结构的预分配是一个问题。 请参阅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

matlab中结构的预分配是一个问题。 请参阅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 
时间呼叫线路
2 65个尺寸英尺=10000;
<0.01266激光器(sizeofTLS).POI(n)={0};
0.03 2 67激光器(sizeofTLS).dis(n)={0};
0.04268激光器(sizeofTLS)。平面(n)={0};
69
70
<0.01 2 71对于it=1:SizeOffls
16.74 282322172激光器(it).POI(1:n)={0};
16.91 282322173激光器(it).dis(1:n)={0};
16.88 282322174激光器(it)。平面(1:n)={0};
1.04 2823212 75完

如何改进它(72,73,74)?

预分配结构的最佳方法是使用以下语法:

myEmptyCell = num2cell( zeros(1,n) );
b           = repmat( struct('POI', myEmptyCell ,...
                             'dis', myEmptyCell,...
                             'plane', myEmptyCell ) , sizeofTLS, 1 );
这比不在我的笔记本电脑上预分配快约10倍