从文本文件导入数据时,MATLAB是否将任何字符或字符组合解释为注释?当它在一行的开头检测到它时,会知道所有的行都要忽略吗?
我在文件中有一组看起来像这样的点: 正如你所看到的,他似乎并不太了解它们。除了我可以使用MATLAB知道忽略之外还有什么吗?
谢谢!
答案 0 :(得分:10)
实际上,您的数据不一致,因为每行必须具有相同的列数。
除此之外,使用'%'作为评论将被 importdata 正确识别:
%12 31
12 32
32 22
%abc
13 33
31 33
%ldddd
77 7
66 6
%33 33
12 31
31 23
data = importdata('file.dat')
否则使用 textscan 指定任意注释符号:
//12 31
12 32
32 22
//abc
13 33
31 33
//ldddd
77 7
66 6
//33 33
12 31
31 23
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
,这将有效。