²é¿´: 768  |  »Ø¸´: 5

duhb655

½ð³æ (ÖøÃûдÊÖ)

[ÇóÖú] 7²ãfor£¡ God. ÒÑÓÐ2È˲ÎÓë

±àµÄ³ÌÐòÌ«´ó£¬Êý¾ÝÁ¿´ó£¬ÀàÐͶ࣬ÔËËã¹ý³Ì¸´ÔÓ£¬ÓÃÁË7²ãforÑ­»·£¬Ò»¸ö×Ö£¬Âý£¡
ÔõÃ´ÆÆ:
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

¶À¹ÂÉñÓî

°æÖ÷ (ÖªÃû×÷¼Ò)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
duhb655: ½ð±Ò+7, ¡ïÓаïÖú 2015-08-08 15:35:30
¾¡Á¿Ê¹ÓÃÏòÁ¿»¯±à³Ì´úÌæÑ­»·£¬·ÇµÃÓÃÑ­»·Ê±£¬Ñ­»·´ÎÊý¶àµÄ·ÅÔÚÄڲ㡣¡£¡£
ÊýÖµ¼ÆËã
2Â¥2015-08-04 22:29:51
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

Nkxz

Ìú¸Ëľ³æ (ÖøÃûдÊÖ)

²»¸ø³ö³ÌÐò£¬ÎÞ·¨¸øÄãÈ·ÇеĽ¨Òé¡£Êý¾ÝÁ¿²»´óµÄ»°¼¸²ãforÑ­»·¶¼ÎÞËùν£¬Ö»ÒªÄã×Ô¼º²»±»ÅªºýÍ¿¾ÍÐС£Èç¹û´óÊý¾ÝµÄ»°×îºÃ»¹ÊÇÓÅ»¯Ï£¬matlab¶Ô´óÊý¾Ý´¦Àí¼ÓÉÏn¸öforÑ­»·£¬¹À¼Æ¼ÆËãÂýËÀÁË¡£
3Â¥2015-08-05 09:33:37
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

windoi

¾èÖú¹ó±ö (ÖøÃûдÊÖ)

»úÆ÷ѧϰ°®ºÃÕß

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
duhb655: ½ð±Ò+10, ¡ïÓаïÖú 2015-08-08 15:34:54
ºÜ¶àµØ·½¶¼¿ÉÒÔÓÃ×Ô¶¨Ò庯Êý»òÕß¾ØÕóÐÎʽ¼ÆËãµÄ°É£¬ÎÒ֮ǰҲÓöµ½¹ý£¬Óеĵط½¿ÉÒÔÖ±½ÓÓþØÕóÐÎʽ°ÑforÑ­»·´úÌæ£¬¿ìÁ˲»ÉÙÍÛ¡£
ÀÖ¹Û£¬Å¬Á¦¡£
4Â¥2015-08-06 15:52:26
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

duhb655

½ð³æ (ÖøÃûдÊÖ)

ÒýÓûØÌû:
3Â¥: Originally posted by Nkxz at 2015-08-05 09:33:37
²»¸ø³ö³ÌÐò£¬ÎÞ·¨¸øÄãÈ·ÇеĽ¨Òé¡£Êý¾ÝÁ¿²»´óµÄ»°¼¸²ãforÑ­»·¶¼ÎÞËùν£¬Ö»ÒªÄã×Ô¼º²»±»ÅªºýÍ¿¾ÍÐС£Èç¹û´óÊý¾ÝµÄ»°×îºÃ»¹ÊÇÓÅ»¯Ï£¬matlab¶Ô´óÊý¾Ý´¦Àí¼ÓÉÏn¸öforÑ­»·£¬¹À¼Æ¼ÆËãÂýËÀÁË¡£

CODE:
%function run_DFA_Du
clear
clc
regions={'Argentina';'Australia';'Benin';'Brazil';'Canada';'China';'European';...
    'GHCND';'India_resolution';'Japan';'Korea';'Mongolia';'New_Zealand';'Saudi Arabia';'SouthAfrica';'USA_resolution'};
region={'Arg';'Aus';'Ben';'Bra';'Can';'Chi';'Eur';'Ghc';'Ind';'Jap';'Kor';'Mon';'New';'Sau';'Sou';'Usa'};
lenregions=length(regions);
indir='F:\Process\Du_Haibo\Global station climate data\data_mat\';
datalist=dir([indir,'*.mat']);
datanum=length(datalist);
if lenregions~=datanum
    disp('Errors in the number of data and regions!');
    %break;
    return
