爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6318|回复: 7

ncl出错问题

[复制链接]
发表于 2014-4-22 13:31:05 | 显示全部楼层 |阅读模式

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

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

x
[img]file:///C:\Users\lenovo\Documents\Tencent Files\569417977\Image\NL[A32AIB32MP@]U35ZJ{O6.jpg[/img] QQ图片20140422132825.jpg


请问各大神们如何解决后两条警告啊。

密码修改失败请联系微信:mofangbao
发表于 2014-4-22 14:02:45 | 显示全部楼层
如果你用到了onedtond,那么你一维数组的元素个数大于输出的多维数组元素个数,检查各维维数相乘是否等于一维数组元素个数。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-22 16:03:44 | 显示全部楼层
longlivehj 发表于 2014-4-22 14:02
如果你用到了onedtond,那么你一维数组的元素个数大于输出的多维数组元素个数,检查各维维数相乘是否等于一 ...

这个解决了,后两个警告呢
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-22 16:11:55 | 显示全部楼层
longlivehj 发表于 2014-4-22 14:02
如果你用到了onedtond,那么你一维数组的元素个数大于输出的多维数组元素个数,检查各维维数相乘是否等于一 ...

dim = dimsizes(mmy)  
var_3d_summer=new((/30,12/),"float")
var_3d_cli=new((/12,30/),"float")
mmt=new(30,"float")
var_2d_winter1=new(30,"float")
var_2d_winter2=new(30,"float")
var_3d_summer = onedtond(mmy,(/dim/12,12/))  ;ti qu chu ji jie
var_3d_summer!1="season"
var_3d_summer!0="time"
var_3d_cli= var_3d_summer(season|:,time|:)   
var_2d_winter1 = dim_avg_n(var_3d_cli(0:1,:),0)
var_2d_winter2 = dim_avg_n(var_3d_cli(11,:),0)     
mmt=(var_2d_winter1+var_2d_winter2)/2.    ;DJF

;************************************************
; extract time series from 3d data
;************************************************
   in = addfile("$NCARG_ROOT/lib/ncarg/data/cdf/hadlsst.nc","r")
  
   ts =in->sst(1331:1690,{-80.5:80.5},{-179.5:179.5})
   ts!0="time"       ;1870.1
   ts!1="lat"
   ts!2="lon"
   laa=dimsizes(ts&lat)
   loo=dimsizes(ts&lon)
   tt1 = ndtooned(ts)
   tt=new((/30,12,laa,loo/),"float")
   tt = onedtond(tt1,(/30,12,laa,loo/))
   var1=new((/30,laa,loo/),"float")
   var2=new((/30,laa,loo/),"float")
   var3=new((/30,laa,loo/),"float")
   var1 = dim_avg_n(tt(:,0:1,:,:),1)
   var2 = dim_avg_n(tt(:,11,:,:),1)   
   var3=(var1+var2)/2.    ;DJF

倒数第二行出错了,说是左右维度不符,可为何正数12行类似的却没出错。
密码修改失败请联系微信:mofangbao
发表于 2014-4-22 16:23:47 | 显示全部楼层
水霖玲 发表于 2014-4-22 16:11
dim = dimsizes(mmy)  
var_3d_summer=new((/30,12/),"float")
var_3d_cli=new((/12,30/),"float")

如果是求DJF的均值,下面一个语句就可以了:  
var3 = dim_avg_n(tt(:,(/0, 1, 11/), :, :),1)

如果非要按你程序里面的逻辑,tt(:,11,:,:)是3维数组,也就是月份维没有了,dim_avg_n(tt(:,11,:,:),1)是对lat维求均值,出来是(/30, loo/)大小的数组,当然与你的var2定义不符!
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-22 17:30:25 | 显示全部楼层
longlivehj 发表于 2014-4-22 16:23
如果是求DJF的均值,下面一个语句就可以了:  
var3 = dim_avg_n(tt(:,(/0, 1, 11/), :, :),1)

是的。明白了。太感谢了
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-22 17:39:55 | 显示全部楼层
longlivehj 发表于 2014-4-22 16:23
如果是求DJF的均值,下面一个语句就可以了:  
var3 = dim_avg_n(tt(:,(/0, 1, 11/), :, :),1)

还有个问题,我设置的中心经度为180,就是画出来的图中间有一条白色的竖线,即使我设置了res@gsnAddCyclic=True也没用。这是与我数据资料只有-179.5-179.5有关吗
密码修改失败请联系微信:mofangbao
发表于 2014-4-22 18:27:00 | 显示全部楼层
水霖玲 发表于 2014-4-22 17:39
还有个问题,我设置的中心经度为180,就是画出来的图中间有一条白色的竖线,即使我设置了res@gsnAddCycli ...

是的,有关系!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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