matlab中同一个程序的cputime运行几次时间怎么会都不一样呢?我该怎么确定程序正真的cputime呢?

我用一个简单的程序,同样的程序同样的数据,运行几次出来好几个结果,并且这几个结果就是0.0313,0.0469,0.0156,0.0625这几个数字,无规律的交替出现,不... 我用一个简单的程序,同样的程序同样的数据,运行几次出来好几个结果,并且这几个结果就是0.0313,0.0469,0.0156,0.0625这几个数字,无规律的交替出现,不知道是怎么回事,也不知道究竟哪个才是正确的。
那个结果是程序前面加过clear的。我的程序具体是这样的:

clear all
close all
t1=cputime;
x=-8:0.5:8;
y=x';
X=ones(size(y))*x;
Y=y*ones(size(x));
R=sqrt(X.^2+Y.^2)+eps;
Z=sin(R)./R;
colormap(cool)
xlabel('x'),ylabel('y'),zlabel('z')
e=cputime-t1
结果运行结果显示为
0.3906,0.0469,0.0469, 0.0625,0.0781,0.0469 ,0.0469,0.0625,0.0781,这几个数字的不规则的循环,有时候是0.0156,0.0313,0.0469,0.0625等的不规则循环,请问这是怎么回事,这个程序的cputime究竟应该是什么呢?:)
展开
 我来答
MeChess
2010-08-10 · TA获得超过1538个赞
知道小有建树答主
回答量:448
采纳率:100%
帮助的人:573万
展开全部
那个程序你应该贴出来才知道为何无规律。
正常来说,每次结果应该都一样,除非你的数据源有rand或类似的存在。
还有,是clear all.不是clear.
=========================================
原来是这样的问题啊!
你真行,不过探求问题的真正原因也是研究精神。
这个cputime当然不可能是一样的啦!因为,你运行一个程序,如果这个程序在cache中,那么运行速度就会很快,如果你的程序是在内存中,那么这个速度就会相对比较慢。
你的上面程序相对较短,所以有变化,有时可能是几百倍,这也正常。但对于运算量比较大的程序(例如:30s的程序),相对来说变化不会很大。即可能是30.2s也可能是29.7s,但不会几百倍的差距。因此,短的运算程序一般计算时间没有意义,因为受OS调度策略影响,只有计算时间长的程序,获取运算时间才有意义。
天空与飞鸟
2010-08-08 · TA获得超过1068个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:138万
展开全部
程序前加个clear, 避免前次运行的变量结果对下次运行产生影响;
还与内存空间的状态变化有关,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式