[ncl-talk] Help in saving values in looping

Adam Phillips asphilli at ucar.edu
Mon Jun 5 10:17:20 MDT 2017


Hi Andreas,
As there are singular values for reg_coef and trend_slope for each start
and end time, I think it would be best to simply create a 3D array
dimensioned (start_date, end_date,2), with the last dimension (0) =
trend_slope and (1) representing reg_coeff. If you *must* have a
4-dimensional array then you should create an array that is dimensioned 22
x 22 x 2 x 2, but (:,:,1,0) and (:,:,0,1) will be missing. In the example
below I show how to create both types of arrays:

finarr = new((/22,22,2/),typeof(value_test))
finarr!0 = "startyear"
finarr&startyear = ispan(1980,2001,1)
finarr!1 = "endyear"
finarr&endyear = ispan(1989,2010,1)
finarrZ = new((/22,22,2,2/),typeof(value_test))
finarrZ!0 = "startyear"
finarrZ&startyear = ispan(1980,2001,1)
finarrZ!1 = "endyear"
finarrZ&endyear = ispan(1989,2010,1)

do i=1980,2001,1
   do j=1989,2010,1
        ntimes=ispan(i,j,1)
        if (j-i .ge. 9 ) then
           test_rc=regline_stats(ntimes,value_test({i:j}))
           print(test_rc)
           start_date=i
           end_date=j
           finarr({i},{j},0) = test_rc at b*10  ; prints slope of the linear
trend for the selected range of years
           finarr({i},{j},1) = test_rc at b95         ; prints 2.5% and 97.5%
regression coefficient confidence intervals
           finarrZ({i},{j},0,0) = test_rc at b*10
           finarrZ({i},{j},1,1) =  test_rc at b95
       else
           print(“this age range has not been selected, since its less than
9 years")
       end if
       delete(ntimes)
   end do
end do

Hope that helps. If you have any further questions please respond to the
ncl-talk email list.
Adam


On Mon, Jun 5, 2017 at 9:48 AM, Andreas Chrysanthou <eeac at leeds.ac.uk>
wrote:

> Hi NCL users,
>
>
> I created a loop for calculating a linear trend sensitivity for different
> start and end dates.
>
> My timeseries span over 1980-2010 and I want to calculate the linear trend
> of the timeseries for when the start - end date are more than >= 9years.
>
> (1980-1989, 1980-1990, 1980-1991,..., 1980-2010
>
> 1981-1990, 1981-1991, ..., 1981-2010
>
> ...
>
> ...
>
> ...
>
> 2000-2009, 2001-2010
>
> 2001-2010)
>
>
> I’ve created the loops that calculate those values but I need to save them
> in an array as 4 different columns (start_date, end_date,trend_slope,reg_
> coeff)
> My aim is to plot those as a a contour box plot with x axis the start date
> and y axis the end date, and the calculated (i’m gonna filter out those
> values with some criteria) trend values based on a colormap.
>
> Can you help me in order to save the values to that new array so I can
> plot it?
>
> A snippet of the code follows:
>
> do i=1980,2001,1
>    do j=1989,2010,1
>         ntimes=ispan(i,j,1)
> if (j-i .ge. 9 ) then
>         test_rc=regline_stats(ntimes,value_test({i:j}))
>         print(test_rc)
>         start_date=i
>         end_date=j
>         trend_slope=test_rc at b*10  ; prints slope of the linear trend for
> the selected range of years
>         reg_coeff=test_rc at b95         ; prints 2.5% and 97.5% regression
> coefficient confidence intervals
> else print(“this age range has not been selected, since its less than 9
> years")
>     end if
>       delete(ntimes)
> end do
> end do
>
> Cheers,
> Andreas
>
>
>
>
>
>
>
>
> Andreas
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>


-- 
Adam Phillips
Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
www.cgd.ucar.edu/staff/asphilli/   303-497-1726

<http://www.cgd.ucar.edu/staff/asphilli>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170605/eb9ec7a4/attachment.html 


More information about the ncl-talk mailing list