Possible Duplicate:
Interpolation over an array (or two)
I have a set of CSV files that contain points of a 2D function… in other words I have four CSV files, each is the result of evaluating a function f(x, y) at different y values. I need to interpolate between these data such that I can calculate an arbitrary f for a certain x and y. The CSV files have varying lengths and x-values. Does anyone know of a library or algorithm in Java for this task? Linear interpolation is OK, as is spline interpolation.
Thanks,
taktoa
Ok, first of all I assume the “CSV” bit is irrelevant, let’s assume you have read those into memory and merged them together (they’re the values of the same function, right?). Now you have a single set of
f(x,y)values for different(x,y)pairs and would like to interpolate between those. Fine so far?If you stick to linear interpolation, there’s still the question of how many points to take into account, which will depend on the level of noise in the measurements. In the simplest case one would use just the three nearest points to identify the plane they lie in and use that to find the value for the point in question. This option requires neither libraries nor algorithms, apart from vector addition, subtraction, cross product and dot product.
More sophisticated solutions would generally require some sort of fitting, e.g. (weighted) least squares.