300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > matlab统计水文参数 科学网—[转载]利用MATLAB计算水文极值 - 刘朋的博文

matlab统计水文参数 科学网—[转载]利用MATLAB计算水文极值 - 刘朋的博文

时间:2019-07-17 11:18:49

相关推荐

matlab统计水文参数 科学网—[转载]利用MATLAB计算水文极值 - 刘朋的博文

利用MATLAB计算水文极值(年最大值,年连续5日最大,连续干/湿日,连续极端径流低值日数)

[filename,filepath]=uigetfile('*.*','请选择文件');

%计算水文极端,年最大,年连续5日最大,连续干日,连续极端径流低值日数

%wqianghy@

%南京大学流域水文过程模拟实验室

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)

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

转载本文请联系原作者获取授权,同时请注明本文来自刘朋科学网博客。

链接地址:/blog-3306552-1157810.html

上一篇:[转载]张凌博士个人网站

下一篇:[转载]水文工具集

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。