MATLAB更改迄今为止的数字
我将时间设置为连续日期。每个数字按顺序对应一天,从20100101到20130611。如何将序列日期转换为年月格式的日期?我需要这个,因为我想打印数据,需要x轴来显示日期MATLAB更改迄今为止的数字,matlab,date,time,Matlab,Date,Time,我将时间设置为连续日期。每个数字按顺序对应一天,从20100101到20130611。如何将序列日期转换为年月格式的日期?我需要这个,因为我想打印数据,需要x轴来显示日期 谢谢 对于天数n使用 datestr(datenum(2009, 12, 31) + n, 'yyyy-mm') 比如说 >> datestr(datenum(2009, 12, 31)+365, 'yyyy-mm') ans = 2010-12 >> datestr(datenum(2009, 1
谢谢 对于天数
n
使用
datestr(datenum(2009, 12, 31) + n, 'yyyy-mm')
比如说
>> datestr(datenum(2009, 12, 31)+365, 'yyyy-mm')
ans =
2010-12
>> datestr(datenum(2009, 12, 31)+366, 'yyyy-mm')
ans =
2011-01
第一步是将日期格式转换为以下格式之一。用于绘图的最佳格式是“序列日期格式”。这些数字本身有点尴尬,因为它们表示“0/0/0000之后的时间量,以天为单位”,这是一个巨大的数字。而且,这个日期实际上从来就不存在,所以当你想处理公元前三年的日期时,它真的很奇怪 但是,转换很容易,因为您的格式也会计算天数,但会在2009年12月31日之后计算。您可以使用
numeric_date_vec = datenum(2009, 12, 31) + x;
然后使用
plot(numeric_date_vec, y)
您可以通过调用Matlab自动添加日期标记
datetick('mmm yyyy')
问题是,放大后记号不会更新。你可以打电话
datetick('mmm yyyy','keeplimits')
同样,在每次缩放或平移后,或从下载datetickzoom
。它采用与datetick相同的参数,但它钩住了zoom函数并自动更新刻度
编辑:
有时,日期标记的间距不合理,您可以尝试放大或缩小一点,直到它捕捉到好的内容,或者必须手动设置标记:
% Set ticks to first day of the months in 2010
tick_locations = datenum(2012,[1:12],1);
% Set ticks on x-axis
set(gca, 'XTick', tick_locations)
% Call datetick again to get the right date labels, use option "keepticks"
datetick('mmm yyyy','keeplimits', 'keepticks')
您可能需要稍微修改一下tick\u locations=datenum(2012,[1:12],1)
以获得所需的刻度。例如,您可以使用
tick_locations = datenum(2012,[1:2:25],1)
2012年1月至2013年1月之间的第二个月。可以更具体地给出输入/输出示例吗?我正在绘制x和y,x是时间。x是一个数字为1:1254的向量。1是20100101,2是20100102,等等。我想以某种方式将x转换为此类日期,然后在图表上用记号标记每个月的时间(2010年1月或2010年1月、2010年2月或2010年2月等)。t=1:1257;x=datenum(2009,12,31)+t;图(x,y);日期标记('x','mmm dd yyyy','keeplimits','keepticks');设置(gca、'XMinorTick'、'on'、'YMinorTick'、'on')你知道如何使更多的记号和标签显示出来吗?现在,滴答声之间的距离有点太远(2010年3月,然后是2010年9月)。