0

我有一个希望在 MATLAB 中打开的 .tsv 文件,但是我遇到了几个问题。

我试过以下

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

有什么方法可以让它忽略标题,还是我做错了?

4

1 回答 1

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);
于 2013-12-09T15:04:52.673 回答