<span style="font-size:14px;">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(cross(Point2(num,:)-[p(1),p(2),p(3)],...[p(4),p(5),p(6)]))/norm([p(4),p(5),p(6)]),[1:size(Point2,1)]);
p= lsqnonlin(F2,[25,2,25,1,1,1]); %初始化迭代
plot3(p(1)+t2*p(4),p(2)+t2*p(5),p(3)+t2*p(6));
grid on;
hold off;</span>

fit_line.m

<span style="font-size:14px;">function [a,resnorm] = fit_line(a0,data)
% 对三维数据进行直线拟合,将直线拟合成如下形式:
% x-a(1)    y-a(2)  z-a(3)
% ------ = ------ = ------
%  a(4)     a(5)     a(6)
% 原理:下面的 d 是各数据点到拟合直线的距离,利用 lsqnonlin 对 d 进行最小二乘
% a0 是初始值,data 是三维数据,第一行是 x,第二行是 y,第三行是 z
[a,resnorm] = lsqnonlin(@fit_line_fun,a0);   function d=fit_line_fun(a)   % 传给主函数的子函数   xdata=data(1,:);     ydata=data(2,:);      zdata=data(3,:);point=a(1:3);      v=a(4:6);      d(1:length(xdata))=0;       for n=1:length(xdata)           m=[xdata(n);ydata(n);zdata(n)]-point(:);d(n)=norm(cross(m,v(:)))/norm(v(:));% 利用解析几何的知识求距离d  end  end
end
</span>

实验效果图:

空间三维散点数据的线性拟合相关推荐

  1. WPS表格如何对散点数据进行指数函数拟合

    1 2 3 4 5 6 7 画出散点数据未能看出数据的趋势,而数据的趋势分析要用到函数的拟合.这篇经验先介绍如何使用WPS表格对散点数据进行指数函数的拟合,以及如何显示出拟合后的指数函数公式. 方法/ ...

  2. griddata - 插入二维或三维散点数据(绘制等值线图,应力应变云图,像素点图)

    在MATLAB 函数中, 使 v = f(x,y) 形式的曲面与向量 (x,y,v) 中的散点数据拟合 griddata 函数在 (xq,yq)指定的查询点对曲面进行插值并返回插入的值 vq.曲面始终 ...

  3. Matlab中griddata函数拟合三维散点

    griddata可以插入二维或三维散点数据 griddata有以下三种形式: ①vq = griddata(x,y,v,xq,yq) ②vq = griddata(x,y,z,v,xq,yq,zq) ...

  4. matlab 三维点 边界曲面,不用matlab如何从散点数据绘制极坐标三维曲面图?

    [ 在 OSN10 (老洪) 的大作中提到: ] : 标  题: Re: 不用matlab如何从散点数据绘制极坐标三维曲面图? : 发信站: 水木社区 (Sat Dec 15 20:47:17 201 ...

  5. c++ 显示三维散点图_【无机纳米材料科研制图——OriginLab 0209】Origin散点图线性拟合与非线性拟合...

    此篇,我们来分享对于散点图的线性拟合和非线性拟合. 一.线性拟合 1)绘制散点图. 如下图所示,我们随意编了一组数据,框选X.Y两列之后,点击Plot-->Symbol-->Scatter ...

  6. Java 使用 Apache commons-math3 线性拟合、非线性拟合实例(带效果图)

    Java 使用 CommonsMath3 的线性和非线性拟合实例,带效果图 例子查看 GitHub Gitee 在线查看 运行src/main/java/org/wfw/chart/Main.java ...

  7. origin中文版散点图拟合曲线_「测试狗」Origin入门教程:如何进行单段及多段线性拟合...

    在进行数据处理时,如果需要对绘制的散点图进行线性拟合,应该怎么操作呢?针对更为复杂的情况,按照不同需要进行分段线性拟合时,怎么样才能够实现多段拟合呢? 一.单段线性拟合 1.首先,把数据导入origi ...

  8. 线性八叉树_基于三维点云数据的线性八叉树编码压缩算法(权毓舒, 何明一,).pdf...

    基于三维点云数据的线性八叉树编码压缩算法(权毓舒, 何明一,) ·70 · 计算机应用研究 2005 年 基于三维点云数据的线性八叉树编码压缩算法 * 权毓舒, 何明一 ( 西北工业大学 电子信息学院 ...

  9. 一个简单的线性拟合问题,到底有多少种做法

    一个简单的线性拟合问题,到底有多少种做法 相信大家都做过线性拟合问题吧,其实就是给很多点,来求线性方程的斜率和截距.早在高中数学就有这类问题,我记得很清楚,如果出现在试卷中,一般出现在解答题的第二题左 ...

最新文章

  1. SpringMVC-Mybatis学习总结整理(下)
  2. Chart.js-雷达图分析(参数分析+例图)
  3. c++ 读文件 文件指针 继续读_FatFs文件系统使用笔记
  4. _DataStructure_C_Impl:Dijkstra算法求最短路径
  5. Protocol Buffer Java应用实例
  6. day10 局部变量 全局变量 作用域前奏
  7. vscode 调试python 无法连接远程服务器_vscode 远程调试python的方法
  8. 求1~n的全排列组合
  9. 端口号属于协议还是进程
  10. 怎么成为日上会员直邮_18个日上直邮问题汇总,可以参考一下哦
  11. CLR运行时细节 - 继承多态的实现
  12. 7-5 汽车加油问题 (20 分)(思路+详解)Come 宝!!!!!!!!!!!!!
  13. 【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论
  14. pl/sql中添加 shortcuts插件
  15. java技术分享ppt_精美PPT制作培训 | 技术二部内部分享
  16. [ACNOI2021]OEIS yyds
  17. hp linux 禁用u盘启动项,惠普台式机UEFI BIOS设置U盘启动
  18. 北京医保卡怎么使用?
  19. MODBUS通讯协议学习总结
  20. BabaSSL:支持半同态加密算法 EC-ElGamal

热门文章

  1. 登陆页老是提示验证码错误,validate验证控件IE下用remote方法明明返回true 但是还是报错,提示验证码错误...
  2. 什么叫时钟漂移(Wander)?时钟漂移与时钟抖动(jitter)的区别
  3. hdu 3879(最小割模型求解最大权闭合图)
  4. hdu 3790(最短路)
  5. php笔记之表单验证
  6. Oracle复杂查询21道题精析
  7. k8s之wsl2+kind+docker desktop搭建kubevela测试集群
  8. Kotlin学习笔记-----函数的定义
  9. __block 和 __weak的区别
  10. 高性能jdbc封装工具 Apache Commons DbUtils 1.6(转载)