求教大神MATLAB问题
%performcalculationusingloopsandbranchesmaxcount=100;tic;forjj=1:maxcounta=1:10000;fo...
%perform calculation using loops and branches
maxcount=100;
tic;
for jj=1:maxcount
a=1:10000;
for ii=1:10000
if a(ii)>5000
a(ii)=sqrt(a(ii));
end
end
end
average1=(toc)/maxcount;
%perform calculation using logical arrays
maxcount=100;
tic;
for jj=1:maxcount
a=1:10000;
b=a>5000;
a(b)=sqrt(a(b));
end
average2=(toc)/maxcount;
%display result
fprintf('loop/if approach=%8.4f\n',average1);
fprintf('logical array approach=%8.4f\n',average2);
以上的程序段为了计算1到10000中大于5000的算数跟,并计算2种方法所消耗的时间。
请教高手maxcount 前后两种计算方法初始值不同,对结果是否有影响,切是如何作用与循环的 展开
maxcount=100;
tic;
for jj=1:maxcount
a=1:10000;
for ii=1:10000
if a(ii)>5000
a(ii)=sqrt(a(ii));
end
end
end
average1=(toc)/maxcount;
%perform calculation using logical arrays
maxcount=100;
tic;
for jj=1:maxcount
a=1:10000;
b=a>5000;
a(b)=sqrt(a(b));
end
average2=(toc)/maxcount;
%display result
fprintf('loop/if approach=%8.4f\n',average1);
fprintf('logical array approach=%8.4f\n',average2);
以上的程序段为了计算1到10000中大于5000的算数跟,并计算2种方法所消耗的时间。
请教高手maxcount 前后两种计算方法初始值不同,对结果是否有影响,切是如何作用与循环的 展开
2014-05-05
展开全部
你说的【初始值不同】是指什么?
【对结果是否有影响】语义比较含糊,要看所谓“结果”是指什么。由于方法不同,生成的中间变量肯定是不同的,占用的内存不一样,消耗的时间也有所不同,但就变量a而言,不会有差别。
值得说明的是,早期版本(6.1或更早)的MATLAB循环效率很低,后来经过多个版本的优化,多数情况下使用循环已经不会造成显著的效率降低。就拿这个例子来说,两种方法在2007b运行的时间没有太大的区别。
最后一句【切是如何作用与循环的】也没看明白是什么意思。
追问
maxcount是如何参与循环的呢
追答
单次执行一段代码所消耗的时间有一定偶然性,maxcount的作用是把循环体的代码重复执行多次,然后取平均值,以尽量消除偶然性因素的影响。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询