[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