2016-05-17 107 views
0

MATLAB新格式獲得兩個日期向量爲MATLAB格式,我想要採用兩個向量yearmonth,並將它們放入一個使用datenum()的matlab格式的date向量中。我試圖從文檔中做這件事,但我仍然不太確定如何去做這件事。我得到的是:我怎樣才能使用datenum

date = datenum(year, month); 

這給了我一個錯誤,如果任何人都可以幫助,將不勝感激。

+0

請修改您的問題以包含您收到的確切錯誤。 – buczek

回答

0

輸入到datenum應該是stringcell-array,所以你可以這樣做:

year = [1989;1990]; 
month = [10;11]; 
input = cellstr(num2str([year,month])); 
date = datenum (input,'yyyy mm') 

注意到你需要編寫你的日期字符串正確的解析格式。

date = 

    726742 
    727138 

formatOut = 'mmmm-dd-yyyy'; 
datestr(date,formatOut,'local') 

ans = 

    October -01-1989 
    November-01-1990 

我想你也可以輸入數值投入datenum,但我不知道它是否接受載體 - 我在辦公室2010年b版本,這是行不通的。

+0

真棒,謝謝你的工作很好 – Jay

+0

在這種情況下,請接受答案作爲正確答案:) – GameOfThrows

0

沒有必要將數字轉換爲字符串,並返回@ gameofthrows的答案 - 這些是令人難以置信的昂貴的操作。您可以使用無證MEX功能datenummx(其中,如果你檢查datenum源可以現場):

year = [1989;1990]; 
month = [10;11]; 

day = ones(size(year)); 
datenums = datenummx(year, month, day); 

這給出了一個令人印象深刻的〜86X加速(Matlab的2013b)比其他解決方案在這裏提出:

>> tic; for i=1:1e6, datenums = datenummx(year, month, ones(size(year))); end; toc; 
Elapsed time is 3.286964 seconds. 
>> tic; for i=1:1e6, input = cellstr(num2str([year,month])); datenums = datenum (input,'yyyy mm'); end; toc; 
Elapsed time is 283.356511 seconds. 

這裏應該有一個小心謹慎的說法,它可能會在未來的版本中打破,但是這個功能已經存在了大約五年,性能優勢明顯超過其他問題。