Matlab 在日期时间数组中查找
我有两个excel文件,每个文件都有日期。目标是在文件B的文件A中找到日期时间的位置 e、 g。 Excel文件A在A列中有日期和每小时,从1970年1月1日凌晨1点到2015年12月31日凌晨1点,有大量随机缺失的日期和小时 Excel文件B的日期为1978年1月1日下午5点 我在名为A的数组中读取文件,并执行以下操作:Matlab 在日期时间数组中查找,matlab,date,floating-point,Matlab,Date,Floating Point,我有两个excel文件,每个文件都有日期。目标是在文件B的文件A中找到日期时间的位置 e、 g。 Excel文件A在A列中有日期和每小时,从1970年1月1日凌晨1点到2015年12月31日凌晨1点,有大量随机缺失的日期和小时 Excel文件B的日期为1978年1月1日下午5点 我在名为A的数组中读取文件,并执行以下操作: ind = find( x2mdate(A) == x2mdate(28491.7083333333) ); %datestr(x2mdate(28491.708333333
ind = find( x2mdate(A) == x2mdate(28491.7083333333) ); %datestr(x2mdate(28491.7083333333)) ans = 01-Jan-1978 17:00:00
它返回空的,即使我可以看到1978年1月1日所有的小时都在文件A中可用
这显然是一个取舍问题。那么,我该如何应对呢?我尝试使用datestr
,但速度非常慢。请尝试使用以下方法,而不是x2mdate(28491.70833333)
:
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
请尝试使用以下命令,而不是x2mdate(28491.7083333)
:
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
您正在与错误的值进行比较<代码>28491.7083333与您要查找的值稍有偏差。如果要使用具有常量浮动的精确匹配。否则与合理的公差进行比较
tol=datenum(0,0,0,0,0,60) %60 seconds tolerance
ind = find( abs(x2mdate(A) - x2mdate(28491.7083333333)<tol );
tol=datenum(0,0,0,0,60)%60秒公差
ind=find(abs)(x2mdate(A)-x2mdate(28491.7083333)您正在与错误的值进行比较。28491.7083333
与您要查找的值稍有偏差。当您希望使用与常量浮点值的精确匹配时,请使用合理的公差进行比较
tol=datenum(0,0,0,0,0,60) %60 seconds tolerance
ind = find( abs(x2mdate(A) - x2mdate(28491.7083333333)<tol );
tol=datenum(0,0,0,0,60)%60秒公差
ind=find(abs)(x2mdate(A)-x2mdate(28491.7083333)