matlab批量切分txt文件

学习任务要求根据眼动信息画图,之前测试只能通过一张图片的对应信息画一张图,但由于眼动数据过多,且存储在一个txt文件中,故需要方法实现对txt文件的批量切割,每一份分到一个单独的txt文件中,对其进行重新命名。
切割txt文件的函数如下:

function splitFile(txtFile)   
    fid = fopen(txtFile, 'r');
    global start;%global声明全局变量
    start = 0;
    trialCount = 1;
    while ~feof(fid)%若未读到文件尾
        tline = fgetl(fid);%从文件中读取一行数据
        atomCell = strsplit(tline);%分割字符串得到元胞数组,默认按照空白字符分割
        atomString = strings(size(atomCell));%得到元胞数组大小并创建不包含字符的字符串数组  
        [atomString{:}] = atomCell{:};%{:}表示显示元胞数组的所有内容
        n = size(atomString,2);%atomString的块数(第二个维度的长度)
        first = 0;
        if n == 4
            if start == 0 && strncmpi(atomString(1),'Start',5)%比较字符串的前5个字符是否为Start
                start = 1;
                first = 1;
                Number = atomString(2);
                Image = atomString(3);
                PP=atomString(4);  
                wfid = fopen(strcat('C:/Users/Louise喵/Desktop/drawdata/FOV20/', PP, '/',Number,'%',Image,'%',PP,'.txt'), 'w');%打开对应txt文件并准备写入,没有则直接创建并写入
            end            
        end
        if start == 1
            fprintf(wfid, '%s ', atomCell{:});%一行的信息全部写入
            fprintf(wfid,'\n');%换行
            if n == 4
                if strncmpi(atomString(1),'Done',4) && first == 0 %即扫描到结束的一行
                   start = 0; 
                   fclose(wfid);
                   trialCount = trialCount + 1;
                   %break;
                end
            end
        end
    end
    fclose(fid);
end

调用函数即可。

txtFile = 'C:/Users/Louise喵/Desktop/dataFOV20.txt';
splitFile(txtFile);

我的文件形式如下:
在这里插入图片描述
代码通过Start行和Done行对文件进行分割,即得到每一份都是Start和Done中间的内容。
切割结果如下:
在这里插入图片描述
在这里插入图片描述
速度很快,跑一次就可以全部切分完成啦。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值