【问题标题】:Read from a file into a vector in matlab using importdata()使用 importdata() 从文件读取到 matlab 中的向量
【发布时间】:2017-06-16 11:25:14
【问题描述】:

我的输入文件如下所示:

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

【问题讨论】:

  • 不要在问题中添加解决方案。把它作为一个答案。顺便说一句,该解决方案不会以结构形式导入数据,显然您正在尝试这样做。而是将数据作为单元格导入。

标签: matlab file import


【解决方案1】:

我相信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)

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

【讨论】:

    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    相关资源
    最近更新 更多