创建一个每月的日期向量序列号

94(30天)
大家好!
我花了几个小时在这,我相信它必须容易但我不能让我的头。我想要的是创建一个向量包含每个月30年来的序列号,这样我可以使用这个向量x轴的阴谋。(例如:我要1990年1月,1990年2月,1990年3月在序列号等)
简单的事情为什么不喜欢这个工作吗?datenum({' 01 - 1月- 1900 ':' 01 - 11月- 2011 '})
任何帮助都是感激非常感谢桑德拉

接受的答案

奥列格•科马罗夫
奥列格•科马罗夫 2012年1月13日
你“几乎”是对的,但是你说的matlab,
datenum ({' 01 - 1月- 1900:' 01 - 11月- 2011})
是:
“把字符串“01 - 1月- 1900”(数值48 49 45 74 97 110 45 49 57 48 48)和应用 结肠 运营商直到字符串“01 - 11月- 2011”(48 49 45 78 111 118 45 50 48 49 49)”
你要做的是首先将字符串转换为串行日期,然后应用结肠……但这种方法是不精确的,因为你想要间隔一个月和月是不规则的。
解决方案如下:
1:120 datenum(1900年,1)
超过几个月今年第一年将会增加到1901。
2的评论
桑德拉
桑德拉 2012年1月13日
非常感谢,我知道必须有一个窍门:-)

登录置评。

更多的答案(4)

沃尔特·罗伯森
沃尔特·罗伯森 2012年1月13日
[Y、M] = meshgrid (1900:1929 1:12);
TheSerialDates = datenum ([Y (:), M(:)的(元素个数(Y), 1)));
3评论
Suene
Suene 2015年7月23日
这个解决方案也为我工作。很多谢谢!

登录置评。


Fangjun江
Fangjun江 2012年1月13日
x = bsxfun(@(月、年)datenum(年、月、1),(1:12)。”,1980:2010);
x = x (:);
diff (x)

史蒂文的主
史蒂文的主 2018年8月31日
datetime calendarDuration 有一些不同的方法来创建这个向量。
第一种技术增加日历月的起始日期。
startDate可以= datetime (1990年1月1日的);
V1 = startDate可以+ calmonths(破发*第四节);% 30年= 30 * 12个日历月
第二个技术添加0和11个日历月和0之间和29个日历年的起始日期。这种扩张使用隐式添加数月乃至数年在一起形成一个矩阵。我 重塑 这个矩阵,当我计算V2 V1一样的大小和方向。如果你想要更像一个规划师认为,看看V2planner。
startDate可以= datetime (1990年1月1日的);
oneYearInMonths = calmonths (0:11);
thirtyYearsInYears = calyears (0:29);
monthsPlusYears = oneYearInMonths。' + thirtyYearsInYears;
V2 = startDate可以+重塑(monthsPlusYears 1 []);
V2planner = startDate可以+ monthsPlusYears;
这下一个利用了这一事实 datetime 函数是不限于只接受月数字1 - 12所示。1990年13月实际上是1991年1月。
monthlist = 1:30 * 12;
V3 = datetime(1990年,monthlist 1);
做这些给相同的结果吗?
isequal (V1、V2)
isequal (V2, V3)
isequal (V1, V3)

Navid Ghajarnia
Navid Ghajarnia 2018年8月31日
这是另一个对这个问题的回答:
t1 = datetime (1900、01 01);
t2 = datetime(2011年11日01);
t (: 1) = t1, t2;
Dates_Daily =[年(t)月(t));
Dates_Monthly =独特(Dates_Daily,“行”);

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!