%%%%%%%%%%%%%%%%%

%函数名称 MaxMinDisFun(x,Theta)

%输入参数:

% x : x为n*m的特征样本矩阵,每行为一个样本,每列为样本的特征

% Theta:即θ,可用试探法取一固定分数,如:1/2

%输出参数:

% pattern:输出聚类分析后的样本类别

%函数功能 :利用最大最小距离算法聚类样本数据,

%%%%%%%%%%%%%%%%%%%%%

function [pattern]=MaxMinDisFun(x,Theta)

maxDistance=0;

index=1;%相当于指针指示新中心点的位置

k=1; %中心点计数,也即是类别

center=zeros(size(x)); %保存中心点

patternNum=size(x,1); %输入的数据数(样本数)

%distance=zeros(patternNum,3);%distance每列表示所有样本到每个聚类中心的距离

minDistance=zeros(patternNum,1);%取较小距离

pattern=(patternNum);%表示类别

center(1,:)=x(1,:);%第一个聚类中心

pattern(1)=1;

for i=2:patternNum

distance(i,1)=sqrt((x(i,:)-center(1,:))*(x(i,:)-center(1,:))');%欧氏距离,与第1个聚类中心的距离

minDistance(i,1)=distance(i,1);

pattern(i)=1;%第一类

if(maxDistance

maxDistance=distance(i,1);%与第一个聚类中心的最大距离

index=i;%与第一个聚类中心距离最大的样本

end

end

k=k+1;

center(k,:)=x(index,:);%把与第一个聚类中心距离最大的样本作为第二 个聚类中心

pattern(index)=2;%第二类

minDistance(index,1)=0;

while 1

for i=2:patternNum

if(minDistance(i,1)~=0)

distance(i,k)=sqrt((x(i,:)-center(k,:))*(x(i,:)-center(k,:))');%与第k个聚类中心的距离

if(minDistance(i,1)>distance(i,k))

minDistance(i,1)=distance(i,k);

pattern(i)=k;

end

end

end

max=0;

for i=2:patternNum

if((max

max=minDistance(i,1);

index=i;

end

end

if(max>(maxDistance*Theta))

k=k+1;

center(k,:)=x(index,:);

pattern(index)=k;

minDistance(index,1)=0;

else

break;

end

end

2.实例C++代码:

这是网友的C++代码,可以参考一下,好像有点问题,自己看着办哈~娃哈哈哈哈……

#include

#include

const int N=10;

void main(void)

{ int center[20];

float s[2][N]={{0,3,2,1,5,4,6,5,6,7},

{0,8,2,1,3,8,3,4,4,5}};

float D[20][N];

float min[N];

int minindex[N];

int clas[N];

float theshold;

float theta=0.5;

float D12=0.0;

float tmp=0;

int index=0;

center[0]=0;//first center

int i,k=0,j,l;

for(j=0;j

{ tmp=(s[0][j]-s[0][0])*(s[0][j]-s[0][0])+(s[1][j]-s[1][0])*(s[1][j]-s[1][0]);

D[0][j]=(float)sqrt(tmp);

if(D[0][j]>D12) {D12=D[0][j];index=j;}

}

center[1]=index;//second center

k=1;

index=0;

theshold=D12;

while(theshold>theta*D12){

for(j=0;j

tmp=(s[0][j]-s[0][center[k]])*(s[0][j]-s[0][center[k]])+

(s[1][j]-s[1][center[k]])*(s[1][j]-s[1][center[k]]);

D[k][j]=(float)sqrt(tmp);}

for(j=0;j

float tmp=D12;

for(l=0;l<=k;l++)

if (D[l][j]

min[j]=tmp;minindex[j]=index;

}//min-operate

float max=0;index=0;

for(j=0;j

if(min[j]>max) {max=min[j];index=j;}

if (max>theta*D12){k++;center[k]=index;}// add a center

theshold=max;// prepare to loop next time

} //求出所有中心,final array min[] is still useful

for(j=0;j

for(i=0;i<2;i++)

{for(j=0;j

cout<

cout<

}

cout<

cout<

for(l=0;l

cout<

for(j=0;j

cout<

cout<

}

最大最小距离聚类算法c语言,聚类算法-最大最小距离算法(实例+代码)相关推荐

  1. 坐标移动c语言,C语言 坐标移动详解及实例代码

    搜索热词 题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动.从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面. ...

  2. rsa算法c语言实现_数据结构与算法之线性表-顺序表实现(C语言版本)

    原文托管在Github: https://github.com/shellhub/blog/issues/52 数据结构与算法之线性表-顺序表实现(C语言版本) 前言 数据结构与算法是一个程序员必备的 ...

  3. c语言代码先来先服务算法_C语言十大经典排序算法(动态演示+代码,值得收藏)...

    以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. 时间.空间复杂度比较 排序算法 平均时间复杂度 最差时间复杂度 空间复杂度 数据对象 ...

  4. java合一算法_Prolog语言的编译原理:合一算法

    Prolog语言的编译原理:合一算法 分类:软考 | 更新时间:2016-07-08| 来源:转载 Prolog是一种基于谓词演算的程序设计语言.Prolog是一种说明性语言,它的基本意思是程序员着重 ...

  5. c4.5算法 程序语言,决策树之C4.5算法详解-Go语言中文社区

    决策树之C4.5算法详解 主要内容 C4.5算法简介 分裂属性的选择--信息增益率 连续型属性的离散化处理 剪枝--PEP(Pessimistic Error Pruning)剪枝法 缺失属性值的处理 ...

  6. 最坏适应算法c语言源码,首次适应算法,最佳适应算法,最坏适应算法源代码

    这是一个非常完美的程序,输出显示的格式也很棒,里面包含首次适应算法,最佳适应算法,最坏适应算法 #include #include #define Free 0 //空闲状态 #define Busy ...

  7. 自适应对消算法c语言,LMS自适应对消算法

    LMS算法最小均方误差算法,是一种自适应滤波算法.该算法通过对输入信号进行滤波输出一个信号y(n),将输出信号与期望输出信号作差得到一个误差信号,再将误差信号输入到自适应滤波器中形成一个反馈回路.LM ...

  8. 一文速学-时间序列分析算法之移动平均模型(MA)详解+Python实例代码

    目录 前言 一.移动平均模型(MA) 模型原理 自回归 移动平均模型 自相关系数 常用的 MA 模型的自相关系数 通用: MA(1)模型: MA(2)模型: 自协方差函数 二.Python案例实现 平 ...

  9. 虚拟存储页面置换算法c语言,虚拟存储器管理页面置换算法模拟实验.doc

    虚拟存储器管理页面置换算法模拟实验 淮海工学院计算机工程学院 实验报告书 课程名:< 操作系统原理A > 题 目: 虚拟存储器管理 页面置换算法模拟实验 班 级: 软件*** 学 号: 2 ...

  10. 图着色问题贪心算法c语言,区间图着色问题(贪心算法)C++实现

    区间图着色问题 问题描述:假设要用很多个教室对一组活动进行调度.我们希望使用尽可能少的教室来调度所有活动.请给出一个算法,来确定哪一个活动使用哪一间教室. 这个问题也被称为区间图着色问题,即相容的活动 ...

最新文章

  1. 深度讲解:同步/异步/阻塞/非阻塞/BIO/NIO/apr
  2. SAP CRM Fiori My Appointment应用里点了Edit按钮后三个Roundtrip分析
  3. P3188-[HNOI2007]梦幻岛宝珠【背包】
  4. FormatJS – 让你的 Web 应用程序国际化
  5. 关于超过255台电脑的内网IP规划问题
  6. java将所有的字符串转换为大写或小写
  7. opencv3.4.x和opencv4.x中 cv2.findContours的不同 ValueError: too many values to unpack (expected 2)
  8. Mp3原理及文件格式解析(from)
  9. 求两个数最小公倍数的7种方法
  10. 自动驾驶最全基础知识、课程、论文、数据集、开源软件等资源整理分享
  11. <aop:aspectj-autoproxy />AOP自动代理
  12. 如何改变图片尺寸?怎么调整图片大小?
  13. Java如何解析个人或他人微信二维码内的信息
  14. 阿里云手机号停机了怎么办?阿里云手机号收不到验证码,阿里云子账号建立教程
  15. 日记侠:你想开始写文章吗?(可以赚钱的)
  16. 在谷歌浏览器上面安装AxueRP插件。
  17. 物联网毕业设计 stm32远程智能浇花灌溉系统 - 单片机 嵌入式
  18. 联想笔记本电脑键盘灯怎么开启_联想的键盘灯怎么开_联想笔记本键盘亮灯按哪个键-win7之家...
  19. 安装和卸载.deb包
  20. Code Embedding研究系列11-ContraFlow

热门文章

  1. Java进阶:Maven高级
  2. Animate:基础学习
  3. 面向对象(Python):学习笔记之封装
  4. 标定_基于目标的激光雷达与相机外参标定方法汇总
  5. 分布式存储系统学习笔记(一)—什么是分布式系统(1)—基本概念
  6. 单目深度估计方法:算法梳理与代码实现
  7. 深度学习三种分割定义
  8. Network in Network 算法解析
  9. JS-两个空数组为什么不相等?
  10. 1.2Android系统移植的主要工作