matlab产生时间数组以月为单位_Matlab中处理日期与时间的函数
Matlab用三種格式來表示日期與時(shí)間
(1)雙精度型日期數(shù)字:一個日期型數(shù)字代表從公元0年到某一日期的的天數(shù),例如,2008年8月26日夜時(shí)0點(diǎn)鐘被表示為733646,而這同一天的中午12點(diǎn)就被表示為733646.5,也就是說任何一個時(shí)刻都可以用一個雙精度型數(shù)字表示。
(2)不同形式的日期字符串:Matlab定義了28種標(biāo)準(zhǔn)日期格式的字符串。
(3)數(shù)值型的日期向量:用一個6元數(shù)組來表示一個日期時(shí)間,例如,[2008 8 26 12 5
0]表示2008年8月26日12點(diǎn)05分0秒;用一個3元數(shù)組來表示一個日期,例如,[2008 8
26]表示2008年8月26日。
用日期數(shù)字表示日期使計(jì)算機(jī)更容易計(jì)算,但是不直觀,因此Matlab提供了許多函數(shù)來實(shí)現(xiàn)三種日期格式之間的轉(zhuǎn)化。
(1)datestr: 實(shí)現(xiàn)將日期數(shù)字和日期向量轉(zhuǎn)化為日期字符串,可以在Matlab命令窗口中輸入help
datestr來查看關(guān)于datestr的用法。
(2)datenum:
實(shí)現(xiàn)將日期字符串和日期向量轉(zhuǎn)化為日期數(shù)字,可以在Matlab命令窗口中輸入help datenum來查看關(guān)于datenum的用法。
(3)datevec: 實(shí)現(xiàn)將日期數(shù)字和日期字符串轉(zhuǎn)化為日期向量,可以在Matlab命令窗口中輸入來help
datevec查看關(guān)于datevec的用法。
Matlab中其他常用的函數(shù):
(1)clock:將當(dāng)前時(shí)間和日期返回到一個(6元)數(shù)組中。
>> T = clock
T
=
2008? ? 8? ? 26? ? 12? ???31? ? 32.75
注:直接輸出clock時(shí),可能會以科學(xué)計(jì)數(shù)法的方式輸出,
clock
ans =
1.0e+003 *
2.0100? ? 0.0010? ? 0.0280? ? 0.0190? ? 0.0280? ? 0.0296
用fix(clock)
則能輸出易于閱讀的形式
fix(clock)
ans =
2010
1? ?? ?? ? 28? ?? ?? ? 19? ?? ?? ? 28? ?? ?? ? 48
(2)now:將當(dāng)前時(shí)間和日期以一個雙精度型日期數(shù)字返回。
>> t = now
t
=
7.3365e+005
(3)date:將當(dāng)前時(shí)間和日期以dd-mmm-yyyy格式的字符串返回。
>> d =
date
d =
26-Aug-2008
(4)weekday:返回一個日期數(shù)字或一個日期字符串的星期及一個星期中的第幾天。
>>
[d,w]=weekday('26-Aug-2008')
d =
3
w =
Tue
>>
[d,w]=weekday(733646)
d =
3
w =
Tue
(5)eomday:返回一個月的最后一天。
>> eomday(2008,2)
ans
=
29
(6)calendar:對用戶要求的任何一個月生一個日歷并顯示在命令窗口中,或?qū)⑵浞旁谝粋€6×7的矩陣中。
>>
calendar(2008,8)
Aug 2008
S? ???M? ? Tu? ???W
Th? ???F? ???S
0? ???0? ???0? ???0? ???0? ???1? ???2
3? ???4
5? ???6? ???7? ???8? ???9
10? ? 11? ? 12? ? 13? ? 14? ? 15? ? 16
17? ? 18? ? 19? ? 20? ? 21? ? 22? ? 23
24? ? 25? ? 26? ? 27? ? 28
29? ? 30
31? ???0? ???0? ???0? ???0? ???0? ???0
>>
c=calendar(2008,8)
c =
0? ???0? ???0? ???0? ???0? ???1? ???2
3? ???4? ???5? ???6? ???7? ???8? ???9
10? ? 11? ? 12? ? 13? ? 14
15? ? 16
17? ? 18? ? 19? ? 20? ? 21? ? 22? ? 23
24? ? 25? ? 26
27? ? 28? ? 29? ? 30
31? ???0? ???0? ???0? ???0? ???0? ???0
(7)tic,toc:函數(shù)tic和toc被用來對一組Matlab運(yùn)算進(jìn)行計(jì)時(shí)。Tic啟動一個秒表,toc停止這個秒表并計(jì)算出所經(jīng)歷的時(shí)間。
>>
tic;plot(rand(50,5));toc
Elapsed time is 3.302510 seconds.
(8)cputime:函數(shù)cputime返回用秒表示的、自從當(dāng)前的Matlab周期啟動之后Matlab所占用的CPU時(shí)間。
(9)datetick:用來自動完成對數(shù)據(jù)進(jìn)行圖形顯示并且用日期或時(shí)間字符串來作坐標(biāo)的標(biāo)簽。
>>
y=[1998 1998 1999*ones(1,12)];
>> m=[11 12 (1:12)];
>> s=[1.1
1.3 1.2 1.4 1.6 1.5 1.7 1.6 1.8 1.3 1.9 1.7 1.6 1.95];
>>
bar(datenum(y,m,1),s)
>> datetick('x','mmmyy')
>> ylabel('$
Million')
>> title('Figure 15.2:Monthly Sales')
常用的日期操作函數(shù)
datestr(d,f) 將日期數(shù)字轉(zhuǎn)換為字符串
datenum(str,f) 將字符串轉(zhuǎn)換為日期數(shù)字
datevec(str) 日期字符串轉(zhuǎn)換向量
weekday(d)
計(jì)算星期數(shù)
eomday(yr,mth) 計(jì)算指定月份最后一天
calendar(str) 返回日歷矩陣
clock 當(dāng)前日期和時(shí)間的日期向量
date 當(dāng)前日期字符串
now
當(dāng)前日期和時(shí)間的序列數(shù)
matlab中如何獲取當(dāng)前日期時(shí)間函數(shù)的具體應(yīng)用如下:
一、date
,now,clock
1.date:按照日期字符串格式返回當(dāng)前系統(tǒng)日期
2.now:按照連續(xù)的日期數(shù)值格式返回當(dāng)前系統(tǒng)時(shí)間
3.clock:按照日期向量格式返回當(dāng)前系統(tǒng)時(shí)間
>>
date,now,clock
ans =
09-Apr-2011
ans
=
7.3460e+005
ans
=
1.0e+003 *
2.0110? ? 0.0040? ? 0.0090? ? 0.0170? ? 0.0430? ? 0.0470
二、year,month,day,hour,minute,secondmatlab中分別使用year,month,day,hour,minute,second從上面講到的字符串和連續(xù)型日期時(shí)間格式中提取年月日時(shí)分秒等信息
>>[year(date),year(now)]
ans
=
2011
2011
注意:上面的函數(shù)是沒法從向量型日期時(shí)間格式中正確讀取上述信息的
>>year(clock)
ans =
5? ???0? ???0? ???0? ???0? ???0
三、Matlab中處理日期與時(shí)間的函數(shù)詳解
Matlab用三種格式來表示日期與時(shí)間
(1)雙精度型日期數(shù)字:一個日期型數(shù)字代表從公元0年到某一日期的的天數(shù),例如,2008年8月26日夜時(shí)0點(diǎn)鐘被表示為733646,而這同一天的中午12點(diǎn)就被表示為733646.5,也就是說任何一個時(shí)刻都可以用一個雙精度型數(shù)字表示。
(2)不同形式的日期字符串:Matlab定義了28種標(biāo)準(zhǔn)日期格式的字符串。
(3)數(shù)值型的日期向量:用一個6元數(shù)組來表示一個日期時(shí)間,例如,[2008
8 26 12 5 0]表示2008年8月26日12點(diǎn)05分0秒;用一個3元數(shù)組來表示一個日期,例如,[2008 8
26]表示2008年8月26日。
用日期數(shù)字表示日期使計(jì)算機(jī)更容易計(jì)算,但是不直觀,因此Matlab提供了許多函數(shù)來實(shí)現(xiàn)三種日期格式之間的轉(zhuǎn)化。
(1)datestr:
實(shí)現(xiàn)將日期數(shù)字和日期向量轉(zhuǎn)化為日期字符串,可以在Matlab命令窗口中輸入help datestr來查看關(guān)于datestr的用法。
(2)datenum:
實(shí)現(xiàn)將日期字符串和日期向量轉(zhuǎn)化為日期數(shù)字,可以在Matlab命令窗口中輸入help datenum來查看關(guān)于datenum的用法。
(3)datevec:
實(shí)現(xiàn)將日期數(shù)字和日期字符串轉(zhuǎn)化為日期向量,可以在Matlab命令窗口中輸入來help
datevec查看關(guān)于datevec的用法。
Matlab中其他常用的函數(shù):
(1)clock:將當(dāng)前時(shí)間和日期返回到一個(6元)數(shù)組中。
>>
T = clock
T =
2008? ? 8? ? 26? ? 12? ???31? ? 32.75
注:直接輸出clock時(shí),可能會以科學(xué)計(jì)數(shù)法的方式輸出,
clock
ans
=
1.0e+003 *
2.0100? ? 0.0010? ? 0.0280? ? 0.0190? ? 0.0280
0.0296
用fix(clock)
則能輸出易于閱讀的形式
fix(clock)
ans
=
2010? ?? ?? ???1? ?? ?? ? 28? ?? ?? ? 19? ?? ?? ? 28
48
(2)now:將當(dāng)前時(shí)間和日期以一個雙精度型日期數(shù)字返回。
>>
t = now
t
=
7.3365e+005
(3)date:將當(dāng)前時(shí)間和日期以dd-mmm-yyyy格式的字符串返回。
>> d =
date
d
=
26-Aug-2008
(4)weekday:返回一個日期數(shù)字或一個日期字符串的星期及一個星期中的第幾天。
>>
[d,w]=weekday('26-Aug-2008')
d =
3
w =
Tue
>>
[d,w]=weekday(733646)
d =
3
w
=
Tue
(5)eomday:返回一個月的最后一天。
>> eomday(2008,2)
ans
=
29
(6)calendar:對用戶要求的任何一個月生一個日歷并顯示在命令窗口中,或?qū)⑵浞旁谝粋€6×7的矩陣中。
>>
calendar(2008,8)
Aug 2008
S? ???M? ? Tu? ???W
Th? ???F? ???S
0? ???0? ???0? ???0? ???0? ???1? ???2
3? ???4
5? ???6? ???7? ???8? ???9
10? ? 11? ? 12? ? 13? ? 14? ? 15? ? 16
17? ? 18? ? 19? ? 20? ? 21? ? 22? ? 23
24? ? 25? ? 26? ? 27? ? 28
29? ? 30
31? ???0? ???0? ???0? ???0? ???0? ???0
>>
c=calendar(2008,8)
c =
0? ???0? ???0? ???0? ???0? ???1? ???2
3? ???4? ???5? ???6? ???7? ???8? ???9
10? ? 11? ? 12? ? 13? ? 14
15? ? 16
17? ? 18? ? 19? ? 20? ? 21? ? 22? ? 23
24? ? 25? ? 26
27? ? 28? ? 29? ? 30
31? ???0? ???0? ???0? ???0? ???0
0
(7)tic,toc:函數(shù)tic和toc被用來對一組Matlab運(yùn)算進(jìn)行計(jì)時(shí)。Tic啟動一個秒表,toc停止這個秒表并計(jì)算出所經(jīng)歷的時(shí)間。
>>
tic;plot(rand(50,5));toc
Elapsed time is 3.302510
seconds.
(8)cputime:函數(shù)cputime返回用秒表示的、自從當(dāng)前的Matlab周期啟動之后Matlab所占用的CPU時(shí)間。
(9)datetick:用來自動完成對數(shù)據(jù)進(jìn)行圖形顯示并且用日期或時(shí)間字符串來作坐標(biāo)的標(biāo)簽。
>>
y=[1998 1998 1999*ones(1,12)];
>> m=[11 12 (1:12)];
>> s=[1.1
1.3 1.2 1.4 1.6 1.5 1.7 1.6 1.8 1.3 1.9 1.7 1.6 1.95];
>>
bar(datenum(y,m,1),s)
>> datetick('x','mmmyy')
>> ylabel('$
Million')
>> title('Figure 15.2:Monthly
Sales')
1.now
返回當(dāng)前的日期值(這個數(shù)的整數(shù)部分表示從公元0年1月1日到該日的天數(shù),小數(shù)部分則表示具體的時(shí)刻)
eg.
t=now
t
=7.3354e+005
2.datestr 日期轉(zhuǎn)換成字符形式
調(diào)用格式 datestr(date,dateform)
date為要轉(zhuǎn)換的日期值,dateform為日期格式參數(shù)(具體參數(shù)值可通過 help datestr查看幫助)
dateform參數(shù)說明
DATEFORM number? ? DATEFORM string? ?? ?? ? Example
===========================================================================
0? ?? ?? ?? ???'dd-mmm-yyyy HH:MM:SS'? ? 01-Mar-2000 15:45:17
1? ?? ?? ?? ???'dd-mmm-yyyy'? ?? ?? ?? ? 01-Mar-2000
2
'mm/dd/yy'? ?? ?? ?? ?? ? 03/01/00
3? ?? ?? ?? ???'mmm'
Mar
4? ?? ?? ?? ???'m'
M
5? ?? ?? ?? ???'mm'? ?? ?? ?? ?? ?? ?? ? 03
6? ?? ?? ?? ???'mm/dd'? ?? ?? ?? ?? ?? ? 03/01
7? ?? ?? ?? ???'dd'? ?? ?? ?? ?? ?? ?? ? 01
8
'ddd'? ?? ?? ?? ?? ?? ?? ?Wed
9? ?? ?? ?? ???'d'
W
10? ?? ?? ?? ???'yyyy'
2000
11? ?? ?? ?? ???'yy'? ?? ?? ?? ?? ?? ?? ? 00
12? ?? ?? ?? ???'mmmyy'? ?? ?? ?? ?? ?? ? Mar00
13? ?? ?? ?? ???'HH:MM:SS'? ?? ?? ?? ?? ? 15:45:17
14
'HH:MM:SS PM'? ?? ?? ?? ???3:45:17 PM
15? ?? ?? ?? ???'HH:MM'
15:45
16? ?? ?? ?? ???'HH:MM PM'
3:45 PM
17? ?? ?? ?? ???'QQ-YY'? ?? ?? ?? ?? ?? ? Q1-96
18? ?? ?? ?? ???'QQ'? ?? ?? ?? ?? ?? ?? ? Q1
19? ?? ?? ?? ???'dd/mm'? ?? ?? ?? ?? ?? ? 01/03
20
'dd/mm/yy'? ?? ?? ?? ?? ? 01/03/00
21
'mmm.dd,yyyy HH:MM:SS'? ? Mar.01,2000 15:45:17
22
'mmm.dd,yyyy'? ?? ?? ?? ? Mar.01,2000
23? ?? ?? ?? ???'mm/dd/yyyy'
03/01/2000
24? ?? ?? ?? ???'dd/mm/yyyy'
01/03/2000
25? ?? ?? ?? ???'yy/mm/dd'? ?? ?? ?? ?? ? 00/03/01
26? ?? ?? ?? ???'yyyy/mm/dd'? ?? ?? ?? ???2000/03/01
27
'QQ-YYYY'? ?? ?? ?? ?? ???Q1-1996
28
'mmmyyyy'? ?? ?? ?? ?? ???Mar2000
29 (ISO 8601)
'yyyy-mm-dd'? ?? ?? ?? ???2000-03-01
30 (ISO 8601) 'yyyymmddTHHMMSS'
20000301T154517
31? ?? ?? ?? ???'yyyy-mm-dd HH:MM:SS'
2000-03-01 15:45:17eg.
>> t=now;datestr(t,0)ans =09-May-2008
21:07:233.date將字符串轉(zhuǎn)換成日期值
調(diào)用語法:date(year,month,day)
datenum(year,month,day,hour,minute,second)
eg.>> t=now;datestr(t,0)ans
=09-May-2008 21:07:23>> datenum(ans)
ans
=7.3354e+005>>4.datevec將datestr中指定的格式日期字符轉(zhuǎn)換成包含日期分量的數(shù)值向量
eg.
>>c=datevec('09-May-2008
21:07:23')c =? ?? ?? ?2008? ?? ?? ?? ?5? ?? ?? ?? ?9? ?? ?? ???21? ?? ?? ?? ?7
23
5.weekday 可從一個日期值或字符串中找出具體的日子和星期。
eg.
>>
[d,w]=weekday( 7.3354e+005)d =? ?? ?2
w
=Mon>>[d,w]=weekday('21-Dec-2008')d =? ?? ?1
w =Sun6.eomday
返回任何一個月最后一天是幾號
調(diào)用語法:eomday(year,month) 因?yàn)殚c年的存在故需要year這個參數(shù)。
eg.>>
eomday(2008,2)ans =? ???29>> eomday(2007,2)ans =? ???287.calendar
生成指定月份的日歷。
eg
>> calendar(date)
May 2008
S? ?? ?M? ???Tu? ?? ?W? ???Th? ?? ?F? ?? ?S
0? ?? ?0? ?? ?0? ?? ?0
1? ?? ?2? ?? ?3
4? ?? ?5? ?? ?6? ?? ?7? ?? ?8? ?? ?9? ???10
11? ???12? ???13? ???14? ???15? ???16? ???17
18? ???19? ???20? ???21
22? ???23? ???24
25? ???26? ???27? ???28? ???29? ???30? ???31
0? ?? ?0? ?? ?0? ?? ?0? ?? ?0? ?? ?0? ?? ?0
>> calendar(2008,5)
May 2008
S? ?? ?M? ???Tu? ?? ?W? ???Th? ?? ?F
S
0? ?? ?0? ?? ?0? ?? ?0? ?? ?1? ?? ?2? ?? ?3
4? ?? ?5
6? ?? ?7? ?? ?8? ?? ?9? ???10
11? ???12? ???13? ???14? ???15? ???16
17
18? ???19? ???20? ???21? ???22? ???23? ???24
25? ???26
27? ???28? ???29? ???30? ???31
0? ?? ?0? ?? ?0? ?? ?0? ?? ?0? ?? ?0
0>>
補(bǔ)充:date返回當(dāng)天日期的字符串
eg.
>> dateans =09-May-20088.tic
,toc 兩個結(jié)合使用可計(jì)算一組matlab操作指令的執(zhí)行所需時(shí)間
eg.
>> tic;
plot(rand(500,5));toc
Elapsed time is 0.078000
seconds.
另外Matlab還提供了cputime和etime(具體使用方法可看幫助文檔),用來計(jì)算一次運(yùn)算所占cpu時(shí)間.
eg.
>>t0=cputime;myoperation;cputime-t0
ans=0.1400
>>t1=clock;myoperation;etime(clock,t1)
ans=11.2800
注:myoperation為用戶自定義腳本文件
>>
t0=cputimet0 =? ? 53.8125>> t1=cputimet1 =? ? 54.0313>>
deltaT=t1-t0deltaT =? ???0.2188
>> t1=clockt1 =1.0e+003 *? ???2.0080
0.0050? ???0.0090? ???0.0210? ???0.0460? ???0.0254>>
deltaT=etime(t1,t0)deltaT =? ???9.9060>>
9.datetick
設(shè)一個坐標(biāo)為時(shí)間標(biāo)簽eg.
>> t=(1900:10:1990)';
>> p=[100 200 150 350 200
400 500 100 30 120];
>> plot(datenum(t,1,1),p);
>>
datetick('x','yyyy')
>> title('test time tip')
總結(jié)
以上是生活随笔為你收集整理的matlab产生时间数组以月为单位_Matlab中处理日期与时间的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 的ip 设置lo_linux
- 下一篇: ajax后台返回数据中文乱码_ajax提