将双重分成几部分 - matlab

时间:2015-01-07 14:41:35

标签: matlab date split

我有一个表格的日期向量

20140117

20130325

20130530

等。 双向量中有5,000,000行。 如何将其传输到matlab认可的日期向量?

我不喜欢将它改成字符串并将它们分开放入。这需要太长时间!

请帮助!

2 个答案:

答案 0 :(得分:4)

fixmod的组合,您可以提取所需的数字:

%Matrix Columns YY,MM,DD,hh,mm,ss
[mod(fix(x/10000),100000),mod(fix(x/100),100),mod(x,100),zeros(size(x,1),3)]
%datenum
datenum(mod(fix(x/10000),10000),mod(fix(x/100),100),mod(x,100))

答案 1 :(得分:2)

如果你真的想避免转换成字符串然后回到数字,那么你可以使用这个方法:

D = [20140117; 20130325; 20130530];

YY = fix( D./10000 ) ;
MM = fix( (D-YY.*10000) /100 ) ;
DD = fix( (D-YY.*10000-MM.*100 ) );

DateInMatlabformat = datenum( YY , MM , DD ) ;

如果需要,您可以将其打包在一个内衬中,但基本上它的作用是:

  • 除以10000以获取变量YY
  • 中的年份
  • 从原始日期((D-YY.*10000))中删除此部分,然后除以100以获得月份。
  • 删除所有这些,你获得了这一天。

最后一行以Matlab标准时间序列格式合并所有这些。请阅读datenumdatestr上的文档以获取更多信息。