📄 cmean.asv
字号:
function CMean(CLassNum,Sample)
n=size(Sample);
InitialCenter=zeros(CLassNum,n(2));%初始化C个类中心
for i=1:CLassNum
InitialCenter(i,:)=Sample(i,:)
end;
a=0;b=0;w=zeros(1,n(1));
w1=ones(1,n(1));
while w1~=w %循环迭代条件
w1=w;
for i=1:n(1)
C=inf;
for j=1:CLassNum
Dis(i,j)=dis(Sample(i,:),InitialCenter(j,:)); %计算矢量之间距离
if C>Dis(i,j),
C=Dis(i,j) %找出 d min,记录它的位置
a=i;
b=j;
end;
end;
w(i)=b; %分类
end;
num=zeros(1,CLassNum);
for i=1:n(1)
for j=1:CLassNum
if w(i)==j,
num(j)=num(j)+1; %计算每类所含模式个数
end;
end;
end;
InitialCenter=zeros(CLassNum,n(2));%初始化C个类中心
CLass=InitialCenter;
for j=1:CLassNum
for i=1:n(1)
if w(i)==j
InitialCenter(j,:)=InitialCenter(j,:)+Sample(i,:) %重新分类的类心
end;
end;
InitialCenter(j,:)=InitialCenter(j,:)/num(j);
end;
end;
j=1;k=1;
for i=1:n(1)
if w(i)==1,
%%w1(j,:)=Sample(i,:);
j=j+1; %%第一类个数
end;
if w(i)==2,
%%w2(k,:)=Sample(i,:);
k=k+1; %%第二类个数
end;
end;
w1=zeros(j-1,n(2));
w2=zeros(k-1,n(2));
j=1;k=1;
for i=1:n(1)
if w(i)==1,
w1(j,:)=Sample(i,:);
j=j+1; %%第一类个数
end;
if w(i)==2,
w2(k,:)=Sample(i,:);
k=k+1; %%第二类个数
end;
end;
InitialCenter
w
w1 %%第一类样本
w2 %%第二类样本
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -