matlab拟合平面,拟合平面,并求法向量

最小二乘法拟合平面的代码

%% 最小二乘法拟合平面

x = rand(1,10);

y = rand(1,10);

z = (3-2*x-5*y)/4;

Xcolv = x(:);

Ycolv = y(:);

Zcolv = z(:);

Const = ones(size(Xcolv));

Coefficients = [Xcolv Ycolv Const] \ Zcolv;

XCoeff = Coefficients(1);

YCoeff = Coefficients(2);

CCoeff = Coefficients(3);

L=plot3(x,y,z,'ro');

cf9925134cf51b1e1e6a292adfb6f2bd.png

matlab自带的函数拟合平面的方法

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

x = [1 5 6 3 7]';

y = [2 9 3 5 8]';

z = [4 3 5 11 6]';

scatter3(x,y,z, 'filled');

X = [ones(5,1) x y];

% z = 6.5642 - 0.1269x - 0.0381y

b = regress(z, X);

xfit = min(x):0.1:max(x);

yfit = min(y):0.1:max(y);

[XFIT, YFIT] = meshgrid(xfit,yfit);% 绘制网络

ZFIT = b(1) + b(2)*XFIT + b(3)*YFIT;

surf(XFIT, YFIT, ZFIT) % 绘制平面

已经知道几个点,拟合平面,并求平面的法向量

%% 已知道某个点的周围的局部几个点,拟合平面,并求平面的法向量

x = rand(1,10);

y = rand(1,10);

z = (3-2*x-5*y)/4;

Xcolv = x(:);

Ycolv = y(:);

Zcolv = z(:);

Const = ones(size(Xcolv));

Coefficients = [Xcolv Ycolv Const] \ Zcolv;

XCoeff = Coefficients(1);

YCoeff = Coefficients(2);

CCoeff = Coefficients(3);

%% 平面的单位法向量

% XCoeff是x前面的系数, YCoeff是y前面的系数

Norm = [-XCoeff, -YCoeff, 1] / sqrt(XCoeff*XCoeff+YCoeff*YCoeff+1);

ebd740c7af0066027fda23399e230761.png

标签:Xcolv,XCoeff,求法,YCoeff,向量,拟合,平面,Coefficients

来源: https://www.cnblogs.com/wylwyl/p/10940094.html

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值