Matlab 绘制同现重现期事件等值线图(Gumbel Copula)
使用 Matlab 绘制同现重现期事件等值线图 (Gumbel Copula)
本示例演示了使用 Matlab 绘制同现重现期事件等值线图,并使用 Gumbel Copula 模型进行计算。此外,还展示了如何提取百年一遇等值线数据。
代码示例:
X=xlsread('C:\Users\11847\Desktop\WD-11-24H','B2:B26'); %波高
Y=xlsread('C:\Users\11847\Desktop\WD-11-24H','C2:C36'); %增水
x=unique(X); %排序
y=unique(Y);
parmhat = gevfit(x); %GEV分布; parmhat(1) 是形状参数,(2) 是尺度参数,(3) 是位置参数
k1=parmhat(1);sigma1=parmhat(2);mu1=parmhat(3);
x = 0:0.5:25;
x = x';
x=unique(x);
U = gevcdf(x,k1,sigma1,mu1);
parmhat = gevfit(y); %GEV分布,parmhat(1) 是形状参数,(2) 是尺度参数,(3) 是位置参数
k2=parmhat(1);sigma2=parmhat(2);mu2=parmhat(3);
y = 0:0.05:2.5;
y = y';
y=unique(y); %排序
V = gevcdf(y,k2,sigma2,mu2);
[u,v] = meshgrid(U,V);
b = copulafit('Gumbel',[U,V]);
Z = exp(-((-log(u)).^b+(-log(v)).^b).^(1/b)); %Gumbel
Z = u+v-Z; %同现重现期
[C,h] = contour(x,y,Z,[0.99,0.99],'r'); %[0.99,0.99] 只显示百年一遇等值线; r 表示红色,w 表示白色
title('同现重现期事件等值线图 (Gumbel Copula)')
xlabel('波高');
ylabel('增水');
% 选择某一等值线并提取其等值线数据
x = C(1,2:end);
y = C(2,2:end);
代码解释:
- 读取波高和增水数据。
- 使用 GEV 分布拟合波高和增水数据,并获取参数。
- 生成波高和增水数据的累积分布函数 (CDF) 值。
- 使用 Gumbel Copula 模型计算同现重现期。
- 绘制同现重现期事件等值线图,并显示百年一遇等值线。
- 从等值线数据中提取百年一遇等值线的 x 和 y 坐标。
代码末尾 x 和 y 取值的原理:
提取等值线数据。等值线数据包括一系列点的坐标,用于绘制等值线。在这个例子中,x 和 y 表示从等值线图中提取出来的百年一遇等值线上的点的坐标。
应用:
本示例可以用于分析水文事件的同现重现期,例如,洪水和风暴潮的联合发生概率。通过绘制同现重现期事件等值线图,可以直观地了解不同波高和增水的组合发生的可能性。
相关资源:
原文地址: https://www.cveoy.top/t/topic/nsRs 著作权归作者所有。请勿转载和采集!