作业帮 > 综合 > 作业

matlab直线拟合三维散点,怎样拟合出一条直线,并求出该直线的表达式

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/18 16:59:47
matlab直线拟合
三维散点,怎样拟合出一条直线,并求出该直线的表达式
matlab直线拟合三维散点,怎样拟合出一条直线,并求出该直线的表达式
clear;clc
n=10;
A=rand(n,1);
A=[-2+A*3,-3+A*4,-4+A*5]+1*(rand(n,3)-0.5);%n个随机点,自己改成想要的数据
F=@(p)arrayfun(@(n)norm(cross(A(n,:)-[p(1),p(2),p(3)],[p(4),p(5),p(6)]))/norm([p(4),p(5),p(6)]),[1:size(A,1)]);
p=lsqnonlin(F,[1 1 1 1 1 1]);
hold on;view(3);grid on;
t=linspace(-5,5);
plot3(A(:,1),A(:,2),A(:,3),'r.');
plot3(p(1)+t*p(4),p(2)+t*p(5),p(3)+t*p(6));
title(sprintf('拟合直线为:\n(%g,%g,%g)+(%g,%g,%g)t\n',p))