MATLAB如何用最小二乘法拟合平面
1个回答
展开全部
这要看你的 D 是否为 0了,如果D不为0,那么,你的方程是等价于:Ax + By + Cz = 1,也就是只有3个未知数 A、B、C.
data = [105.0806 -14.1664 686.1038
105.0645 -13.4972 685.4296
105.0753 -13.9445 685.8803
105.0818 -14.2171 686.1549
105.0727 -13.8395 685.7745
104.8683 -32.3249 672.5015
104.8740 -32.6963 672.7878
104.8705 -32.4690 672.6126
104.8773 -32.9125 672.9545
104.8745 -32.7272 672.8117]
[p,~,rp] = regress(ones(size(data,1),1),data)
求得 p = [A; B; C]。
如果 D 为0,那么要得到平面,C 必然不为0,此时,方程等价于:z = ax+by,则:
[p2,~,rp2] = regress(data(:,3),data(:,[1 2]))
求得 p2 = [a; b]。
很显然,对比rp和rp2,发现rp数量级远小于rp2。说明第一种拟合结果比较好,意味着,p 是需要的拟合结果
data = [105.0806 -14.1664 686.1038
105.0645 -13.4972 685.4296
105.0753 -13.9445 685.8803
105.0818 -14.2171 686.1549
105.0727 -13.8395 685.7745
104.8683 -32.3249 672.5015
104.8740 -32.6963 672.7878
104.8705 -32.4690 672.6126
104.8773 -32.9125 672.9545
104.8745 -32.7272 672.8117]
[p,~,rp] = regress(ones(size(data,1),1),data)
求得 p = [A; B; C]。
如果 D 为0,那么要得到平面,C 必然不为0,此时,方程等价于:z = ax+by,则:
[p2,~,rp2] = regress(data(:,3),data(:,[1 2]))
求得 p2 = [a; b]。
很显然,对比rp和rp2,发现rp数量级远小于rp2。说明第一种拟合结果比较好,意味着,p 是需要的拟合结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询