用matlab的regress命令进行平面拟合

转载:http://blog.sina.com.cn/s/blog_88a992250100u317.html

以少量数据为例

x = [1 5 6 3 7]';
y = [2 9 3 5 8]';
z = [4 3 5 11 6]';
scatter3(x,y,z,'filled')
hold on
即可将散点绘制出来
用matlab的regress命令进行平面拟合

我们继续
 X = [ones(5,1) x y]; //5为size(x)
 b = regress(z,X) //拟合,其实是线性回归,但可以用来拟合平面。regress命令还有其它用法,但一般这样就可以满足要求了。
 于是显示出
 b =

    6.5642
   -0.1269
   -0.0381
这就表示 z = 6.5643 - 0.1269 * x - 0.0381 * y 是拟合出来的平面的方程

下面把它绘制出来
xfit = min(x):0.1:max(x);  //注 0.1表示数据的间隔
yfit = min(y):0.1:max(y);
[XFIT,YFIT]= meshgrid (xfit,yfit); //制成网格数据
ZFIT = b(1) + b(2) * XFIT + b(3) * YFIT;
mesh (XFIT,YFIT,ZFIT)
这样,图就出来啦
用matlab的regress命令进行平面拟合

剩下的就是修饰工作了,大家随意~

猜你喜欢

转载自blog.csdn.net/Rxiang12/article/details/79787431
今日推荐