【水文学法总结】河道内生态流量计算方法(含MATLAB实现代码)
生态流量(Ecological Flow, EF) 是指维持河道内生态环境所需要的水流流量。生态流量计算方法众多,主要分为水文学方法、栖息地模拟法、水力学方法、整体法等,各方法多用于计算维持河道生态平衡的最小生态流量(Minimum Ecological Flow, MEF)即生态基流。
水文学方法原理简单、计算快捷,适应于较长河流生态流量的确定。同时该算法也可以用于缺乏水文站点和详细水文数据的河流,应用较为广泛。
【水文学法总结】河道内生态流量计算方法
- 1 Tennant法
- 1.1 原理
- 1.2 MATLAB计算代码
- 2 最小月多年平均流量法(Minimum average monthly flux method, MAMFE)
- 2.1 原理
- 2.2 MATLAB计算代码
- 3 年内展布计算法(Dynamic calculation method, DCM)
- 3.1 原理
- 3.2 MATLAB计算代码
- 4 FDC法
- 4.1 原理
- 4.2 MATLAB计算代码
- 5 多层次生境条件的改进Tennant法(MTMMHC法)
- 5.1 原理
- 5.2 MATLAB计算代码
- 参考
1 Tennant法
1.1 原理

1.2 MATLAB计算代码
代码如下:
function [MEF, OEFmin] = getMEF_Tennant( Runoff )
%% 方法1:Tennant法
% 河道内生态流量:采用不同用水期(年/月尺度)相应天然径流量的多年平均同期径流量的百分比
% 输入变量
% Runoff 月均径流序列
% 输出变量
% MEF 最小生态流量
% OEFmin 最优生态流量下限值
% AAF 多年平均年径流量
% AMF 多年平均月径流量nMonth =12;
nYear = length(Runoff)/nMonth;MF = reshape( Runoff, nMonth , nYear );
AAF = mean( sum( MF,2 ) );
AMF = mean( MF ,2 );MEF = 0.1* AMF;
OEFmin = 0.6* AMF;
end
2 最小月多年平均流量法(Minimum average monthly flux method, MAMFE)
2.1 原理

2.2 MATLAB计算代码
代码如下:
function MEF = getMEF_MAMFE( Runoff )
%% 方法2:最小月多年平均流量法
% 最小生态流量:河流每年最小月平均流量的多年平均值
% 输入变量
% Runoff 月均径流序列
% 输出变量
% MEF 最小生态流量
% AAFmin 多年最小平均年径流量
% MFmin 多年最小月均径流量
% MF 月均径流量nMonth =12;
nYear = length(Runoff)/nMonth;MF = reshape( Runoff, nMonth , nYear );
MFmin = min( MF ,[], 2 );
AAFmin = mean( MFmin );MEF = AAFmin;
end
3 年内展布计算法(Dynamic calculation method, DCM)
3.1 原理
年内展布法基于历史流量资料,以年最小径流总量与多年平均径流总量二者之间的比值,得到各月生态流量与各月多年平均径流量之间的关系,以此确定生态流量。
3.2 MATLAB计算代码
代码如下:
function MEF = getMEF_DCM( Runoff )
%% 方法3:年内展布计算法
% 输入变量
% Runoff 月均径流序列‘
% MEF 最小生态流量
% AAFmin 多年最小平均年径流量
% MFmin 多年最小月均径流量
% MF 月均径流量nMonth =12;
nYear = length(Runoff)/nMonth;% 步骤1:根据长时间水文序列天然月均径流资料,分别计算多年平均年径流量和多年最小平均年径流量
MF = reshape( Runoff, nMonth , nYear );
AAF = mean( sum( MF,2 ) );
MFmin = min( MF ,[], 2 );
AAFmin = mean( MFmin );% 步骤2:计算多年最小年均径流量和多年平均年径流量的比值η
eta = AAFmin/AAF;% 步骤3:根据多年平均月径流量,计算各月最小生态流量
AMF = mean( MF , 2 );
MEF = AMF* eta;
end
4 FDC法
4.1 原理
4.2 MATLAB计算代码
代码如下:
function MEF = getMEF_FDC( Runoff )
%% 方法4:FDC法
% 取流量历时曲线,频率为90%时流量为河道内最小生态流量
% 输入变量
% Runoff 月均径流序列‘percent = 0.9;
flag = 0;
MEF = GetThreshold( Runoff , percent , flag);
end% 调用函数
% -------------------------------------------------------------------------------
function Th = GetThreshold( X , percent , flag)
% GetThreshold函数可根据样本数据集X得到percent阈值下的临界值
% 输入参数 Input parameter
% X 数据(所有样本),可为降水Precipitation,为向量数据
% percent 阈值百分数,如90%或95%,表示为小数,∈(0,1)
% flag 取值为0,表示取小值;取值为1,表示取大值
% 输出参数 Output parameter
% Th 相应阈值下数值X = reshape( X,[],1 ); % 确保输入序列X为行向量n = length( X );
I = zeros(n,1);
[Xsorted, ~] = sort( X, 'ascend'); % 按升序排列
for i=1:nI(i) = find( X(i)==Xsorted);
endif flag==0percent = 1-percent;
endP = (I-0.44)./(n+0.12);
[~, ThIndex] = min( abs(P-percent) );
Th = X(ThIndex);%{
figure(1)
hold on;box on;
h(1) = plot( X, P ,'k.','MarkerSize', 8);
h(2) = plot( Th,percent ,'rp','MarkerSize', 10,'MarkerFaceColor','r','MarkerEdgeColor','r');
h(3) = plot( [0 Th],[ percent percent],'k--','linewidth',1);
xlabel("X(P/T)");
ylabel("Percent");
set(gca,'FontSize',14,'Fontname', 'Times New Roman');
%}
end
5 多层次生境条件的改进Tennant法(MTMMHC法)
5.1 原理


