求教大神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 前后两种计算方法初始值不同,对结果是否有影响,切是如何作用与循环的
展开
 我来答
匿名用户
2014-05-05
展开全部

你说的【初始值不同】是指什么?

 

对结果是否有影响】语义比较含糊,要看所谓“结果”是指什么。由于方法不同,生成的中间变量肯定是不同的,占用的内存不一样,消耗的时间也有所不同,但就变量a而言,不会有差别。

 

值得说明的是,早期版本(6.1或更早)的MATLAB循环效率很低,后来经过多个版本的优化,多数情况下使用循环已经不会造成显著的效率降低。就拿这个例子来说,两种方法在2007b运行的时间没有太大的区别。

 

最后一句【切是如何作用与循环的】也没看明白是什么意思。

追问
maxcount是如何参与循环的呢
追答
单次执行一段代码所消耗的时间有一定偶然性,maxcount的作用是把循环体的代码重复执行多次,然后取平均值,以尽量消除偶然性因素的影响。
施西贝虎
2014-05-05 · TA获得超过414个赞
知道小有建树答主
回答量:331
采纳率:100%
帮助的人:182万
展开全部
你的 maxcount 的循环根本就是不需要的。 程序还可以大大简化。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式