爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: 二子搞研究

[求助] 利用Fortran做单一站点多时次txt转换grd时候出错!

[复制链接]

新浪微博达人勋

 楼主| 发表于 2016-3-1 17:08:22 | 显示全部楼层
lqouc 发表于 2016-3-1 15:53
再认真看下清风的帖子哈。
你想要的是1个站点338个时刻,现在你写的方法表示的是338个站点1个时刻。改改 ...

不好意思大神,恕我太笨了,我没理解您的意思,清风大神的那个我打印出来反复看了两天了都,他里面关于多时次的也有一部分解释,其实我的那部分就相当于sta=1了对吧,你说的我把这两个整反了的意思,我的理解是不是说,i=1,itt,下面的lon,lat,是不是在i=任何一个数的时候都全部输出了?好混乱啊。。。还能进一步给我提示一下吗大神。。。。。。

qingfneg2.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-3-1 17:37:24 | 显示全部楼层
lqouc 发表于 2016-3-1 15:53
再认真看下清风的帖子哈。
你想要的是1个站点338个时刻,现在你写的方法表示的是338个站点1个时刻。改改 ...

大神,我好像解决了,您看看是这样吗?因为是338个时次,所以出来了time=1-338,都显示出来了,我把清风大侠的那个又仔仔细细的看了一遍,改了之后就可以运行出来了,但是我明白您说的那个错误了,但是脑子还是没转过来。。。。。。。
solve.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-1 17:55:42 | 显示全部楼层
二子搞研究 发表于 2016-3-1 17:37
大神,我好像解决了,您看看是这样吗?因为是338个时次,所以出来了time=1-338,都显示出来了,我把清风大 ...

就是这个样子,解决了就行
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-3-1 22:15:23 | 显示全部楼层
lqouc 发表于 2016-3-1 17:55
就是这个样子,解决了就行

大神,我把这个转好了之后,写了相应的ctl文件,并且想要与对应时间段的其他气象要素做单点对场的相关,那这个grd文件是不是还需要转换成格点数据才行? 我没有转换直接写的gs文件如下:
'reinit'
'open F:\cygwindata\lagcor\fortran\iso\iso3.ctl'   * iso3.ctl为之前提取的grd文件的描述文件
'set dfile 1'
'set lat 30.9'
'set lon 88.7'
'set t 1 338'
'define a=iso' →感觉是这里的定义出了问题?见下图错误处
'open F:\cygwindata\lagcor\fortran\iso\olr.ctl' *olr.ctl我写的nc文件里提取的对应时段的orl.grd文件的描述文件
'set dfile 2'
'set lat 0 60'
'set lon 40 160 '
*'set z 1'
'set t 1'
'define b=tcorr(a,olr,t=1,t=338)'
'set gxout shaded'
'd b'

最后运行出来有这样的错误,说定义对站点数据是无效的,我之前用nc文件的单一格点数据与nc文件的场文件做相关的时候没有问题,所以是不是还需要插值成2.5*2.5的格点数据呢?:
error4.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-2 08:53:25 | 显示全部楼层
二子搞研究 发表于 2016-3-1 22:15
大神,我把这个转好了之后,写了相应的ctl文件,并且想要与对应时间段的其他气象要素做单点对场的相关, ...

是你自己搞错了吧。你仔细看看tcorr的用法。点对场的相关,只需要这个点上的一个时间序列就可以,和它在哪也就是经纬度完全没有关系,为什么要按照站点格式写呢······
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-3-2 10:28:32 | 显示全部楼层
本帖最后由 二子搞研究 于 2016-3-2 10:35 编辑
river 发表于 2016-3-2 08:53
是你自己搞错了吧。你仔细看看tcorr的用法。点对场的相关,只需要这个点上的一个时间序列就可以,和它在 ...


