创建一个每月的日期向量序列号
94(30天)
显示旧的评论
接受的答案
奥列格•科马罗夫
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。
更多的答案(4)
沃尔特·罗伯森
2012年1月13日
[Y、M] = meshgrid (1900:1929 1:12);
TheSerialDates = datenum ([Y (:), M(:)的(元素个数(Y), 1)));
史蒂文的主
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)
0评论
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,“行”);