2015-04-24 48 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