mirror's Blog

Happy coding

关于MATLAB中的tic toc的问题

mirror posted @ 2013年1月14日 16:03 in matlab , 1241 阅读

关于MATLAB中的tic toc的问题
 



(其一)
MATLAB实际单位时间计时函数的具体应用,在编写程序时,经常需要获知代码的执行实际时间,这就需要在程序中用到计时函数,matlab中提供了以下三种方法:
1.cputime(单位不明)
返回matlab启动以来的CPU时间,可以在程序执行钱保存当时的CPU时间,然后在程序执行结束后用cputime减去运行前保存的数值,就可以获取程序的实际运行时间
>>t0=cputime;pause(3);TimeCost=cputime-t0
2.tic/toc(单位s)
tic用在程序的开始,作用是启动一个计时器,然后在程序尾部放一个toc,表示终止计时器,并返回tic启动以来的总时s间
3.etime(单位s)
etime(t1,t2)用来计算两个日期向量t1和t2之间的时间差,结合前面讲到的clock函数也可以用来确定程序代码的运行时间
>>t0=clock;pause(3);TimeCost=etime(clock,t0)
在三种计时中建议使用第二种,相对来说最精确。当然你可以使用profiler来确定你的执行时间,并且具体到没有个命令的时间
经常我们需要计算我们程序到底运行多长时间,这样可以比较程序的执行效率。当然这个对于只有几秒钟的小程序没有什么意义,但是对于大程序就有很重要的意义了。
下面我们就说说Matlab中计算程序运行时间的三种常用方法吧!
注意:三种方法由于使用原理不一样,得到结果可能有一定 的差距!

