用matlab的regress命令進行平面擬合
阿新 • • 發佈:2018-11-06
轉載:http://blog.sina.com.cn/s/blog_88a992250100u317.html
y = [2 9 3 5 8]';
z = [4 3 5 11 6]';
scatter3(x,y,z,'filled')
hold on
即可將散點繪製出來
我們繼續
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)
這樣,圖就出來啦
剩下的就是修飾工作了,大家隨意~
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
即可將散點繪製出來
我們繼續
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)
這樣,圖就出來啦
剩下的就是修飾工作了,大家隨意~