生态流量采用MTMMHC法计算,其主要优势在于:
①同传统Tennant法以平均流量的单一百分比作为生态流量不同,它计算出不同月份不同水平年的生态流量,其中水平年的划分基于月平均流量序列的不同保证率,能充分考虑流量的年内变化和年际变化(时间变异性);
②它以不同水平年组不同月份的月中值流量代替Tennant法中年平均流量或月平均流量,考虑了极端年际流量及流量年内分布不均的影响(时间变异性);
③采用MTMMHC法计算流域内不同子流域的各级生态流量,即在不同河段采用不同的生态流量,能改进在整个流域采用同一个生态流量的情况(空间变异性)。
5.2 MATLAB计算代码
代码如下:
参考
相关文章:
【水文学法总结】河道内生态流量计算方法(含MATLAB实现代码)
生态流量(Ecological Flow, EF) 是指维持河道内生态环境所需要的水流流量。生态流量计算方法众多,主要分为水文学方法、栖息地模拟法、水力学方法、整体法等,各方法多用于计算维持河道生态平衡的最小生态流量(Minimum …...
特斯拉Model 3的七年狂飙
作者 | 张祥威 编辑 | 德新 发布一周拿下32万张订单,之后用时五年,交付量突破100万辆。粗略计算,自2016年发布至今,特斯拉Model 3已交付超150万辆。 放眼新能源赛道,如此战绩 别无二家。 Model 3踩中纯电动车的…...
物流签收异常,财务对账复杂,怎么解决?
电子商务行业的蓬勃发展为人们的购物体验带来了巨大的便利,然而,随之而来的物流签收异常和财务对账复杂问题却给电商企业的财务部门带来了一系列困扰。 每天大量的订单和货物流转,不可避免地导致了物流签收数据与财务记录之间的不一致和差异…...
docker之镜像与数据卷
镜像 简介 1.镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于环境开发的软件,他包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量、配置文件 2.将所有的应用和环境11,直接打包成docker镜像&…...
服务器为什么会被攻击?43.248.186.x
进入信息时代,各种行业对数据的安全和技术要求也越来越高,同时也遇到了各种各样的服务器故障问题,但是网络攻击才是最大的伤害,在这上面造成了企业不必要的损失,那么服务器为什么会被攻击,这里给大家讲解一下服务器被攻击有哪几种情况 一、服…...
文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题
四、请用go语言,证明:RANDOMIZED-QUICKSORT 期望运行时间是 Ω(nlgn)。 文心一言: 首先,为了证明RANDOMIZED-QUICKSORT的期望运行时间是Ω(nlg n),我们需要证明在最坏的情况下,该算法的运行时间是O(nlg n)。然后&…...
整理mongodb文档:索引
个人博客 整理mongodb文档:索引 个人博客,求关注,有问题的地方欢迎指出,觉得讲解的繁琐的也请指出 文章概叙 本文主要还是在shell下的操作。让大家了解下mongodb中index的用途,基本的索引的新增、查看、删除等,最后…...
EPICS libCom库(4) -- epicsTimer
epicsTimer.h描述了一个C和C timer功能。 1 C接口 1.1 epicsTimerNotify和epicsTimer /* 使用一个timer的代码必须实现epicsTimerNotify */ class LIBCOM_API epicsTimerNotify { public:enum restart_t { noRestart, restart };class expireStatus {public:LIBCOM_API expir…...
成都大运会,保障大型活动无线电安全需要…
成都大运会 7月28日,备受关注的第31届世界大学生夏季运动会在成都正式开幕。据悉,这是全球首个5G加持的智慧大运会,也是众多成熟信息技术的综合“应用场”。使用基于5G三千兆、云网、8K超高清视频等技术,在比赛现场搭建多路8K摄像…...
【Spring Boot】构建RESTful服务 — 实战:实现Web API版本控制
实战:实现Web API版本控制 前面介绍了Spring Boot如何构建RESTful风格的Web应用接口以及使用Swagger生成API的接口文档。如果业务需求变更,Web API功能发生变化时应该如何处理呢?可以通过Web API的版本控制来处理。 1.为什么进行版本控制 …...
6.Web后端开发【SpringBoot入门】
文章目录 1 SpringBoot快速入门1.1 Web分析 2. HTTP协议2.1 HTTP-概述2.1.1 介绍2.2.2 特点 2.2 HTTP-请求协议2.3 HTTP-响应协议2.3.1 格式介绍2.3.2 响应状态码 常见的相应状态码 3 WEB服务器3.1 服务器概述 1 SpringBoot快速入门 Spring的官网Spring Boot 可以帮助我们非常…...
[ubuntu]ubuntu18.04使用自带共享桌面实现vncserver连接
vncserver有很多方法比如你安装vnc4server,tightvncserver,x11vnc等都可以实现vnc局域网连接,今天使用系统共享桌面设置vnc连接 Ubuntu开启远程桌面 Ubuntu18.04使用gnome桌面环境,系统自带屏幕共享和远程登录功能,默认使用的是vino作为VNC…...
docker启用cgroup v2
要求 本人的操作系统是kali,基于debian docker info如果你这里是2那么说明启用了,如果是1,那么就未启用 对于Docker来说,Cgroups v2的使用需要满足以下条件: Linux内核版本在4.15以上。 uname -r 系统已经启用Cgro…...
Java课题笔记~ Axios
Axios 对原生的AJAX进行封装,简化书写。 Axios官网是:https://www.axios-http.cn 2.1 基本使用 axios 使用是比较简单的,分为以下两步: 引入 axios 的 js 文件 <script src"js/axios-0.18.0.js"></script…...
ip地址和地理位置有关系吗
在互联网时代,网络已经成为了人们生活中不可或缺的一部分。而在网络通信中,IP地址扮演着非常重要的角色。那么,IP地址和地理位置之间是否有关系呢?虎观代理小二二将从以下几个方面进行探讨。 一、IP地址和地理位置的基本概念 首…...
mac指定node版本 mac node版本降级 mac切换node版本
本文解决问题: mac指定node版本 mac切换node版本 mac node版本降级 第一步 进行nvm 安装操作 brew install nvm 执行 nvm --version nvm --version 出现zsh: command not found: nvm问题去进行配置第二步 nvm配置 1.输入: vim ~/.bash_profile 点击 i 进行插入…...
C# Windows登录界面进行截图,控制鼠标键盘等操作实现(一)
首先常规的账户进程是没办法获取登录界面的信息的,因为登录界面已经不在某个账户下了,登录界面显示了每一个账户的切换。所以得使用System权限的进程。 那么Windows系统究竟是怎么将登录界面与用户桌面隔离开的呢?首先先通过一些Windows操作系…...
因果推断(五)基于谷歌框架Causal Impact的因果推断
因果推断(五)基于谷歌框架Causal Impact的因果推断 除了传统的因果推断外,还有一些机器学习框架可以使用,本文介绍来自谷歌框架的Causal Impact。该方法基于合成控制法的原理,利用多个对照组数据来构建贝叶斯结构时间…...
VR全景加盟项目如何开展?如何共赢VR时代红利?
VR全景作为一个新兴蓝海项目,相信有着很多人刚接触VR行业的时候都会有这样的疑问:VR全景加盟后项目如何开展?今天,我们就从项目运营的三个阶段为大家讲解。 一、了解项目时 目前VR全景已经被应用到各行各业中去,学校、…...
Win10+anaconda+CUDA+pytorch+vscode配置
Win10anacondaCUDApytorchvscode配置 1.安装anaconda2.安装CUDA确认CUDA版本确认CUDA和pytorch版本安装CUDA 3.安装cudnn4.安装Pytorch5.vscode配置安装VScodevscode配置pytorch环境 1.安装anaconda 官网https://www.anaconda.com 下载安装,路径全英文然后记得有一…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
