필터 지우기
필터 지우기

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

조회 수: 163 (최근 30일)
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?

답변 (2개)

Voss
Voss 2023년 12월 1일
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'
  댓글 수: 5
Stephen23
Stephen23 2023년 12월 3일
Either call RESHAPE on each column of data.
Or simply call SCATTEREDINTERPOLANT and let it do the work for you.
Dave Hall
Dave Hall 2023년 12월 3일
Unfortunately, scatteredInterpolant is limited to 3 parameters. I'll try to reshape each parameter plus the result vector.

댓글을 달려면 로그인하십시오.


Star Strider
Star Strider 2023년 12월 3일
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.

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by