2016-03-20 116 views
0

我有兩個excel文件,每個文件都有日期。目標是在文件B中的文件A中找到日期時間的位置。在日期時間排列中找到

例如, Excel文件A的日期和每個小時在1月1日1AM到2015年12月31日1AM的A列中有大量隨機缺失日期和小時。

Excel文件B有日期例如1jan1978 5PM

我讀文件中的陣列稱爲A並執行以下操作:

ind = find(x2mdate(A) == x2mdate(28491.7083333333)); %datestr(x2mdate(28491.7083333333)) ans = 01-Jan-1978 17:00:00 

返回空,即使我可以看到,在文件A.可1978年1月1日全部時間

這顯然是一個四捨五入的問題。那麼,我該如何處理呢?我嘗試使用datestr,但速度很慢。

回答

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); 
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 
相關問題