我正在尝试使用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()命令会因为每行末尾的“...”而引发错误。我正在寻找的是阅读前四列。
最有效的加载数据的方法是什么,同时完全省略最后的流氓列的流氓列?一种不涉及使系统解析整个文本文件两次的方法将是更可取的,尽管不是必需的。
答案 0 :(得分:6)
如果不使用加载,则使用textscan非常简单。您可以将最后一列视为字符串列,然后忽略它。
fid = fopen('data.txt');
data = textscan(fid,'%d %f %f %f %s');
fclose(fid);
然后,您可以通过连接要保留在一起的列来使输出成为单个矩阵。
data = [data{1:4}];
第五列刚填充'...'字符串。你可以忽略它。