重现期Matlab\Python程序(Gumbel和广义极值分布)
“Talk is cheap, show me the code.” 废话少说,上代码!
In probability theory and statistics, the Gumbel distribution (Generalized Extreme Value distribution Type-I) is used to model the distribution of the maximum (or the minimum) of a number of samples of various distributions.
Gumbel:MATLAB程序:(放入主程序.m文件同路径下即可调用)
function [Recurrence_period_value] = Gumble_func_by_zlf(data,N,len)
% data应为一列数据
% N为多少年一遇
% len为所用数据年数(从大到小排序后希望获得前几个数据)
% Recurrence_period_value为N年一遇值
datasort = sort(data,'descend');
datasort(isnan(datasort))=[];%剔除缺测值
data_select_sort = datasort(1:len);
mu = mean(data_select_sort);
sum = 0;
for i = 1:length(data_select_sort)sum = sum + (data_select_sort(i) - mu)^2;
end
sigma = sqrt(sum/(length(data_select_sort)-1)); %标准差
alpha = pi/(sqrt(6)*sigma);
u = mu - 0.57721/alpha;
for i = 1 : 0.1 : 999999 %降水量设置为1~999999mmif 1/N >= 1 - exp(-exp(-alpha*(i - u))) % N年一遇Recurrence_period_value = i; % Recurrence_period_value即为N年一遇降水值break;end
end
end
Gumbel:Python程序:
def Gumble_func(data,N,length):# data应为一列数据# N为多少年一遇# length为所用数据年数(从大到小排序后希望获得前几个数据)# Recurrence_period_value为N年一遇值# data = pd.read_excel(file_path)# data = np.array(data)# N = 100# length = 100datasort = np.sort(data, axis=0)[::-1] # 从大到小排列data_select_sorts = datasort[0:length - 1]mu = np.mean(data_select_sorts)sum_mm = 0for data_select_sort in data_select_sorts:sum_mm = sum_mm + (data_select_sort - mu) ** 2sigma = np.sqrt(sum_mm / (len(data_select_sorts) - 1)) # 标准差alpha = np.pi / (np.sqrt(6) * sigma)u = mu - 0.57721 / alphafor i in np.arange(1, 999999, 0.1): # 降水量设置为1~999999mmif 1 / N >= 1 - np.exp(-np.exp(-alpha * (i - u))): # N年一遇Recurrence_period_value = i # Recurrence_period_value即为N年一遇降水值print(str(N)+'年一遇降水值:',Recurrence_period_value,'毫米')breakreturn Recurrence_period_value
以上两程序所得的Recurrence_period_value即为N年一遇的降水值,如果N设置为100,那么Recurrence_period_value就是100年一遇的降水量。
广义极值分布:Python程序:
# -*- coding: utf-8 -*-
"""
@Features of this code:重现期
@Author: zlf
@Date:
"""
import numpy as np
import pandas as pd
from scipy.stats import genextremedef return_periods(data, years=[5, 10, 20, 50, 100]):data = np.array(data) # data为ndarray格式# Fit the generalized extreme value distribution to the data.shape, loc, scale = genextreme.fit(data)print("Fit parameters:")print(f" shape: {shape:.4f}")print(f" loc: {loc:.4f}")print(f" scale: {scale:.4f}")# Compute the return levels for several return periods.return_periods = np.array(years)return_levels = genextreme.isf(1 / return_periods, shape, loc, scale)print("Return levels:")print("Period Level")for period, level in zip(return_periods, return_levels):print(f'{period:4.0f} {level:9.2f}')if __name__ == '__main__':data = pd.read_excel(r'D:\降水量.xlsx')return_periods(data)
输出结果:
重现期Matlab\Python程序(Gumbel和广义极值分布)相关推荐
- m 文件 dll matlab 中调用_如何在matlab中调用python程序
现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...
- php调用python绘图程序_如何在matlab中调用python程序
现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...
- MATLAB中广义极值分布的分析、测试、个人理解
%% MATLAB中广义极值分布的分析.测试.个人理解 %gevfit(X) %根据给定的数据X,进行广义极值参数估算你,返回3个参数,分别为:形状参数k, 尺度参数sigma, 位置mu; %g ...
- CNN卷积神经网络案例程序源代码合集matlab/Python等
CNN卷积神经网络案例程序源代码合集matlab/Python等 1.深入理解CNN(包括CNN的过程显示和前向后向推倒,以及CNN的应用举例.) 2.kerasttensorflowCNN(CNN_ ...
- matlab程序,基于广义benders分解法的综合能源系统优化规划,关键词,综合能源系统规划,Benders分解
matlab程序,基于广义benders分解法的综合能源系统优化规划,关键词,综合能源系统规划,Benders分解,机会约束规划. ID:5999661483864996小陈代码店
- matlab简单程序实例_【简单实例】如何使用C++加速python程序
C++党最鄙视Python的两个原因: 1,计算速度太慢: 2,动态语言特性. 对于第2个原因,这需要python程序员好好规范自己的编写习惯,加深对语言和系统的理解.其实作为动态语言的python依 ...
- python广义极值_广义极值分布的数据拟合
我一直想用scipy.stats.genextreme使我的数据符合广义极值分布.我试过所有我能找到的方法,但我不知道为什么它不符合数据.在 我试过这两种方法:import numpy as np f ...
- 电气:蒙特卡洛1000个风光场景并通过削减法|聚类法得到几个典型场景(matlab\python实现)
个人电气目录传送门:学好电气全靠它,个人电气博文目录(持续更新中-) 本文内容包括22页(代码和一些自己对风光的观点) 提示:专栏解锁后,可以查看该专栏所有文章,划算. 文章目录 一.理论依据 ...
- win7+vs2015/13+caffe+matlab+python(CPU only)配置
首先声明本教程可以适用于vs2015 和vs2013 .以vs2015为例. 安装必备软件 vs 2015 /vs2013 matlab 2016a(64bit) 推荐使用Anaconda 2.7 或 ...
最新文章
- 智能手环功能模块设计_基于STM32实现智能手环设计
- Elasticsearch 因拷贝多余的jar到lib库导致无法启动的问题
- matlab 子图title的位置_Plotly_多个子图
- scala中_*的作用
- linux标准IO实验,Linux系统编程(第三篇) 标准IO.pdf
- 让 gRPC 提供 REST 服务
- UART接口算法移植加密芯片的调试技巧——算法调试
- SCCM报表点和SQL Server的报表服务集成, 随心所欲创建报表?
- Oracle NID工具修改数据库DBID和数据库名称
- Ubuntu snap 定制内核插件
- 误删除分区下的数据恢复
- PHP学习记录(一)
- html浮窗音乐播放器插件,墨涩网 - WordPress浮窗音乐播放器Floating Window Music Player V3.2.6——墨涩网...
- 高通APQ8074(骁龙800)处理器
- #原创分享# DDD领域建模---老调新弹之【实体】
- 深度残差网络+自适应参数化ReLU激活函数:调参记录2
- linux ping结果中mdev,ping之mdev值
- 图形学 Lecture7 光线追踪
- 超详细,如何不用任何第三方软件实现电脑与手机文件传输
- shell脚本中使用sudo的前置条件
热门文章
- 网页播放视频解决代码(来自百度知道)
- maya 白天室内灯光_maya室内灯光问题
- Integer127==127结果为true为什么Integer128==128结果为false?
- 通过token窃取实现降权或者提权
- 麦咖啡阻挡正常打开Excel文件
- 魅族mx四核即将使用android,魅族MX四核真机主板曝光 6月份即将上市
- 漫画:什么是 “第一类永动机” ?
- 学习动力方法介绍,让你们成为永动机
- 实习入职这几天天的感受与感想
- 安装WIN7系统出现问题——安装程序无法创建新的系统分区,也无法定位现有的系统分区