爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7619|回复: 3

[作图] NCL求含缺测值数据的90%分位数

[复制链接]
发表于 2016-6-26 22:53:47 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 837078493 于 2016-6-26 22:57 编辑

求取12天数据的全部空间分布的90%分位数,思路是,先将12天的数据合并为一组数据,在将这组数据的缺测值删掉,保留剩余值,将剩余值按大小顺序排列,求数据个数*90%序号所对应的数值。但是程序总是提示错误:黄色部分提示fatal:VarVarWrite: Number of dimensions on left hand side does not match right hand side

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
;************************************************
begin
refa1 = new((/12,123,124/),float)
refa2 = new((/12,123,124/),float)
banda1 = new((/12,123,124/),float)
banda2 = new((/12,123,124/),float)
ndvia = new((/12,123,124/),float)

;************************************************
do xuhao = 1,12
a  = addfile(""+xuhao+".hdf","r")
refa1(xuhao-1,:,:) = a->sur_refl_b01(:,:)
refa2(xuhao-1,:,:) = a->sur_refl_b02(:,:)
banda1= refa1*0.0001
banda2= refa2*0.0001
ndvia=(banda2-banda1)/(banda2+banda1)
end do


ndvi = new(183024,"float")
ndvi=ndtooned(ndvia)

ndvi2=new(182845,"float")
ndvi2(i)=ndvi(ind(.not.ismissing(ndvi)))
n=0
do i=0,182844
if (ndvi2(i).gt.0) then
ndvi3(n)=ndvi2(i)
n=n+1
end if
end do
print(n)

x =new(1,"float")
temp = new(1,"float")
temp(0) =0
x(0)=0
do i=1,n-1
x(0)=ndvi3(i)
do j=i+1,n
if (x(0).gt.ndvi3(j))  then
temp(0)=ndvi3(j)
ndvi3(j)=ndvi3(i)
ndvi3(i)=temp(0)
x(0)=ndvi3(i)
end if
end do
end do
print(ndvi3(n*0.05))
print(ndvi3(n*0.9))

另外还有一个问题:在读取12天数据之后输出ndvi及banda1的属性为9.96921e+36,而只读取1天数据时这两者属性为-28672,这与refa1是一致的,想知道这是为什么?




密码修改失败请联系微信:mofangbao
发表于 2017-12-22 21:59:50 | 显示全部楼层
ndvi2(i)=ndvi(ind(.not.ismissing(ndvi)))应该写成ndvi2=ndvi(ind(.not.ismissing(ndvi))),你那个i是什么意思。。。。
密码修改失败请联系微信:mofangbao
发表于 2017-12-22 22:07:20 | 显示全部楼层
你这个做的有点麻烦了,你将数组转化成一维不含缺测之后,可以直接用ncl中的qsort命令就可以自动排序了
密码修改失败请联系微信:mofangbao
发表于 2018-7-10 00:26:10 | 显示全部楼层
学习了
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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