struct的预分配,matlab
matlab中结构的预分配是一个问题。 请参阅matlab profiler中的以下代码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
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倍