MATLAB 根据条件修改TXT文本内容

来源:互联网 发布:php都开发过什么软件 编辑:程序博客网 时间:2024/06/05 18:38

有时候,网上提供的数据格式和自己工程代码所需的格式可能有些区别, 比如我遇到的情况是数据中是指数形式e+n, 但是代码中缺一般需要小数浮点型的. 如果在大型工程代码中去修改, 不仅增加了很多不需要的代码, 而且由于工程复杂容易出错. 好的做法就是用MATLAB或者Python脚本先将数据修改一下, 然后转成自己可用的数据. 可根据自己的筛选条件, 修改if语句进行,定制自己的脚本.

例子是将数据中的指数形式数据,转成浮点型数据.
如:
输入指数型数据:

100,100e+1,100e+5124,1e+2,10e+12,1e+5,10e+231,1e+12,10e+2

输出浮点型数据:

100.000000,1000.000000,10000000.000000124.000000,100.000000,100.0000002.000000,100000.000000,1000.00000031.000000,1000000000000.000000,1000.000000

代码如下:

 %% Readfid = fopen('test1.txt','r');i = 1;tline = fgetl(fid);C = [];while ischar(tline)    disp(tline);    C{i} = strsplit(tline,',');    i = i+1;    tline = fgetl(fid);endfclose(fid);%% modifyfor k=1:length(C),    curC=C{k};%     disp(curC);    for i=1:length(curC),        s = curC{i};        if(isnumeric(str2num(s))),                disp(s);                C{k}{i} = sprintf('%f\n', str2num(s));        end    endend%% outputfid = fopen('test2.txt', 'w');for k=1:length(C),    curC=C{k};    str = curC{1};    for i=2:length(curC),        str = strcat(str,',',curC{i});    end    disp(str);    fprintf(fid,'%s\n', str);end