水文预报学习——01

该博客介绍了如何利用Matlab进行水文预报中的马斯京根法求解,通过试算法确定K和x参数。作者提供了具体的数据源、计算原理以及详细的Matlab代码实现,最终得出河段蓄水量与流量的关系,并展示了拟合结果。文章还包含了实际计算出的K值和x值,为水文预报的学习提供了实例参考。
摘要由CSDN通过智能技术生成

水文预报学习——01

参考书籍:水文预报 第五版 河海大学 包为民

第四章 河道流量演算与洪水预报

一、用试算法求马斯京根法中的 K 、x

1、例子数据来源水文预报 P107

在这里插入图片描述

2、计算方法原理

参考三峡大学水文预报课件

来自于三峡大学水文预报课件

3、Matlab代码实现

clc;clear
%% 数据准备
delta_T=18;%上例图中时间间隔deltaT
%上例图中上游实测流量数据Q上
I_datas=[19900,24300,38800,50000,53800,50800,43400,35100,26900,22400,19600]';
I_datas=I_datas(2:end);
%上例图中下游实测流量数据Q下
Q_datas=[23100,25400,36600,47500,51400,49200,42600,35200,29000,23900,21100]';
Q_datas=Q_datas(1:end-1);
%% 计算过程
%1、河段蓄水量S的计算
delta_S=zeros(length(I_datas),1);
for i=1:length(I_datas)-1
    delta_S(i+1)=1/2*(I_datas(i)+I_datas(i+1))*delta_T-1/2*(Q_datas(i)+Q_datas(i+1))*delta_T;
end
S=cumsum(delta_S);
%2、流量Q的计算
best_cor=0;%存储拟合最好的相关系数
best_x=0;%存储拟合最好的x
for x=0:0.01:0.5
    Q=x*I_datas+(1-x)*Q_datas;
    temp=corrcoef(S(2:end),Q(2:end));%因为S(1)的数据未知,所以从第二项开始拟合
    temp=temp(1,2);
    if temp>best_cor
        best_cor=temp;
        best_x=x;
        best_Q=Q;
    end
end
%% 画出蓄水曲线和用S=KQ求出K值
p=polyfit(best_Q(2:end),S(2:end),1);
K=p(1);
plot(S(2:end),best_Q(2:end))
title('槽蓄曲线')
xlabel('河段蓄水量S')
ylabel('流量Q')
result=[K,best_x]
4、结果展示
K=19.67 x=0.15

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值