weixin_42417566
weixin_42417566
2019-06-01 17:15
采纳率: 0%
浏览 1.6k

如何用matlab批量读取多个txt文件中指定行的内容

有60个txt文件,每个txt文件中并不是纯数据,开头含有字母,如下图所示 。我需要的是每个文件中的第6行的数据,就是读取这一行的数据,然后将60个文件中的VV开头一行的数据全部放到一个数组!当中。请问如何编写这样的程序,挺急的,希望高人指点。某一个TXT的文件内容如下(最好是用matlab)图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • ifeng156789
    ifeng156789 2019-06-01 19:54

    % 实现思路:
    % 1. 逐一以文本形式打开文件 file(n).txt ;
    % 2. 逐行读出数据,并判断前9个字符是否 Timestamp ;
    % 3. 如是,在下一行接收数据存入结果并退出此文件;
    % 4. 如不是,继续往下读数据。
    pt = 'd:\data\'; % 数据路径
    ff = 'file'; % 数据文件前缀
    ext = '.txt'; % 数据文件扩展名
    stamp = 'Timestamp'; % 数据查找标志
    n = 100; % 文件个数
    for k = 1:n
    id = num2str(k);
    files{k} = [pt ff id ext]; % 文件名列表
    end
    dt = [];
    for k = 1:length(files)
    fds = 0; % 查找结果
    fid = fopen(files{k});
    while ~feof(fid)
    tline = fgetl(fid);
    if fds==1
    dt = [dt; str2num(tline)];
    fclose(fid);
    break
    else
    if length(tline)>8
    fds = strcmp(stamp,tline(1:9));
    end
    end
    end

    end

    点赞 1 评论
  • weixin_42149198
    weixin_42149198 2019-06-01 18:13

    % 实现思路:
    % 1. 逐一以文本形式打开文件 file(n).txt ;
    % 2. 逐行读出数据,并判断前9个字符是否 Timestamp ;
    % 3. 如是,在下一行接收数据存入结果并退出此文件;
    % 4. 如不是,继续往下读数据。
    pt = 'd:\data\'; % 数据路径
    ff = 'file'; % 数据文件前缀
    ext = '.txt'; % 数据文件扩展名
    stamp = 'Timestamp'; % 数据查找标志
    n = 100; % 文件个数
    for k = 1:n
    id = num2str(k);
    files{k} = [pt ff id ext]; % 文件名列表
    end
    dt = [];
    for k = 1:length(files)
    fds = 0; % 查找结果
    fid = fopen(files{k});
    while ~feof(fid)
    tline = fgetl(fid);
    if fds==1
    dt = [dt; str2num(tline)];
    fclose(fid);
    break
    else
    if length(tline)>8
    fds = strcmp(stamp,tline(1:9));
    end
    end
    end

    end

    点赞 评论
  • Yanpengwu
    Yanpengwu 2019-06-01 20:07

    1.把文件放到一个文件夹内,用dir命令获取一个包含了所有文件文件名的cell;
    2.有一个for循环,依次打开每一个文件;
    3.打开文件后,用fgetline跳过前面几行,读取指定行到一个string里面;
    4.去掉string前面没用的几个字符;
    5.保存去掉无效字符后的有效字符串。

    点赞 评论

相关推荐