​
data=xlsread('D:\matlab\data.xlsx')
[N, d] = size(data);
% init U
sampleIds = randsample(1:N, 4, false) %从n个点中随机选择三个点作为中心点
U = data(sampleIds, 1:3);            %以这三个点为中心形成簇类
labels_u = zeros(N, 1);              %初始化建立一个N行1列的零数组
stop = true;
while stop                           %把true复制给stop,需要一直循环for i = 1:N                      %从第1个点一直到第n个点x = data(i, 1:3);            %读取第1个数据放到X里面% check label        label = 0;                    %初始化label为0,代表是第几个簇类dist = 0;                     %初始化dist距离为0for j = 1:4         %计算到达四个中心点的距离,依次推断属于哪个簇类tmp_dist = sum((x-U(j, :)).^2);        if label == 0 || tmp_dist < dist       label = j;                         dist = tmp_dist;            %欧式距离更新为当前的更小值end                                    end                                        %循环结束if labels_u(i) ~= label            %如果第个i点不等于labelstop = false;                   %继续循环endlabels_u(i) = label;               %第个i点属于第label个簇类end                                          if stop == true                                %退出循环break;end%update U                                      %更新中心点new_U = zeros(4, d);                     %初始化中心点,并全部清零labels_count = zeros(4, 1);                    %统计不同簇类的个数for i = 1:N                                    %遍历所有点label = labels_u(i);                       %提取出簇类标志new_U(label, :) = new_U(label, :) + data(i, :);labels_count(label) = labels_count(label) + 1;    endfor j = 1:4%new_U(j, :) = new_U(j, :)/labels_count(j);        %初始化的中心点除以每个聚类里面总的个数endU = new_U;                                      %用新的U来代替E_in = 0;
for i = 1:N                                         %N个点需要重新遍历label = labels_u(i);                            %将label标签提取出来u = U(label, :);                   E_in = E_in + norm(data(i)-u);
end
E_in = E_in/N;         color=['r','g','b','y'];
figure
for i=1:4plot3(data(labels_u==i,1),data(labels_u==i,2),data(labels_u==i,3),'color',color(i),'linestyle','none','marker','x')hold on
end
axis equal​

最后的结果:

我们发现k-mean均值算法对是基于样本和簇中心之间的距离进行分类的聚类算法,他的聚类结果是偏向于球状的簇,因此对于球状簇比较适合求解出合适的分类效果,而当数据集变为非球状结构的数据集合,他并不能达到很好的理想聚类效果,因此,DBSCAN没准是一个处理非球状数据的良好解决办法,可能会具有较好的通用性。

作者邮箱是1171137119@qq.com 需要点云数据可以加我qq好友。

Kmeans算法基于三维点云数据相关推荐

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

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

  2. 基于三维点云数据的主成分分析方法(PCA)的python实现

    主成分分析(PCA)获取三维点云的坐标轴方向和点云法向量 # 实现PCA分析和法向量计算,并加载数据集中的文件进行验证import open3d as o3d # import os import n ...

  3. 基于ICP算法的三维点云数据拼接算法的实现

    1.问题描述: 通过合并比例因子引入标准迭代最近点(ICP)算法中,我将配准问题转化为一个7D的约束优化问题非线性空间.然后,我们应用奇异值分解(SVD)一种迭代求解此类优化问题的方法.最后,建立了一 ...

  4. 三维点云数据处理软件供技术原理说明_基于三维点云处理技术的工件识别和匹配...

    1. 引言 目前,随着自动化程度的提高,机器人导航.工业零件检测及抓取等众多领域对计算机视觉系统的要求越来越高 [1],基于二维图像的物体识别已经无法满足日常作业的需求.而由于三维扫描技术的发展,结构 ...

  5. matlab 光度 三维重构 code,基于matlab的三维点云数据三维重建

    基于matlab的三维点云数据三维重建,通过快速构建三角网,实现三维模型的建立,并提供实例数据用于实验. 三维重建的英文术语名称是3D Reconstruction. 三维重建是指对三维物体建立适合计 ...

  6. 点云平面提取_基于LiDAR点云数据滤波方法

    基于LiDAR点云数据滤波方法 机载激光雷达所获取的数据被称为"点云(points cloud)"它在三维空间中呈现出随机分布的形状.在点云中,有些点属于真实的地形表面的点,有些点 ...

  7. 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查

    目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查 原文 Are We Hungry for 3D LiDAR Data for Semantic Segmentatio ...

  8. 动手学无人驾驶(4):基于激光雷达点云数据3D目标检测

    上一篇文章<动手学无人驾驶(3):基于激光雷达3D多目标追踪>介绍了3D多目标追踪,多目标追踪里使用的传感器数据为激光雷达Lidar检测到的数据,本文就介绍如何基于激光雷达点云数据进行3D ...

  9. TI AWR1843毫米波雷达采集三维点云数据(ROS)

    毫米波雷达以其稳定性.对不同环境的适应能力.价格等方面的优势逐步引起了科研人员的注意,本文主要介绍利用了TI(德州仪器)的AWR1843设备,基于ROS系统进行采集点云数据的流程.供大家参考及为自己做 ...

最新文章

  1. 从样本处理到决策模型,如何用NLP识别盗版资源?
  2. 【c语言】蓝桥杯算法提高 输入输出格式练习
  3. reduce_sum() got an unexpected keyword argument 'keep_dims'
  4. MYSQL 看书笔记
  5. python中用来占位_自定义占位符,如python中的None
  6. C语言 | 6种常用的转换工具函数盘点
  7. ARMs3c2440开发板挂接NFS服务
  8. Android 系统(240)---底层如何简易的获取一个从AP传下来的parameter(flag)
  9. Linux系统基本操作(一)—光盘挂载/卸载
  10. PYTHON笔记 面向对象程序设计
  11. linux下安装xgboost
  12. Tapestry5之页面显示
  13. 流氓又见流氓!-有感雅虎中国通过公证部门 证明雅虎助手非恶意软件
  14. vue 倒计时 插件_vue倒计时组件
  15. 《腾讯传》的读书笔记与相关读后感2600字
  16. 【论文泛读18】利用BERT进行端到端面向方面的情感分析
  17. 单线程与多线程使用场景
  18. Linux系统库函数之strsep
  19. 深度学习怎么跑代码?
  20. 成都盛铭轩:客服应该怎么做

热门文章

  1. Java类类getMethod()方法及示例
  2. vue引入jQuery
  3. java 去掉pdf文字_java – 使用pdfbox从pdf中删除不可见的文本
  4. ps蒙版使用计算机一级,全国计算机一级Photoshop基础训练
  5. redis哨兵模式配置
  6. Tomcat 优化方案
  7. 一个可以查询全国火车票剩余票数的网址~以后回家不怕没座了~~
  8. 小米10系统版本Android,小米10的安卓11稳定版本再次正式推送
  9. Jpg格式图片怎么弄?这样转换更清晰
  10. 改进的大猩猩部队优化算法(Modified Gorilla Troops Optimizer,MGTO)(原文作者)