大神我好像整出来了,我跟您说说您看看对不对哈。我更改了之前txt转grd的Fortran程序,将stid站点去掉了,并且在定义ctl文件的时候就没有dtype成station类型,把STNMAP也去掉了,下面是ctl文件
DSET F:\cygwindata\lagcor\fortran\isot\isot.grd
*DTYPE station   去掉了
*STNMAP F:\cygwindata\lagcor\fortran\isot\isot.map 去掉了
UNDEF -32766
TITLE 'data from 2013-2014'
xdef 1 linear 30.9 1  单点
ydef 1 linear 88.7 1  单点
zdef 1 linear 0 1
TDEF 338 linear 28oct2013 1dy
VARS 1
iso 1 99  isotope data
ENDVARS
后来又用了写了gs文件,最后也成功出图了,但是我觉得还是有点问题,那些缺测值系统是不是就自动跳过不做相关了啊??,还是。。如果影响大的话我还是按照您说的趋势分析法补上吧
'reinit'
'open F:\cygwindata\lagcor\fortran\isot\isot.ctl'
'set dfile 1'
'set x 1'
'set y 1'
'set z 1'
'set t 250 270'
'define a=iso'
'open F:\cygwindata\lagcor\fortran\isot\olr.ctl'
'set dfile 2'
'set lat 0 60'
'set lon 40 160'
*'set z 1'
'set t 1'
i=250
'define b=tcorr(a,olr,t='i',t='i+20')'
'set gxout shaded'
'd b'
'run cbarn.gs'
'printim F:\cygwindata\lagcor\fortran\isot\'i'.png'

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-3 08:43:48 | 显示全部楼层
二子搞研究 发表于 2016-3-2 10:28
大神我好像整出来了,我跟您说说您看看对不对哈。我更改了之前txt转grd的Fortran程序,将stid站点去掉 ...

这回问题不大了,就是只要把你那三百多个时次数据按照顺序写成二进制就行了,ctl 也没什么问题了。缺测值应该是grads自动跳过处理了的。但是求相关的那一句里面的时间既然是固定的,为什么不直接写成'define b=tcorr(a,olr,t=250,t=270)' 呢,如果像你这样写法有时候还是有可能出问题,好像单引号的位置不同也会影响,你试试这样写'define b=tcorr(a,olr,t='i',t='i'+20')' 和你原来那样的结果是不是一致的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-3-3 11:01:00 | 显示全部楼层
river 发表于 2016-3-3 08:43
这回问题不大了,就是只要把你那三百多个时次数据按照顺序写成二进制就行了,ctl 也没什么问题了。缺测值 ...

昨天还是出了些小问题,不过都解决了,相关性图也都画好了,这部分是没啥问题了。但是大神我想请教一下grads中的tcorr做出的相关性如何判断是否显著?是直接对照相关系数显著性检验表去找?可是不知道p的值啊。。。。还需要另外做t检验吗,在grads中能做吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-3 12:13:16 | 显示全部楼层
二子搞研究 发表于 2016-3-3 11:01
昨天还是出了些小问题,不过都解决了,相关性图也都画好了,这部分是没啥问题了。但是大神我想请教一下gr ...

肯定是可以做 t 检验的,按照检验的公式带进去相关数值计算就成了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-3-3 20:11:40 | 显示全部楼层
river 发表于 2016-3-3 12:13
肯定是可以做 t 检验的,按照检验的公式带进去相关数值计算就成了

谢谢大神,已经顺利做出!我参考的是魏凤英老师那本书P31页有关相关性检验求t的公式。
但我还想请教您两个问题,tcorr的用法tcorr=(expr1,expr2,tim1,tim2),因为expr1的时间序列是已经定好了的,tim1与tim2其实就是expr2的时间序列对吧,那如果想要求超前滞后的相关性,只需要提前tim1 tim2或者推后就可以了实现,这么想是对的吧?
那么如果我想要实现的不单单是这么简单的超前滞后,而是averaged那种,比如说expr1已经确定了是从2013.3.12-2013.4.12,expr2我希望是2013.3.12的提前8天的平均值(2013.4-2013.11的均值),2013.3.13提前8天的平均值,以此类推到2014.4.12提前八天的平均值,这两个序列求相关,用tcorr应该没法实现,但我现在也没有啥好的思路,大神可否指点一下?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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