一、Fortran程序
program main
implicit none
integer,parameter :: nt=30,nx=32,ny=7
integer ix,iy,it,y1,y2
real:: sst(nx,ny,nt)=0.0,ave(nx,ny)=0.0,sx(nx,ny)=0.0,jvping(nx,ny,nt)=0.0
open(1,file='C:\lianxi\2021\practice1\NCEP_TPSST_30y_Wt.dat',form='binary')
do it=1,nt
read(1) ((sst(ix,iy,it),ix=1,nx),iy=1,ny)
end do
close(1)
!计算平均气候场
do ix=1,nx
do iy=1,ny
do it=1,nt
ave(ix,iy)=ave(ix,iy)+sst(ix,iy,it)/30.0
end do
end do
end do
!计算均方差场
do iy=1,ny
do ix=1,nx
do it=1,nt
if(sst(ix,iy,it) .GT. 1000)continue !若该点的值为缺测值,则跳过该值
sx(ix,iy)=sx(ix,iy)+((sst(ix,iy,it)-ave(ix,iy))**2)
end do
sx(ix,iy)=sqrt(sx(ix,iy)/30.0)
enddo
end do
open(3,file='C:\lianxi\2021\practice1\ave.grd',form='binary')
write(3)((ave(ix,iy),ix=1,nx),iy=1,ny)
close(3)
open(4,file='C:\lianxi\2021\practice1\junfangcha.grd',form='binary')
write(4)((sx(ix,iy),ix=1,nx),iy=1,ny)
close(4)
!距平场
do ix=1,nx
do iy=1,ny
do it=1,nt
if(sst(ix,iy,it) .LE.1000) then
jvping(ix,iy,it)=sst(ix,iy,it)-ave(ix,iy)
endif
enddo
enddo
enddo
open (2,file='C:\lianxi\2021\practice1\jvping.grd',form='binary')
write(2) (((jvping(ix,iy,it),ix=1,nx),iy=1,ny),it=1,nt)
close(2)
end program
二、ctl文件与gs文件