为啥我的分类数组时间中的年份没有在 Matlab 中正确转换?

Posted

技术标签:

【中文标题】为啥我的分类数组时间中的年份没有在 Matlab 中正确转换?【英文标题】:Why isn't the year in my categorical array time properly converted in Matlab?为什么我的分类数组时间中的年份没有在 Matlab 中正确转换? 【发布时间】:2020-02-25 11:31:24 【问题描述】:

我在 Matlab 中有以下分类数组

time(1:3)

ans = 

  3×1 categorical array

     13-10-19 00:03 
     13-10-19 00:08 
     13-10-19 00:12 

我想将它用作时间序列的 x 轴,为此我需要它作为时间字符串,所以我所做的如下

string(time(1:3))

ans = 

  3×1 string array

    "13-10-19 00:03"
    "13-10-19 00:08"
    "13-10-19 00:12"

如果我使用 datetimedatestr 转换它,年份似乎丢失或错误转换

datetime(string(time(1:3)))

ans = 

  3×1 datetime array

   19-Oct-0013 00:03:00
   19-Oct-0013 00:08:00
   19-Oct-0013 00:12:00

datestr(string(time(1:3)))

ans =

  3×20 char array

    '19-Oct-0013 00:03:00'
    '19-Oct-0013 00:08:00'
    '19-Oct-0013 00:12:00'

这是为什么?如何正确转换年份?

提前致谢!

【问题讨论】:

【参考方案1】:

你必须指定InputFormat:

datetime(string(time(1:3)),'InputFormat','dd-MM-yy HH:mm')

datetime(string(time(1:3)),'InputFormat','yy-MM-d HH:mm')

如果在您的示例中是 2013 年。从日期看不太清楚。

【讨论】:

以上是关于为啥我的分类数组时间中的年份没有在 Matlab 中正确转换?的主要内容,如果未能解决你的问题,请参考以下文章

时间序列分类 MATLAB

为啥 perfcurve() matlab 函数给了我直线而不是预期的正常曲线?

Matlab中的KNN文本分类

为啥我的交叉验证错误分类错误率与测试数据集成功率相矛盾

matlab中的最小二乘线性分类器

为啥我的查询没有返回枚举数组