我有两个excel文件,每个文件都有日期。目标是在文件B中的文件A中找到日期时间的位置。
e.g。 Excel文件A具有日期,每小时在AJ1970 1 AM到31Dec2015 1AM的A列中,随机缺少大量日期和小时。
Excel文件B有日期,例如1jan1978 5PM
我在名为A的数组中读取文件A并执行以下操作:
ind = find( x2mdate(A) == x2mdate(28491.7083333333) ); %datestr(x2mdate(28491.7083333333)) ans = 01-Jan-1978 17:00:00
它返回空,即使我可以看到1/1/1978文件A中的所有小时都可用。
这显然是一个四舍五入的问题。那么,我该如何处理呢?我尝试使用datestr
,但速度非常慢。
答案 0 :(得分:2)
而不是x2mdate(28491.7083333333)
,请尝试使用:
datenum('01-Jan-1978 17:00:00', 'dd-mmm-yyyy HH:MM:SS')
很容易看出,由于四舍五入,它们被认为是平等的:
>> datenum('01-Jan-1978 17:00:00', 'dd-mmm-yyyy HH:MM:SS') == x2mdate(28491.7083333333)
ans =
0
答案 1 :(得分:1)
您正在与错误的值进行比较。 28491.7083333333
略微偏离您所寻找的价值。如果要使用与常量浮点数的精确匹配,you have to use 17 digits。否则与合理的容差进行比较。
tol=datenum(0,0,0,0,0,60) %60 seconds tolerance
ind = find( abs(x2mdate(A) - x2mdate(28491.7083333333)<tol );