Calculate an unweighted running average. Missing values are allowed.

Note: This function is only available in version 4.1.1 of NCL. If your site is licensed for version 4.1, then you can get version 4.1.1 for free. To get version 4.1.1 of NCAR Graphics software, please contact your site representative. If you don't know who your site representative is, then send email to or call (303) 497-1201.


    function runave(
        x    : float,
        nave : float,
        kopt : integer


An array with one or more dimensions. The rightmost dimension will be the dimension on which the unweighted running average is performed. Missing values should be indicated by x@_FillValue. If x@_FillValue is not set, then the NCL default (-999) will be assumed.
Number of points to be included in the running average.
End-point option (kopt = 0 is the most frequently used)

In the following, N=last point in the series:

kopt < 0 : utilize cyclic conditions             
           e.g.,  nave=3 
           x(0) = (x(N)  +x(0)+x(1))/nave
           x(N) = (x(N-1)+x(N)+x(0))/nave
           e.g.,  nave=4 at n=1 and n=N     
           x(0) = (x(N-1)+x(N)  +x(0)+x(1))/nave
           x(N) = (x(N-2)+x(N-1)+x(N)+x(0))/nave

kopt = 0 : set unsmoothed beginning and end pts to x@_FillValue [most common]
           e.g.,  nave=3 , x(0) = (x@_FillValue and x(N) = (x@_FillValue    
                         , x(1) = (x(0)+x(1)+x(2))/nave
           e.g.,  nave=4 , x(0),x(1),x(N-1) and x(N) = (x@_FillValue 
                         , x(2) = (x(0)+x(1)+x(2)+x(3))/nave

kopt > 0 : utilize reflective (symmetric) conditions
           e.g.,  nave=3 
           x(0) = (x(1)  +x(0)+x(1))/nave
           x(N) = (x(N-1)+x(N)+x(N-1))/nave
           e.g.,  nave=4 
           x(0) = (x(2)  +x(1)  +x(0)+x(1))/nave
           x(N) = (x(N-2)+x(N-1)+x(N)+x(N-1))/nave


runave returns a float array of the same dimensionality as x with the last dimension smoothed. The running average is a special case of a filter where all weights are the same. The filter is applied to the i-th time of the requested series as follows:
F(i) = SUM{UF(i-(nave/2)+j-1)}/nave from j=0,nave-1
where F is the filtered field, UF is the unfiltered field, and nave is the number of elements in the running average.

If the number of weights is even, the filter's center falls between series elements; in this case, the center is shifted one-half of a time increment towards the latter element.

Example 1

Let x be dimensioned nlat x mlon x ktimes (nlat=64, mlon=128, ktimes=1000). Perform a 3 point running average and use kopt=0. Return the smoothed value to the original x array:

  x = runave (x,3,0)

Example 2

Let x be dimensioned ntimes x nlat x mlon with named dimensions "time" , "lat" , "lon". Then:
    nave = 31
    kopt = 0
    y    = runave (x(lat|:,lon|:,time|:), nave, kopt)
y will be a 3-dimensional array of length nlat x mlon x time.

Example 3

Let x be dimensioned ntimes x klev x nlat x mlon with named dimensions. Perform a 5 point running average use the cyclic option in the longitude direction:

    nave = 5
    kopt = -1
    x = runave (x,nave, kopt)  ; return the series in the original array

Reference Manual Control Panel

NG4.1 Home, Index, Examples, Glossary, Feedback, Ref Contents, Ref WhereAmI?

$Revision: 1.4 $ $Date: 1999/03/22 20:49:10 $