“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和广义极值分布)相关推荐

  1. m 文件 dll matlab 中调用_如何在matlab中调用python程序

    现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...

  2. php调用python绘图程序_如何在matlab中调用python程序

    现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...

  3. MATLAB中广义极值分布的分析、测试、个人理解

    %% MATLAB中广义极值分布的分析.测试.个人理解 %gevfit(X)   %根据给定的数据X,进行广义极值参数估算你,返回3个参数,分别为:形状参数k, 尺度参数sigma, 位置mu; %g ...

  4. CNN卷积神经网络案例程序源代码合集matlab/Python等

    CNN卷积神经网络案例程序源代码合集matlab/Python等 1.深入理解CNN(包括CNN的过程显示和前向后向推倒,以及CNN的应用举例.) 2.kerasttensorflowCNN(CNN_ ...

  5. matlab程序,基于广义benders分解法的综合能源系统优化规划,关键词,综合能源系统规划,Benders分解

    matlab程序,基于广义benders分解法的综合能源系统优化规划,关键词,综合能源系统规划,Benders分解,机会约束规划. ID:5999661483864996小陈代码店

  6. matlab简单程序实例_【简单实例】如何使用C++加速python程序

    C++党最鄙视Python的两个原因: 1,计算速度太慢: 2,动态语言特性. 对于第2个原因,这需要python程序员好好规范自己的编写习惯,加深对语言和系统的理解.其实作为动态语言的python依 ...

  7. python广义极值_广义极值分布的数据拟合

    我一直想用scipy.stats.genextreme使我的数据符合广义极值分布.我试过所有我能找到的方法,但我不知道为什么它不符合数据.在 我试过这两种方法:import numpy as np f ...

  8. 电气:蒙特卡洛1000个风光场景并通过削减法|聚类法得到几个典型场景(matlab\python实现)

    个人电气目录传送门:学好电气全靠它,个人电气博文目录(持续更新中-)     本文内容包括22页(代码和一些自己对风光的观点) 提示:专栏解锁后,可以查看该专栏所有文章,划算. 文章目录 一.理论依据 ...

  9. win7+vs2015/13+caffe+matlab+python(CPU only)配置

    首先声明本教程可以适用于vs2015 和vs2013 .以vs2015为例. 安装必备软件 vs 2015 /vs2013 matlab 2016a(64bit) 推荐使用Anaconda 2.7 或 ...

最新文章

  1. 智能手环功能模块设计_基于STM32实现智能手环设计
  2. Elasticsearch 因拷贝多余的jar到lib库导致无法启动的问题
  3. matlab 子图title的位置_Plotly_多个子图
  4. scala中_*的作用
  5. linux标准IO实验,Linux系统编程(第三篇) 标准IO.pdf
  6. 让 gRPC 提供 REST 服务
  7. UART接口算法移植加密芯片的调试技巧——算法调试
  8. SCCM报表点和SQL Server的报表服务集成, 随心所欲创建报表?
  9. Oracle NID工具修改数据库DBID和数据库名称
  10. Ubuntu snap 定制内核插件
  11. 误删除分区下的数据恢复
  12. PHP学习记录(一)
  13. html浮窗音乐播放器插件,墨涩网 - WordPress浮窗音乐播放器Floating Window Music Player V3.2.6——墨涩网...
  14. 高通APQ8074(骁龙800)处理器
  15. #原创分享# DDD领域建模---老调新弹之【实体】
  16. 深度残差网络+自适应参数化ReLU激活函数:调参记录2
  17. linux ping结果中mdev,ping之mdev值
  18. 图形学 Lecture7 光线追踪
  19. 超详细,如何不用任何第三方软件实现电脑与手机文件传输
  20. shell脚本中使用sudo的前置条件

热门文章

  1. 网页播放视频解决代码(来自百度知道)
  2. maya 白天室内灯光_maya室内灯光问题
  3. Integer127==127结果为true为什么Integer128==128结果为false?
  4. 通过token窃取实现降权或者提权
  5. 麦咖啡阻挡正常打开Excel文件
  6. 魅族mx四核即将使用android,魅族MX四核真机主板曝光 6月份即将上市
  7. 漫画:什么是 “第一类永动机” ?
  8. 学习动力方法介绍,让你们成为永动机
  9. 实习入职这几天天的感受与感想
  10. 安装WIN7系统出现问题——安装程序无法创建新的系统分区,也无法定位现有的系统分区