我有一个.tsv文件,我希望在MATLAB中打开,但是我遇到了一些问题。
我试过以下
fid = fopen('data.tsv');
C = textscan(fid, ['%s' repmat('%f',1,8)], 'HeaderLines', 1);
fclose(fid);
并得到一些与我的文件无关的奇怪值。我也尝试过:
data = dlmread('data.tsv', '\t');
并得到了这个
Error using dlmread (line 139)
Mismatch between file and format string.
Trouble reading number from file (row 1u, field 1u) ==> Participant Assessment
Experiment Block Trial
Answer Reaction Timestamp Free Response\n
有什么方法可以让它忽略标题,或者我完全错了吗?
答案 0 :(得分:0)
使用dlmread
,您可以指定在文件中开始阅读的位置。这是MATLAB索引从0开始的少数几次之一 - [0,0]是第一行第一列。因此,要忽略第一行(包含标题):
data = dlmread('data.tsv','\t', 1, 0);
仅当所有值(跳过的标题行除外)都是数字时才会起作用。
textscan
的示例对我来说也很好(假设提供的格式正确且确实只有一个标题行)。 C将是一个单元阵列;要从每列中获取数据,请使用C {n},其中n是列号。
不是跳过标题行,而是将其读入单独的值有时很有用:
fid = fopen('data.tsv');
C_header = textscan(fid, '%s',9);
C = textscan(fid, ['%s' repmat('%f',1,8)]);
fclose(fid);