(其二)
1、tic和toc组合(使用最多的)
计算tic和toc之间那段程序之间的运行时间,它的经典格式为
tic
。。。。。。。。。。
toc
复制代码
换句话说程序,程序遇到tic时Matlab自动开始计时,运行到toc时自动计算此时与最近一次tic之间的时间。这个有点拗口,下面我们举个例子说明
% by dynamic of Matlab技术论坛
% see also http://www.matlabsky.com
% contact me matlabsky@gmail.com
% 2009-08-18 12:08:47
clc
tic;%tic1
t1=clock;
for i=1:3
tic ;%tic2
t2=clock;
pause(3*rand)
%计算到上一次遇到tic的时间,换句话说就是每次循环的时间
disp(['toc计算第',num2str(i),'次循环运行时间:',num2str(toc)]);
%计算每次循环的时间
disp(['etime计算第',num2str(i),'次循环运行时间:',num2str(etime(clock,t2))]);
%计算程序总共的运行时间
disp(['etime计算程序从开始到现在运行的时间:',num2str(etime(clock,t1))]);
disp('======================================')
end
%计算此时到tic2的时间,由于最后一次遇到tic是在for循环的i=3时,所以计算的是最后一次循环的时间
disp(['toc计算最后一次循环运行时间',num2str(toc)])
disp(['etime程序总运行时间:',num2str(etime(clock,t1))]);
复制代码
运行结果如下,大家可以自己分析下
toc计算第1次循环运行时间:2.5628
etime计算第1次循环运行时间:2.562
etime计算程序从开始到现在运行的时间:2.562
======================================
toc计算第2次循环运行时间:2.8108
etime计算第2次循环运行时间:2.813
etime计算程序从开始到现在运行的时间:5.375
======================================
toc计算第3次循环运行时间:2.0462
etime计算第3次循环运行时间:2.046
etime计算程序从开始到现在运行的时间:7.421
======================================
toc计算最后一次循环运行时间2.0479
etime程序总运行时间:7.421
复制代码
2、etime(t1,t2)并和clock配合
来计算t1,t2之间的时间差,它是通过调用windows系统的时钟进行时间差计算得到运行时间的,应用的形式
t1=clock;
。。。。。。。。。。。
t2=clock;
etime(t2,t1)
复制代码
至于例子我就不举了,因为在上面的例子中使用了etime函数了
3、cputime函数来完成
使用方法和etime相似,只是这个是使用cpu的主频计算的,和前面原理不同,使用格式如下
t0=cputime
。。。。。。。。。。。。。
t1=cputime-t0
复制代码
上面说到了三种方法,都是可以进行程序运行时间计算的,但是Matlab官方推荐使用tic/toc组合,When timing the duration of an event, use the tic and toc functions instead of clock or etime.
至于大家可以根据自己的喜好自己选择,但是使用tic/toc的时候一定要注意,toc计算的是与最后一次运行的tic之间的时间,不是第一个tic,更不是第二个。。。。。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
TIC开始一个跑表计时器。通过TIC,可以得到使用TIC命令至使用TOC命令两者之间所消耗的时间
Tstart=TIC 将时间保存为一个输出参数Tstart.TSTART的数值只有作为在随后出现的TOC调用的输入参数时有用。
例如:测量Bessel函数的最小和平均时间:
REPS = 1000; minTime = Inf; nsum = 10;
tic;
for i=1:REPS
tstart = tic;
sum = 0; for j=1:nsum, sum = sum + besselj(j,REPS); end
telapsed = toc(tstart);
minTime = min(telapsed,minTime);
book.iLoveMatlab.cn
关于MATLAB中的tic toc的问题
2011-04-27 13:42:06| 分类: 默认分类 | 标签: |字号大中小 订阅
其一)
MATLAB实际单位时间计时函数的具体应用,在编写程序时,经常需要获知代码的执行实际时间,这就需要在程序中用到计时函数,matlab中提供了以下三种方法:
1.cputime(单位不明)
返回matlab启动以来的CPU时间,可以在程序执行钱保存当时的CPU时间,然后在程序执行结束后用cputime减去运行前保存的数值,就可以获取程序的实际运行时间
>>t0=cputime;pause(3);TimeCost=cputime-t0
2.tic/toc(单位s)
tic用在程序的开始,作用是启动一个计时器,然后在程序尾部放一个toc,表示终止计时器,并返回tic启动以来的总时s间
3.etime(单位s)
etime(t1,t2)用来计算两个日期向量t1和t2之间的时间差,结合前面讲到的clock函数也可以用来确定程序代码的运行时间
>>t0=clock;pause(3);TimeCost=etime(clock,t0)
在三种计时中建议使用第二种,相对来说最精确。当然你可以使用profiler来确定你的执行时间,并且具体到没有个命令的时间
经常我们需要计算我们程序到底运行多长时间,这样可以比较程序的执行效率。当然这个对于只有几秒钟的小程序没有什么意义,但是对于大程序就有很重要的意义了。
下面我们就说说Matlab中计算程序运行时间的三种常用方法吧!
注意:三种方法由于使用原理不一样,得到结果可能有一定 的差距!

