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

时间:2013-06-04 01:31:58

标签: matlab geometry-surface

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

2 个答案:

答案 0 :(得分:2)

请参阅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');

答案 1 :(得分:1)

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

您可以使用互动工具:

cftool

或者您可以从命令行进行操作。在本节中,我拟合了一个曲面,使用拟合对象使用我的第一个zx值对y进行预测,然后绘制拟合曲面。作为参考,可以在此处找到fit的文档:http://www.mathworks.co.uk/help/curvefit/fit.html

示例数据:

load franke

Lowess Smoothing

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)