% K-Means聚类算法

clc

clear all

close all

m=200;% 产生m个样本点

k=3;% 选择K个中心点

eps=1e-7; % 迭代结束的阈值

X=100*rand(1,m);% 样本点X坐标

Y=100*rand(1,m);% 样本点Y坐标

% 显示聚类前二维点

figure,subplot(1,2,1),plot(X,Y,'ro'),title('聚类前二维点');xlabel('X轴');ylabel('Y轴');

% type_num存放k类样本点

for i=1:k

eval(['type_',num2str(i),'=[];']);

end

% 颜色列表,由于颜色只有六种,k最好不大于6

color_list={'m','g','b','y','r','k'};

% 存放初始中心点

cp=zeros(k,2);

for i=1:k

cp(i,:)=[X(i) Y(i)];

end

% 存放第i个点到第j个点的距离

len=zeros(m,3);

% 计算样本点到k个中心点的距离

% 若某个样本i到某个中心点j的距离最小,则把样本点归到j类

% m类分完后,计算每一类均值向量作为新的聚类中心

% 若新的聚类中心与原来的聚类中心之差小于设定的阈值

% 结束迭代

times=0;% 记录迭代次数

error=zeros(1,k);

while(1)

for i=1:m

for j=1:k

len(i,j)=sqrt((cp(j,1)-X(i))^2+(cp(j,2)-Y(i))^2);

end

% 离第num类中心点距离最小,就把它放到type_num中

flag=find(len(i,:)==min(len(i,:)));

eval(['type_',num2str(flag),'(size((type_',num2str(flag),'),1)+1,:)=[X(i) Y(i)];']);

end

times=times+1;% 迭代次数加1

% 存放新的中心点

for i=1:k

cp(i+times*k,:)=eval(['[mean(type_',num2str(i),'(:,1)) mean(type_',num2str(i),'(:,2))]']);

tmp=cp(i+(times-1)*k,:)-cp(i+times*k,:);

error(i)=sum(tmp.^2);

end

if max(error)

break

end

end

% 显示聚类后结果

cpx=cp(1+(times-1)*k:k+(times-1)*k,1);

cpy=cp(1+(times-1)*k:k+(times-1)*k,2);

subplot(1,2,2)

for i=1:k

eval(['plot(type_',num2str(i),'(:,1),','type_',num2str(i),'(:,2),[color_list{ceil(6*rand)},''o''])']);

text(cpx(i),cpy(i),['第',num2str(i),'类中心点'])

hold on;

end

plot(cpx,cpy,'r*');

title(['聚类后二维点(迭代',num2str(times),'次)']);xlabel('X轴');ylabel('Y轴');

matlab调用kmeans_K_Means算法的MATLAB实现相关推荐

  1. matlab 流星雨,dijkstra算法及其matlab实现

    http://blog.sina.com.cn/lyqmath 简介 dijkstra算法(迪杰斯特拉算法)是一种经典的优化算法.以其应用的广泛性与简便性,值得我们去研究. Dijkstra算法是典型 ...

  2. matlab 实现ahp算法,用Matlab实现AHP的算法

    用Matlab实现AHP的算法 1.MATLAB的基本内容 MATLAB(MATrix LABoratory,矩阵实验室的缩写)是一种特殊用途的计算机程序优化执行工程和科学计算.它开始为旨在执行矩阵数 ...

  3. fcm算法的MATLAB实现,FCM算法的matlab程序(初步)

    FCM算法的matlab程序 1.采用iris数据库 iris_data.txt 5.1 3.5 1.4 0.2 4.9 3 1.4 0.2 4.7 3.2 1.3 0.2 4.6 3.1 1.5 0 ...

  4. fdtd算法的matlab程序,FDTD算法的Matlab程序

    <FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...

  5. matlab调用c函数语言,MATLAB调用C/C++函数的方法

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 通过MATLAB将C/C++函数编译成MEX函数,在MATLAB中就可以调用了. 1,首先装编译器 Matlab里键入m ...

  6. matlab调用maple数据画图,Matlab调用Maple

    Matlab调用Maple 2011-05-10 09:17 如何在matlab中调用maple (不用安装maple软件就可调用) 方法1: maple('maplestatement') 其中ma ...

  7. lms算法的matlab实现,LMS算法的MATLAB实现

    LMS算法的MATLAB实现 用MATLAB实现LMS算法,将输入和输出信号对比,并给出均方误差曲线.假设滤波器抽头个数为K,数据长度为N. >> g=100; N=1024; k=128 ...

  8. 智能控制matlab程序,智能算法的Matlab仿真程序及教程

    智能算法的Matlab仿真程序及教程 所属分类:*行业应用 开发工具:C/C++ 文件大小:3834KB 下载次数:4 上传日期:2020-07-02 11:17:04 上 传 者:nickyang ...

  9. dfp matlab源程序,DFP算法及Matlab程序[精校版本]

    <DFP算法及Matlab程序[精校版本]>由会员分享,可在线阅读,更多相关<DFP算法及Matlab程序[精校版本](4页珍藏版)>请在人人文库网上搜索. 1.作业二 用DF ...

最新文章

  1. mysql备份psb文件怎么打开_Navicat for MySQL 数据备份教程
  2. #6280. 数列分块入门 4(区间修改,区间查询)
  3. 在MFC中使用AFXBEGINTHREAD的方法
  4. 第七周项目一-成员函数、友元函数和一般函数有区别(1)
  5. centos 查找nginx_centos7 nginx安装/启动/进程状态/杀掉进程
  6. maven设置jdk版本(全局设置和工程设置)
  7. Oracle RMAN备份与还原 - 联机备份讲解
  8. 日本老年人开始送外卖了 锻炼赚钱两不误 网友:饿死了么外卖?
  9. Linux下source命令
  10. 【从C到C++学习笔记】类声明/公有私有保护成员/数据抽象和封装
  11. CDA I 级 备考之 PART 1
  12. 利用TextRank算法制作一个可以提取聊天关键词的QQ群机器人
  13. java sdk qq登录授权,springboot开发qq第三方授权登录(示例代码)
  14. 前端项目搭建基本流程
  15. 电源过冲怎么测试软件,【经验】以DL3000电子负载为例,3分钟学会一个电源动态响应测试技巧...
  16. can是什么时候处于显性_CAN总线什么情况下为空闲状态? - 全文
  17. 用nodejs爬数据
  18. QQ、微信消息定时发送/自动发送【支持发送文件】
  19. excel使用教程_汉字资料如何进行数据分析?Excel中医学汉字资料转化为数字资料视频教程——If/Iserror/Find函数的结合使用...
  20. 最简单的单层神经网络实现鸢尾花分类

热门文章

  1. 警惕谷歌新形式的垄断
  2. System Analysic utility tools
  3. 【概率论】1-4:事件的的并集(Union of Events and Statical Swindles)
  4. Android FFmpeg系列——5 音视频同步播放
  5. ubuntu19.04更改国内镜像源
  6. Ice笔记--C++线程与并发(二)
  7. YOLOX——Windows 10下环境配置
  8. 论文笔记:Image Caption(Show and Tell)
  9. 用c语言完成银行排号系统,【分享】C语言 银行取票排队系统
  10. linux 下串口的配置需要注意