curb 发表于 2010-8-11 17:06

时间数和时间向量转换问题 datenum datevec

datenum 是表示 days since 0000-00-00 00:00:00‘’
也就是 0000-01-01 的datenum 为1

我现在有一组时间序列,数值表示是 hours since 0001-01-0100:00:00

起始值为16208052,
实际起始时间为1850-01-01 12:00:00

但是用matlab转换
timevec1 = datevec(16208052/24);
得到的是1849-01-01 12:00:00
如果用
timevec2 = datevec(16208052/24+datenum(1,1,1));
即将时间序列的初始值加入,却得到了
1850-01-03 12:00:00

我已经钻入死胡同,怎么也想不明白了....求助一下

bainhome 发表于 2010-8-13 11:43

你的问题明显是0、1基准混乱造成的...
先测试1850-01-01到底等于几(假设为正午12点):datenum('Jan 1, 185012:00:00 PM')
ans =
   675700.50
而:16208052/24
ans =
   675335.50二者正好相差365天,说明datenum的“1”是从0000年1月1日算起,你所给出的16208052以此法计,正好1849-0+1=1850年,而真正历法中的1850年按datenum算实际是“一千八百五十一年”,至于最后一个问题,因为datenum(1,1,1)=367,包括闰年、0和1的基准差别,重复计算的1太多,就不用多说了吧。
页: [1]
查看完整版本: 时间数和时间向量转换问题 datenum datevec