我的输入文件如下所示:
# FILE:app/src/f1.c
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 32 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
# FILE:src/f2.c
1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 31 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
...............
我想读取标题,即以#开头的行,以及标题下方的向量到列表中。我尝试使用importdata()如下所示。但这只给了我第一个标题和第一个向量。我需要阅读它直到文件的末尾。
filename = 'output.txt';
A = importdata(filename);
disp(A.rowheaders);
disp(A.data);
编辑:A = importdata(文件名,'#');这解决了我的问题
答案 0 :(得分:0)
我相信fgetl命令应该可以解决问题。
我会把它放在带有两个fgetl
命令的for循环中,一个用于元数据行,一个用于数字数据行。
编辑:添加了示例
fid = fopen('test.txt');
celHeaders = {};
celData = {};
while(~feof(fid))
celHeaders{end+1} = fgetl(fid);
celData{end+1} = fgetl(fid);
end
fclose(fid);
disp(celHeaders)
disp(celData)
这假设您的文本文件不包含数据上方或下方的其他行。