加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MATLAB去掉数据文件中的字符串及逗号

(2017-09-06 15:52:40)
分类: MATLAB
       试验中许多自动采集软件采到的数据文件中都有一些解释性的字符串,这会为后续数据处理带来麻烦,我们需要将字符串、逗号等去掉,将数据整齐的排列。

【code 1】
clear;clc;
fol = pwd;   
for i=1:5
   i=i
dataname = ['warp-' num2str(i)];
fidin= fopen([fol '\' dataname '.dat']);
row = 1; %初始行
 while ~feof(fidin) % 判断是否为文件末尾
 tline = fgetl(fidin); % 从文件读行
  if ~isempty(str2num(tline))  %如果是我们想要的三列数据的话,就存储起来;
    data(row,:) = str2num(tline);
    row = row + 1;
  end
 end
save([dataname '.dat'], 'data','-ascii');
end

【code 2】
%只能运行一次,重复运行会清空文件
clear;clc;
fol=pwd;
dataname = ['w50-2a0-0du-1'];
fidin= fopen([fol '\' dataname '.dat'])
%*************去掉字符串*************%
row = 1;                                           % 初始行号
while ~feof(fidin)                             % 判断是否为文件末尾,如果不是则进行下一步
      tline = fgetl(fidin)                       % 从文件读行,,删除文件换行符 
  if ~isempty(str2num(tline))            % 如果tline非空,则进行下一步    
      data(row,:) = str2num(tline);
      row = row + 1;
  end
end


【注】:
1. 函数feof(fid) 用法:
文件指针 fid 到达文件末尾时返回“真”值;否则返回“假”;
~feof 是在 feof 前加了“非”,是逻辑表达式:文件指针到达文件末尾时 该表达式值为“假”;否则为“真”;
while ~feof 表示:若未读到文件末尾则继续 循环
while feof 表示: 若未读到文件末尾则终止循环,所以只循环一次就终止

2.tline=fgetl(fid)
从文件中读取行,删除文件换行符
返回由文件标识符fid指示的文件的下一行。如果fgetl遇到文件结束指示符,则返回-1。对于fid的完整描述请参考fopen函数。fgetl函数常用于含有文件换行符的文件。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有