⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kmeans.m

📁 量化程序
💻 M
字号:
% Scalar Quantizer using the Generalized Loyd-Max algorithm (K-Means)

clear all;
close all;


 % Your data 
 yt=[-1.2114 -0.0145 0.8306 0.5607 0.6279 0.5675 0.2693 1.6014 1.0359 0.8131 1.3292 0.9818 0.6266 -0.1455 0.1053 -0.8704 -0.1103];
 y=sort(yt);

%Number of quantizer levels (centroids)
levels=4;

%Number of iterations
max_iter=20;

%Mean square error
mse=zeros(1,max_iter);
qlevel=zeros(max_iter+1,levels); %This vector holds the centroids generated at each iteration
C=zeros(levels, length(y));

pad=floor(length(y)/levels);
ind=1;
for lev=1:levels
    C(lev,:)=[y(ind:ind+pad-1),zeros(1,length(y)-pad)];
    ind=ind+pad;
end



   for k=1:levels
      [x,ind2]=find(C(k,:)~=0);
      qlevel(1,k)=sum(C(k,:))/length(ind2);
    end

for iter=1:max_iter

   for k=1:levels                 
      [x,ind2]=find(C(k,:)~=0);
      mse(iter)=mse(iter)+sum((C(k,1:length(ind2))-qlevel(iter,k)*ones(1,length(ind2))).^2 )  ;
      qlevel(iter+1,k)=sum(C(k,:))/length(ind2);
    end
    cnt=zeros(1,levels);
    for len=1:length(y)
    
        for k=1:levels
          dist(k)=(y(len)-qlevel(iter+1,k))^2;
        end        
        [x,ind]=min(dist);

        cnt(ind)=cnt(ind)+1;
        C(ind,cnt(ind))=y(len);
        C(ind,cnt(ind)+1:length(y))=zeros(1,length(y)-cnt(ind));
    end%len
    
end%iter


    mse=mse./length(y);
    figure(1);
    stem(1:iter,mse);
    title('Mean Square error Vs. Iterations for the K-means algorithm');
    xlabel('iterations');
    ylabel('MSE');
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -