How do I fit a surface to this data properly?
Afficher commentaires plus anciens
Hi,
I have a set of datapoints (x,y,z) to which I want to fit a surface. I dont have a mathematical expression for the surface, so I tried to use the linear interpolation as in:
load ('data.mat')
PTSGRID = 256;
xs = min(x):(max(x)-min(x))/(PTSGRID-1):max(x);
ys = min(y):(max(y)-min(y))/(PTSGRID-1):max(y);
[xq, yq] = meshgrid(xs,ys);
zq = griddata(x,y,z,xq,yq,'linear');
plot3(x,y,z,'mo')
hold on
mesh(xq,yq,zq);
However the fitted surface takes very strange values where there is no data defined, very different from what I would visually expect. Take a look for example at this figure, and the zone I circled:

How can I fit in a better way to avoid this behavior?
Thanks!
Réponses (2)
KSSV
le 16 Sep 2021
0 votes
3 commentaires
Pablo Fernandez
le 16 Sep 2021
KSSV
le 16 Sep 2021
The same link has an example showing how to fit for a surface.
Pablo Fernandez
le 16 Sep 2021
I don't have this problem
s = load('data.mat');
x = s.x;
y = s.y;
z = s.z;
xx = linspace(min(x),max(x),20);
yy = linspace(min(y),max(y),20);
[x1,y1] = meshgrid(xx,yy);
z1 = griddata(x,y,z,x1,y1);
mesh(x1,y1,z1)
1 commentaire
Pablo Fernandez
le 19 Sep 2021
Catégories
En savoir plus sur Get Started with Curve Fitting Toolbox dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
