将数字矩阵列转换为datetime列

时间:2017-09-30 16:45:13

标签: matlab

我有一个1000x5 double矩阵:

79  735727,416666667    735727,452083333    735727,479166667    2
80  735727,441666667    735727,483333333    735727,506250000    9
81  735727,506944445    735727,534722222    735727,561111111    2
82  735727,541666667    735727,604861111    735727,648611111    9
83  735727,556944444    735727,572916667    735727,602083333    7

第2,第3,第4列是日期。我想用他们的日期时间表示替换他们的数字表示。我将这些列转换为:

arrive_date = datestr(data(:, 2))
arrive_date = datetime(arrive_date)

但是,无法将其分配回data's

data(:, 2) = arrive_date

错误:从datetime转换为double时发生以下错误: 对于'datetime'类型的输入参数,未定义的函数'double'。要将日期时间转换为数字,首先减去日期时间原点,然后使用SECONDS,MINUTES,HOURS,DAYS或YEARS函数转换为数字。

1 个答案:

答案 0 :(得分:1)

您不能将日期对象存储在双打数组中。如果要混合类型,则需要使用单元格数组。请参阅以下示例:

data = [79  735727.416666667    735727.452083333    735727.479166667    2;
        80  735727.441666667    735727.483333333    735727.506250000    9];
arrive_date = datestr(data(:, 2))
arrive_date = datetime(arrive_date)

% Convert to cell array (each column is contained in a cell)
data = num2cell(data,1);

data{2} = arrive_date

输出显示新类型(第二个单元格是datetime个对象的向量)。

data =

  1×5 cell array

    [2×1 double]    [2×1 datetime]    [2×1 double]    [2×1 double]    [2×1 double]