我有10组3D点。每组代表平滑曲线上的点。我可以很容易地在Matlab中为每个集合拟合一条曲线并得到10条曲线。我现在如何在Matlab中通过这些曲线拟合曲面?
答案 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);
这里有什么结果(你的可能因为随机点而有所不同):
答案 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
获得: