学校的实习过半,一个学期也进入了尾声,不得不感慨这一学期来一直在学校度过的时光,尤其是在上网课的时候,精神总是不能集中,这也导致了许多时间的浪费,一天天感觉无所事事。如今到了期末,开始了线下上课,一切也仿佛走上了正轨。废话不多说了,直接开始今天的内容。
今天学习了对于求平均气温场以及距平的计算。在grads教材的第6章介绍了许多函数,在这个实验中我们用到的主要是ave()函数。Let us start!
需要的文件:air.mon.mean.nc
打开.nc文件的方式:sdfopen 路径\ filename.nc
查询文件的维数设置、格距、缺测值:q ctlinfo
在这里不详细讲解.gs文件,对于一些出图的美观性的设置我也没有提及,只是对我在实习时遇到的一些问题解答一下:
我的.gs如下:
'reinit'
'sdfopen air.mon.mean.nc'
'set lev 500'
'set t 1 12 '
'define airave=ave(air,t+36,t=756,12)'
'modify airave seasonal'
'set t 1'
'd airave'
'printim data1.png white'
'c'
'set t 7'
'd airave'
'printim data7.png white'
;
分割线-------------------------------------------------------------------------------------------------------------分割线
Q&A:
1.Q:对于所标红的部分怎么理解?
A:'set t 1 12 '是设置airave 有12个时间序列,每个时间格点放一个月份的平均值。
'airave=ave(air,t+36,t=756,12)'是定义变量airave放每个月的平均值,随着t从1变化到12,依次求得12个月份的平均值,至于,t+36,t=756,的解释,因为在实习过程中老师所要求的的是计算1951年到2010年的,而.nc文件是从1948年开始的,故为如此。
'define airave=ave(air,t+36,t=756,12)' define 临时变量名=表达式,define用于定义新的变量。
'modify airave seasonal'本来12个月的平均值放在了1~12的时间序列里,所以airave的值只是设定在1~12以内才能画出,有了这条命令,可以将airave的时间序列扩展到所有的时间里,使得每一年的每个月对应的都是该月的30年的平均值,方便后面求距平。
Q:暗绿色的部分如何理解?
'set t 1'
'd airave'
这里是要画出1月份的平均气温场,同下方的set t 7一样(求7月份的平均气温场),在这里输入set t 37 也可以计算1月份的平均气温场,理由在上一条。
![](https://img-blog.csdnimg.cn/67fe59dff7c14808aace93e06e613ac8.png)
如图所示,为1月份的平均气温场。
最后,给出距平的计算
'set t 37 756'
'airno=air-airave'
续上面的命令就可以算出距平。