- 积分
- 138
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-11-3
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
program test
implicit none
real skt(8,12,66)
real staa(8,12,66),t(160,63),stat(160,63),rain6(160,63),rain7(160,63),rain8(160,63),rjpbfl(160,63)
real,dimension(8,12)::s1,jfangcha,s2,ave,r,tt
real,dimension(160)::jfangcha2,sumrain,averain
real summerrain(160,63),cj(17,63),cjr(63),avecj,jfcrain,jprain(63)
real jfc,starain(63),avejprain,sum1
integer i,j,imo,it,k
open(11,file='d:\paper\output\2.grd',form='binary') !2月地温数据
open(13,file='d:\paper\data\r1606.txt')
open(14,file='d:\paper\data\r1607.txt')
open(15,file='d:\paper\data\r1608.txt')
! 读数据
do i=1,8
do j=1,12
do it=1,66
read(11) skt(i,j,it)
enddo;enddo;enddo
close(11)
read(13, *) ((rain6(i,k), i=1,160), k=1,63)
read(14, *) ((rain7(i,k), i=1,160), k=1,63)
read(15, *) ((rain8(i,k), i=1,160), k=1,63)
close(13)
close(14)
close(15)
!高原地温场读取
do j=1,12
do i=1,8
ave(i,j)=sum(skt(i,j,1:66))/66.0
enddo
enddo
do j=1,12
do i=1,8
s2=0.0
do it=1,66
s2(i,j)=s2(i,j)+(skt(i,j,it)-ave(i,j))**2
jfangcha(i,j)=sqrt((s2(i,j))/66.0)
enddo
enddo
enddo
do it=1,66
do j=1,12
do i=1,8
staa(i,j,it)=(skt(i,j,it)-ave(i,j))/jfangcha(i,j)
enddo;enddo;enddo
!夏季降水写到一个数组中
do i=1,160
do it=1,63
summerrain(i,it)=rain6(i,it)+rain7(i,it)+rain8(i,it)
enddo
enddo
!160站降水距平百分率
do i=1,160
sumrain(i)=sum(summerrain(i,1:63))
averain(i)=sumrain(i)/63.0
enddo
do i=1,160
do it=1,63
rjpbfl(i,it)=(summerrain(i,it)-averain(i))*100/averain(i)
enddo
enddo
!挑出长江地区的站点并写入数组
cj(1:14,1:63)=summerrain(54:67,1:63)
cj(15:16,1:63)=summerrain(72:73,1:63)
cj(17,1:63)=summerrain(77,1:63)
!
do it=1,63
cjr(it)=sum(cj(1:17,it))
end do
avecj=sum(cjr(1:63))/63.0
do it=1,63
jprain(it)=(cjr(it)-avecj)/avecj
enddo
sum1=0.0
do it=1,63
sum1=sum1+(cjr(it)-avecj)**2
end do
jfc=sqrt(abs(sum1/63.0))
do it=1,63
starain(it)=(jprain(it)-avecj)/jfc
enddo
!计算相关系数
do j=1,12
do i=1,8
sum1=0.0
do it=1,63
sum1=sum1+staa(i,j,it+3)*starain(it)
end do
r(i,j)=sum1/63.0
end do
end do
!t检验
do i=1,8
do j=1,12
tt(i,j)=r(i,j)*sqrt(61.0)/sqrt(1-r(i,j)**2)
enddo
enddo
k=0
do i=1,8
do j=1,12
if( tt(i,j)>=1.98.or.tt(i,j)<=-1.98)then
k=k+1
endif
enddo
enddo
print*,k
!把数据写成文件
open(41,file='d:\paper\output\r2.txt')
write(41,"(f10.4)") ((r(i,j),i=1,8),j=1,12)
close(41)
open(42,file='d:\paper\output\tt2.txt')
write(42,"(f10.4)") ((tt(i,j),i=1,8),j=1,12)
close(42)
end program
|
|