是合成差值场的t检验程序。
program main
implicit none
integer i,j,t,irec
integer,parameter :: x=145
integer,parameter :: y=73
integer,parameter :: n=58 !总体样本数
real,parameter :: n1=10.0 !偏早年份
real,parameter :: n2=10.0 !偏晚年份
real :: dat(x,y,n),earlyave(x,y),lateave(x,y),earlyvar(x,y),latevar(x,y),ts(x,y),dif(x,y)
!资料读取
open(100,file='d:\48-05u200june.grd',form='unformatted',access='direct',recl=x*y*4)
irec=1
do t=1,n
read(100,rec=irec) ((dat(i,j,t),i=1,x),j=1,y)
irec=irec+1
enddo
close(100)
!资料读取完毕
!偏早年和偏晚年的均值
do j=1,y
do i=1,x
earlyave(i,j)=(dat(i,j,9)+dat(i,j,14)+dat(i,j,24)+dat(i,j,27)+dat(i,j,33)+dat(i,j,35)+dat(i,j,37)+dat(i,j,42)+dat(i,j,44)+dat(i,j,52))/n1
lateave(i,j)=(dat(i,j,11)+dat(i,j,12)+dat(i,j,17)+dat(i,j,18)+dat(i,j,19)+dat(i,j,20)+dat(i,j,22)+dat(i,j,45)+dat(i,j,51)+dat(i,j,58))/n2
enddo
enddo
!!!!!!!!!!!!!!!!!!!!!
!偏早年和偏晚年的差值
do j=1,y
do i=1,x
dif(i,j)=earlyave(i,j)-lateave(i,j)
enddo
enddo
!!!!!!!!!!!!!!!!!!!!!
!偏早年和偏晚年的方值
do j=1,y
do i=1,x
earlyvar(i,j)=((dat(i,j,9)-earlyave(i,j))**2+(dat(i,j,14)-earlyave(i,j))**2+(dat(i,j,24)-earlyave(i,j))**2+(dat(i,j,27)-earlyave(i,j))**2+(dat(i,j,33)-earlyave(i,j))**2+(dat(i,j,35)-earlyave(i,j))**2+(dat(i,j,37)-earlyave(i,j))**2+(dat(i,j,42)-earlyave(i,j))**2+(dat(i,j,44)-earlyave(i,j))**2+(dat(i,j,52)-earlyave(i,j))**2)/n1
latevar(i,j)=((dat(i,j,11)-lateave(i,j))**2+(dat(i,j,12)-lateave(i,j))**2+(dat(i,j,17)-lateave(i,j))**2+(dat(i,j,18)-lateave(i,j))**2+(dat(i,j,19)-lateave(i,j))**2+(dat(i,j,20)-lateave(i,j))**2+(dat(i,j,22)-lateave(i,j))**2+(dat(i,j,45)-lateave(i,j))**2+(dat(i,j,51)-lateave(i,j))**2+(dat(i,j,58)-lateave(i,j))**2)/n2
enddo
enddo
!!!!!!!!!!!!!!!!!!!!
!计算t统计量
do j=1,y
do i=1,x
ts(i,j)=(earlyave(i,j)-lateave(i,j))/(sqrt(((n1-1)*earlyvar(i,j)+(n2-1)*latevar(i,j))/(n1+n2-2))*sqrt(1/n1+1/n2))
enddo
enddo
!!!!!!!!!!!!!!!!!!!!
!资料输出
open(200,file='d:\u200junedif.grd',form='binary')
do j=1,y
do i=1,x
write(200) dif(i,j)
enddo
enddo
close(200)
open(300,file='d:\u200junet-test.grd',form='binary')
do j=1,y
do i=1,x
write(300) ts(i,j)
enddo
enddo
close(300)
!资料输出完毕
stop
end program main
|