天天看点

grads 相关系数_气象程序与绘图——相关系数的计算

在气象研究中,有时需要计算两个物理量时间序列的相关系数,例如塔西提站海平面气压与全球海平面气压的相关系数。这里,以FORTRAN语言和绘图软件GRADS为例进行说明。

一、计算相关系数的子程序

(一)相关系数的计算公式

这里给出的是皮尔逊相关系数的计算公式:

grads 相关系数_气象程序与绘图——相关系数的计算

(二)程子序

!求两个一维时间序列的相关系数子程序

!n为时间长度,x,y为两个时间序列,r为相关系数

!auther: Yue Shen 2020/12/20

subroutine cor(n,x,y,r)   

    real x(n),y(n)

    real avex,avey,sumx,sumy,varx,vary,covxy

    sumx=0.0

    sumy=0.0

    varx=0.0

    vary=0.0

    covxy=0.0

    !分别计算x和y两个序列的总和与平均值

    do i=1,n

        sumx=sumx+x(i)

        sumy=sumy+y(i)

    end do

    avex=sumx/n

    avey=sumy/n

    !分别计算x,y序列的方差

    do i=1,n

        varx=varx+(x(i)-avex)**2

        vary=vary+(y(i)-avey)**2

    end do

    varx=varx/n

    vary=vary/n

    !计算x和y的协方差

    do i=1,n

        covxy=covxy+(x(i)-avex)*(y(i)-avey)

    end do

    covxy=covxy/n

    !计算相关系数

    r=covxy/(sqrt(varx)*sqrt(vary))

    end subroutine cor

(3)其他的相关系数

在一些文章的研究中,我们还会碰到其他的相关系数,例如偏相关系数、滑动相关系数等。这里就不在作详细介绍。感兴趣的读者可搜索相关文章进行了解,如:胡景高,周兵,陶丽.南亚高压特征参数与我国夏季降水的关系分析[J].气象,2010,36(4):51-56. 一文的研究中就用到了偏相关系数和滑动相关系数。

二、塔西提站海平面气压与全球海平面气压的相关系数图的绘制

(一)资料

NCAR/NCEP月平均海平面气压再分析资料1979-2019

塔西提站海平面气压1951-2019

所用均可在NCAR/NCEP网站下载得到。

(二)数据处理程序

    !auther: Yue Shen 2020/12/20

    program so

    real mslp(144,73,1979:2019,12),tahiti(1951:2019,12),r(144,73,12)

    !read data mslp.grd and tahiti_slp.txt

    open(1,file='E:\myresearch\so\mslp.grd',form='binary')

    do iy=1979,2019

        do im=1,12

            do j=1,73

                do i=1,144

                    read(1) mslp(i,j,iy,im)

                end do

            end do

        end do

    end do

    close(1)

    open(1,file='E:\myresearch\so\tahiti_slp.txt')

    read(1,*)

    read(1,*)

    read(1,*)

    do iy=1951,2019

        read(1,'(i4,12(f6.1))') iyear,(tahiti(iy,im),im=1,12)

    end do

    close(1)

    !caculate the correlation between mslp and tahiti_mslp 1979-2019

    do im=1,12

        do j=1,73

            do i=1,144

                call cor(41,mslp(i,j,1979:2019,im),tahiti(1979:2019,im),r(i,j,im))

            end do

        end do

    end do

    !save r to r,grd

    open(1,file='E:\myresearch\so\r.grd',form='binary')

    do im=1,12

        do j=1,73

            do i=1,144

                write(1) r(i,j,im)

            end do

        end do

    end do

    close(1)

    end program

(三)数据描述文件r.ctl以及绘图命令集dr.gs

1.r.ctl

dset E:\myresearch\so\mslp.grd

title Monthly NCEP/DOE Reanalysis 2

undef -9.96921e+36

xdef 144 linear 0 2.5

ydef 73 linear -90 2.5

zdef 1 linear 0 1

tdef 502 linear 00Z01JAN1979 1mo

vars 1

mslp  0 99  t,y,x  Monthly Mean Sea Level Pressure

endvars

2.dr.gs

*auther: Yue Shen 2020/12/20

'reinit'

'open E:\myresearch\so\r.ctl'

i=1

while(i<=12)

'set t 'i''

'set grads off'

'set gxout contour'

'set cint 0.1'

'set black -0.3 0.3'

'd r'

'draw title correlation coefficient between slp of tahiti and other place 'i' '

'gxprint E:\myresearch\so\'i'.png png white'

'c'

i=i+1

endwhile

;

(四)部分结果

1月份

grads 相关系数_气象程序与绘图——相关系数的计算

2月份

grads 相关系数_气象程序与绘图——相关系数的计算

可以看到,在冬季塔西提站海平面气压与印度洋东部地区海平面气压存在明显的负相关关系。但是在某些月份(5月、6月、7月和10月)这种相关关系则不明显。

【说明】

(1)建立《气象程序集》的目的是为了减少大家在学习中编程时遇到的麻烦,将更多的时间用在思考问题上,毕竟个人认为编程绘图仅是探究问题或结果展示的一种途径(模式开发另说)。

(2)《气象程序集》中提供的所有代码有需要的均可复制使用,图像我想也没人会用。

(3)转载本文须注明出处。

(4)如提供的程序在使用中有任何问题欢迎私信交流。