请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13394|回复: 16

[作图] 请教大神们,ncl如何提取一年中的某月份来绘图呢?能否按月读取数据?

[复制链接]

新浪微博达人勋

发表于 2018-4-24 22:14:55 | 显示全部楼层 |阅读模式

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

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

x
  各位好,我使用的资料是1948年到2016年的ncpe月平均资料,想利用位势高度绘制eof,之前提取数据都是用的cdo……奈何前段时间师姐把大型机里的cdo删除了QAQ,崩溃QAQ!!! 所以现在尝试着用ncl写循环提取每年的6月份,但是一直在报错,望大家指导!非常感谢!
begin
; ==============================================================
; User defined parameters that specify region of globe and
; ==============================================================
  f      = addfile ("E:/TPV/hgt.mon.mean.nc", "r")
  hgt=f->hgt(0:827,4,:,:)
  printVarSummary(hgt)
  ;hgt1 = hgt
  
  hgt1 = new((/69,73,144/), float)
  printVarSummary(hgt1)
  do i = 5, 822, 12
   hgt1(i,:,:) = hgt(i,:,:)
  end do


  wsgd1 = dim_rmvmean_n_Wrap(hgt1, 0)
  printVarSummary(wsgd1)
  dims = dimsizes(wsgd1)
  year = ispan(1948, 1948+dims(0)-1, 1)

    ;jisuan quanzhong
  w = sqrt(cos(0.01745329*wsgd1&lat))
  wp = wsgd1 * conform(wsgd1, w, 1)
  copy_VarCoords(wsgd1, wp)

  ;optEOF = True      
  ;optEOF@jopt = 0  

  latS   =  27.5
  latN   =  40.
  lonL   = 80.
  lonR   =  102.5
  
; =================================================================
; Reorder (lat,lon,time) the *weighted* input data
; Access the area of interest via coordinate subscripting
; =================================================================
  x     = wp({lat|latS:latN},{lon|lonL:lonR},time|:)
  neof = 1
  eof      = eofunc_Wrap(x, neof, False)      ;EOF fenjie

;jisuan shijianxulie biaozhunhua==========
  eof_ts   = eofunc_ts_Wrap (x, eof, False)
  eof_ts = dim_standardize_n(eof_ts, 1, 1)
  printVarSummary( eof )                         ; examine EOF variables
  ;printVarSummary( eof_ts )

  ;north--------------------------
  ntim = dims(0)
  sig_pcv = eofunc_north(eof@pcvar, ntim, False)

  ;;;NETcdf wenjian
  ;path_out = "sm1-PC1-"+dims(0)+"yr.nc"
  ;system("rm -f"+path_out)
  ;ncdf = addfile(path_out, "c")

  eof_ts!1 = "year"
  eof_ts&year = ispan(1948, 2016, 1)
  ;ncdf->EOF1 = eof_ts(0,:)
;============================================================
  wks = gsn_open_wks("png","E:/TPV/try3.0")         ; send graphics to PNG file
  plot = new(neof,graphic)                ; create graphic array

报错如下:
fatal:Subscript out of range, error in subscript #0
fatal:["Execute.c":8575]:Execute: Error occurred at or near line 43 in file /cygdrive/e/TPV/eof6.ncl
应该是 hgt1(i,:,:) = hgt(i,:,:)写错了,但是……菜鸟真的不知道该怎么改,可能是搜索方式不对,没能在论坛找到解决方法,希望大家多多帮助,给与详细一点的指导QAQ

鞠躬感谢!!!

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

新浪微博达人勋

发表于 2018-9-30 16:12:26 | 显示全部楼层
咩咩的羊 发表于 2018-9-30 15:16
楼主你好,我想问一下如果我是30年的逐日数据,我想要提取每一年345月份的资料要怎么做呀

t1=ut_calendar(v2&time, 0)
month=toint(t1(:,1))

el=ind((month.eq.3).or.(month.eq.4).or.(month.eq5))

v3=v2(el,:,:)
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2018-4-25 08:58:09 | 显示全部楼层
写一个循环就可以了啊

hgt_Jun=hgt(0:68,:,:)  ----------------------------------  做一个“模板”, 包含了原始数据的元数据

do i=0,68,1
    tmp=12*i+5                     -----------------------------  tmp是临时变量,存放时间,每年的6月
    hgt_Jun(i,:,:)=hgt(tmp,:,:)
    delete(tmp)                        -----------------------------  把tmp释放掉,养成好习惯
end do
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-25 09:20:13 | 显示全部楼层
不用循环吧。
hgt1 = hgt(2:822:12,:,:)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-25 16:17:26 | 显示全部楼层
stepdance 发表于 2018-4-25 08:58
写一个循环就可以了啊

hgt_Jun=hgt(0:68,:,:)  ----------------------------------  做一个“模板”,  ...

非常感谢!试了下可以画出图了QAQ,原来正确的循环式这么写的,受教了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-25 16:19:23 | 显示全部楼层
lleoiu 发表于 2018-4-25 09:20
不用循环吧。
hgt1 = hgt(2:822:12,:,:)

原来还可以这么写,好方便啊……非常感谢,新技能get√
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-26 14:44:55 | 显示全部楼层
lleoiu 发表于 2018-4-25 09:20
不用循环吧。
hgt1 = hgt(2:822:12,:,:)

您好,能顺便请问一下,ncl该如何提取不连续的时间呢,比如说选取强弱年,该如何筛选年份呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-30 15:16:42 | 显示全部楼层
楼主你好,我想问一下如果我是30年的逐日数据,我想要提取每一年345月份的资料要怎么做呀
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-30 16:12:30 | 显示全部楼层
本帖最后由 白衣风月倾天下 于 2018-9-30 16:14 编辑
咩咩的羊 发表于 2018-9-30 15:16
楼主你好,我想问一下如果我是30年的逐日数据,我想要提取每一年345月份的资料要怎么做呀

不好意思,网卡了下,重复发了几次
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-30 16:12:34 | 显示全部楼层
本帖最后由 白衣风月倾天下 于 2018-9-30 16:15 编辑
咩咩的羊 发表于 2018-9-30 15:16
楼主你好,我想问一下如果我是30年的逐日数据,我想要提取每一年345月份的资料要怎么做呀
用ut这个函数可以提取年月日
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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