matlab 比较日期,[转载][Matlab]关于时间的函数的不完全总结
一、日期和時(shí)間
三種表示格式
(1)日期字符串:
NowDate=date
NowDate =
08-Aug-2008
year(NowDate) %提取日期的年份
ans =
2008
(2)連續(xù)的日期數(shù)值:離公元元年1月1日的天數(shù)
now
ans =
7.3363e+005
(3)日期向量:包括年、月、日、時(shí)、分和秒6個(gè)數(shù)值
clock
ans =
1.0e+003 *
2.0080?0.0080?0.0080?0.0160?0.0100?0.0027
二、日期格式的轉(zhuǎn)換
(1)datastr:轉(zhuǎn)換為日期字符串,相當(dāng)于date命令結(jié)果。
datastr(D, F)把日期D轉(zhuǎn)換成由F指定的樣式,F取值為0~31。
(2)datanum:轉(zhuǎn)換為連續(xù)的日期數(shù)值,相當(dāng)于now命令結(jié)果。
(3)datevec:轉(zhuǎn)換為向量格式,相當(dāng)于clock命令結(jié)果。
三、計(jì)時(shí)函數(shù)
獲知代碼執(zhí)行的時(shí)間。
(1)cputime
t=cputime; magic(8)*rand(8); cputime-t
ans =
0.0100
(2)tic/toc
tic; magic(8)*rand(8); toc;
Elapsed time is 0.000000 seconds.
(3)etime(t1, t2):計(jì)算兩個(gè)日期向量t1和t2之間的時(shí)間差。
t=clock; magic(8)*rand(8); etime(clock,t)
ans =
0
經(jīng)常我們需要計(jì)算我們程序到底運(yùn)行多長時(shí)間,這樣可以比較程序的執(zhí)行效率。當(dāng)然這個(gè)對(duì)于只有幾秒鐘的小程序沒有什么意義,但是對(duì)于大程序就有很重要的意義了。
下面我們就說說Matlab中計(jì)算程序運(yùn)行時(shí)間的三種常用方法吧!
注意:三種方法由于使用原理不一樣,得到結(jié)果可能有一定的差距!
1、tic和toc組合(使用最多的)
計(jì)算tic和toc之間那段程序之間的運(yùn)行時(shí)間,它的經(jīng)典格式為
tic
。。。。。。。。。。
toc
復(fù)制代碼
換句話說程序,程序遇到tic時(shí)Matlab自動(dòng)開始計(jì)時(shí),運(yùn)行到toc時(shí)自動(dòng)計(jì)算此時(shí)與最近一次tic之間的時(shí)間。這個(gè)有點(diǎn)拗口,下面我們舉個(gè)例子說明
% by dynamic of Matlab技術(shù)論壇
% 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)
%計(jì)算到上一次遇到tic的時(shí)間,換句話說就是每次循環(huán)的時(shí)間
disp(['toc計(jì)算第',num2str(i),'次循環(huán)運(yùn)行時(shí)間:',num2str(toc)]);
%計(jì)算每次循環(huán)的時(shí)間
disp(['etime計(jì)算第',num2str(i),'次循環(huán)運(yùn)行時(shí)間:',num2str(etime(clock,t2))]);
%計(jì)算程序總共的運(yùn)行時(shí)間
disp(['etime計(jì)算程序從開始到現(xiàn)在運(yùn)行的時(shí)間:',num2str(etime(clock,t1))]);
disp('======================================')
end
%計(jì)算此時(shí)到tic2的時(shí)間,由于最后一次遇到tic是在for循環(huán)的i=3時(shí),所以計(jì)算的是最后一次循環(huán)的時(shí)間
disp(['toc計(jì)算最后一次循環(huán)運(yùn)行時(shí)間',num2str(toc)])
disp(['etime程序總運(yùn)行時(shí)間:',num2str(etime(clock,t1))]);
復(fù)制代碼
運(yùn)行結(jié)果如下,大家可以自己分析下
toc計(jì)算第1次循環(huán)運(yùn)行時(shí)間:2.5628
etime計(jì)算第1次循環(huán)運(yùn)行時(shí)間:2.562
etime計(jì)算程序從開始到現(xiàn)在運(yùn)行的時(shí)間:2.562
======================================
toc計(jì)算第2次循環(huán)運(yùn)行時(shí)間:2.8108
etime計(jì)算第2次循環(huán)運(yùn)行時(shí)間:2.813
etime計(jì)算程序從開始到現(xiàn)在運(yùn)行的時(shí)間:5.375
======================================
toc計(jì)算第3次循環(huán)運(yùn)行時(shí)間:2.0462
etime計(jì)算第3次循環(huán)運(yùn)行時(shí)間:2.046
etime計(jì)算程序從開始到現(xiàn)在運(yùn)行的時(shí)間:7.421
======================================
toc計(jì)算最后一次循環(huán)運(yùn)行時(shí)間2.0479
etime程序總運(yùn)行時(shí)間:7.421
復(fù)制代碼
2、etime(t1,t2)并和clock配合
來計(jì)算t1,t2之間的時(shí)間差,它是通過調(diào)用windows系統(tǒng)的時(shí)鐘進(jìn)行時(shí)間差計(jì)算得到運(yùn)行時(shí)間的,應(yīng)用的形式
t1=clock;
。。。。。。。。。。。
t2=clock;
etime(t2,t1)
復(fù)制代碼
至于例子我就不舉了,因?yàn)樵谏厦娴睦又惺褂昧薳time函數(shù)了
3、cputime函數(shù)來完成
使用方法和etime相似,只是這個(gè)是使用cpu的主頻計(jì)算的,和前面原理不同,使用格式如下
t0=cputime
。。。。。。。。。。。。。
t1=cputime-t0
復(fù)制代碼
上面說到了三種方法,都是可以進(jìn)行程序運(yùn)行時(shí)間計(jì)算的,但是Matlab官方推薦使用tic/toc組合,When
timing the duration of an event, use the tic and toc functions
instead of clock or etime.
至于大家可以根據(jù)自己的喜好自己選擇,但是使用tic/toc的時(shí)候一定要注意,toc計(jì)算的是與最后一次運(yùn)行的tic之間的時(shí)間,不是第一個(gè)tic,更不是第二個(gè)。。。。。
總結(jié)
以上是生活随笔為你收集整理的matlab 比较日期,[转载][Matlab]关于时间的函数的不完全总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab dividend,[原创]
- 下一篇: gta各代主角怎么死的(Rockstar