eof matlab画图,EOF 分析实例:使用ferret绘制结果图

本文详细介绍了如何使用ferret脚本来绘制EOF(Empirical Orthogonal Functions,经验正交函数)分析结果。通过循环遍历多个变量,绘制了每个变量的前4个EOF空间分布图、前4个PC时间序列图以及前10个EOF的方差贡献图。内容包括变量定义、循环结构、代换表达式和绘图命令,以及如何将结果转换为eps文件,适用于海洋学或气象学的数据分析。
摘要由CSDN通过智能技术生成

下面使用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的括号中。

2. 绘制eof空间分布图、

2.1

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)中,命令后面的文件名就是指定

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值