Interpolation outside boundaries.

조회 수: 26 (최근 30일)
WILLIAM ZANIN
WILLIAM ZANIN 2020년 9월 22일
댓글: Ameer Hamza 2020년 9월 22일
Hi guys,
I'm training myself in data interpolation for a project. With an example set of datas (6 points) I'm able to interpolate data using griddata as you can see in the code below. The question is : is possible to interpolate the surface also in [x,y] that are over x_max and y_max of my points?
As you can see, overall x_max and y_max in my data set is 20, but I created a grid that arrives till 30. Nevertheless the interpolation gives only values under x=20 and y=20.
Thank you.
P = [0 0 0;
20 0 5;
0 20 5 ;
5 5 2;
10 10 10 ;
20 20 10] ;
x = P(:,1) ; y = P(:,2) ; z = P(:,3) ;
ti = 0:1:30;
[XI,YI] = meshgrid(ti,ti);
ZI = (griddata(x,y,z,XI,YI,'cubic'));
surf(XI,YI,ZI), hold
plot3(x,y,z,'ro'), hold off
colorbar

채택된 답변

Ameer Hamza
Ameer Hamza 2020년 9월 22일
griddata() does not have the option for extrapolation beyond the data-points. You can use scatteredInterpolant for this; however, it does not have a cubic interpolation option, and the extrapolation is also linear.
P = [0 0 0;
20 0 5;
0 20 5 ;
5 5 2;
10 10 10 ;
20 20 10] ;
x = P(:,1) ; y = P(:,2) ; z = P(:,3) ;
ti = 0:1:30;
[XI, YI] = meshgrid(ti,ti);
model = scatteredInterpolant(x, y, z, 'linear', 'linear');
ZI = model(XI, YI);
surf(XI,YI,ZI), hold
plot3(x,y,z,'ro'), hold off
colorbar
The best way to handle such cases is to have an equation of form z = f(x, y) and then use curve-fitting to estimate the unknown parameter in f(.). Then you can use f(.) to extrapolate the values.
  댓글 수: 2
WILLIAM ZANIN
WILLIAM ZANIN 2020년 9월 22일
All clear thank you very much!
Ameer Hamza
Ameer Hamza 2020년 9월 22일
I am glad to be of help!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Interpolation에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by