Matlab inversion and optimization

4 views (last 30 days)
Pinpress
Pinpress on 6 Feb 2013
I am hoping to get an inversion scheme to work in a high dimension. To make it simple, let me illustrate it in a 2D case. Suppose I have a relationship:
z = f(x, y);
The function is made of complex relationship of x, y, and their interactions as well. For each given set of input, (x, y), it's very time consuming to compute the corresponding z, and of course, there isn't a closed solution. What I know is that z increases with the increase in x and y in general and for two (x_i, y_i) that are close to each other, we know their corresponding z_i are also similar. So what I am hoping to do is to pre-compute a bunch of z_i = f(x_i, y_i). However, because x and y are essentially unbounded, it's not practical to have a very dense sampling in the (x, y) parametric space (recall it's very time consuming to compute a given z anyway).
With some sparse probing of the parametric space, I can now try to get a reasonably accurate estimate of z_k for a set of parameters (x_k, y_k) by linearly combining solutions given by those pre-computed. However, I need to come up with the coefficients … but because I do not have any observed data on z_k, I am not able to construct a least-squares minimization problem.
The solution I am thinking about, is to find out the coefficients for neighboring parametric sampling points first based on those pre-computations. Suppose for (x_k, y_k), the neighbors that have been pre-computed are (x_j, y_j). I should be easily able to construct a least-squares minimization problem to find out the coefficients so that z_j can be efficiently computed by linearly combining other pre-computed solutions of its own neighbors (recall z_j has been pre-computed, so we have the "ground-truth"). So this step is "inversion". Therefore, in theory, I have coefficients for all the neighboring parametric sampling points (x_j, y_j), for a given (x_k, y_k). Based on these coefficients, I should be able to estimate the coefficients for (x_k, y_k) based on the pre-computations (e.g., simply averaging, or somehow related to the distance between (x_k, y_k) and (x_j, y_j)).
Intuitively, I feel this makes sense. However, I don't know if there is similar problems that have been successfully solved already and there is an existing algorithm.
Also, is this essentially interpolation in high dimension?
Appreciate for any suggestions or helpful comments. thanks very much.

Answers (1)

Alan Weiss
Alan Weiss on 6 Feb 2013
I suppose you could try using interpn or griddata or TriScatteredInterp to interpolate your function. Beware, in high dimensions you need a lot of data even to sample just 3 points in each coordinate; for example, in 20 dimensions you need 3^20, which is about 3x10^9, data points.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!