Matlab importdata忽略带有txt文件的分隔符和nheaderlines

时间:2012-05-21 10:38:10

标签: matlab file-io

我有几个txt文件,如下所示:

Experiment ended at 5/8/12 10:00 AM
Number of Tunings 9
0 14.0 82 43.305 
1 34.142857142857146 95 23.432 
2 5.857142857142857 82 31.573 
3 37.42857142857143 83 22.387 
4 5.0 93 14.664 
...etc

我想加载这些数据,以便忽略前两行,并且我将基于空格的列作为分隔符,因此上面的内容将成为:

0  14.0                82  43.305 
1  34.142857142857146  95  23.432 
2  5.857142857142857   82  31.573 
3  37.42857142857143   83  22.387 
4  5.0                 93  14.664 

函数importdata(FILENAME, DELIM, NHEADERLINES),正是这样做的。但是当我用importfile('pathtofile', ' ', 2)调用这个函数时,我得到一个包含文件中所有字符的字符串,所以这样:

Experiment ended at 5/8/12 10:00 AM Number of Tunings 9 0 14.0 82 43.305 1 34.142857142857146 95 23.432 ...etc

如何让importdata正确解析我的数据?

2 个答案:

答案 0 :(得分:1)

你也可以像这样使用dlmread

dlmread('filename.txt', ' ', 2, 0)

答案 1 :(得分:0)

>> help importdata has the following note:

  

如果importdata识别文件扩展名,则会调用MATLAB帮助程序   用于导入相关文件格式的函数。除此以外,   importdata将文件解释为分隔的ASCII文件。

也许.txt触发importdata以文本形式加载文件。但是在我的MATLAB版本中,importdata可以在名为.txt的文件中正常处理示例数据。你用的是哪个版本?

如果所有其他方法都失败了,您可以使用MATLAB内部的copyfile进行重命名

fname = 'sample.txt';
barename = regexprep(fname, '\.txt$', '');
copyfile(fname, barename);
importdata(barename, ' ', 2);