刚刚完成的一个批量处理txt文件的算法,思路比较简单,但有txt文件中混合着数值和字符。所以在完成数值提取遇到了一定困难。但最终,在鸟贤协助下用了一种比较笨的方法做出来了,算法的执行效率不算高,接下来有时间我会将它改写成
并行计算的版本。
所处理的数据是1961年到2010年间的全国温度数据,总计600个txt,需要将txt中混杂的的数值数据提取出来,并且去除一部分无效数据,然后再做其他的数据分析工作。主要代码如下,已经做好了注释,复制并改掉相应于的文件属性,可以直接运行。
function [varargout]= htemperature(varargin)
clc;
clear all;
%因为温度统计文件有多600个,且命名具有一定的规律性,所以可以使用循环读取文件
time=196100;
for f = 1:12 %对600个文件进行循环
sname = 'D:\mean\SURF_CLI_CHN_TEM_MON_GRID_0.5-MEAN-';
if mod(f,12)==1 & f>1
time = time +89;%跳到第二年1一月份
else
time=time+1;
end
sname=[sname num2str(time)];
sname=[sname '.txt']; %此时sname就是一个完整的路径与文件名;
% hcell =
importdata(sname);%将产生两个数值和非数值元胞,此处不用textread的原因是列数太多
% fmatrix = hcell.data;
%
原文件分布不规则,弃用元胞,且textread,importdata读取函数皆要求数据分布规则故采用
k=0;
r=0;%计数器
hcell=importdata(sname);%读入数据
[m,n]=size(hcell.textdata);%统计包含字符的向量
j=1;%字符转数值的计数器
for x = 1:m
htext = cell2m
所处理的数据是1961年到2010年间的全国温度数据,总计600个txt,需要将txt中混杂的的数值数据提取出来,并且去除一部分无效数据,然后再做其他的数据分析工作。主要代码如下,已经做好了注释,复制并改掉相应于的文件属性,可以直接运行。
function [varargout]= htemperature(varargin)
clc;
clear all;
%因为温度统计文件有多600个,且命名具有一定的规律性,所以可以使用循环读取文件
time=196100;
for f = 1:12 %对600个文件进行循环
sname = 'D:\mean\SURF_CLI_CHN_TEM_MON_GRID_0.5-MEAN-';
if mod(f,12)==1 & f>1
time = time +89;%跳到第二年1一月份
else
time=time+1;
end
sname=[sname num2str(time)];
sname=[sname '.txt']; %此时sname就是一个完整的路径与文件名;
%
%
%
k=0;
r=0;%计数器
hcell=importdata(sname);%读入数据
[m,n]=size(hcell.textdata);%统计包含字符的向量
j=1;%字符转数值的计数器
for x = 1:m
htext = cell2m
