[Thread Prev][Thread Next][Index]

Re: Spatial 2points averaging



Hi Enrique,

A technical detail (that does not alter Mick's recommendations):

Mick's example used
    let v2=v[g=grd2]   ! regrid by linear interpolation
instead of
    let v2=v[g=grd2@ave]  ! regrid by averaging

For uniform-spaced axes, averaging over only a 2-point span along each axis,
linear interpolation and averaging  should give identical results.

Note, though, that if your data points were unequally spaced, then the @ave
regridding operation might be more appropriate.  You would need to give some
further thought to just what was meant by "averaging every 2 points" to decide
what the right calculation was.

    - steve

=======================

Enrique Sanchez wrote:

> Thanks a lot for your fast and nice answer!
>
> El lun, 05-07-2004 a las 19:55, Mick Spillane escribió:
> > On Mon, 5 Jul 2004, Enrique Sanchez wrote:
> > > I have a field in a XY plane, of let's say 80x72 points. But I want to
> > > average it to a 40x36 domain, just averaging every 2 points in both
> > > dimensions. How can I do this?
> >
> > Hi Enrique,
> >       Try defining a new grid of points centered in the 2x2 blocks of
> > the original grid.  Then regrid the old data to the new grid. Here is an
> > example for an original 8x6 region that we want to reduce to 4x3.
> > Good luck,
> > Mick
> > !-----------------------------------------------------------------
> > def axis/x=1:8:1 xax ; def axis/y=1:6:1 yax
> > def grid/x=xax/y=yax grd   ! the original grid ...
> > let v=int(10*randu(x[g=grd]+y[g=grd]))
> > list v
> >              VARIABLE : INT(10*RANDU(X[G=GRD]+Y[G=GRD]))
> >              SUBSET   : 8 by 6 points (X-Y)
> >              1      2      3      4      5      6      7      8
> >              1      2      3      4      5      6      7      8
> >  1   / 1:  9.000  5.000  0.000  1.000  7.000  1.000  8.000  4.000
> >  2   / 2:  4.000  8.000  3.000  9.000  9.000  5.000  7.000  9.000
> >  3   / 3:  4.000  0.000  0.000  6.000  7.000  7.000  8.000  1.000
> >  4   / 4:  1.000  3.000  8.000  4.000  1.000  2.000  7.000  1.000
> >  5   / 5:  5.000  6.000  1.000  7.000  5.000  8.000  9.000  3.000
> >  6   / 6:  6.000  3.000  5.000  0.000  8.000  5.000  1.000  7.000
> >
> > def axis/x=1.5:7.5:2 xax2 ; def axis/y=1.5:5.5:2 yax2
> > def grid/x=xax2/y=yax2 grd2 ! the new grid, centered in each 2x2 group
> > let v2=v[g=grd2]            ! regrid data to the new grid
> > list v2
> >              VARIABLE : V[G=GRD2]
> >              SUBSET   : 4 by 3 points (X-Y)
> >              1.5    3.5    5.5    7.5
> >              1      2      3      4
> >  1.5 / 1:  6.500  3.250  5.500  7.000
> >  3.5 / 2:  2.000  4.500  4.250  4.250
> >  5.5 / 3:  5.000  3.250  6.500  5.000
> >
> > ! it seems to work ...
> > ! (9+5+4+8)/4=6.5 ; (0+1+3+9)/4=3.25 ; (7+1+9+5)/4=5.5 ; (8+4+7+9)/4=7
> > ! (4+0+1+3)/4=2.0 ; ...              ; ...             ; (8+1+7+1)/4=4.25
> > ! (5+6+6+3)/4=5.0 ; ...              ; ...             ; (9+3+1+7)/4=5



[Thread Prev][Thread Next][Index]

Dept of Commerce / NOAA / OAR / PMEL / TMAP

Contact Us | Privacy Policy | Disclaimer | Accessibility Statement