我在对*.txt文件进行某些更改时遇到问题。数据的格式如下:
11,2003,1,1,9,38,40.38,1
11,2003,1,1,9,47,2.5,1
11,2003,1,1,10,34,43.88,1
11,2003,1,1,10,38,14.5,1
11,2003,1,1,12,47,13.2,1其中,列是站号、年、月、日、时、分、秒和降水量(1= 0.1毫米)
降水量=0的时间不包括在列表中。这导致在没有降雨的小时内将不会出现。对于这些情况,我想在新文件中为没有降雨的小时的第一分钟创建一个条目,以表明已经进行了测量。如下所示:
50810,200301010938,0.1
50810,200301010947,0.1
50810,200301011034,0.1
50810,200301011038,0.1
50810,200301011100,0.0 <---- This is what I need to get in the New file
50810,200301011247,0.1(新站号,日期/时间,降水量)
到目前为止,我想出了这个:
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
p = p*0.1
end
fclose(fid);发布于 2015-11-17 18:18:54
您可以使用if命令来检查您正在查看的下一个小时是否比上一个小时提前了一个小时。如果是这种情况,您可以在此时创建一个新条目:
if data(row,5) > (data(row-1,5)+1)
y = data(row,2); %year
m = data(row,3); % month
d = data(row,4); % date
h = data(row,5)+1; % hour
M = 00; % minute
p = 0; % precipitation
end在此部分之后,您将需要再次检查是否有另一个“跳过”小时,以此类推。您还应该将for循环替换为while循环,直到到达数据集中的最后一个条目。
试着实现这个想法,并将你的代码带给我们,以防它无法工作。
https://stackoverflow.com/questions/33753390
复制相似问题