日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 日期加小时数_MATLAB时间与日期的基本操作

發布時間:2025/3/19 循环神经网络 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 日期加小时数_MATLAB时间与日期的基本操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

7.2 日期和時間元素

本小節將為讀者介紹如何對指定日期和時間元素的數值進行提取,另外如何通過datetime的屬性來對指定的元素進行賦值。MATLAB提供了如下函數進行元素操作,請見表3-12。

表3-12 日期和時間元素提取函數

函 數

說 明

函 數

說 明

year

年份

minute

分鐘

hour

小時

second

day

quarter

季度數

month

月份

week

星期數

ymd

年月日

hms

時分秒

split

將日歷時間長度按單位級別分解為數值形式

time

將日歷時間長度轉換為固定時間長度

timeofday

將時間點轉換為時間長度

isdst

檢測夏令時元素

isweekend

檢測是否是周末

tzoffset

檢測時區,返回和UTC的時差

下面我們舉例來說明如何從已有的datetime數組中提取日期和時間元素。然后將會介紹如何對指定元素通過對數組屬性的設置來進行修改。

【例3-45】 日期和時間數組元素的提取。

首先創建一個測試用datetime數組。

>> t = datetime('now') + calyears(0:2) +calmonths(0:2) + hours(20:20:60)

t =

04-Sep-2014 20:42:32 05-Oct-201516:42:32 06-Nov-2016 12:42:32

如果想提取數組中的“年”這一元素,那么只需要使用“.”這一符號加Year屬性就可以了。

>> t_years = t.Year

t_years =

2014 2015 2016

輸出的t_years是一個數值數組。

同樣的,如果想提取月這一元素,可以通過以下方法:

>> t_months = t.Month

t_months =

9 10 11

在以上方法之外,用戶可以通過函數來對日期和時間的各元素進行檢索。例如要檢索月份的話,那么就可以通過month函數來實現。

>> m = month(t)

m =

9 10 11

通過使用month函數而不是Month屬性來提取月份的全名:

>> m = month(t,'name')

m =

'September' 'October' 'November'

同樣的也可以使用year,quarter,week,hour,minute和second函數來分別提取時間數組t中的其他元素:

>> w = week(t)

w =

36 41 46

這里返回的是數據所對應與當年第幾周。

使用ymd函數可以同時提取年、月、日三個元素:

>> [y,m,d] = ymd(t)

y =

2014 2015 2016

m =

9 10 11

d =

4 5 6

使用hms函數可以同時提取時、分、秒三個元素:

>> [h,m,s] = hms(t)

h =

20 16 12

m =

42 42 42

s =

32.9365 32.9365 32.9365

【例3-46】 日期和時間數組元素的修改。

對已有時間數組中的元素數值進行修改可以通過“.”加屬性名來實現。

改變時間數組t中的年份,令其等于2014:

>> t.Year = 2014

t =

04-Sep-2014 20:42:32 05-Oct-201416:42:32 06-Nov-2014 12:42:32

將時間數組t中的月份分別改成1月、2月、3月:

>> t.Month = [1,2,3]

t =

04-Jan-2014 20:42:32 05-Feb-201416:42:32 06-Mar-2014 12:42:32

通過TimeZone屬性更改時間數組的時區:

>> t.TimeZone = 'Europe/Berlin';

更改時間數組的顯示格式:

>> t.Format = 'dd-MMM-yyyy'

t =

04-Jan-2014 05-Feb-2014 06-Mar-2014

如果用戶在賦值的時候給出的數值超出了正常范圍,那么MATLAB會對相應的元素進行正?;幚怼@?#xff0c;日期的正常范圍是1-31,如果將范圍之外的數值賦值給數組,那么結果如下:

>> t.Day = [-1 1 32]

t =

30-Dec-2013 01-Feb-2014 01-Apr-2014

這里月份和年份的數值同時做了調整,從而使結果是屬于正常范圍的。例如這里將January -1, 2014轉化成為了December 30, 2013。

7.3 日期和時間計算與繪圖

本小節將為讀者介紹日期和時間的相關加、減、繪圖操作。MATLAB提供了多種函數以供使用,見表3-13。

表3-13 日期和時間計算函數

函 數

說 明

函 數

說 明

between

日歷代數差

isdatetime

判斷是否是datetime數組

caldiff

日歷連續代數差

isduration

判斷是否是duration數組

dateshift

平移日期或者產生日期和時間序列

iscalendarduration

判斷是否是calendar duration數組

isbetween

判斷元素是否在日期和時間區間內

isnat

判斷是否是NaT元素(非時間元素)

【例3-47】 日歷時間長度與時間數組相加。

將一個日歷時間長度數組和日期January31, 2014相加:

>> t1 = datetime(2014,1,31) % 測試時間數組

t1 =

31-Jan-2014

>> t2 = t1 + calmonths(1:4) % 將日歷月相加

