||
代码原网站:https://blog.csdn.net/u010314322/article/details/80328655
[filename,filepath]=uigetfile('*.*','请选择文件');
%计算水文极端,年最大,年连续5日最大,连续干日,连续极端径流低值日数
%wqianghy@163.com
%南京大学流域水文过程模拟实验室
datapath=strcat(filepath,filename);
data=dlmread(datapath);
data(1)=[];
datalength=length(data);
numyear=datalength/365;
AM1X=zeros(numyear,1); %求年最大值
for i=1:numyear
tmin=365*(i-1)+1;
tmax=365*i;
AM1X(i)=max(data(tmin:tmax));
end
AM5X=zeros(numyear,1); %求连续5日最大
data5x=zeros(datalength,1);
for i=1:datalength
if i<5
data5x(i)=mean(data(1:5));
else
tmi=i-5+1;
tmx=i;
data5x(i)=mean(data(tmi:tmx));
end
end
for i=1:numyear
tmin=365*(i-1)+1;
tmax=365*i;
AM5X(i)=max(data5x(tmin:tmax));
end
CDD=zeros(numyear,1); %求连续干日
datacdd=zeros(datalength,1);
for i=1:datalength
if data(i)<=1 %判断是否为干日
datacdd(i)=1;
end
end
for i=1:numyear
tmin=365*(i-1)+1;
tmax=365*i;
cdnum1=[];
lfind=find(datacdd(tmin:tmax)==0);
for j=1:length(lfind)-1
cdnum1(j)=lfind(j+1)-lfind(j)-1;
end
cdnum1(length(lfind))=365-lfind(length(lfind));
CDD(i)=max(cdnum1);
end
sortdata=sort(data); %连续极端低值日数
per10=sortdata(round(datalength*0.1));
CDS=zeros(numyear,1); %求连续干日
datacds=zeros(datalength,1);
for i=1:datalength
if data(i)<per10 %判断是否为低值
datacds(i)=1;
end
end
for i=1:numyear
tmin=365*(i-1)+1;
tmax=365*i;
cdsnum1=[];
lfind=find(datacds(tmin:tmax)==0);
for j=1:length(lfind)-1
cdsnum1(j)=lfind(j+1)-lfind(j)-1;
end
cdsnum1(length(lfind))=365-lfind(length(lfind));
CDS(i)=max(cdsnum1);
end
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-3 07:04
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社