matlab三维空间散点,空间三维散点数据的线性拟合

该博客介绍了如何在MATLAB中对三维空间的散点数据进行线性拟合。通过创建随机散点,然后使用lsqnonlin函数找到最佳拟合直线,展示了两个不同散点集的拟合过程。最后提供了实现直线拟合的fit_line函数源代码。
摘要由CSDN通过智能技术生成

clc;

clear all;

close all;

num = 50; % num个随机点

Rand1 = randi([-1,1],num,3); %噪声范围

Rand2 = randi([-1,1],num,3);

Point1 = [1:0.5:0.5*(num+1); 1:0.5:0.5*(num+1); 1:0.5:0.5*(num+1)]'+ Rand1;

plot3(Point1(:,1),Point1(:,2),Point1(:,3),'r.');

Point2 = [0.5*(num+1):-0.5:1; 1:0.5:0.5*(num+1); 0.5*(num+1):-0.5:1]'+ Rand2;

hold on;

plot3(Point2(:,1),Point2(:,2),Point2(:,3),'g+');

%直线拟合1

t1=linspace(0,25);%有效范围

F1 = @(p)arrayfun(@(n)norm(cross(Point1(num,:)-[p(1),p(2),p(3)],...

[p(4),p(5),p(6)]))/norm([p(4),p(5),p(6)]),[1:size(Point1,1)]);

p= lsqnonlin(F1,[1 1 1 1 1 1]);

plot3(p(1)+t1*p(4),p(2)+t1*p(5),p(3)+t1*p(6));

%直线拟合2

t2=linspace(0,-8);

F2 = @(p)arrayfun(@(n)norm(

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值