t2 =

28-Feb-2014 31-Mar-2014 30-Apr-2014 31-May-2014

結果中的每一個時間點都是當月的最后一天。

使用caldiff 函數可以計算數組中相鄰的一對時間點之差:

>> dt = caldiff(t2,'days') % 計算數組各時間點之間的日歷天數差

dt =

31d 30d 31d

從結果中可以看出,連續的幾對時間點之間的差都是一個日歷月,但是天數并不都是等于31天。

同樣的我們可以對年份也進行類似的操作:

>> t2 = t1 + calyears(0:4) % 初始測試數組

t2 =

31-Jan-2014 31-Jan-2015 31-Jan-2016 31-Jan-2017 31-Jan-2018

使用caldiff函數可以計算數組t2中相鄰時間點之間的天數差:

>> dt = caldiff(t2,'days')

dt =

365d 365d 366d 365d

由結果可以看出,并不是每一年的天數都等于365天。

【例3-48】 計算兩個日歷時間點之間的時間差。

使用between函數可以計算兩個日歷時間點之間的年、月、日之差。

>> t1 = datetime('today')

t1 =

02-Apr-2015

>> t2 = t1 + calmonths(0:2) + caldays(4)

t2 =

06-Apr-2015 06-May-2015 06-Jun-2015

>> dt = between(t1,t2)

dt =

4d 1mo 4d 2mo 4d

【例3-49】 datetime和duration數組的比較。

本例將為讀者演示如何對datetime和duration數組進行比較。用戶可以在兩個datetime數組之間進行元素對元素的對比,也可以對兩個duration數組采用邏輯運算符進行比較,例如>和<。

對比兩個datetime數組,兩個數組必須具有相同的尺寸或者其中一個是標量。

>> A = datetime(2013,07,26) +calyears(0:2:6)

>> B = datetime(2014,06,01)

A =

26-Jul-2013 26-Jul-2015 26-Jul-2017 26-Jul-2019

B =

01-Jun-2014

>> A < B

ans =

1 0 0 0

在A中的時間早于B中的時間情況下,邏輯運算符<將會返回邏輯值1(true)。

對比一個datetime數組和一個日期字符串:

>> A >= 'September 26, 2014'

ans =

0 1 1 1

讀者還可以對比不同時區的時間。例如比較洛杉磯的September 1, 2014 at 4:00 p.m和同一天的紐約時間5:00p.m:

>> A = datetime(2014,09,01,16,0,0,'TimeZone','America/Los_Angeles',...

'Format','dd-MMM-yyyy HH:mm:ss Z')

A =

01-Sep-2014 16:00:00 -0700

>> B =datetime(2014,09,01,17,0,0,'TimeZone','America/New_York',...

'Format','dd-MMM-yyyy HH:mm:ss Z')

B =

01-Sep-2014 17:00:00 -0400

>> A < B

ans =

0

從結果可以看出洛杉磯時間下午4點在紐約時間下午5點之后。

下面我們來對duration數組之間的比較進行演示。

>> A = duration([2,30,30;3,15,0]) % 測試數據A

>> B = duration([2,40,0;2,50,0]) % 測試數據B

A =

02:30:30

03:15:00

B =

02:40:00

02:50:00

>> A >= B

ans =

0

1

從結果中可以看出,和B相比較,A的第一個元素較短,而第二個元素較長。

如果將一個duration數組和一個數值型的數組進行比較,那么數值型的數組將會被看作是天數(固定每天24小時)。

>> A < [1; 1/24] % A和【1天 1小時】相比較

ans =

1

0

使用isbetween函數可以判斷某一日期時間是否在一個時間區間內。

首先需要創建時間區間的兩個邊界時間點:

>> tlower = datetime(2014,08,01) % 起點

>> tupper = datetime(2014,09,01) % 終點

tlower =

01-Aug-2014

tupper =

01-Sep-2014

然后創建一個datetime數組,然后判斷數組是否在所設定的時間區間內。

>> A = datetime(2014,08,21) + calweeks(0:2)

A =

21-Aug-2014 28-Aug-2014 04-Sep-2014

>> tf = isbetween(A,tlower,tupper)

tf =

1 1 0

【例3-50】 日期和時間數組的繪圖。

首先創建一個datetime數組作為x軸。

>> t = datetime(2014,6,28) + caldays(1:10);

將y軸數據定義一個隨機數組,然后繪制曲線。

>> y = rand(1,10);

>> plot(t,y);

得到的結果如圖3-8所示。

圖3-8 日期數組繪圖

在默認情況下,plot函數會基于數據的范圍自動選擇刻度線。當用戶放大或縮小圖形時,刻度線會自動隨之調整。另外用戶還可以自定義刻度線格式,例如通過下面的語句就可以將刻度線定義為日-月-年的格式。

>> plot(t,y,'DatetimeTickFormat','dd-MMM-yyyy')

