在MATLAB中导入带注释的文本文件

时间:2009-12-14 17:01:28

标签: file matlab file-io import comments

从文本文件导入数据时,MATLAB是否将任何字符或字符组合解释为注释?当它在一行的开头检测到它时,会知道所有的行都要忽略吗?

我在文件中有一组看起来像这样的点: alt text 正如你所看到的,他似乎并不太了解它们。除了我可以使用MATLAB知道忽略之外还有什么吗?

谢谢!

3 个答案:

答案 0 :(得分:10)

实际上,您的数据不一致,因为每行必须具有相同的列数。

1)

除此之外,使用'%'作为评论将被 importdata 正确识别:

FILE.DAT

%12 31
12 32
32 22
%abc
13 33
31 33
%ldddd
77 7
66 6
%33 33
12 31
31 23

MATLAB

data = importdata('file.dat')

2)

否则使用 textscan 指定任意注释符号:

File2.DAT的

//12 31
12 32
32 22
//abc
13 33
31 33
//ldddd
77 7
66 6
//33 33
12 31
31 23

MATLAB

fid = fopen('file2.dat');
data = textscan(fid, '%f %f', 'CommentStyle','//', 'CollectOutput',true);
data = cell2mat(data);
fclose(fid);

答案 1 :(得分:4)

如果您使用textscan功能,则可以将CommentStyle参数设置为//%。尝试这样的事情:

fid = fopen('myfile.txt');
iRow = 1;
while (~feof(fid)) 
    myData(iRow,:) = textscan(fid,'%f %f\n','CommentStyle','//');
    iRow = iRow + 1;
end
fclose(fid);

如果每行有两个数字,那将会有效。我在你的例子中注意到每行的数字变化。有些行只有一个数字。这是您数据的代表吗?如果每行中没有统一数量的列,则必须以不同方式处理此问题。

答案 2 :(得分:1)

您是否尝试过%,即MATLAB中的默认注释字符?

正如Amro所指出的,如果你使用importdata,这将有效。