1

我正在尝试使用 MATLAB 中的 load() 函数从文本文件中读取数据。但是,文本文件的每一行都以“...”结尾。数据文件不是由 MATLAB 生成的,所以我无法控制省略号的来源。

我正在加载的数据文件如下所示:

11191425        NaN     NaN     0.0 ...
11191426        NaN     NaN     0.0 ...
11191427        NaN     NaN     0.0 ...
11191428        NaN     NaN     0.0 ...
11191429     2280.5  1910.1   455.0 ...
11191430     2280.5  1910.1   455.0 ...
11191431     2298.0  1891.1   454.0 ...
11191432     2317.3  1853.7   453.0 ...
11191433     2335.6  1811.1   458.0 ...
11191434     2350.6  1769.8   466.0 ...
11191435     2365.3  1729.7   475.0 ...
11191436     2379.5  1691.2   485.0 ...
11191437     2378.3  1647.6   492.0 ...
11191438     2375.4  1621.3   499.0 ...
11191439     2372.7  1598.5   499.0 ...
11191440     2372.7  1598.5   499.0 ...
11191441        NaN     NaN     0.0 ...
11191442      294.9  1283.5  1163.0 ...
11191443      294.9  1283.5  1163.0 ...

它的实际长度超过 100,000 行,但你明白了。使用 load() 命令会引发错误,因为每行末尾都有 '...'。我正在寻找的只是阅读前四列。

加载数据的最有效方法是什么,同时在最后完全省略掉流氓椭圆列?不涉及使系统两次解析整个文本文件的方法会更好,但不是必需的。

4

1 回答 1

6

如果您使用textscan而不是使用 load,这很容易。您可以将最后一列视为字符串列,然后忽略它。

fid = fopen('data.txt');
data = textscan(fid,'%d %f %f %f %s');
fclose(fid);

然后,您可以通过连接要保持在一起的列来使输出成为单个矩阵。

data = [data{1:4}];

第五列只填充了“...”字符串。你可以忽略它。

于 2012-08-15T18:09:57.053 回答