MATLAB:每月一次的Datetick

jan*_*128 3 matlab

我想在2008年1月至2011年1月期间每月一次标记我的时间序列.

编辑:时间序列已经有一个datenum格式的时间组件:

733408 x1
733410 x2
etc...
Run Code Online (Sandbox Code Playgroud)

对于我在原来的问题陈述中没有说清楚,我道歉.

一个简单的每年两次的实施变得非常混乱:

years = [2008 2008 2009 2009 2010 2010 2011];
months = [1 7 1 7 1 7 1];
days = ones(1,7);
for k = 1:7
    dates(k) = datenum(years(k), months(k), days(k));
end
labels = datestr(dates,'mmm-yy');
set(gca,'XTick',dates);
set(gca,'XTickLabel',labels);
Run Code Online (Sandbox Code Playgroud)

要将其扩展为每月滴答:

years = [2008 ...repeat10times 2009 ...repeat10times 2010 ...repeat10times 2011]
m = 1:11; months = repmat(m,1,3)
days = ones(1:34)
Run Code Online (Sandbox Code Playgroud)

必须有一个更简单的方法!

Rod*_*uis 5

你知道datetick吗?对于你的例子:

% date (x-data)
years = [2008 2008 2009 2009 2010 2010 2011];
months = [1 7 1 7 1 7 1];

% do plot (NOTE: datenum is vectorized!)
plot( datenum(years, months,1),  [your y-data] )

% set axis labels
datetick('x','mm-yyyy')
Run Code Online (Sandbox Code Playgroud)

或者,更一般,

% generate periodic data
[years, months] = meshgrid(2008:2011, 1:12); % or whatever range you want

% do plot and set axes
plot( datenum(years(:), months(:), 1),  [your y-data] )
datetick('x','mm-yyyy')
Run Code Online (Sandbox Code Playgroud)