【问题标题】:Converting numeric matrix column to datetime column将数字矩阵列转换为日期时间列
【发布时间】:2017-10-01 01:24:19
【问题描述】:

我有一个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 函数转换为数值。

【问题讨论】:

    标签: matlab


    【解决方案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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-25
      • 2017-05-17
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多