end
for iregion=1:lenregions
    disp('Çë²»Òª¹ØMatlab£¡£¡£¡³ÌÐòÔËÐÐÖС£¡£Çë²»Òª¹Ø»ú£¡£¡£¡ÒÑÉèÖÃ×Ô¶¯¹Ø»ú');
    %for i=1:40
    %    zprintf('_Red','Çë²»Òª¹ØMatlab£¡£¡£¡³ÌÐòÔËÐÐÖС£¡£¡£');
    %    disp('Çë²»Òª¹Ø»ú£¡£¡£¡ÒÑÉèÖÃ×Ô¶¯¹Ø»ú')
    %end
    outdir=['F:\Process\Du_Haibo\Global climate extremes\R-DFA\',regions{iregion},'\'];
    if ~isdir(outdir);mkdir(outdir);end
    outtfile=[outdir,region{iregion},'_'];
    DATA=load([indir,datalist(iregion).name]);
    da=DATA.data;
    clear DATA;
    lensites=length(da)-3;
    latlon=da{lensites+2};station=da{lensites+3};
    ymd0=da{lensites+1};
    sy=1961;ey=2010;leny=ey-sy+1;ymd=make_ymd(sy,ey);
    rowymd=ismember(ymd0,ymd,'rows');
    hightmax=1;hightmin=2;lowtmax=3;lowtmin=4;prcp=5;
    miss=-99.9;%missing data
    order=1;qth=2;
    %dfahightmax=cell(lensites,1);dfahightmin=cell(lensites,1);dfalowtmax=cell(lensites,1);dfalowtmin=cell(lensites,1);dfaprcp=cell(lensites,1);
    cols=[hightmax;hightmin;lowtmax;lowtmin;prcp];%here control the variables for calculating
    lencols=length(cols);
    misspercentile=99;%syear=ymd(1,1);eyear=ymd(length(ymd(:,1)),1);
    valid_site=zeros(lensites,lencols);
    num=zeros(lensites,lencols);
    subname={'hightmax','hightmin','lowtmax','lowtmin','prcp'};
    missratio=0.2;%allow the max missing ratio of 0.2 for each year
    wait=waitbar(0,'0%','Name',['Schedule for ',regions{iregion}, '...']);
    nlen=floor(lensites/50);
    if lensites<=50;ju=lensites;
    else ju=50:50:50*nlen;
        if rem(lensites,50)~=0;ju0=50:50:50*nlen;ju=[ju0 lensites];end
    end
    dfaindex=cell(lensites,lencols);
    for isite=1:lensites
        if ~isempty(find(ju==isite, 1));disp('Çë²»Òª¹Ø»ú£¡£¡£¡ÒÑÉèÖÃ×Ô¶¯¹Ø»ú');end
        tic
        x=da{isite};x=round(x*10)/10;
        x(isnan(x))=miss;
        x=x(rowymd,:);
        for icol=1:lencols
            if icol==prcp;col=1;
            elseif icol==hightmax;col=2;
            elseif icol==hightmin;col=3;
            elseif icol==lowtmax;col=2;
            else  col=3;
            end%column of variables: prcp,tmax,or tmin
            if length(find(x(:,col)==miss))/length(x(:,1))>0.5
                num(isite,icol)=leny;
            else
                num(isite,icol)=missingyearjudge(ymd,x,misspercentile,miss,icol,col,sy,ey,missratio);
            end
            yymd=ymd;
            if num(isite,icol)<missratio*leny%if the ratio of missing years are less than the missratio
                valid_site(isite,icol)=1;
                datain=x(:,col);
                yymd(datain==miss,:)=[];datain(datain==miss)=[];
                if icol==prcp
                    yymd=yymd(:,2);
                    unid=unique(yymd,'rows');
                    lenid=length(unid);
                    for id=1:lenid
                        ed=datain(ismember(yymd,unid(id,1),'rows'));
                        ed(ed==0)=[];
                        if isempty(ed)
                            unid(id,3)=0;
                        else
                            unid(id,3)=mean(ed);
                        end
                    end
                    [~,meanrow]=ismember(yymd,unid(:,1),'rows');
                else
                    yymd=yymd(:,2:3);
                    unid=unique(yymd,'rows');
                    lenid=length(unid);
                    for id=1:lenid
                        unid(id,3)=mean(datain(ismember(yymd,unid(id,1:2),'rows')));
                    end
                    [~,meanrow]=ismember(yymd,unid(:,1:2),'rows');
                end
                meand=unid(meanrow,3);
                y1=cumsum(datain-meand)';
                uni=unique(datain);
                if icol==hightmax || icol==hightmin || icol==prcp
                    uni=flipud(uni);
                end
                if icol==prcp
                    thre=perthre_for_dfa([datain datain datain],miss,50,icol,col);
                    differe=abs(uni-thre);
                else
                    thre=perthre_for_dfa([datain datain datain],miss,1,icol,col);
                    differe=abs(uni-thre);
                end
                row=find(differe==min(differe));
                uni=uni(1:row(1));
                lenuni=length(uni);
                dfa=zeros(lenuni,1);
               
                warning('off','all');
                N=length(datain);
                S=1:0.25:4;S=4.^S;S=S';S=floor(S);S(S>N/4)=[];
                len1=length(S);
                fs=cell(len1,1);
                fn=cell(len1,1);
                if icol<lencols;diffv=cell(len1,1);end
                n=fix(N./S); % The number of segmention for each segmention length
                for ifn=1:len1
                    s=S(ifn);
                    n1=floor(N/s);
                    fitcoef1=zeros(n1,order+1);
                    Yn0=zeros(n(ifn),1);
                    for jfn=1:n(ifn)
                        xfit=((jfn-1)*s+1):jfn*s;
                        yfit=y1(((jfn-1)*s+1):jfn*s);
                        fn{ifn,1}(jfn,:)=xfit;
                        %fitcoef1(jfn,:)=polyfit(xfit,yfit,order);
                        %Yn0(jfn)=mean((polyval(fitcoef1(jfn,:),xfit)-yfit).^2);
                        xfit=xfit(:);yfit=yfit(:);
                        V=zeros(s,order+1);
                        V(:,order+1)=ones(s,1);
                        for ij1 = order:-1:1
                            V(:,ij1) = xfit.*V(:,ij1+1);
                        end
                        fitcoef1 = V\yfit;
                        Yn0(jfn)=mean((fitcoef1(1)*xfit+fitcoef1(2)-yfit).^2);
                        if icol>lencols;diffv{ifn,1}(jfn,:)=(fitcoef1(1)*xfit+fitcoef1(2)-yfit).^2;end
                    end
                    fs{ifn}=Yn0;
                end
                if icol>lencols
                    parfor iuni=1:lenuni
                        ivalue=uni(iuni);
                        y1;fn;fs;N;S;diffv;
                        warning('off','all');
                        len1=length(S);
                        F=zeros(len1,1);
                        if icol==lowtmax || icol==lowtmin;
                            r1=find(datain<=ivalue);
                        else
                            r1=find(datain>=ivalue);
                        end
                        for ifn=1:len1
                            s=S(ifn);
                            Yn1=fs{ifn};
                            [row,~]=find(ismember(fn{ifn,1},r1)==1);
                            unir=unique(row);
                            lenr=length(unir);
                            for ir=1:lenr
                                jfn=unir(ir);
                                rowj1=((jfn-1)*s+1):jfn*s;
                                if icol==lowtmax || icol==lowtmin
                                    subr=find(datain(rowj1)>=ivalue);
                                else
                                    subr=find(datain(rowj1)<=ivalue);%tmax
                                end
                                if isempty(subr)
                                    Yn1(jfn)=0;
                                else
                                    subdiff=diffv{ifn,1}(jfn,:);
                                    Yn1(jfn)=mean(subdiff(subr));
                                end
                            end
                            F(ifn)=mean(Yn1(Yn1~=0).^(qth/2)).^(1/qth);
                        end
                        v=zeros(len1,2);
                        v(:,2)=ones(len1,1);
                        v(:,1)=log2(S).*v(:,2);
                        p=v\log2(F);
                        dfa(iuni,1)=p(1);
                    end
                else
                    parfor iuni=1:lenuni
                        ivalue=uni(iuni);
                        y1;fn;fs;N;S;%diffv;
                        warning('off','all');
                        len1=length(S);
                        F=zeros(len1,1);
                        if icol==lowtmax || icol==lowtmin;
                            r1=find(datain<=ivalue);r2=find(datain>ivalue);
                        else
                            r1=find(datain>=ivalue);r2=find(datain<ivalue);
                        end
                        for ifn=1:len1
                            s=S(ifn);
                            Yn1=fs{ifn};
                            [row,~]=find(ismember(fn{ifn,1},r1)==1);
                            unir=unique(row);
                            lenr=length(unir);
                            for ir=1:lenr
                                jfn=unir(ir);
                                rowj1=((jfn-1)*s+1):jfn*s;
                                r01= ismember(rowj1,r2)==1;xfit1=rowj1(r01);
                                lenx=length(xfit1);
                                if lenx>1
                                    yfit1=y1(xfit1);
                                    %fitcoef=polyfit(xfit1,yfit1,order);
                                    %Yn1(jfn)=mean((polyval(fitcoef,xfit1)-yfit1).^2);
                                    xfit1=xfit1(:);yfit1=yfit1(:);
                                    V1=zeros(lenx,order+1);
                                    V1(:,order+1)=ones(lenx,1);
                                    for ij1 = order:-1:1
                                        V1(:,ij1) = xfit1.*V1(:,ij1+1);
                                    end
                                    fitcoef = V1\yfit1;
                                    Yn1(jfn)=mean((fitcoef(1)*xfit1+fitcoef(2)-yfit1).^2);
                                else
                                    Yn1(jfn)=0;
                                end
                            end
                            F(ifn)=mean(Yn1(Yn1~=0).^(qth/2)).^(1/qth);
                        end
                        v=zeros(len1,2);
                        v(:,2)=ones(len1,1);
                        v(:,1)=log2(S).*v(:,2);
                        p=v\log2(F);
                        dfa(iuni,1)=p(1);
                    end
                end
                dfainx=[dfa uni];
                dfainx(isnan(dfainx(:,1)),:)=[];dfainx(dfainx(:,1)==0,:)=[];
                if icol==prcp;dfainx(dfainx(:,2)==0,:)=[];end
                %plot(dfainx(:,2),dfainx(:,1),'.-');
                %print('-dtiff','-r300',['prcp',num2str(station(U)),'.tiff']);
                %close(figure(1));
                dfaindex{isite,icol}=dfainx;
            end
        end%icol
        toc
        waitbar(isite/lensites,wait,[num2str(isite/lensites*100,'%.2f\n'),'%']);
        if ~isempty(find(ju==isite, 1))
            for icol=lencols:lencols
                if icol==prcp;col=1;
                elseif icol==hightmax;col=2;
                elseif icol==hightmin;col=3;
                elseif icol==lowtmax;col=2;
                else  col=3;
                end%
                if ~isempty(find(ismember(cols,icol)==1, 1))
                    row1=find(valid_site(:,icol)==1);lenrow1=length(row1);
                    if isempty(row1);data=[];
                    else
                        data=dfaindex(row1,icol);data{lenrow1+1}=latlon(row1,:);data{lenrow1+2}=station(row1);
                    end
                    save([outtfile,subname{icol},'.mat'],'data');
                end
            end
        end
    end
    clear da;
    delete(wait)
end
%!shutdown -s

%%%Du Haibo, 8/7/15%%%

5Â¥2015-08-07 20:50:42
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

duhb655

½ð³æ (ÖøÃûдÊÖ)

ÒýÓûØÌû:
4Â¥: Originally posted by windoi at 2015-08-06 15:52:26
ºÜ¶àµØ·½¶¼¿ÉÒÔÓÃ×Ô¶¨Ò庯Êý»òÕß¾ØÕóÐÎʽ¼ÆËãµÄ°É£¬ÎÒ֮ǰҲÓöµ½¹ý£¬Óеĵط½¿ÉÒÔÖ±½ÓÓþØÕóÐÎʽ°ÑforÑ­»·´úÌæ£¬¿ìÁ˲»ÉÙÍÛ¡£

Äú¿´¿´ÎҵijÌÐò°¡£¿
6Â¥2015-08-07 20:53:35
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ duhb655 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 317Çóµ÷¼Á +6 Éê×ÓÉêÉê 2026-03-19 11/550 2026-03-20 20:07 by zhukairuo
[¿¼ÑÐ] 287Çóµ÷¼Á +5 ³¿»èÏßÓëÐǺ£ 2026-03-19 6/300 2026-03-20 20:05 by zhukairuo
[¿¼ÑÐ] Çóµ÷¼Á +4 Mqqqqqq 2026-03-19 4/200 2026-03-20 14:15 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] 329Çóµ÷¼Á +6 ÏëÉÏѧ߹߹ 2026-03-19 6/300 2026-03-20 09:00 by ÿÌìÖ»°ÚһС»á
[¿¼ÑÐ] Ò»Ö¾Ô¸ËÕÖÝ´óѧ²ÄÁÏÇóµ÷¼Á£¬×Ü·Ö315£¨Ó¢Ò»£© +3 sbdksD 2026-03-19 3/150 2026-03-19 23:21 by fmesaito
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄϾ©Àí¹¤´óѧ085701×ÊÔ´Óë»·¾³302·ÖÇóµ÷¼Á +3 ¿ûè÷ÎÀ¶Ó 2026-03-18 5/250 2026-03-19 19:35 by ¸øÄãÄã×¢ÒâÐÝÏ¢
[¿¼ÑÐ] Çóµ÷¼Á£¬Ò»Ö¾Ô¸:ÄϾ©º½¿Õº½Ìì´óѧ´óѧ £¬080500²ÄÁÏ¿ÆÑ§Ó빤³Ìѧ˶£¬×Ü·Ö289·Ö +3 @taotao 2026-03-19 3/150 2026-03-19 14:07 by peike
[¿¼ÑÐ] »¯Ñ§Çóµ÷¼Á +3 ÁÙÔó¾³llllll 2026-03-17 4/200 2026-03-19 13:59 by houyaoxu
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
[¿¼ÑÐ] Ò»Ö¾Ô¸985£¬±¾¿Æ211£¬0817»¯Ñ§¹¤³ÌÓë¼¼Êõ319Çóµ÷¼Á +10 Liwangman 2026-03-15 10/500 2026-03-19 10:25 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 312Çóµ÷¼Á +8 İå·Ï£ 2026-03-16 9/450 2026-03-18 12:39 by Linda Hu
[¿¼ÑÐ] 278Çóµ÷¼Á +5 ÑÌ»ðÏÈÓÚ´º 2026-03-17 5/250 2026-03-18 08:43 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] 293Çóµ÷¼Á +11 zjlµÄºÅ 2026-03-16 16/800 2026-03-18 08:10 by zhukairuo
[˶²©¼ÒÔ°] ºþ±±¹¤Òµ´óѧ ÉúÃü¿ÆÑ§Ó뽡¿µÑ§Ôº-¿ÎÌâ×éÕÐÊÕ2026¼¶Ê³Æ·/ÉúÎï·½Ïò˶ʿ +3 1ϲ´º8 2026-03-17 5/250 2026-03-17 17:18 by ber´¨cool×Ó
[¿¼ÑÐ] ²ÄÁÏר˶326Çóµ÷¼Á +6 Ä«ìÏæ¦Ý· 2026-03-15 7/350 2026-03-17 17:10 by ruiyingmiao
[¿¼ÑÐ] 326Çóµ÷¼Á +4 ŵ±´¶û»¯Ñ§½±êéê 2026-03-15 7/350 2026-03-16 17:11 by ŵ±´¶û»¯Ñ§½±êéê
[»ù½ðÉêÇë] ½ñÄêµÄ¹ú»ù½ðÊÇ´ò·ÖÖÆÂ𣿠50+3 zhanghaozhu 2026-03-14 3/150 2026-03-16 17:07 by ±±¾©À³ÒðÈóÉ«
[¿¼ÑÐ] 318Çóµ÷¼Á +3 Yanyali 2026-03-15 3/150 2026-03-16 16:41 by houyaoxu
[¿¼ÑÐ] 0856ר˶279Çóµ÷¼Á +5 ¼ÓÓͼÓÓÍ£¡? 2026-03-15 5/250 2026-03-15 11:58 by 2020015
[¿¼ÑÐ] ¸´ÊÔµ÷¼Á +3 ºôºô£¿~+123456 2026-03-14 3/150 2026-03-14 16:53 by WTUChen
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û