【发布时间】:2017-11-17 18:07:12
【问题描述】:
我编写这段代码来计算 datenum 值:
Test_table = table2dataset(Test_table);
t1 = Test_table (:,3);
c1 =dataset2cell(t1);
C1 = strrep(c1(2:end), '"', '');
formatIn = 'yyyy-mm-dd HH:MM:SS.FFF';
T1= datenum(C1(1:end),formatIn);
我有表格格式的数据,这些数据被转换成数据集,然后我从那里以单元格数组的形式提取时间戳。但是当我运行代码时,出现以下错误:
DATENUM 的输入不是字符向量数组。
单元格数组格式的整个时间戳(t1)上传到此站点here:但仍然出现错误,'Error using strrep
单元格元素必须是字符向量。 .这里有什么问题?
解决方案:
经过1天的挣扎,我能够解决这个问题。实际上我得到的错误是因为我有以下格式的数据集[1x1 string] 这是错误的,因此我的代码出现错误。所以为了解决这个问题,我使用了cellstr 函数,它将我的整个数据集转换为单元格。因此现在工作。所以正确的代码应该是这样的,
t1 = table2dataset(:,3);
C1 = cellstr(t1);
d1 = strrep(C1, '"', '');
formatIn = 'yyyy-mm-dd HH:MM:SS.FFF';
t1 = datenum(d1, formatIn);
希望这对未来的访客有所帮助!
【问题讨论】:
-
如果您提供矩阵作为输入,则不能根据documentation 指定
formatIn。试试T1= datenum(c1)。输入格式应自动确定。 -
这也行不通。我收到以下错误“DATEVEC 的输入不是字符向量数组。”
-
我注意到时间戳中有双引号,但在 matlab 示例中应该是单引号。那么我们如何将双引号替换为单引号呢?
-
单引号表明它是一个字符串,日期字符串内没有引号。如果您的字符串包含双引号,请使用
c1 = strrep(c1, '"', '')删除它们,其中中间参数是双引号括起来的单引号,最后一个参数只是两个单引号。 -
是的,我也在考虑同样的问题。但是我怎样才能从整个 c 值中删除双引号,因为这显示了唯一的一个值。我有 500 个值的时间戳。如何使用上述函数将整个值转换为单引号?