爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19426|回复: 38

[分享资料] 【转】侯计算模板

[复制链接]
0
早起挑战累计收入
发表于 2011-12-20 08:36:48 | 显示全部楼层 |阅读模式

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

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

x
今天早上无意中搜到了一位朋友的博客,看来也是我们论坛的朋友,转了一篇帖子过来分享给大家,原帖地址:
http://hi.baidu.com/krcat/blog/item/755cd142a43fe10f72f05d3e.html
博客主人是一个有心的MM,总结了很多自己经验,推荐大家去踩踩
=======================================================================
*侯计算模板开始*************
*** 侯计算 pentad
**  day的加数是一直在加的,与year mon pen的增量改变无联系
day=1
year=1961
while(year<=2009)
mon=1
while(mon<=12)
  pen=1
  while(pen<=6)
**判定
**1,3,5,7,8,10,12都是最后一侯6天
   if(mon=1|mon=3|mon=5|mon=7|mon=8|mon=10|mon=12)
    if(pen=6)
*谢谢冬日情愫+的提醒,这里应该是+5,而不是+6,下同,已修改
     'd ave(物理量,t='day',t='day'+5)'  
     day=day+6
    endif
**非闰年2月28天,最后一侯3天;闰年第6侯4天
   else if(mon=2)
    if(pen=6)
*能被4整除但不能被100整除或者能被400整除(未来一段时间内这个方法够用了,特别大的年份还需另外判断)
     rc=math_fmod(year,4)
     rc1=math_fmod(year,100)
     rc2=math_fmod(year,400)
     if((rc=0&rc1!=0)|(rc2=0))
        'd ave(物理量,t='day',t='day'+3)'
         day=day+4
     else
        'd ave(物理量,t='day',t='day'+2)'
        day=day+3
     endif
endif
**判定完
  else
  'd ave(物理量,t='day',t='day'+4)'
  day=day+5
  endif
  pen=pen+1
endwhile
mon=mon+1
endwhile

=========解释的分割线==========
今晚玩了一晚上,和秋讨论侯的计算,顺手写个模板看看。
噢,各位亲啊亲啊千万记住,用逐日资料算侯资料,千万不可以直接365/5,这种算出来每年有73侯,但是实际上,按照约定俗成的每月6侯计算,每年是只有72侯的哟~~~
这这,哎,所以说,很多时候,写这么复杂,就是为了每年不要多出那1侯,人还真是自我折磨的动物。。。。。
======进一步解释和吐槽分割线========
写这个的时候,又和秋讨论起闰年的问题。啊,我真是胸闷。。。。。这个太烦人了。。。。怎么可以这么讨厌。。。。。
所有原始数据都是有闰年的,所以,计算气候平均的话,用ave(,t=,t=,365)时必须先去除闰年,变成OPTIONS 365_day_calendar的数据再开始计算。
那么换句话说,就是当你下载到一个nc数据的时候,必须先考虑去除闰年,才能去做多年平均。。。。否则,按照4年多出1天,30年平均值里就错位了7天!整整一个星期!!!
============================================
顺便说一下,每个月的前5后都是5天,最后一侯到月末有几天是几天,这样每月6侯,一年72侯



密码修改失败请联系微信:mofangbao
发表于 2011-12-20 10:54:26 | 显示全部楼层
清风,看了看这个程序,是不是有点小问题,就是计算侯平均的时候(程序里貌似都多算了一天):比如 'd ave(物理量,t='day',t='day'+5)'应该是 'd ave(物理量,t='day',t='day'+4)'。不知道我理解的对不对啊!

评分

参与人数 1金钱 +5 收起 理由
mofangbao + 5

查看全部评分

密码修改失败请联系微信:mofangbao
发表于 2011-12-20 11:00:32 | 显示全部楼层
我也觉得楼上的说的有道理
密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
 楼主| 发表于 2011-12-20 11:09:34 | 显示全部楼层

的确如此 我还没看呢 嘿嘿 只顾着转了,我注明一下
密码修改失败请联系微信:mofangbao
发表于 2011-12-20 11:35:05 | 显示全部楼层
应该告诉那位漂亮的MM
密码修改失败请联系微信:mofangbao
发表于 2011-12-20 13:00:42 | 显示全部楼层
我算侯的时候 都是把平年跟闰年的每一侯的开始跟结束的日序DOY统计好 以后每次用的时候  就按这个统计好的东西 一对比就行了 屡试不爽
密码修改失败请联系微信:mofangbao
发表于 2011-12-20 15:31:08 | 显示全部楼层
秋是谁?
密码修改失败请联系微信:mofangbao
发表于 2011-12-20 15:31:48 | 显示全部楼层
忘了说正经事儿了,介个不错的,在论坛还没见到过,感谢大大拿出来分享
密码修改失败请联系微信:mofangbao
发表于 2011-12-21 08:23:02 | 显示全部楼层
rc=math_fmod(year,4)中是不是应该加入year能被100除,而不能被400除,应该是28天

点评

嘿嘿,是能被400整除啦,或者能被4整除但不能被100整除,比如2100年就不是闰年,2000年是闰年^v^  发表于 2011-12-21 09:17

评分

参与人数 1金钱 +5 收起 理由
mofangbao + 5

查看全部评分

密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
 楼主| 发表于 2011-12-21 08:24:37 | 显示全部楼层
qxtlyf 发表于 2011-12-21 08:23
rc=math_fmod(year,4)中是不是应该加入year能被100除,而不能被400除,应该是28天


一般的判断方法就是能被4整除但不能被100整除或者能被400整除,这个是应该加上
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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