2016-07-27 51 views
2

全部 我不知道是否有一種方法可以在Matlab中生成時間戳記序列?在Matlab中生成時間戳記系列?

我假設會有開始時間,結束時間和頻率。

它是簡單的使用產生1,普通系列:1:100(1至100 1)

我如何可以用類似的方式來產生一個時間戳列?例如,我將開始時間指定爲早上9點,直至上午10點,我想要生成類似9:00:00:000,9:00:00:500,9:00:01:000的東西。 ..

由500毫秒

甚至更​​好目瞪口呆,包括日期,以及。

回答

1

使用datenum,你可能有唯一的問題是,你有一個缺口秒/天或夏季節省如果你跨越時間長一段時間的碰撞(但我不認爲這在datestras you can read here實現)。

datenumnowdatestr

starttime = datenum(2000, 1, 1, 9, 0, 0); 
dt = 0.500/86400; % datenum is a serial time format with 1 = 1 day = 86400 sec 
N = 5; 
timevec = starttime + dt*(0:(N-1)); 

>> datestr(timevec, 'HH:MM:SS.FFF') 

ans = 

09:00:00.000 
09:00:00.500 
09:00:01.000 
09:00:01.500 
09:00:02.000 
0

玩這取決於你的需求,但你可以考慮使用的datetime()和一個組合或許多days()hours()minutes()seconds()等功能。

讓我們寫一些代碼:用於顯示滿足您的需求數據

start=datetime(1985,07,13,9,0,0); % your start date 
steps=seconds(0:0.5:100);   % your vector with steps 
timeseries=start+steps;   % your time series 

您還可以設置的格式,這樣做檢查datetime properties手冊。

1

從2015A開始,您可以使用milliseconds功能之間建立時間步長的矢量時間點:

start = datetime('2017/1/3 9:00:00:000','InputFormat','yyyy/MM/dd H:mm:ss:SSS'); 
step = milliseconds(500); 
fin = datetime('2017/1/3 10:00:00:000','InputFormat','yyyy/MM/dd H:mm:ss:SSS'); 
time_vec = start:step:fin; 

如果不定義日期明確,將選擇當前日期。

你也可以有一個結構的時間和數據,你可以使用timeseries類(使用start從上面):

data = rand(7201,1); 
ts = timeseries(data,'Name','MyTs'); 
ts.TimeInfo.StartDate = start; 
ts.TimeInfo.Units = 'milliseconds'; 
ts = setuniformtime(ts,'Interval',500); 

這將創建一個時間序列對象:

>> ts 
    timeseries 

    Common Properties: 
      Name: 'MyTs' 
      Time: [7201x1 double] 
     TimeInfo: [1x1 tsdata.timemetadata] 
      Data: [7201x1 double] 
     DataInfo: [1x1 tsdata.datametadata] 

以下時間信息:

>> ts.TimeInfo 
    tsdata.timemetadata 
    Package: tsdata 

    Uniform Time: 
    Length  7201 
    Increment 500 milliseconds 

    Time Range: 
    Start  03-Jan-2017 09:00:00 
    End   03-Jan-2017 10:00:00 

    Common Properties: 
      Units: 'milliseconds' 
     Format: '' 
     StartDate: '03-Jan-2017 09:00:00'