前一专栏我介绍了如何将每日的水位数据合并成每月
Matlab实现GNSS、水位监测日数据转成月数据_matlab 由日数据求月平均-****博客
现在我分享一个matlab程序,将每小时不均匀采样的水质数据统一成日采样。这一方法对其他的有关时间数据处理具有借鉴意义。
下面展示了部分水质数据 water.txt 的数据的具体格式:
月 日 年 小时
10 02 2013 12:00 0 0 0.4259 0 0 0.0102 0 0
10 02 2013 20:00 0 0 0.4425 0 0 0.0068 0 0
10 03 2013 04:00 0 0 0.4287 0 0 0.0046 0 0
10 03 2013 12:00 0 0 0.4573 0 0 0.0035 0 0
10 03 2013 20:00 0 0 0.4599 0 0 0.0054 0 0
10 04 2013 04:00 0 0 0.4282 0 0 0.004 0 0
10 04 2013 12:00 0 0 0.4346 0 0 0.0034 0 0
10 04 2013 20:00 0 0 0.4174 0 0 0.0158 0 0
10 05 2013 04:00 0 0 0.3955 0 0 0.0171 0 0
我们看到每一行时间采样是不均匀的,因此我们的思路是:循环读取,在数据后面添加label,如果日是不变的,则label是1,当前后的日发生变化,则对应的label加1,这样我们最终可以得到互相不冲突的label标记,后面只需要对相同标记的行求平均。
下面是matlab代码:
A = load(['water.txt']);
ind1 = 1;
new_ = [A,zeros(length(A(:,1)),1)];for i = 1:length(A(:,1))
if(i==1)
new_(1,14) = ind1;
elseif(A(i,2)-A(i-1,2)==0)
new_(i,14) = ind1;
else
ind1 = ind1+1;
new_(i,14) = ind1;
end
end
endfor i = 1:max(new_(:,14))
ind = find(new_(:,14)==i);
if(length(ind)==1)
out(i,:) = new_(ind,:);
else
out(i,:) = mean(new_(ind,:));
end
end
♥欢迎点赞收藏♥