- 积分
- 1395
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-4-13
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2015-5-2 15:09:15
|
显示全部楼层
用fortran打开两个grd文件,然后按照相关系数编程
program main
parameter(nx=13,ny=13,nt=420)
integer i,j,k
real cloud(nx,ny,nt),q(nx,ny,nt),cor(nx,ny),xy(nx,ny),xx(nx,ny),yy(nx,ny),ave1(nx,ny),ave2(nx,ny)
!读入总云量要素场
open(100,file='d:/result/netcdf.grd',form='binary')
read(100)(((cloud(i,j,k),i=1,nx),j=1,ny),k=1,nt)
close(100)
!读入比湿
open(101,file='d:/result/q.grd',form='binary')
read(101)(((q(i,j,k),i=1,nx),j=1,ny),k=1,nt)
close(101)
ave1=0.0
do i=1,nx
do j=1,ny
do k=1,nt
ave1(i,j)=ave1(i,j)+q(i,j,k)
end do
ave1(i,j)=ave1(i,j)/nt
end do
end do
do i=1,nx
do j=1,ny
do k=1,nt
ave2(i,j)=ave2(i,j)+cloud(i,j,k)
end do
ave2(i,j)=ave2(i,j)/nt
end do
end do
xy=0
xx=0
yy=0
do i=1,nx
do j=1,ny
do k=1,nt
xy(i,j)=xy(i,j)+(q(i,j,k)-ave1(i,j))*(cloud(i,j,k)-ave2(i,j))
xx(i,j)=xx(i,j)+(q(i,j,k)-ave1(i,j))**2
yy(i,j)=yy(i,j)+(cloud(i,j,k)-ave2(i,j))**2
end do
end do
end do
do i=1,nx
do j=1,ny
cor(i,j)=xy(i,j)/(sqrt(xx(i,j)*yy(i,j)))
end do
end do
open(200,file='d:/result/corrslp.grd',form='binary')
open(300,file='d:/result/cor.txt')
write(200) ((cor(i,j),i=1,nx),j=1,ny)
write(300,*) ((cor(i,j),i=1,nx),j=1,ny)
close(200)
close(300)
end program |
|