爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7839|回复: 9

[其他] 时间变量的赋值出现奇怪的值

[复制链接]

新浪微博达人勋

发表于 2015-6-10 16:04:56 | 显示全部楼层 |阅读模式

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

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

x
一个数据中有时间变量time,要定义一个新的时间变量,然后将已有的时间赋值给它,出现了很多极值,没有赋值成功。
时间变量类型都是double型。
ff2=addfile("ozone.nc","r")
tim2=ff2->time
print(tim2)  
得到的结果如下:
+++++++++++++++++++++
Variable: tim2
Type: double
Total Size: 96 bytes
            12 values
Number of Dimensions: 1
Dimensions and sizes:   [time | 12]
Coordinates:
            time: [  16.. 350]
Number Of Attributes: 2
  long_name :   time
  units :       days since 0000-01-01 00:00:0.0
(0)       16
(1)       45
(2)       75
(3)      105
(4)      136
(5)      166
(6)      197
(7)      228
(8)      258
(9)      289
(10)     319
(11)     350
+++++++++++++++++++++

time2=new((/12/),"double","No_FillValue")
time2!0="time"
time2@units="days since 0000-01-01 00:00:0.0"
time2@long_name="time"
time2&time=tim2        ;变成(/tim2/)也是相同结果
print(time2)
得到的结果如下:
+==========================================
Variable: time2
Type: double
Total Size: 96 bytes
            12 values
Number of Dimensions: 1
Dimensions and sizes:   [time | 12]
Coordinates:
            time: [  16.. 350]
Number Of Attributes: 2
  long_name :   time
  units :       days since 0000-01-01 00:00:0.0
(0)     1.230620574000316e-312
(1)     6.199788685626632e-316
(2)        0
(3)        0
(4)        0
(5)        0
(6)        0
(7)        0
(8)        0
(9)        0
(10)       0
(11)       0
+==========================================
值没有赋成功,这是什么原因?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-10 16:20:46 | 显示全部楼层
你要检查的是时间坐标变量是否赋值成功,应该是print(time2&time)。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-10 16:31:11 | 显示全部楼层
但是为什么print(time2)出现的值不对呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-10 16:54:19 | 显示全部楼层
novelbean 发表于 2015-6-10 16:31
但是为什么print(time2)出现的值不对呢?

楼主凭什么说值不对?你time2还没有赋值啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-10 16:56:01 | 显示全部楼层
"要定义一个新的时间变量,然后将已有的时间赋值给它"
如果仅仅是这个要求,time2 = tim2就可以了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-10 17:19:31 | 显示全部楼层
time2=new((/12/),"double","No_FillValue")
time2!0="time"
time2@units="days since 0000-01-01 00:00:0.0"
time2@long_name="time"
time2&time=tim2  
这个目的是将值和属性都赋值给time2了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-10 21:04:04 来自手机 | 显示全部楼层
novelbean 发表于 2015-6-10 17:19
time2=new((/12/),"double","No_FillValue")
time2!0="time"
time2@units="days since 0000-01-01 00:00: ...

目的达到了吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-10 21:34:52 | 显示全部楼层
no

两种结果:
第一种:
ff2=addfile("ozone.nc","r")
tim2=ff2->time
time2=new((/12/),"double","No_FillValue")
time2!0="time"
time2@units="days since 0000-01-01 00:00:0.0"
time2@long_name="time"
time2=(/tim2/)
print(time2)


Variable: time2
Type: double
Total Size: 96 bytes
            12 values
Number of Dimensions: 1
Dimensions and sizes:   [time | 12]
Coordinates:
Number Of Attributes: 2
  long_name :   time
  units :       days since 0000-01-01 00:00:0.0
(0)       16
(1)       45
(2)       75
(3)      105
(4)      136
(5)      166
(6)      197
(7)      228
(8)      258
(9)      289
(10)     319
(11)     350

这种算是正确的。

----------------------------------------
第二种:
ff2=addfile("ozone.nc","r")
tim2=ff2->time
time2=new((/12/),"double","No_FillValue")
time2!0="time"
time2@units="days since 0000-01-01 00:00:0.0"
time2@long_name="time"
time2&time=(/tim2/)
print(time2)


Variable: time2
Type: double
Total Size: 96 bytes
            12 values
Number of Dimensions: 1
Dimensions and sizes:   [time | 12]
Coordinates:
            time: [  16.. 350]
Number Of Attributes: 2
  long_name :   time
  units :       days since 0000-01-01 00:00:0.0
(0)     1.230620574000316e-312
(1)     6.945721883172446e-316
(2)        0
(3)        0
(4)        0
(5)        0
(6)        0
(7)        0
(8)        0
(9)        0
(10)       0
(11)       0

这种得出的结果不对,虽然 print(time2&time)能得到第一种的结果,但是为什么这种写法不对呢?

符号&用来引用和分配坐标变量,根据那个ncl学习参考手册及相关的ncl资料。

譬如:
  T!0= "lat"
   T!1="lon"
   T&lat=(/-90.,-85,...,85,90/)
   T&lon=fspan(0..355.,72)

这种t&的赋值方式为什么在以上的例子中会出现哪种现象呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-11 09:15:01 | 显示全部楼层

time2=(/tim2/)
time2&time=(/tim2/)
本来就不同啊!一个给变量赋值,一个给变量的坐标变量赋值。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2024-3-28 14:20:38 | 显示全部楼层
请问后来怎么解决的?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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