网站大量收购闲置独家精品文档,联系QQ:2885784924

EOF 分析实例 使用ferret绘制结果图.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EOF 分析实例 使用ferret绘制结果图

EOF 分析实例 使用ferret绘制结果图 EOF 分析实例:使用ferret绘制结果图 2011年11月08日    下面使用ferret绘图分析前面eof分析的结果。使用的数据是cdo输出的结果eofs.nc、eigenvalues.nc,以及pc00000.nc-pc00010.nc。 我们使用循环,对每个变量分别绘制一张前4个eof的空间分布图,一张前4个pc的时间序列图,以及一张前10个eof的方差贡献图。   新建一个文件,命名为draweof.jnl。   1. 外层循环控制   let vps={ul,ur,ll,lr}   let vars={tsw,slp,ustrw,vstrw}   这是定义字符串数组。ferret的字符串要放在双引号中,而字符串数组则用大括号定义。这里定义的两个字符串数组分别存放子图的位置和变量的名字,下面会用到。   repeat/range=1:4/name=nvar \   (......... ;\   ......... ;\   )   这是最外层循环,遍历所有4个要分析的变量。ferret的循环用repeat命令完成,其range属性定义循环变量的范围,name属性定义循环变量的名称,后面接一对括号,里面是要循环执行的命令。   由于ferret脚本其实就是在ferret控制台输入的命令的记录,所以脚本文件中的语法与在控制台下一样,都是基于命令的,以行为单位。repeat命令后面的括号中如果要带有多行命令,要用分号隔开,这些命令如果要写在多行上,需要在行尾加\。所以最终的格式如上面所示。下面的命令都写在repeat的括号中。   let var=vars[i=`nvar`];\   这条命令将变量名字符数组的当前元素赋值给一个字符串。在ferret中,任何变量都是定义在至少一维空间上的,第一维空间的下标变量固定为i(其他维分别为j、k、l)。我们刚才定义的字符串数组是一维的,它的第一个元素要用vars[i=1]来表示。类似的,一个4维变量的某个元素也可以用a[i=1,j=2,k=3,l=4]来表示。这种下标还支持切片:a[i=1:10,j=2,k=3,l=2:8]。用ijkl表示的空间与实际的地球坐标和时间没有关系,仅用来表示一个抽象的数学空间里的变量。而定义在4维物理空间(3维空间+1维时间)中的变量,除了抽象坐标职位,还可以用物理坐标xyzt来访问,如a[x=100e:70w,y=20n,z=100,t=1-Jan-2011]访问变量a在北纬20度上东经100-西经70度的一条线上的值,层次为海面以下100m,时间是2011年1月1日。   由于ferret的基本单位是终端中的命令,而命令不能接受变量做参数,只能接受键盘输入的明确常量(如a[i=1])。为了使命令能接受变量,引入了命令代换表达式。上面的`nvar`就是一个代换表达式。   代换表达式就是将用两个`符号(键盘上1左边)包围起来的一个表达式解析成数字。这个解析过程在命令执行之前发生,效果就相当于用户在键盘上手动输入了解析结果这个数字一样。   如`nvar`解析表达式nvar,这个表达式只是一个变量的名字,因此返回这个变量的值。比如当前是第一次循环,因此nvar=1,代换表达式的结果就是1。把这个数字放在它所在的命令里,这条命令就变成了   let var=vars[i=1];\   然后ferret解析并执行这条命令。结果就好像用户明确输入了[i=1]一样。使用代换表达式,我们就可以在命令里使用变量了。这是ferret脚本中非常重要的一个功能。   现在就能理解,上面的命令是用代换表达式得到循环变量的当前值,用它取出变量名字符串数组的相应元素,并赋值给一个变量。因此var变量是一个保存着当前变量名的字符串。   2.2   use eofs.nc;\   这条命令打开eofs.nc文件,其中包含cdo所计算的EOF。   2.3   set mode meta `var`_eofs.plt;\   这里再次用了代换表达式,表达式内仍是一个变量的名字,因此返回这个变量的值,所以在第一次循环里代换之后这条命令变成了   set mode meta tsw_eofs.plt;\   meta是metafile的缩写。set mode metafile将metafile模式打开,这个模式将会把屏幕上绘制的图形以ferret自己的格式保存在一个图元文件(metafile)中,命令后面的文件名就是指定图元文件,如果不指定,则ferret使用默认文件名保存。每次绘图操作都会更新这个图元文件,直到下一条set mode meta命令指定了另外一个图元文件。  

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档