1 matlab
为什么在Matlab中创建一个0的矩阵?例如,
A=zeros(5,5);
for i = 1:5
A(i)=exp(i);
end
Run Code Online (Sandbox Code Playgroud)
继j_random_hacker的回答之后,在MATLAB中预先分配一个数组而不是让MATLAB扩展它是更有效的.如果您只是从数组的当前"结束"分配元素,MATLAB可以扩展数组,如下所示:
x = []
for ii=1:1e4
x(ii) = 1/ii;
end
Run Code Online (Sandbox Code Playgroud)
这是非常低效的,因为在循环的每一步,MATLAB将重新分配"x"为比以前更大的一个元素.下面是多快:
x = zeros( 1, 1e4 );
for ii=1:1e4
x(ii) = 1/ii;
end
Run Code Online (Sandbox Code Playgroud)
(在这种情况下x = 1./(1:1e4);,可能最快仍然是:,但是当您无法将事物解析为向量化操作时,预分配路由就是您所需要的)