Importing text files with comments in MATLAB

2019-02-07 18:21发布

问题:

Is there any character or character combination that MATLAB interprets as comments, when importing data from text files? Being that when it detects it at the beginning of a line, will know all the line is to ignore?

I have a set of points in a file that look like this: alt text http://img209.imageshack.us/img209/5139/ysabyc2tn4aeig0jvxotibd.png And as you can see he doesn't seem to understand them very well. Is there anything other than // I could use that MATLAB knows it's to ignore?

Thanks!

回答1:

If you use the function textscan, you can set the CommentStyle parameter to // or %. Try something like this:

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

That will work if there are two numbers per line. I notice in your examples the number of numbers per line varies. There are some lines with only one number. Is this representative of your data? You'll have to handle this differently if there isn't a uniform number of columns in each row.



回答2:

Actually, your data is not consistent, as you must have the same number of column for each line.

1)

Apart from that, using '%' as comments will be correctly recognized by 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)

Otherwise use textscan to specify arbitrary comment symbols:

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);


回答3:

Have you tried %, the default comment character in MATLAB?

As Amro pointed out, if you use importdata this will work.