MATLAB新格式獲得兩個日期向量爲MATLAB格式,我想要採用兩個向量year
和month
,並將它們放入一個使用datenum()的matlab格式的date
向量中。我試圖從文檔中做這件事,但我仍然不太確定如何去做這件事。我得到的是:我怎樣才能使用datenum
date = datenum(year, month);
這給了我一個錯誤,如果任何人都可以幫助,將不勝感激。
MATLAB新格式獲得兩個日期向量爲MATLAB格式,我想要採用兩個向量year
和month
,並將它們放入一個使用datenum()的matlab格式的date
向量中。我試圖從文檔中做這件事,但我仍然不太確定如何去做這件事。我得到的是:我怎樣才能使用datenum
date = datenum(year, month);
這給了我一個錯誤,如果任何人都可以幫助,將不勝感激。
輸入到datenum應該是string
或cell-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版本,這是行不通的。
真棒,謝謝你的工作很好 – Jay
在這種情況下,請接受答案作爲正確答案:) – GameOfThrows
沒有必要將數字轉換爲字符串,並返回@ 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.
這裏應該有一個小心謹慎的說法,它可能會在未來的版本中打破,但是這個功能已經存在了大約五年,性能優勢明顯超過其他問題。
請修改您的問題以包含您收到的確切錯誤。 – buczek