绘制百年一遇等值线:基于Gumbel Copula 的同现重现期分析
绘制百年一遇等值线:基于 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);
等值线数据获取
代码中的 contour 函数用于绘制等值线。参数 [0.99, 0.99] 表示只绘制数值为 0.99 的等值线,即百年一遇的等值线。contour 函数会返回两个结果:
C: 等值线数据,其中第一行表示等值线上的 X 坐标,第二行表示等值线上的 Y 坐标。h: 等值线句柄。
代码最后使用 x = C(1,2:end) 和 y = C(2,2:end) 从 C 中提取出等值线上的 X 坐标和 Y 坐标。这些坐标点是按照等值线的形状和间隔划分得到的。
总结
本文详细介绍了使用 MATLAB 绘制百年一遇等值线的方法,并以波高和增水为例,阐述了基于 Gumbel Copula 的同现重现期分析的具体步骤和代码实现。希望本文能够帮助您更好地理解等值线的绘制原理以及 Gumbel Copula 在同现重现期分析中的应用。
原文地址: https://www.cveoy.top/t/topic/nsRn 著作权归作者所有。请勿转载和采集!