Re: interpolation and plotting 3d data
- To: mathgroup at smc.vnet.net
- Subject: [mg44724] Re: interpolation and plotting 3d data
- From: drbob at bigfoot.com (Bobby R. Treat)
- Date: Sat, 22 Nov 2003 02:17:17 -0500 (EST)
- References: <200307120919.FAA29502@smc.vnet.net> <bphub9$1o8$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
I suspect somebody will have a better solution, but, assuming your
data points are {x,y,f[x,y]} values, here's a cubic fit in both
directions:
allpoints = {{0.19, 0.54, 0.39}, {0.19, 0.6, 0.34},
{0.19, 0.64, 0.31}, {0.19, 1.04, 0.29}, {0.19, 1.07, 0.31},
{0.2, 0.54, 0.39}, {0.2, 0.59, 0.35}, {0.2, 0.63, 0.32},
{0.2, 0.66, 0.3}, {0.2, 0.69, 0.28}, {0.2, 1, 0.28},
{0.2, 1.03, 0.3}, {0.2, 1.06, 0.32}, {0.2, 1.09, 0.34},
{0.21, 0.47, 0.45}, {0.21, 0.54, 0.39}, {0.21, 0.62, 0.33},
{0.21, 0.65, 0.31}, {0.21, 1, 0.3}, {0.21, 1.02, 0.31},
{0.21, 1.05, 0.33}, {0.21, 1.08, 0.35}, {0.22, 0.53, 0.4},
{0.22, 0.66, 0.31}, {0.22, 0.68, 0.3}, {0.22, 0.7, 0.29},
{0.22, 0.92, 0.28}, {0.22, 0.95, 0.29}};
ClearAll@f
f[x_, y_] = Fit[allpoints, {1, x, y, x^2, y^2, x^3, y^3}, {x, y}]
tabdata = Table[f[x, y], {x, 0.25, 0.7, 0.05}, {y, 0.3, 1.1, 0.1}];
ListPlot3D[tabdata]
Bobby
Michael Alfaro <malfaro at ucsd.edu> wrote in message news:<bphub9$1o8$1 at smc.vnet.net>...
> Hello,
>
> I have a list of 3D data that is not uniformly spaced (obtained through
> monte carlo sampling). Is it possible to interpolate a function across
> the range of the sampled points and plot the interpolated 3d function?
>
> A sample of the data in the table (allpoints) looks like this:
>
> {{0.19, 0.54, 0.39}, {0.19, 0.6, 0.34}, {0.19, 0.64, 0.31}, {0.19,
> 1.04, 0.29}, {0.19, 1.07, 0.31}, {0.2, 0.54, 0.39}, {
> 0.2, 0.59, 0.35}, {0.2, 0.63, 0.32}, {0.2, 0.66, 0.3}, {0.2, 0.69,
> 0.28}, {0.2,
> 1, 0.28}, {0.2, 1.03, 0.3}, {0.2, 1.06, 0.32}, {0.2, 1.09,
> 0.34}, {0.21, 0.47, 0.45}, {0.21, 0.54, 0.39}, {0.21,
> 0.62, 0.33}, {0.21, 0.65, 0.31}, {0.21, 1, 0.3}, {0.21, 1.02, 0.31},
> {0.21,
> 1.05, 0.33}, {0.21, 1.08, 0.35}, {0.22, 0.53, 0.4}, {
> 0.22, 0.66, 0.31}, {0.22, 0.68, 0.3}, {0.22, 0.7, 0.29}, {0.22,
> 0.92, 0.28}, {0.22, 0.95, 0.29} }
>
> I had something in mind like:
>
> f[x_, y_, z_] = Interpolation[Flatten[allpoints, 1]]
> tabdata = Table[f[x, y, z ], {x, 0.25, 0.7,
> 0.05}, {y, 0.3, 1.1, 0.1}, {z, 0.3, 1.1, 0.1}]
> ListPlot3D[tabdata]
>
> but must be missing something important because I can't get a plot out
> of Mathematica. Would someone please help me with the correct use of
> interpolation for 3d data? Also, is another plot type more appropriate?
> Thanks for any help!
>
> Michael