通过曲线拟合曲面

时间:2014-08-07 13:35:58

标签: matlab curve-fitting surface

我有10组3D点。每组代表平滑曲线上的点。我可以很容易地在Matlab中为每个集合拟合一条曲线并得到10条曲线。我现在如何在Matlab中通过这些曲线拟合曲面?

2 个答案:

答案 0 :(得分:0)

如果你有曲线拟合工具箱,使用fit函数可以很容易地将曲面拟合到3 x,y,z向量。这是一些将多项式曲面拟合到随机点的示例代码。如果您愿意,可以定义自己的拟合函数,或者查看它们对曲面的其他fitTypes。这是fit的{​​{3}}。

x = rand(10,1);
y = rand(10,1);
z = rand(10,1);
f = fit([x,y],z,'poly23');
figure;
scatter3(x,y,z,'r','fill'); hold on;
plot(f);

这里有什么结果(你的可能因为随机点而有所不同): enter image description here

答案 1 :(得分:0)

如果你没有曲线拟合工具箱,你可以这样做:

x=rand(100,1)*16-8;                     % Use your data instead
y=rand(100,1)*16-8;
r=sqrt(x.^2+y.^2)+eps;
z=sin(r)./r;
%
xlin=linspace(min(x),max(x),33);        % Create x,y linear space
ylin=linspace(min(y),max(y),33);
[X,Y]=meshgrid(xlin,ylin);              % Create mesh [x y]
Z=griddata(x,y,z,X,Y,'cubic');          % Interpolate with bicubic functions            
%
mesh(X,Y,Z); % interpolated             % Fancy plots for demosntration
 hold on
plot3(x,y,z,'.','MarkerSize',15)
% surf(X,Y,Z)                           % use this one to get the standard surf

获得:

enter image description here