爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8161|回复: 8

[其他] NCL的一个计算BUG

[复制链接]
发表于 2019-11-21 16:55:56 | 显示全部楼层 |阅读模式

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

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

x
NCL有一个计算BUG,具体如下:当使用函数对数据进行计算时,会自动忽略缺省值,而当列算式进行计算时,只要加到了缺省值,该计算结果就会成为缺省值,示例如下。
begin
a=(/1.0,2.0,3.0,1.0/)
a@_FillValue=1.0
print(a)
a(1)=1.0
print("sum="+sum(a))
print(a)
s=a(0)+a(1)+a(2)+a(3)
print("s="+s)

end
该段程序的输出结果为:
sum=3
s=1
密码修改失败请联系微信:mofangbao
发表于 2019-11-22 08:44:25 来自手机 | 显示全部楼层
这不是bug。累加的时候是你自己决定怎么加,这时候程序再自己做判断就是画蛇添足,无法实现编程者的意愿。函数里面忽略缺测是编程者要了解这个函数怎么计算的才行,自动忽略缺测值是减少了编程者的工作。。。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

发表于 2019-11-21 22:37:27 来自手机 | 显示全部楼层
没有任何问题,sum函数缺省值不参与计算,所以是
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2019-11-21 22:40:20 来自手机 | 显示全部楼层
3,元素累加缺测参与计算,当然给你缺测
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-22 00:04:04 | 显示全部楼层
freekiller 发表于 2019-11-21 22:40
3,元素累加缺测参与计算,当然给你缺测

那么开发者为什么在元素累加时要设置成缺测参与计算呢?这样不是很麻烦吗?因为这样当需要列算式累加时,必须再加一个判断才能避免。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-22 16:16:12 | 显示全部楼层
好久不见 发表于 2019-11-22 08:44
这不是bug。累加的时候是你自己决定怎么加,这时候程序再自己做判断就是画蛇添足,无法实现编程者的意愿。 ...

好的,谢谢,谨受教
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-22 16:25:49 | 显示全部楼层
freekiller 发表于 2019-11-21 22:40
3,元素累加缺测参与计算,当然给你缺测

谢谢,谨受教
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2019-11-26 11:28:41 | 显示全部楼层
楼主很细心哈。不过缺省值进行(加减乘除)运算的时候,结果都是等于缺省值。sum函数(包括其他画图函数)里面应该是包含了跳过缺省值的代码,你可以看看,有结果了给大家分享一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-26 20:41:58 | 显示全部楼层
D_Fora 发表于 2019-11-26 11:28
楼主很细心哈。不过缺省值进行(加减乘除)运算的时候,结果都是等于缺省值。sum函数(包括其他画图函数) ...

好的,谢谢指教~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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