[GRASS-user] 4D radial basis function interpolation / extrapolation possible?

Hamish hamish_nospam at yahoo.com
Tue Oct 9 06:23:16 EDT 2007


> > Jian Chen wrote:
> > > I am new to Grass and wondered if Grass provides a radial basis
> > > function method to interpolate / extrapolate 4D data. Basically, I
> > > need to get (interpolate / extrapolate) a velocity field in a
> > > three-dimensional volume given several sampling data in the space. If
> > > written in a function format, it looks like
> > >
> > > result_new = f(x[], y[], z[], result[], xnew, ynew, znew);
> > >
> > > where, x[], y[], z[], and result[] are known.
> > > (xnew, ynew, znew) represent a point in space and result_new returns
> > > the result.
> > >
> > > Can someone please advice? If Grass cannot handle this, can someone
> > > please point other libraries to me that might be able to do so.
> > > Matlab's griddata3 only does linear interpolation that doesn't help.
> >
Hamish wrote:
> > just an idea, probably applies just as well to matlab's griddata3 too.
> > (n.b. I am not sure if this is mathematically appropriate...)
> >
> > First in matlab use the cart2sph function to convert velocity xyz vector
> > components into magnitude, azimuth angle, and elevation angle.
> >
> > Then write a text file with:
> > x,y,z,magnitude,azimuth,elevation
> >
> > Next load in your data into GRASS as 3D vector points with v.in.ascii.
> > Magnitude, azimuth, and elevation will be numerical attribute columns.
> > Next set 2D region settings with g.region.
> > Next interpolate each component with v.vol.rst into 3 different raster-3D
> > cubes.
> >
> > Finally use a r3.mapcalc expression to create u,v,w components from
> > magnitude,az,elev.
> >   (2D trig hints for that can be found in the d.rast.arrow help page)
> >
> > r3.out.ascii or r3.to.rast+r.out.mat back to matlab.

Jian Chen wrote:
> Thank you very much for your reply! Your approach might work!
> I was able to create the vector field by writing my own radial basis
> function (RBF) method. I did this because RBF is sensitive to the
> parameters chosen and it often requires trial and error (or learning
> if the prog is smart enough).

For the archive, note that I had the above all backwards. You have to transform
spherical coords into xyz/uvw components to do the interpolation, then convert
the result back to radius,azimuth,elevation. Otherwise you have problems with
the averaging of 359 and 1 degree = 180.


(d^n)*log(d) for the RBF? or IDW 1/(d^n)? If you didn't spend a few minutes
looking at the v.vol.rst and v.surf.rst regularized spline interpolation
modules, they're worth a look.


Hamish



      ____________________________________________________________________________________
Fussy? Opinionated? Impossible to please? Perfect.  Join Yahoo!'s user panel and lay it on us. http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7 




More information about the grass-user mailing list