得到的結果如圖3-9所示。

圖3-9 指定刻度線格式

對于duration數組來說也可以使用類似的方式進行繪圖。

首先創建一個duration數組,例如以30秒為步長,總時間3分鐘的一個數組:

>> t = 0:seconds(30):minutes(3);

同時創建隨機數組作為y軸數據:

>> y = rand(1,7);

在繪圖過程中可以指定橫軸刻度均以秒為單位:

>> h = plot(t,y,'DurationTickFormat','s');

得到的結果如圖3-10所示。

7.4 日期和時間作為數值和字符

如果用戶在使用2014a及以前版本,或者和其他使用之前版本的人共享代碼時,這就需要處理存儲為雙精度數值或字符串形式的日期和時間數據。此外,用數值形式表示的日期和時間還可以適用于一些不接受datetime和duration數據類型的函數。

盡管datetime數組是表達時間點的最佳數據類型,但用戶還可以通過以下三種形式來表示日期和時間:

(1)Date String:字符串,例如Thursday, August 23, 2012 9:45:44.946 AM

(2)Date Vector:一個1×6的數值向量,包含了年、月、日、時、分、秒,例如[2012 8 23 9 45 44.946]

(3)Serial Date Number — 一個數值,從January 0, 0000開始計算,例如7.3510e+005

采用元胞數組、矩陣等可以以數組形式存儲上述各種類型日期時間數據。

用戶可以使用datetime函數將上述類型數據轉換為datetime數組。反過來,用戶可以分別使用datenum、datevec或datestr函數將datetime數組轉換為日期數值、日期向量或者日期字符串類型。

日期字符串就是由表示日期或者時間的字符組成,可以有多種格式,例如下面的字符串都是表示August 23, 2010 at 04:35:42 PM:

'23-Aug-2010 04:35:06 PM'

'Wednesday, August 23'

'08/23/10 16:35'

'Aug 23 16:35:42.946'

用戶可以采用12時制或者24時制來進行記錄。在記錄的字符串中還可以加入連字符、空格、冒號來分割各個元素。例如:

>> d = '23-Aug-2010 16:35:42'

【例3-51】 日期字符串的轉換。

使用datetime函數可以將字符串轉換為datetime數組。由于輸入字符串格式可能有很多種,用戶最好指明輸入字符串的格式從而提高運行效率。

>> t = datetime(d,'InputFormat','dd-MMM-yyyyHH:mm:ss:')

t =

23-Aug-2010 16:35:42

盡管日期字符串d和datetime標量t看起來非常相似,但是二者是不相同的。

>> whos d t

Name Size Bytes Class Attributes

t 1x1 121 datetime

d 1x20 40 char

日期向量就是一個1×6的雙精度數值的數組,其中的數值除了秒以外都是整數,采用24時制的形式來表示。日期向量采用年月日時分秒的順序來進行記錄。例如[2012 10 24 10 45 07]表示的是10:45:07AM on October 24, 2012。

【例3-52】 日期向量的轉換。

使用datetime函數將日期向量[2012 10 24 10 45 07]轉換為datetime數組。

>> t = datetime([2012 10 24 10 45 07])

t =

24-Oct-2012 10:45:07

連續日期數值表示的是距離計時起點過去了多少天。在MATLAB里面,這個起點日期是January 0, 0000。日期數值通過小數來表示不滿一天的情況,例如6 p.m等于0.75天。所以采用日期數值來表示'31-Oct-2003, 6:00 PM' 的話那就是731885.75。

【例3-53】 日期數值的轉換。

使用datetime函數將日期數值轉換為datetime數組。

>> t =datetime(731885.75,'ConvertFrom','datenum')

t =

31-Oct-2003 18:00:00

【例3-54】 將datetime數組轉換為日期數值。

一些MATLAB函數只接受日期數值輸入但并不接受datetime數組輸入。如果想要調用這些函數的話,那么就需要將datetime數組轉換為日期數值格式,然后再調用函數。例如log函數只接受數值格式輸入,不接受datetime數組。

假設用戶有一datetime數組表示了一項實驗的時間數據:

>> t = datetime('18-Jun-2014') +calmonths(1:4)

t =

18-Jul-2014 18-Aug-2014 18-Sep-2014 18-Oct-2014

減去實驗開始的時間就可以得到該時間點對應的實驗所花時間長度:

>> dt = t - '1-Jul-2014'

dt =

408:00:00 1152:00:00 1896:00:00 2616:00:00

dt是一個duration數組。將dt使用years、days、hours、minutes或seconds轉換為統一單位的數值,例如:

>> x = hours(dt)

x =

408 1152 1896 2616

將此雙精度數組輸入到log函數中就可以進行相應的計算:

>> y = log(x)

y =

6.0113 7.0493 7.5475 7.8694

總結

以上是生活随笔為你收集整理的matlab 日期加小时数_MATLAB时间与日期的基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。