
shgrid
Interpolates data from an unstructured grid to a grid in 3-space.
Prototype
function shgrid ( xi [*] : float, yi [*] : float, zi [*] : float, ui [*] : float, xo [*] : float, yo [*] : float, zo [*] : float ) return_val [*][*][*] : float
Arguments
xiA one-dimensional array, of any size greater than 9, containing the X coordinates of the input data points.
yiA one-dimensional array, of the same size as xi, containing the Y coordinates of the input data points.
ziA one-dimensional array, of the same size as xi and yi, containing the Z coordinates of the input data points.
uiA one-dimensional array, of the same size as xi, yi, and zi, containing the functional values at the input data coordinates given by xi, yi, and zi. That is, ui(k) is the input function value at (xi(k),yi(k),zi(k)) for k = 0 to dimsizes(xi)-1.
xoA one-dimensional array, of any size, containing the X coordinates of the output grid.
yoA one-dimensional array, of any size, containing the Y coordinates of the output grid.
zoA one-dimensional array, of any size, containing the Z coordinates of the output grid.
Return value
A three-dimensional array containing the calculated functional values. The first dimension of the returned value has the same size as xo, the second dimension of the returned value has the same size as yo, and the third dimension of the returned value has the same size as zo. If uo is the returned value, then uo(i,j,k) contains the functional value at coordinate (xo(i),yo(j),zo(k)).
Description
shgrid is in the ngmath library. It uses a modified Shepard's algorithm to construct an interpolatory surface. For details on the algorithm, see the introduction module in the shgrid documentation.
The general documentation for shgrid contains several complete examples.
Examples
begin ; ; Create the input arrays. ; xmin = -2. xmax = 2. ymin = -2. ymax = 2. zmin = -2. zmax = 2. nx = 21 ny = 21 nz = 21 ndata = 1000 xi = new(ndata,float) yi = new(ndata,float) zi = new(ndata,float) ui = new(ndata,float) do i=0,ndata-1 xi(i) = xmin + (xmax-xmin)*rand()/32767. yi(i) = ymin + (ymax-ymin)*rand()/32767. zi(i) = zmin + (zmax-zmin)*rand()/32767. ui(i) = xi(i)*xi(i) + yi(i)*yi(i) + zi(i)*zi(i) end do ; ; Set up the output grid. ; xo = fspan(xmin,xmax,nx) yo = fspan(ymin,ymax,ny) zo = fspan(zmin,zmax,nz) ; ; Get the interpolated values. ; uo = shgrid(xi,yi,zi,ui,xo,yo,zo) end