(其二)
1、tic和toc组合(使用最多的)
计算tic和toc之间那段程序之间的运行时间,它的经典格式为
tic
。。。。。。。。。。
toc
复制代码
换句话说程序,程序遇到tic时Matlab自动开始计时,运行到toc时自动计算此时与最近一次tic之间的时间。这个有点拗口,下面我们举个例子说明
% by dynamic of Matlab技术论坛
% see also http://www.matlabsky.com
% contact me matlabsky@gmail.com
% 2009-08-18 12:08:47
clc
tic;%tic1
t1=clock;
for i=1:3
tic ;%tic2
t2=clock;
pause(3*rand)
%计算到上一次遇到tic的时间,换句话说就是每次循环的时间
disp(['toc计算第',num2str(i),'次循环运行时间:',num2str(toc)]);
%计算每次循环的时间
disp(['etime计算第',num2str(i),'次循环运行时间:',num2str(etime(clock,t2))]);
%计算程序总共的运行时间
disp(['etime计算程序从开始到现在运行的时间:',num2str(etime(clock,t1))]);
disp('======================================')
end
%计算此时到tic2的时间,由于最后一次遇到tic是在for循环的i=3时,所以计算的是最后一次循环的时间
disp(['toc计算最后一次循环运行时间',num2str(toc)])
disp(['etime程序总运行时间:',num2str(etime(clock,t1))]);
复制代码
运行结果如下,大家可以自己分析下
toc计算第1次循环运行时间:2.5628
etime计算第1次循环运行时间:2.562
etime计算程序从开始到现在运行的时间:2.562
======================================
toc计算第2次循环运行时间:2.8108
etime计算第2次循环运行时间:2.813
etime计算程序从开始到现在运行的时间:5.375
======================================
toc计算第3次循环运行时间:2.0462
etime计算第3次循环运行时间:2.046
etime计算程序从开始到现在运行的时间:7.421
======================================
toc计算最后一次循环运行时间2.0479
etime程序总运行时间:7.421
复制代码
2、etime(t1,t2)并和clock配合
来计算t1,t2之间的时间差,它是通过调用windows系统的时钟进行时间差计算得到运行时间的,应用的形式
t1=clock;
。。。。。。。。。。。
t2=clock;
etime(t2,t1)
复制代码
至于例子我就不举了,因为在上面的例子中使用了etime函数了
3、cputime函数来完成
使用方法和etime相似,只是这个是使用cpu的主频计算的,和前面原理不同,使用格式如下
t0=cputime
。。。。。。。。。。。。。
t1=cputime-t0
复制代码
上面说到了三种方法,都是可以进行程序运行时间计算的,但是Matlab官方推荐使用tic/toc组合,When timing the duration of an event, use the tic and toc functions instead of clock or etime.
至于大家可以根据自己的喜好自己选择,但是使用tic/toc的时候一定要注意,toc计算的是与最后一次运行的tic之间的时间,不是第一个tic,更不是第二个。。。。。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
TIC开始一个跑表计时器。通过TIC,可以得到使用TIC命令至使用TOC命令两者之间所消耗的时间
Tstart=TIC 将时间保存为一个输出参数Tstart.TSTART的数值只有作为在随后出现的TOC调用的输入参数时有用。
例如:测量Bessel函数的最小和平均时间:
REPS = 1000; minTime = Inf; nsum = 10;
tic;
for i=1:REPS
tstart = tic;
sum = 0; for j=1:nsum, sum = sum + besselj(j,REPS); end
telapsed = toc(tstart);
minTime = min(telapsed,minTime);
book.iLoveMatlab.cn
end
averageTime = toc/REPS;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如何将tic toc处理过的时间顺序的存储到矩阵中? 因为我发现每处理一次就会覆盖掉上次的时间而我需要将每次处理的时间都记录下来希望哪位高手能帮忙指导一下。
可以先分配一个矩阵,然后每运行一次将值存入.
A=ones(m,n)%其中m,n是你处理为次数;
for i=1..num
tic,
%你的程序;
a=toc;
A(i)=a;
end
这样最后的时间就在A中了.

end
averageTime = toc/REPS;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如何将tic toc处理过的时间顺序的存储到矩阵中? 因为我发现每处理一次就会覆盖掉上次的时间而我需要将每次处理的时间都记录下来希望哪位高手能帮忙指导一下。
可以先分配一个矩阵,然后每运行一次将值存入.
A=ones(m,n)%其中m,n是你处理为次数;
for i=1..num
tic,
%你的程序;
a=toc;
A(i)=a;
end
这样最后的时间就在A中了.


http://blog.sciencenet.cn/blog-785247-614037.html

Avatar_small
스포프레스 说:
2024年11月07日 15:39

Thanks for a very interesting blog. What else may I get that kind of info written in such a perfect approach? I’ve a undertaking that I am simply now operating on, and I have been at the look out for such info <a href="https://www.insolitofestival.org/">스포프레스</a>

Avatar_small
website 说:
2024年11月07日 15:39

We have sell some products of different custom boxes.it is very useful and very low price please visits this site thanks and please share this post with your friends.

Avatar_small
read more 说:
2024年11月07日 15:40

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. 

Avatar_small
먹휴고 说:
2024年11月07日 15:42

quality to fulfill you. Your put with us, keep sharing it in the destiny

