**原帖地址http://bbs.06climate.com/forum.php?mod=viewthread&tid=20302
**我还在尝试搞清楚出来的grd在matlab里怎么排布。。。想不明白0 0!
'reinit'
*先设置各月的名称
mon.1=Jan;mon.2=Feb;mon.3=Mar;mon.4=Apr;mon.5=May;mon.6=Jun;
mon.7=Jul;mon.8=Aug;mon.9=Sep;mon.10=Oct;mon.11=Nov;mon.12=Dec
*文件读入,准备输出
'sdfopen E:\F\essay\data\data\NCEP\pres.mon.mean.nc'
'set gxout fwrite'
imon=1
while(imon<=12)
'set fwrite E:\F\essay\data\data\NCEP\div\pres\'mon.imon'_P.grd'
y=1948*资料起始年
y1=1960
y2=2013
while(y1<=y2)
ta=(y1-y)*12+imon
'set t 'ta''
nz=1
*地面气压仅为一层数据,故不循环,而shum,U,Vwnd都是8层
*while(nz<=8)
'set z 'nz''
'set x 29 57'
'set y 43 60'
*这里注意一下,当X,Y输出的时候设定了其实,CTL文件描述相应的要进行修改
*(xdef 28 liner 70 2.5
ydef 17 liner 15 2.5)
'd pres'
*nz=nz+1
*endwhile
y1=y1+1
endwhile
'disable fwrite'
imon=imon+1
endwhile
;
====================Fortran处理成txt================
program main
implicit none
integer it,iz,n,m,i,j
real::shum(29,17,8,792)
n=29
m=17
open (10,file='e:/llx/shum.grd',form='binary')
do it=1,792
do iz=1,8
read(10 )((shum(i,j,iz,it),i=1,n),j=1,m)
end do
end do
close(10)
open(12,file='e:/llx/shuiqi/shum1.txt',status='new')
do it=139,792 !我所需要截取的时间
do iz=1,8
write(12,*) ((shum(i,j,iz,it),i=1,n),j=1,m)
end do
end do
close(12)
end
其中①it,iz是GRD文件中时间和高度的格点数;
②n,m分别是X方向和Y方向上格点数,为“大数-小数+1”
i.e.:'set x 29 57'则i=57-29+1
③write()函数在写入grd时写“write(12)”、写入txt时为“write(12,*)”
④写成grd的时候必须时间,高度,纬度,经度的顺序,怎么写进去怎么读出来