将双倍分成几部分 - matlab

split a double into parts - matlab

我有一个形式为

的日期向量

20140117

20130325

20130530

等 双向量中有 5,000,000 行。 我怎样才能将它传输到 matlab 识别的 datevector?

我不喜欢把它改成字符串然后把零件分开放。时间太长了!

请帮忙!

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))

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

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 标准时间序列格式。阅读 datenum and datestr 上的文档了解更多信息。