Dear Chao:
Try the modified script (untested)
;==========================================================
data_time = new ((/ntim/),typeof(data), getFillValue(data))
data2 = new ((/ntim, nlat, mlon/),typeof(data))
data2 = -9999
do ilat = 0, nlat-1
if (lat(ilat).ge.30.and.lat(ilat).le.40.) then
do ilon = 0, mlon-1
if (lon(ilon).ge.150.and.lon(ilon).le.220.) then
data2 (:,ilat,ilon)=data(:,ilat,ilon)
end if
end do
end if
end do
data2@_FillValue = -9999
do itim=0,ntim-1
data_time(itim) =dim_avg(ndtooned(data2(itim,:,:)))
end do
;==========================================================
Thanks
Debasish
-----Original Message-----
From: ncl-talk-bounces_at_ucar.edu [mailto:ncl-talk-bounces_at_ucar.edu] On Behalf
Of cluo_at_uci.edu
Sent: Monday, August 13, 2007 4:07 PM
To: ncl-talk_at_ucar.edu
Subject: regional average
Dear NCLers,
I am trying to plot time series of regional average. I have three
dimensional data like data(ntim, nlat,nlon), and I want to do average from
region 30-40N and 150E-140W. I use the script like:
data_time = new ((/ntim/),typeof(data), getFillValue(data))
n = 0
do ilat = 0, nlat-1
do ilon = 0, mlon-1
if (lat(ilat).ge.30.and.lat(ilat).le.40.) then
if (lon(ilon).ge.150.and.lon(ilon).le.220.) then
if (.not.ismissing(data(:,ilat,ilon))) then
data_time(:) =data(:,ilat,ilon)
n = n + 1
end if
end if
end if
end do
end do
data_time(:) =data_time(:)/n
This script runs too slow. I am wondering if there are some functions can
be used to do regional average.
Thanks for any information!
Chao
_______________________________________________
ncl-talk mailing list
ncl-talk_at_ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
_______________________________________________
ncl-talk mailing list
ncl-talk_at_ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Mon Aug 13 2007 - 18:35:06 MDT
This archive was generated by hypermail 2.2.0 : Thu Aug 16 2007 - 09:43:43 MDT