声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2852|回复: 1

[综合讨论] 时间数和时间向量转换问题 datenum datevec

[复制链接]
发表于 2010-8-11 17:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

我现在有一组时间序列,数值表示是 hours since 0001-01-01  00: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

我已经钻入死胡同,怎么也想不明白了....求助一下
回复
分享到:

使用道具 举报

发表于 2010-8-13 11:43 | 显示全部楼层
你的问题明显是0、1基准混乱造成的...
先测试1850-01-01到底等于几(假设为正午12点):
  1. datenum('Jan 1, 1850  12:00:00 PM')
  2. ans =
  3.      675700.50
复制代码
而:
  1. 16208052/24
  2. ans =
  3.      675335.50
复制代码
二者正好相差365天,说明datenum的“1”是从0000年1月1日算起,你所给出的16208052以此法计,正好1849-0+1=1850年,而真正历法中的1850年按datenum算实际是“一千八百五十一年”,至于最后一个问题,因为datenum(1,1,1)=367,包括闰年、0和1的基准差别,重复计算的1太多,就不用多说了吧。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 15:24 , Processed in 0.063009 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表