有时候,网上提供的数据格式和自己工程代码所需的格式可能有些区别, 比如我遇到的情况是数据中是指数形式e+n, 但是代码中缺一般需要小数浮点型的. 如果在大型工程代码中去修改, 不仅增加了很多不需要的代码, 而且由于工程复杂容易出错. 好的做法就是用MATLAB或者Python脚本先将数据修改一下, 然后转成自己可用的数据. 可根据自己的筛选条件, 修改if语句进行,定制自己的脚本.
例子是将数据中的指数形式数据,转成浮点型数据.
如:
输入指数型数据:
100,100e+1,100e+5
124,1e+2,10e+1
2,1e+5,10e+2
31,1e+12,10e+2
输出浮点型数据:
100.000000,1000.000000,10000000.000000
124.000000,100.000000,100.000000
2.000000,100000.000000,1000.000000
31.000000,1000000000000.000000,1000.000000
代码如下:
%% Read
fid = 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);
end
fclose(fid);
%% modify
for 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
end
end
%% output
fid = 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