爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5441|回复: 8

[分享资料] 【求助】计算均根方误差时缺省值的处理

[复制链接]
发表于 2013-3-27 09:50:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我想对比站点数据和wrf模式运行结果的气温变量的均根方误差。
我的思路如下:grid.ctl 是生成的格点数据描述文件,sta.ctl 是站点描述文件,d02-21600.ctl是wrf结果描述文件。首先把站点插值到格点上,然后计算均值;然后对于每个格点,计算误差,并相加,最后进行开方,平均。在循环中,需要对缺省值处理,wrf的T2缺省值是1e+30,想把缺省值变成0。程序运行通过,但是计算结果不对,大家能帮我看看么?仔细想了想,缺省值这里能否用fortran修改呢,可是由于不知道.dat的格式,不知道该如何处理
'reinit'
'open C:\GrADS20\win32\Temperature\20130308\grid.ctl'
'open C:\GrADS20\win32\Temperature\20130308\sta.ctl'
'open C:\GrADS20\win32\Temperature\20130308\d02-21600.ctl'
'set t 1'
'set z 1'
'define a=oacres(g,avg.2)'
'define aa=aave(a,x=1,x=537,y=1,y=347)'
'set t 4'
'define f=T2.3'
i=1
j=1
'define cha1=0'
while(i<538)
'set x 'i
while(j<348)
'set y 'j
if('f=1e+30')
'define f=0'
endif
'define cha1=(aa-f)*(aa-f)+cha1'
j=j+1
endwhile
i=i+1
endwhile
'define cha2=cha1/(537*347)'
'define cha=sqrt(cha2)'
;
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-27 09:57:49 | 显示全部楼层
感觉还是脚本语言和描述语言有些混乱,有些分不清,如果能直接用fortran处理还好,但是不知道.dat文件格式。直接用arwpost处理wrf模式结果生成的.dat,使用写字板或Linux查看是乱码,所以不知道具体的格式
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-27 10:22:03 | 显示全部楼层
我用均值测试了一下,分别使用循环和aave函数计算,aave计算结果是25.6547,使用循环计算得出的是-0.99e+33,也就是aave自动略过缺省值了,循环计算没有略过,why,why,why??????????
'reinit'
'open C:\GrADS20\win32\Temperature\20130308\grid.ctl'
'open C:\GrADS20\win32\Temperature\20130308\sta.ctl'
'set t 1'
'set z 1'
'define a=oacres(g,avg.2)'
'define aa=aave(a,x=1,x=537,y=1,y=347)'
i=1;j=1;
'define sum=0'
while(i<538)
'set x 'i''
while(j<347)
'set y 'j''
'define sum=a+sum'
j=j+1
endwhile
i=i+1
endwhile
'define sum=sum/(537*347)'
;
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-27 10:22:30 | 显示全部楼层
我用均值测试了一下,分别使用循环和aave函数计算,aave计算结果是25.6547,使用循环计算得出的是-0.99e+33,也就是aave自动略过缺省值了,循环计算没有略过,why,why,why??????????
'reinit'
'open C:\GrADS20\win32\Temperature\20130308\grid.ctl'
'open C:\GrADS20\win32\Temperature\20130308\sta.ctl'
'set t 1'
'set z 1'
'define a=oacres(g,avg.2)'
'define aa=aave(a,x=1,x=537,y=1,y=347)'
i=1;j=1;
'define sum=0'
while(i<538)
'set x 'i''
while(j<347)
'set y 'j''
'define sum=a+sum'
j=j+1
endwhile
i=i+1
endwhile
'define sum=sum/(537*347)'
;
密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
发表于 2013-3-27 11:57:41 | 显示全部楼层
这个问题论坛有讨论过的,ave中缺省不参加计算  自己做加法是参加计算的  GrADS本来如此
密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
发表于 2013-3-27 11:58:52 | 显示全部楼层
GrADS有函数可以修改缺省值的,你自己找一下官方的index文档
密码修改失败请联系微信:mofangbao
发表于 2013-3-27 15:45:05 | 显示全部楼层
这个问题果然很复杂
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-27 22:45:46 | 显示全部楼层

嗯,我找找,谢谢清风老师O(∩_∩)O~ 暂时用fortran+excel计算出来了,我再研究一下grads
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-27 22:46:13 | 显示全部楼层
river 发表于 2013-3-27 15:45
这个问题果然很复杂

最后选择excel计算了。。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表