matlab调用kmeans_K_Means算法的MATLAB实现
% 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实现相关推荐
- matlab 流星雨,dijkstra算法及其matlab实现
http://blog.sina.com.cn/lyqmath 简介 dijkstra算法(迪杰斯特拉算法)是一种经典的优化算法.以其应用的广泛性与简便性,值得我们去研究. Dijkstra算法是典型 ...
- matlab 实现ahp算法,用Matlab实现AHP的算法
用Matlab实现AHP的算法 1.MATLAB的基本内容 MATLAB(MATrix LABoratory,矩阵实验室的缩写)是一种特殊用途的计算机程序优化执行工程和科学计算.它开始为旨在执行矩阵数 ...
- 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 ...
- fdtd算法的matlab程序,FDTD算法的Matlab程序
<FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...
- matlab调用c函数语言,MATLAB调用C/C++函数的方法
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 通过MATLAB将C/C++函数编译成MEX函数,在MATLAB中就可以调用了. 1,首先装编译器 Matlab里键入m ...
- matlab调用maple数据画图,Matlab调用Maple
Matlab调用Maple 2011-05-10 09:17 如何在matlab中调用maple (不用安装maple软件就可调用) 方法1: maple('maplestatement') 其中ma ...
- lms算法的matlab实现,LMS算法的MATLAB实现
LMS算法的MATLAB实现 用MATLAB实现LMS算法,将输入和输出信号对比,并给出均方误差曲线.假设滤波器抽头个数为K,数据长度为N. >> g=100; N=1024; k=128 ...
- 智能控制matlab程序,智能算法的Matlab仿真程序及教程
智能算法的Matlab仿真程序及教程 所属分类:*行业应用 开发工具:C/C++ 文件大小:3834KB 下载次数:4 上传日期:2020-07-02 11:17:04 上 传 者:nickyang ...
- dfp matlab源程序,DFP算法及Matlab程序[精校版本]
<DFP算法及Matlab程序[精校版本]>由会员分享,可在线阅读,更多相关<DFP算法及Matlab程序[精校版本](4页珍藏版)>请在人人文库网上搜索. 1.作业二 用DF ...
最新文章
- mysql备份psb文件怎么打开_Navicat for MySQL 数据备份教程
- #6280. 数列分块入门 4(区间修改,区间查询)
- 在MFC中使用AFXBEGINTHREAD的方法
- 第七周项目一-成员函数、友元函数和一般函数有区别(1)
- centos 查找nginx_centos7 nginx安装/启动/进程状态/杀掉进程
- maven设置jdk版本(全局设置和工程设置)
- Oracle RMAN备份与还原 - 联机备份讲解
- 日本老年人开始送外卖了 锻炼赚钱两不误 网友:饿死了么外卖?
- Linux下source命令
- 【从C到C++学习笔记】类声明/公有私有保护成员/数据抽象和封装
- CDA I 级 备考之 PART 1
- 利用TextRank算法制作一个可以提取聊天关键词的QQ群机器人
- java sdk qq登录授权,springboot开发qq第三方授权登录(示例代码)
- 前端项目搭建基本流程
- 电源过冲怎么测试软件,【经验】以DL3000电子负载为例,3分钟学会一个电源动态响应测试技巧...
- can是什么时候处于显性_CAN总线什么情况下为空闲状态? - 全文
- 用nodejs爬数据
- QQ、微信消息定时发送/自动发送【支持发送文件】
- excel使用教程_汉字资料如何进行数据分析?Excel中医学汉字资料转化为数字资料视频教程——If/Iserror/Find函数的结合使用...
- 最简单的单层神经网络实现鸢尾花分类
热门文章
- 警惕谷歌新形式的垄断
- System Analysic utility tools
- 【概率论】1-4:事件的的并集(Union of Events and Statical Swindles)
- Android FFmpeg系列——5 音视频同步播放
- ubuntu19.04更改国内镜像源
- Ice笔记--C++线程与并发(二)
- YOLOX——Windows 10下环境配置
- 论文笔记:Image Caption(Show and Tell)
- 用c语言完成银行排号系统,【分享】C语言 银行取票排队系统
- linux 下串口的配置需要注意