【发布时间】:2014-02-05 06:30:44
【问题描述】:
我正在尝试提高我尝试运行的脚本的速度。
代码如下:(我的机器=4核win 7)
clear y;
n=100;
x=linspace(0,1,n);
% no y pre-allocation using zeros
start_time=tic;
for k=1:n,
y(k) = (1-(3/5)*x(k)+(3/20)*x(k)^2 -(x(k)^3/60)) / (1+(2/5)*x(k)-(1/20)*x(k)^2);
end
elapsed_time1 = toc(start_time);
fprintf('Computational time for serialized solution: %f\n',elapsed_time1);
上面的代码给出了 0.013654 的经过时间。
另一方面,我尝试通过在上面的代码中添加y = zeros(1,n); 来使用预分配,但运行时间在~0.01 左右相似。任何想法为什么?有人告诉我它会提高 2 倍。我错过了什么吗?
最后,Matlab 中是否有任何类型的向量化可以让我忘记上面代码中的 for 循环?
谢谢,
【问题讨论】:
-
试试 n=1000000;你应该看到区别。 100 太小了。
标签: matlab