【发布时间】:2016-11-18 07:17:45
【问题描述】:
我正在尝试使用 readtable 函数将文本文件中的数据导入工作区。
文本文件结构非常简单,由 date、time、integer 和 float 分别如以下最小示例所示:
2013-07-07 05:15:19 8 213.0
2013-07-07 05:15:19 11 109.0
2013-07-07 05:15:20 14 33.5
2013-07-07 05:15:24 56 182.0
当我尝试像这样加载数据时:
data = readtable(filename,...
'Format','%{yyyy-MM-dd}D %{HH:mm:ss}D %d %f %*[^\n]',...
'ReadVariableNames',false);
我收到以下错误:
Error using textscan
Badly formed format string.
Error in table/readTextFile (line 160)
raw = textscan(fid,format,'delimiter',delimiter,'whitespace',whiteSpace, ...
Error in table.readFromFile (line 41)
t = table.readTextFile(filename,otherArgs);
Error in readtable (line 114)
t = table.readFromFile(filename,varargin);
如果我尝试这样做:
data = readtable(filename,...
'Format','%{yyyy-MM-dd}D%{HH:mm:ss}D%d%f%*[^\n]',...
'Delimiter',' ',...
'ReadVariableNames',false);
我得到了完全相同的错误。
我检查了Mathwork's online documentation,但我无法找到解决问题的方法。
编辑:实际上,所需的表格格式是用 datetime 列替换 date 和 time 列。我正在做的是在阅读表格后手动加入 date 和 time。如果您知道一种方法可以直接导入合并这两个变量的表,那就太好了。
【问题讨论】:
-
您使用的是 R2014b+ 吗?我不确定
'%{yyyy-MM-dd}D'样式格式规范是否存在于早期版本中。如果您使用的不是最新版本,请确保您阅读的是安装随附的文档,而不是在线文档(尽管有 archived documentation)。 -
@horchler 很好发现!这似乎是这里的问题,因为我正在运行 Matlab R2013b,它显然无法识别
%{fmt}Dformatspec。