I’m completely stumped by a seemingly simple problem, and have been for a couple of years. Can any of you smart matlabbers help?
I want to do a multidimensional interpolation of a set of data. So, use interpn, right? (I tried using griddatan and I’ve been waiting for hours while it’s “busy”, trying just one interpolation (not the thousands I need).)
My data are stored in a large 2D matrix. They are not completely ordered, like in the example below. My actual problem has 9 dimensions of independent data, but in the example below, assume the first four columns are independent variables and the fifth column is the dependent variable that I seek an interpolation value for.
To use interpn, I need to supply the function with a multidimensional array – with the number of dimensions matching the number of independent variables (right?). So for this example, I’d need a 4D array. Example:
X1 X2 X3 X4 Y24 1 8 30 0.7324 2 9 40 0.0424 3 9 50 0.1824 4 10 60 0.8824 1 11 70 0.1824 2 12 80 0.9424 3 8 90 0.3624 4 9 100 0.5824 1 10 110 0.8624 2 10 120 0.4926 3 10 130 0.0326 4 11 140 0.9026 1 12 150 0.0326 2 8 160 0.1226 3 9 170 0.8526 4 10 180 0.3526 1 11 190 0.5126 2 12 200 0.0526 3 12 210 0.4926 4 13 220 0.45
How do I put them in a 4D array? Ignoring X4 for the moment, and looking at a slice of the array where X3 = 8, we would have this array:
X1\X2 1 2 3 424 0.73 0.36 26 0.12
There are empty cells. Is that OK? Otherwise how could we make a multidimensional array from scattered data?
Building that array by hand is impractical with a large array. Is there some automated way to do it? Am I making this harder than it should be? Or is it so hard that I should do something else?
Thanks!!!
Best Answer