Thanks, I implemented a weighted distance across n neighbouring points to solve my problem for the moment. Using a triangulation would probably be a better solution, though.
On Tuesday, 30 August 2016 00:49:13 UTC+10, Tim Holy wrote: > > For unstructured grids, it depends a lot on what you want. I'm a fan of > piecewise linear polyhedral interpolation, but there are many other > choices: > https://en.wikipedia.org/wiki/Multivariate_interpolation#Irregular_grid_. > 28scattered_data.29. One of the (many) Voronoi/Delaunay packages should > make > this pretty easy to implement. > > If you do put something together, please consider contributing it to > Interpolations.jl! > > Best, > --Tim > > On Monday, August 29, 2016 10:46:01 AM CDT Christoph Russ wrote: > > Hi everyone, > > > > I am currently using Dierckx.Spline2D to interpolate 2D data. Until now > I > > could rely on the (irregular) grid input with an approximate size of > 1000 x > > 800 datapoints, which didn't give me any trouble. Unfortunately, I now > need > > to use an unstructured setting, where each x,y,z point is defined > > separately. Each input array is about 800,000 elements long and > > constructing the spline appears to take a very long time or not work at > > all. (Input data are large Float64 values for x and y with a comparable > > small variance in z.) > > > > Is there a way I could occasionally output compute progress or can you > > recommend another interpolation package / approach / performance > > optimization that I should be using / doing? > > > > Thank you, > > Chris > > > > > > PS: for n > 4.0 the code below produces: > > > > ERROR: The required storage space exceeds the available storage space: > > nxest or nyest too small, or s too small. Try increasing s. > > in Spline2D at /home/chrisruss/.julia/v0.4/Dierckx/src/Dierckx.jl:534 > > > > ## > > using Dierckx > > > > n = 4.0 > > > > x = collect(1.0:n) > > y = collect(1.0:n) > > z2d = rand(size(x,1),size(y,1)) > > spReg = Spline2D(x,y,z2d) > > > > xi = 1.0:0.42:n > > yi = 1.0:0.42:n > > > > z2di = evalgrid(spReg, xi, yi) > > > > x2d = Float64[] > > y2d = Float64[] > > > > for i=1:round(Int,n) > > append!(x2d,x) > > for j=1:round(Int,n) > > push!(y2d,y[i]) > > end > > end > > > > spUnstr = Spline2D(x2d,y2d,z2d[:]) > > > > zu2di = evalgrid(spUnstr, xi, yi) > > > > abs(sum(zu2di .- z2di)) < 1.0e-10 > > ## > > >
