1

我有 10 组 3D 点。每组代表平滑曲线上的点。我可以轻松地将曲线拟合到 Matlab 中的每组并获得 10 条曲线。现在如何在 Matlab 中通过这些曲线拟合曲面?

4

2 回答 2

0

fit如果您有曲线拟合工具箱,则可以使用该函数轻松将曲面拟合到 3 个 x、y、z 向量。这是一些将多项式曲面拟合到随机点的示例代码。如果您愿意,您可以定义自己的拟合函数,或者查看他们为曲面提供的其他 fitTypes。这是. _fit

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);

这是结果的样子(你的可能会有所不同,因为随机点): 在此处输入图像描述

于 2014-08-07T16:12:03.020 回答
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

要得到:

在此处输入图像描述

于 2014-08-08T00:54:51.777 回答