在MATLAB中混淆.tsv文件(转换为矩阵?)

时间:2013-12-09 13:32:55

标签: matlab tsv

我有一个.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

有什么方法可以让它忽略标题,或者我完全错了吗?

1 个答案:

答案 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);