1. 程式人生 > >用matlab的regress命令進行平面擬合

用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命令進行平面擬合


剩下的就是修飾工作了,大家隨意~