使用importdata()

时间:2017-06-16 11:25:15

标签: matlab file import

我的输入文件如下所示:

    # 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(文件名,'#');这解决了我的问题

1 个答案:

答案 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)

这假设您的文本文件不包含数据上方或下方的其他行。