?? 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 + -