Matlab-使用三列向量创建曲面图

Matlab-使用三列向量创建曲面图,matlab,geometry-surface,Matlab,Geometry Surface,假设我有三个代表n(X,Y,Z)值对的1xn向量,如果我想使用这三个向量(经过一些平滑处理)生成曲面图,最快的方法是什么?请参见doc TriScatteredInterp F = TriScatteredInterp(X, Y, Z); %the steps of tx and ty will allow you change smoothness tx = min(X):max(X); ty = mix(Y):max(Y); [qx,qy] = meshgrid(tx,ty); qz = F

假设我有三个代表n(X,Y,Z)值对的1xn向量,如果我想使用这三个向量(经过一些平滑处理)生成曲面图,最快的方法是什么?

请参见
doc TriScatteredInterp

F = TriScatteredInterp(X, Y, Z);
%the steps of tx and ty will allow you change smoothness
tx = min(X):max(X);
ty = mix(Y):max(Y);
[qx,qy] = meshgrid(tx,ty);
qz = F(qx,qy);
mesh(qx,qy,qz);
hold on;
plot3(x,y,z,'o');

根据平滑的含义,曲线拟合工具箱可能是一个不错的选择。这将允许您对数据进行插值和平滑拟合

您可以使用交互式工具:

cftool
也可以从命令行进行操作。在本节中,我拟合了一个曲面,使用fit对象用我的第一个
x
y
值预测
z
,然后绘制拟合曲面。有关
fit
的文档可在此处找到以供参考:

示例数据:

洛斯平滑

分段三次插值

用户定义方程


好主意,现在我知道了非参数拟合的用途
load franke
f = fit([x,y],z, 'lowess')
zPrediction = f(x(1), y(1))
plot(f)
f = fit([x,y],z, 'cubicinterp')
zPrediction = f(x(1), y(1))
plot(f)
f = fit([x,y],z, 'a*x+b*exp(y)+c')
zPrediction = f(x(1), y(1))
plot(f)