# griddedInterpolant error "Interpolation requires at least two sample points for each grid dimension."

139 views (last 30 days)
Dave Hall on 1 Dec 2023
Answered: Star Strider on 3 Dec 2023
I'm systematically getting this error trying to use griddedInterpolant. Here's a simple example:
bp1 = [0:1:10];
bp2 = [5:0.5:10];
bp3 = [2:0.1:3];
tv = bp1.*bp3+bp2.^2
f=griddedInterpolant(bp1,bp2,bp3,tv)
But I get the error:
Error using griddedInterpolant
Interpolation requires at least two sample points for each grid dimension.
What have I missed?

Voss on 1 Dec 2023
The points (bp1, bp2, bp3) in 3d space do not form a grid. They are equally-spaced points along a line segment from (0,5,2) to (10,10,3).
You can use ndgrid to construct a set of points that form a grid from your bp1, bp2, bp3 vectors.
bp1 = 0:1:10;
bp2 = 5:0.5:10;
bp3 = 2:0.1:3;
% tv = bp1.*bp3+bp2.^2;
[BP1,BP2,BP3] = ndgrid(bp1,bp2,bp3);
TV = BP1.*BP3+BP2.^2;
f=griddedInterpolant(BP1,BP2,BP3,TV)
f =
griddedInterpolant with properties: GridVectors: {[0 1 2 3 4 5 6 7 8 9 10] [5 5.5000 6 6.5000 7 7.5000 8 8.5000 9 9.5000 10] [2 2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 2.7000 2.8000 2.9000 3]} Values: [11×11×11 double] Method: 'linear' ExtrapolationMethod: 'linear'
Stephen23 on 3 Dec 2023
Either call RESHAPE on each column of data.
Or simply call SCATTEREDINTERPOLANT and let it do the work for you.
Dave Hall on 3 Dec 2023
Unfortunately, scatteredInterpolant is limited to 3 parameters. I'll try to reshape each parameter plus the result vector.

Star Strider on 3 Dec 2023
The interpn function could be an option. You will need to experiment with the ndgrid function to determine how best to reshape the first 5 columns of your data to conform to it (if they indeed need reshaping — they may not) and then do the interpolation. I am not certain how easy it would be to make sense of the results, much less plot them, since everything in this universe is limited to 3 spatial dimensions and time, last I heard.
If you only want to interpolate specific points or ranges of points within the limits of the original vectors (so not extrapolating), interpn could do what you want.

### Categories

Find more on Interpolation in Help Center and File Exchange

R2021a

### Community Treasure Hunt

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

Start Hunting!