Interpolation outside boundaries.
25 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
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.
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!