2015-04-24 71 views
2

我有一個(1x700)向量x,我想在Matlab中創建並繪製一個時間序列對象。每個觀察對應於1個月,先觀察屬於1960年1月,我嘗試了以下內容:在Matlab中創建和繪製時間序列數據

state1 = timeseries(x,1:size(x,2)); 

state1.Name = 'Test'; 
state1.TimeInfo.Units = 'months'; 
state1.TimeInfo.StartDate = 'Jan-1960';  % Set start date. 
state1.TimeInfo.Format = 'yy';   % Set format for display on x-axis. 
state1.Time = state1.time - state1.time(1);  % Express time relative to the start date. 

plot(state1); 

不過,我仍然看到在x軸上,而不是年數。任何人都可以請幫忙?提前致謝!

+0

「月」不是有效的TimeInfo單位 – krisdestruction

+0

您是否正在尋找一種方法來使用x軸的日期時間標籤來繪製月份? – krisdestruction

+0

@ krisdestruction感謝您的幫助。我只是希望x軸顯示數年,我的數據是每月。我不確切知道這是不是你的意思?我不知道日期時間標籤,但我認爲時間序列類可以做到這一點。 – dreamer

回答

4

創建隨機數據。 1/12對應於每月所代表的一年中的一小部分。

x = 1960:1/12:1970; 
y = rand(1,121); 

然後使用plot繪製x軸和y軸數據。

plot(x, y) 

然後按照下面的方式設置tick,每年爲十年。 1960年:1970年將產生[1960年1961年],每個都對應剔年份。

set(gca, 'XTick', 1960:1970); 

這裏是輸出圖。

enter image description here

做1年間隔得到用大量的數據很凌亂。所以解決方案包括做更大的時間間隔或設置您的滴答作垂直而不是水平顯示。下面的代碼顯示瞭如何設置5年的時間間隔。

set(gca, 'XTick', 1960:5:2010); 
+1

謝謝,它做它應該:)!感謝你的幫助! – dreamer

+0

@dreamer隨時! :) – krisdestruction

+0

軸上的標籤似乎還存在一些問題。當我嘗試其他年份的其他配置時,即使我有例如'set(gca,'XTickLabel',1960:2010);'並且我有正確數量的觀察值,它只顯示1967年以前的標籤。 – dreamer