2025年ISODATA聚类

ISODATA聚类isodata 聚类提取图片主色并生成主色聚类图 matlab 代码如下 能运行 聚类函数 function index class mean ISODATA x K theta N theta S theta c L I

大家好,我是讯享网,很高兴认识大家。

isodata聚类提取图片主色并生成主色聚类图(matlab)

代码如下,能运行。

聚类函数:

function[index,class,mean] = ISODATA(x,K,theta_N,theta_S,theta_c,L,I) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%input parameters%%%%%% % x : data % K : 预期的聚类中心数 % theta_N : 每一聚类中心中最少的样本数,少于此数就不作为一个独立的聚类 % theta_S :一个聚类中样本距离分布的标准差 % theta_c : 两聚类中心之间的最小距离,如小于此数,两个聚类进行合并 % L : 在一次迭代运算中可以和并的聚类中心的最多对数 % I :迭代运算的次数序号 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% step1 n = size(x,1); N_c = K; mean = cell(K,1); for i=1:K mean{ 
   i} = x(i,:); end ite = 1; while ite<I flag = 1; while flag %% step2 class = cell(size(mean)); for i=1:n num = Belong2(x(i,:),mean); class{ 
   num} = [class{ 
   num};x(i,:)]; end %% step3 for i=1:N_c size_i = size(class{ 
   i},1); if size_i<theta_N class_i = class{ 
   i}; mean = DeleteRow(mean,i); class = DeleteRow(class,i); N_c = N_c-1; for j=1:size_i class_ij = class_i(j,:);%the j'th row of class{ 
   i} num = Belong2(class_ij,mean); class{ 
   num} = [class{ 
   num};class_ij]; end end end %% step4 for i=1:N_c if ~isempty(mean{ 
   i}) mean{ 
   i} = sum(class{ 
   i})./size(class{ 
   i},1); end end %% step5 Dis = zeros(N_c,1)

讯享网
小讯
上一篇 2025-02-14 10:19
下一篇 2025-04-07 09:54

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/24033.html