我试图在降水数据列表中进行一些更改。
数据采用以下格式的*.txt
文件:
50810,200301010600,0.0
50810,200301010601,0.0
50810,200301010800,0.0
50810,200301010938,0.1
50810,200301010947,0.1
50810,200301010957,0.1
我所拥有的每个文件都包含1年内每分钟的降水数据。 第一个数字只是站号,对于文件中的每一行都是相等的。 在我的原始文件中,我每行都有一行数据。
我想创建一个包含以下内容的新文件:
如果有一整个小时没有降水,我想删除所有 零线并创建一条新线说: 50810,200301010600,0.0。如果6到7之间没有降水 上午。在01.01。
clear all
data = load('jan-31des_2003.txt'); %opens file with data
fid=fopen('50810_2003','w'); %opens empty file to write
[nrow, ncol] = size(data); %size of data
fprintf(fid,'%5s %12s %5s \r\n','Snr','Dato - Tid','RR_01') %Header
for row = 1:nrow
y = data(row,2); %year
m = data(row,3); % month
d = data(row,4); % date
h = data(row,5); % hour
M = data(row,6); % minute
p = data(row,8); % precipitation
if p > 0
fprintf(fid,'50810,%04d%02d%02d%02d%02d,%.1f \r\n',[y,m,d,h,M,p]);
end
if p==0
HERE I NEED SOME HELP
end
end
fclose(fid);
if p==0
条件下我想要的格式代码是什么?
答案 0 :(得分:0)
假设您已经将数据导入为名为infile的M * 3数组,并且M可以被60整除,并且您的数据从一小时的第一分钟开始,并且您有一个数组输出文件将写入新的文件:
outfile = []
while ~isempty(infile)
block = infile(1:60,:); % Take one hour's worth of data
if sum (block(:,3)==0) == 60 % Check if the last column are all zero
outfile = cat(1, outfile, [block(1,1:2), 0]); % If so, put one line to new array
else
filter = block(:,3)~=0; % Otherwise, pick out only rows that the last column is not zeros
outfile = cat(1, outfile, block(filter,:)); % Put these rows into the new array
end
infile(1:60,:) = []; % Remove already processed data from original array
end
然后将整个outfile
数组写入文件。