爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8180|回复: 20

[求助] 小弟mk求助

[复制链接]

新浪微博达人勋

发表于 2013-5-22 14:59:36 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
大一新生,网上看到mk检验的f程序,求各位大侠,哪些地方需要改动的
C        THIS IS A PROGRAM FOR DETECTING ABRUPT CLIMATIC CHANGE
C        BY USING MANN-KENDALL TECHNIQUE
        PROGRAM MK
        DIMENSION Y(1000),YY(1000),U(1000),UF(1000),UB(1000),
     &        M(1000),MD(1000)
        WRITE(*,10)
  10        FORMAT(2X,'N=91,NYEAR=1860')
        READ(*,*)N,NYEAR
C***************************************************
C        * N:     SAMPLE SIZE                              *
C        * NYEAR: FIRST YEAR OF THE TIME SERIES            *
C        * Y(N):  ORIGINAL TIME SERIES                     *
C        * UF(N): ORIGINAL SERIES OF U(LN)                 *
C        * UB(N): COUNTER SERIES OF U(LN)                  *
C        * A,B:   CRITICAL VALUE 1.96 AND -1.96            *
C        ***************************************************            
        OPEN(2,FILE='1.txt')
        READ(2,*)(Y(I),I=1,N)
        CALL SMK(Y,M,MD,UF,N)
        DO 20 I=1,N
  20        YY(I)=Y(N+1-I)
        CALL SMK(YY,M,MD,U,N)
        DO 30 I=1,N
  30        UB(I)=-U(N+1-I)
        OPEN(3,FILE='mk.txt',STATUS='new')
        A=1.96
        B=-1.96
        DO 40 I=1,N
        WRITE(3,50)NYEAR+I-1,UF(I),UB(I),A,B
  50        FORMAT(1X,I4,4F8.2)
  40        CONTINUE
        CLOSE(3)
        STOP
        END
C***********************************************************
        SUBROUTINE SMK(Y,M,MD,U,N)
        DIMENSION Y(N),M(N),MD(N),U(N)
        M(1)=0
        DO 10 I=2,N
        M(I)=0
        MD(I)=0
        DO 20 J=1,I-1
        IF(Y(I).LT.Y(J))GOTO 20
        M(I)=M(I)+1
  20        CONTINUE
        MD(I)=MD(I-1)+M(I)
  10        CONTINUE
        U(1)=0.0
        DO 30 I=2,N
        E=I*(I-1)/4.00
        VAR=I*(I-1)*(2*I+5)/72.00
        U(I)=(MD(I)-E)/SQRT(VAR)
  30        CONTINUE
        RETURN
        END

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-5-22 17:02:20 | 显示全部楼层
去掉  READ(*,*)N,NYEAR
10        FORMAT(2X,'N=91,NYEAR=1860')
n表示你的数据个数,nyear是起始年份
'1.txt’里面是需要判断的数据,就放一列就可以了···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-5-22 18:19:46 | 显示全部楼层
C        THIS IS A PROGRAM FOR DETECTING ABRUPT CLIMATIC CHANGE
C        BY USING MANN-KENDALL TECHNIQUE
        PROGRAM MK
        DIMENSION Y(1000),YY(1000),U(1000),UF(1000),UB(1000),
     &        M(1000),MD(1000)
        WRITE(*,10)
  10        FORMAT(2X,'N=91,NYEAR=1860') (write代码是显示年份和初始年份,感觉没有多大用处)

       READ(*,*)N,NYEAR (READ代码是读入年份和初试年份,是从屏幕中输入的)
C***************************************************
C        * N:     SAMPLE SIZE                              *
C        * NYEAR: FIRST YEAR OF THE TIME SERIES            *
C        * Y(N):  ORIGINAL TIME SERIES                     *
C        * UF(N): ORIGINAL SERIES OF U(LN)                 *
C        * UB(N): COUNTER SERIES OF U(LN)                  *
C        * A,B:   CRITICAL VALUE 1.96 AND -1.96            *
C        ***************************************************            
       OPEN(2,FILE='1.txt')
        READ(2,*)(Y(I),I=1,N) (此处是读入你要检验的列数据1.txt,文件名可以改动)

        CALL SMK(Y,M,MD,UF,N)
        DO 20 I=1,N
  20        YY(I)=Y(N+1-I)
        CALL SMK(YY,M,MD,U,N)
        DO 30 I=1,N
  30        UB(I)=-U(N+1-I)
        OPEN(3,FILE='mk.txt',STATUS='new') (此处是将检验结果写入mk.txt。文件名可以改动)
        A=1.96
        B=-1.96
        DO 40 I=1,N
        WRITE(3,50)NYEAR+I-1,UF(I),UB(I),A,B

  50        FORMAT(1X,I4,4F8.2)
  40        CONTINUE
        CLOSE(3)
        STOP
        END
C***********************************************************
        SUBROUTINE SMK(Y,M,MD,U,N)
        DIMENSION Y(N),M(N),MD(N),U(N)
        M(1)=0
        DO 10 I=2,N
        M(I)=0
        MD(I)=0
        DO 20 J=1,I-1
        IF(Y(I).LT.Y(J))GOTO 20
        M(I)=M(I)+1
  20        CONTINUE
        MD(I)=MD(I-1)+M(I)
  10        CONTINUE
        U(1)=0.0
        DO 30 I=2,N
        E=I*(I-1)/4.00
        VAR=I*(I-1)*(2*I+5)/72.00
        U(I)=(MD(I)-E)/SQRT(VAR)
  30        CONTINUE
        RETURN
        END
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-5-22 20:54:23 | 显示全部楼层

谢谢大侠,结果是出来了,可是哪个是UF,哪个是UB,如何区分
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-5-22 22:15:00 | 显示全部楼层
for_apply 发表于 2013-5-22 20:54
谢谢大侠,结果是出来了,可是哪个是UF,哪个是UB,如何区分

OPEN(3,FILE='mk.txt',STATUS='new')
        A=1.96
        B=-1.96
        DO 40 I=1,N
       WRITE(3,50)NYEAR+I-1,UF(I),UB(I),A,B    注意写入mk.txt文件中的顺序是 年份,uf,ub,mk检验的两个阈值a,b 、
这样能区分了吧

   

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-5-23 07:59:18 | 显示全部楼层
夏朗的芒果 发表于 2013-5-22 22:15
OPEN(3,FILE='mk.txt',STATUS='new')
        A=1.96
        B=-1.96

多谢指点,终于明白了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-5-27 12:46:47 | 显示全部楼层
我也来顶一个
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-10 17:13:03 | 显示全部楼层
我也来顶一个
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-28 16:47:04 | 显示全部楼层
高手如云啊,让我这出来乍到的领教了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-29 10:37:59 | 显示全部楼层
来学习学习~~顶上
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表