matlab如何处理不均匀小时采样的数据,并合并成均匀日采样

前一专栏我介绍了如何将每日的水位数据合并成每月

Matlab实现GNSS、水位监测日数据转成月数据_matlab 由日数据求月平均-CSDN博客

现在我分享一个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;  
        else

            if(A(i,2)-A(i-1,2)==0)
                new_(i,14) = ind1;
            else
                ind1 = ind1+1;
                new_(i,14) = ind1;
            end
        end
    end

    for 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

♥欢迎点赞收藏♥

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是水怪的哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值