• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

基于Matlab 2018b的dat文件读取及输出

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

——2020/11/23——

最近在处理dat文件的时候遇到了问题,记录一下:

原文件长这样:(以其中一行为例)

WP, 06, 2019071412,   , BEST,   0, 150N, 1351E,  15, 1008, DB,   0,    ,    0,    0,    0,    0, 1009,  210, 105,   0,   0,    ,   0,    ,   0,   0,     INVEST,  , 

既包含文字又包含数字,还有空格。

  • 第一种方法   importdata

importdata其实在这个时候并不好用(也可能是我不会用),在处理前两个文件时,按照一列一个cell读进来了,在处理第三个文件时,突然就自动划分了struct,还丢失了数据,造成了一定的困扰,所以我又研究了第二种办法

  • 第二种方法   自定义函数importfile

先上代码

function [data]=importfile(filename1)
fidin=fopen(filename1,\'r\');            %打开文件  
i=1;
data=cell(2,1);
while ~feof(fidin)                %判断是不是文件末尾                                
   tline=fgetl(fidin);             %读取一行,注意,读文一行后,光标就会自动到下一行
   if isempty(tline)     %判断是不是空行
      continue
   end
   data{i,1}=tline;
   i=i+1;
end
fclose(fidin);
end

代码实现的功能为:将dat文件里的数据按行读入,一行存在一个cell里,多个cell构成了data。

函数运用并取出对应行进行输出如下:

    DATA=importfile(filename);%自命名函数,filename是地址
    k=1;
    datname=strcat(\'D:\\',temp,\'.dat\');  %temp是文件名,必须为str
    fid = fopen(datname,\'w\');%写入文件路径
    for j=1:length(DATA)
        temp2=cell2mat(DATA(j,:));
        a=regexp(temp2,\',\',\'split\');  %以\',\'为分隔符进行分隔
        [r,c]=size(a);
        if c<28
            continue;   %如果划分后小于28个,则跳过该次循环
        end
        if strcmp(name,cell2mat(a(1,28)))  %对比,判断是我所需要的行则继续
            for e=1:r
                for f=1:c
                    if f==c
                        fprintf(fid,\'%s\',cell2mat(a(e,f)));   %fprintf输出
                    else
                        fprintf(fid,\'%s,\',cell2mat(a(e,f)));
                    end
                end
            end
            fprintf(fid,\'\r\n\');  %换行
            k=k+1;
        end
    end
    fclose(fid);  %关闭文件

 

如有错误还请斧正,共同进步~

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap