ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

matlab逐行读取text文件,编写函数提取需要的文字

2019-08-09 09:50:52  阅读:256  来源: 互联网

标签:end fid text a1 a2 matlab str data 逐行


在数学建模中遇到的数据比较难处理,而且给的是text格式,自己想了好长时间才编出来,现在分享一下,可以交流学习

目标的text文件是

只提取里面的数据

需要自编函数

clc,clear
path='D:\matlab文件\zz\';
namelist=dir([path,'*.txt']);
nam=length(namelist);
file=dir('zz\*.txt');
sign=1;
for n=1:nam
    filename{n}=[path,namelist(n).name];
% [data1,data2]=textread(filename,'%s%s','delimiter', ':','headerlines',6);
% [a1,a2]=size(data2);
% for i=1:a1
%     s(i,:)=char(data2(i,:));
% end
% datas(2)
% for i=1:a1
%     s(i)=regexp(datas(i,:),' ','split')
% end
% for i=1:a1
%     s=char(data2(i));
%     datas(i)='s';
% end
% fid=fopen('data.txt','w');
% fprintf(fid,'%c',data2);
% fclose(fid);
    s=[]
    fg=4
    fid=fopen(filename{n},'r');
    while ~feof(fid)
         str = fgetl(fid)
         em=isempty(str)
         if em==0
             if str(1)=='1'&&str(2)=='1'
                 continue
             end
             if str(1)=='时'
                 st1=str(1,4:7);
                 st2=str(1,9:10);
                 st3=str(1,12:13);
                 s(1)=str2num(st1);
                 s(2)=str2num(st2);
                 s(3)=str2num(st3);
             end
             if str(1)=='0'||str(1)=='1'||str(1)=='2'||str(1)=='3'||str(1)=='4'
                 [a1,a2]=size(str);
                 for i=1:a2
                     if str(i)==':'
                         left=i+1;
                         break
                     end
                 end
                 right=a2;
                 for i=left:a2
                      if str(i)==' '
                         right=i
                         break
                      end
                 end
                 s(fg)=str2num(str(1,left:right));
                 fg=fg+1;
             end
         end
    end
    sx(sign,:)=s;
    sign=sign+1;
end

  

clc,clear
data=xlsread('zz0.xlsx');
[a1,a2]=size(data);
data0=[]
flag=1;
for i=1:a1
    if data(i,8)>100&&data(i,11)>10
        data0(flag,:)=data(i,:);
        flag=flag+1;
    end
end
xlswrite('zq.xlsx',data0)

  

clc,clear
data=xlsread('zq.xlsx');
[a1,a2]=size(data);
datas=[]
flag=1;
datas(1,:)=data(1,:);
% if i<=264
%     pp=0;
%     while data(i,2)==datas(i-1,:2)&&data(i,3)==data(i-1,:3)
%         pp=pp+1;
%         i=i+1;
%     end
%     if 
for i=2:a1
    if data(i,2)==datas(flag,2)&&data(i,3)==datas(flag,3)
        blan=data(i,:)+datas(flag,:);
        blan=blan./2;
        datas(flag,:)=blan;
    else
        flag=flag+1;
        datas(flag,:)=data(i,:);
    end
end
xlswrite('zq1.xlsx',datas)
        
        

  

 

标签:end,fid,text,a1,a2,matlab,str,data,逐行
来源: https://www.cnblogs.com/zq-dmhy/p/11325264.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有