Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB更改迄今为止的数字_Matlab_Date_Time - Fatal编程技术网

MATLAB更改迄今为止的数字

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

我将时间设置为连续日期。每个数字按顺序对应一天,从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, 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月)。