Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 在日期时间数组中查找_Matlab_Date_Floating Point - Fatal编程技术网

Matlab 在日期时间数组中查找

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

我有两个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.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)