国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
MATLAB的時(shí)間與日期
7  日期和時(shí)間
MATLAB在2014b版本中將日期和時(shí)間獨(dú)立成了一個(gè)數(shù)據(jù)類型,新的版本中對(duì)于時(shí)間數(shù)據(jù)的處理功能更為強(qiáng)大。比如datetime和duration等函數(shù),可以支持對(duì)時(shí)間的高效計(jì)算、對(duì)比、格式化顯示。對(duì)這類數(shù)組的操作方法和對(duì)普通數(shù)組的操作是基本一致的。下面我們就對(duì)主要的功能進(jìn)行介紹。
7.1  創(chuàng)建日期和時(shí)間數(shù)組
存儲(chǔ)日期和時(shí)間信息的最主要形式就是datatime數(shù)組,它支持代數(shù)運(yùn)算、排序、比較、繪圖和格式化顯示。代數(shù)運(yùn)算的結(jié)果通過duration數(shù)組返回,如果采用基于日歷的函數(shù)進(jìn)行的計(jì)算,那么返回的結(jié)果將是calendarDuration數(shù)組。Matlab提供了以下函數(shù)來進(jìn)行日期及時(shí)間類型的計(jì)算,請(qǐng)見表3-11 。
表3-11 日期和時(shí)間函數(shù)
函    數(shù)
說    明
函    數(shù)
說    明
datetime
基于當(dāng)前日期創(chuàng)建時(shí)間數(shù)組,或者將日期字符串或數(shù)據(jù)轉(zhuǎn)換為時(shí)間數(shù)組
yyyymmdd
將MATLAB datetime數(shù)據(jù)類型轉(zhuǎn)化為YYYYMMDD數(shù)值格式
years
年數(shù)長(zhǎng)度
minutes
分鐘數(shù)長(zhǎng)度
days
天數(shù)長(zhǎng)度
seconds
秒數(shù)長(zhǎng)度
hours
小時(shí)數(shù)長(zhǎng)度
duration
由數(shù)值創(chuàng)建duration數(shù)組
calyears
日歷年數(shù)長(zhǎng)度
calweeks
日歷星期數(shù)長(zhǎng)度
calquarters
日歷季度數(shù)長(zhǎng)度
caldays
日歷天數(shù)長(zhǎng)度
calmonths
日歷月數(shù)長(zhǎng)度
calendarDuration
由數(shù)值創(chuàng)建日歷時(shí)間長(zhǎng)度數(shù)組
下面我們舉例來說明如何創(chuàng)建日期和時(shí)間數(shù)組。
【例3-41】  日期時(shí)間數(shù)組創(chuàng)建。
例如,如果我們想要來表示這樣兩個(gè)日期:June 28, 2014 at 6 a.m和June 28, 2014 at 7 a.m,那么我們可以將這些數(shù)值相應(yīng)的賦值給datetime函數(shù)各元素即可:
>> t = datetime(2014,6,28,6:7,0,0)
t =
28-Jun-2014 06:00:00   28-Jun-2014 07:00:00
如果想要對(duì)數(shù)組中的某一元素進(jìn)行修改,那么只需要將新的數(shù)值賦值給相應(yīng)的元素即可:
>> t.Day = 27:28
t =
27-Jun-2014 06:00:00   28-Jun-2014 07:00:00
如果想要更改數(shù)組的顯示格式,只需要改變Format屬性即可。這一過程中改變的只是數(shù)據(jù)顯示格式,數(shù)據(jù)本身沒有任何改動(dòng)。
>> t.Format = 'MMM dd, yyyy'
t =
Jun 27, 2014   Jun 28, 2014
如果你要將一個(gè)datetime數(shù)組減去另一個(gè)datetime數(shù)組,那么結(jié)果就是duration數(shù)組:
>> t2 = datetime(2014,6,29,6,30,45)
t2 =
29-Jun-2014 06:30:45
>> d = t2 - t
d =
48:30:45   23:30:45
在默認(rèn)情況下,duration數(shù)組顯示格式是“hours:minutes:seconds”。通過設(shè)置Format屬性,用戶可以改變顯示格式。例如可以改變?yōu)閱我粏挝弧靶r(shí)”,具體操作如下:
>> d.Format = 'h'
d =
48.512 hrs   23.512 hrs
用戶通過使用seconds、minutes、hours、days或 years函數(shù),也可以直接創(chuàng)建一個(gè)新的單一單位的duration數(shù)值。例如,創(chuàng)建一個(gè)2天的天數(shù)長(zhǎng)度,也就是正好等于24小時(shí)×2:
>> d = days(2)
d =
2 days
用戶通過使用caldays、calweeks、calquarters和calyears函數(shù),也可以直接創(chuàng)建一個(gè)新的單一單位的calendar duration數(shù)值。例如,創(chuàng)建一個(gè)2個(gè)月的日歷天數(shù)長(zhǎng)度:
>> L = calmonths(2)
L =
2mo
如果將一個(gè)calendar months 和一個(gè)calendar days數(shù)值相加,那么天數(shù)數(shù)值還將會(huì)分開顯示,因?yàn)槊總€(gè)月的天數(shù)并不一致。除非是將其和一個(gè)具體的日期時(shí)間相加。
>> L = calmonths(2) + caldays(35)
L =
2mo 35d
將一個(gè)calendar durations和一個(gè)datetime數(shù)組相加:
>> t2 = t + calmonths(2) + caldays(35)
t2 =
Oct 01, 2014   Oct 02, 2014
此時(shí)得到的t2依然是一個(gè)datetime數(shù)組。
>> whos t2
Name      Size            Bytes  Class       Attributes
t2        1x2               161  datetime
總的來說,有多種方式來表達(dá)日期和時(shí)間,MATLAB對(duì)于每一種都提供了方法(如圖3-7所示):
(1)表達(dá)時(shí)間點(diǎn),使用datetime數(shù)據(jù)格式。例如Wednesday, June 18, 2014 10:00:00。
(2)表達(dá)一段時(shí)間的長(zhǎng)度,采用固定時(shí)間長(zhǎng)度單位,使用duration數(shù)據(jù)類型。在使用此種類型的時(shí)候,1天總是等于24小時(shí)的,一年總是等于365.2425天的。例如:72 小時(shí)10分鐘。
(3)表達(dá)一段時(shí)間的長(zhǎng)度,采用可變時(shí)間長(zhǎng)度單位,使用calendarDuration數(shù)據(jù)類型。例如1個(gè)月可以是28、29、30或者31天。另外calendarDuration還考慮了夏令時(shí)和閏年,所以1天時(shí)間可以大于或者小于24小時(shí),1年可以是365天或者366天。
圖3-7  選擇需要導(dǎo)入的圖像文件
【例3-42】  指定時(shí)區(qū)與相關(guān)計(jì)算。
在對(duì)日期和時(shí)間的計(jì)算中,MATLAB還提供了時(shí)區(qū)設(shè)置選項(xiàng)。這樣我們只需在創(chuàng)建日期時(shí)間數(shù)組的時(shí)候指定好了時(shí)區(qū),那么就可以在不同時(shí)區(qū)之間進(jìn)行相關(guān)計(jì)算了,而不必人工換算中間有多少時(shí)差。下面我們就舉例來說明如何來使用。
首先創(chuàng)建指定了時(shí)區(qū)的datetime數(shù)組:
>> t = datetime(2014,3,8:9,6,0,0,'TimeZone','local',...
'Format','d-MMM-y HH:mm:ss Z')
t =
8-Mar-2014 06:00:00 +0800   9-Mar-2014 06:00:00 +0800
在這里我們指定的是系統(tǒng)內(nèi)部的時(shí)區(qū)設(shè)置'local',返回的結(jié)果中“+0800”一項(xiàng)就是我們所處的時(shí)區(qū)和Coordinated Universal Time之間的時(shí)差。
用戶也可以指定時(shí)區(qū):
>> t.TimeZone = 'Asia/Tokyo'
t =
8-Mar-2014 07:00:00 +0900   9-Mar-2014 07:00:00 +0900
同樣的方式我們可以定義另一個(gè)倫敦時(shí)間:
>> u = datetime(2014,3,9,6,0,0,'TimeZone','Europe/London',...
'Format','d-MMM-y HH:mm:ss Z')
u =
9-Mar-2014 06:00:00 +0000
兩個(gè)時(shí)間相減,就可以得到兩個(gè)時(shí)間點(diǎn)相差的實(shí)際時(shí)間:
>> dt = t - u
dt =
-32:00:00    -8:00:00
【例3-43】  日期和時(shí)間序列的產(chǎn)生。
本例將來為讀者演示如何通過使用冒號(hào)(:)來產(chǎn)生日期和時(shí)間序列。
采用默認(rèn)步長(zhǎng)來產(chǎn)生序列,默認(rèn)步長(zhǎng)為1個(gè)日歷天。
>> t1 = datetime('01-Nov-2013 08:00:00');
t2 = datetime('05-Nov-2013 08:00:00');
t = t1:t2
t =
Columns 1 through 3
01-Nov-2013 08:00:00   02-Nov-2013 08:00:00   03-Nov-2013 08:00:00
Columns 4 through 5
04-Nov-2013 08:00:00   05-Nov-2013 08:00:00
用戶還可以指定步長(zhǎng):
>> t = t1:caldays(2):t2      %  使用caldays函數(shù)來指定2個(gè)日歷天為步長(zhǎng)
t =
01-Nov-2013 08:00:00   03-Nov-2013 08:00:00   05-Nov-2013 08:00:00
>>t = t1:hours(18):t2        % 使用18個(gè)小時(shí)作為步長(zhǎng)
t =
Columns 1 through 3
01-Nov-2013 08:00:00   02-Nov-2013 02:00:00   02-Nov-2013 20:00:00
Columns 4 through 6
03-Nov-2013 14:00:00   04-Nov-2013 08:00:00   05-Nov-2013 02:00:00
通過指定時(shí)區(qū)為紐約時(shí)間,t1所對(duì)應(yīng)時(shí)間正好在夏令時(shí)之前。
>> t1.TimeZone = 'America/New_York';
>> t2.TimeZone = 'America/New_York';
如果用戶這時(shí)使用1個(gè)日歷天為步長(zhǎng),那么這兩個(gè)時(shí)間點(diǎn)之間每天的時(shí)間長(zhǎng)度并不都是24小時(shí):
>> t = t1:t2;
>> dt = diff(t)
dt =
24:00:00   25:00:00   24:00:00   24:00:00
如果將步長(zhǎng)設(shè)置為固定長(zhǎng)度的1天:
>> t = t1:days(1):t2
t =
Columns 1 through 3
01-Nov-2013 08:00:00   02-Nov-2013 08:00:00   03-Nov-2013 07:00:00
Columns 4 through 5
04-Nov-2013 07:00:00   05-Nov-2013 07:00:00
這時(shí)我們可以驗(yàn)證各時(shí)間點(diǎn)之間的長(zhǎng)度是否都等于24小時(shí):
>> dt = diff(t)
dt =
24:00:00   24:00:00   24:00:00   24:00:00
【例3-44】  日期和時(shí)間序列的計(jì)算。
日期和時(shí)間序列可以像數(shù)組那樣進(jìn)行加減。
首先我們創(chuàng)建一個(gè)日期時(shí)間點(diǎn):
>> t1 = datetime('01-Nov-2013 08:00:00');
然后講一個(gè)固定長(zhǎng)度小時(shí)數(shù)組加到這一個(gè)時(shí)間點(diǎn)上:
>> t = t1 + hours(0:2)
t =
01-Nov-2013 08:00:00   01-Nov-2013 09:00:00   01-Nov-2013 10:00:00
我們還可以加上一個(gè)日歷月份時(shí)間長(zhǎng)度:
>> t = t1 + calmonths(1:5)
t =
Columns 1 through 3
01-Dec-2013 08:00:00   01-Jan-2014 08:00:00   01-Feb-2014 08:00:00
Columns 4 through 5
01-Mar-2014 08:00:00   01-Apr-2014 08:00:00
上面結(jié)果中的每一個(gè)時(shí)間點(diǎn)都是當(dāng)月的第一天。如果我們要計(jì)算數(shù)組時(shí)間點(diǎn)之間的相隔天數(shù),我們可以使用以下命令:
>> dt = caldiff(t,'days')
dt =
31d   31d   28d   31d
如果要產(chǎn)生一個(gè)每月最后一天的日期序列,可以通過如下方法:
>> t = datetime('31-Jan-2014') + calmonths(0:11)
t =
Columns 1 through 5
31-Jan-2014   28-Feb-2014   31-Mar-2014   30-Apr-2014   31-May-2014
Columns 6 through 10
30-Jun-2014   31-Jul-2014   31-Aug-2014   30-Sep-2014   31-Oct-2014
Columns 11 through 12
30-Nov-2014   31-Dec-2014
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java時(shí)間操作類庫(kù)—Joda-Time
M語言中的操作符說明:數(shù)字以及時(shí)間相關(guān)的操作符
取而代之!以后不用再 new Date() 了
一學(xué)就會(huì)的 Python 時(shí)間轉(zhuǎn)化總結(jié)(超全)
mysql 存儲(chǔ)數(shù)據(jù)類型
輕松讓你的XP顯示農(nóng)歷
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服