资源简介
自己编写了一个实现ISODATA聚类算法的程序。(目标程序是将样本分成两类,各个参数见程序注释)

代码片段和文件信息
clc;
clear;
x=[0 0;1 1;2 2;4 3;5 3;4 4;5 4;6 5];%样本点
figure(1);
plot(x(:1)x(:2)‘.‘);
hold on;
w=zeros(1length(x));%class type
%----------------------------------初始化参数-----------------------------------
%------C为类别,Tn为每类允许最少样本数,Ts为类内各分量标准差上限,Td为两类中心间最小距离下限
%------L为每次迭代可以合并的最多的类数目,I为允许的最大迭代次数,Nc为初始中心数
%------z_center为每类中心的存放(初始为一类),Ip为当前迭代次数
C=2;Tn=2;Ts=1;Td=4;
L=1;I=4;Nc=1;
z_center=[00];Ip=1;
plot(z_center(:1)z_center(:2)‘ro‘);
while(Ip<=I)
%-----------------------------(2)clustering-----------------------------------
%----------------------------------------------------------------------
Center_d=pdist2(z_centerx);
[rc]=size(Center_d);
for (i=1:c)
[valuew(i)]=min(Center_d(:i));
end
x1=[x w‘];%data and class type
%-----------------------------(3)if(class member %----------------------------------------------------------------------
C_num=zeros(1r);%class num
for(i=1:r)
for(j=1:c)
if(w(j)==i)
C_num(i)=C_num(i)+1;
end
end
end
sign=0;
for(i=r:1)
if(C_num(i) sign=1;
Nc=Nc-1;
z_center(i:)=[];
end
end
if (sign==1)
sign=0;
continue;%goto (2)
end
%--------------------------(4)-----------------------------------------
%----------------------------------------------------------------------
avr_cd=zeros(1r);
avr_d=0;
temp=0;
%compute the new class center
for i=1:r
x2=sum(x1(x1(:3)==i:));
x2(3)=[];
z_center(i:)=x2/C_num(i);
end
%compute the average distance of each class
for i=1:r
for (j=1:length(x1))
if(x1(j3)==i)
temp=temp+pdist2(z_center(i:)x(j:));
end
end
avr_cd(i)=temp/C_num(i);
temp=0;
end
%compute the whole average distance
for i=1:r
temp=temp+avr_cd(i)*C_num(i);
end
avr_d=temp/length(x);
temp=0;
%--------------------------(5)-----------------------------------------
%----------------------------------------------------------------------
if(Nc<=C/2)
for (i=1:r)
sigma(i:)=std(x(x1(:3)==i:));
end
for (i=1:r)
max_sigma(i1)=max(sigma(i:));
end
for (i=1:r)
if ((max_sigma(i)>Ts)&&((avr_cd(i)>=avr_d&&(C_num(i)>2*(Tn+1)))))
Nc=Nc+1;
A=z_center(1:i-1:);
B=z_center(i+1:end:);
Z1=z_center(i:)+[0.5*max_sigma(i)0.5*max_sigma(i)];
Z2=z_center(i:)-[0.5*max_sigma(i)0.5*max_sigma(i)];
z_center=[A;Z1;Z2;B];
end
end
%------
else
if (Nc>=2*C||mod(Nc2)~=0)
for(i=1:r-1)
for(j=i+1:r)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5222 2013-04-25 18:14 isodata.m
文件 84480 2013-04-25 18:04 ISODATA流程图.vsd
----------- --------- ---------- ----- ----
89702 2
- 上一篇:music算法频谱估计
- 下一篇:matlab 自动识别物体
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论