Avatar_small
baccaratfriend 说:
2024年11月07日 15:42

Thank you for sharing this great post, I am very surviv io impressed with your post, the information given is very meticulous and understandable. I will regularly follow your next post.

Avatar_small
here 说:
2024年11月07日 15:44

When I originally commented I clicked the -Notify me when new comments are added- checkbox and from now on each time a comment is added I buy four emails with similar comment. Can there be any way it is possible to get rid of me from that service? Thanks

Avatar_small
파워볼마스터 说:
2024年11月07日 15:44

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free

Avatar_small
먹튀닥터 说:
2024年11月07日 15:45

on the factor after i up to be refreshed day by day. It contains of extremely good statistics.

Avatar_small
check here 说:
2024年11月07日 15:47

splendid information in your blog, thanks for taking the time to proportion with us. Great perception you've got in this, it's nice to find a internet site that info so much statistics about distinctive look forward to more

Avatar_small
토토사이트 说:
2024年11月07日 15:47

Are you planning to purchase a new house? Well, that is really great news. But before you decide to give the purchase offer, it is important that you gather all documents that will be required in home buying.

Avatar_small
스팟터데이 说:
2024年11月07日 15:48

Looking for the best kitchen duct cleaning services in Dubai? Bright & Swift is here to help you! We provide professional kitchen duct cleaning at the best prices in Dubai. Call us Today!

Avatar_small
먹튀대피소 说:
2024年11月07日 19:03

You made such an interesting piece to read, giving every subject enlightenment for us to gain knowledge. Thanks for sharing the such information with us to read this.

Avatar_small
thebrennanhouse 说:
2024年11月07日 19:07

Are you planning to purchase a new house? Well, that is really great news. But before you decide to give the purchase offer, it is important that you gather all documents that will be required in home buying.

Avatar_small
View data 说:
2024年11月07日 19:09

Hi! This is my first visit to your blog! We are a team of volunteers and new initiatives in the same niche. Blog gave us useful information to work. You have done an amazing job!

Avatar_small
reference material 说:
2024年11月07日 19:12

You made such an interesting piece to read, giving every subject enlightenment for us to gain knowledge. Thanks for sharing the such information with us to read this.

Avatar_small
먹튀위젯 说:
2024年11月07日 19:13

I read your articles a lot and I love your writing skills.The watch brand Breitling has been around since 1884 and since then has spawned several innovations in the field of clocks and watches. Throughout history, this brand has been through a lot, but today it still sells high quality watches.

Avatar_small
get more info 说:
2024年11月07日 19:15

Akhirnya ada website judi online dengan nama | yang tidak hanya fokus pada game judi online yang menarik, tapi juga pada komunitas gamernya.

Avatar_small
click here 说:
2024年11月07日 19:16

Useful post. This is my first time I visit here. I found so many intriguing stuff with regards to your blog particularly its conversation. Actually its incredible article. Keep it up.

Avatar_small
View data 说:
2024年11月07日 19:18

This means that, if your website content is optimized (particularly for mobile use) effectively, your business could be the first one a digital personal assistant suggests.

Avatar_small
contents 说:
2024年11月07日 19:18

Dewapoker adalah website game judi online terpercaya yang menggunakan server 24- Jam nonstop. Game judi terbaik semacam poker88 merupakan yang benar-benar dipercaya serta sangat dicari oleh Para Bettor Indonesia yang sering menghadapi kekalahan didalam bermain game. Web dewapoker merupakan agen game kartu online sangat terkenal yang berlimpah dimainkan oleh pemain Indonesia.

Avatar_small
토토디펜드 说:
2024年11月07日 19:20

When I originally commented I clicked the -Notify me when new comments are added- checkbox and from now on each time a comment is added I buy four emails with similar comment. Can there be any way it is possible to get rid of me from that service? Thanks

Avatar_small
good information 说:
2024年11月07日 19:21

Hi! This is my first visit to your blog! We are a team of volunteers and new initiatives in the same niche. Blog gave us useful information to work. You have done an amazing job!


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter