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

📄 lvq.m

📁 QMF滤波器在语音编码中的应用,通过matlab 实验程序设计和实现二通道镜像滤波器(QMF、CQF、OQF)在语音编码中的应用
💻 M
字号:
function v=lvq(x,para,p)
%initialize
etaz=para.etaz;
N=para.it;
i=0;
n=size(x,1);
c=para.clusters;
fno=para.fno;
if(p==0)
s=para.s(1);
else
    s=para.s(p);
end

%------------------------

%initialize codebook

 v=rand(c,s*s);
 v=v*255;
imwrite(uint8(v),'codebook.bmp');
v=imread('codebook.bmp');
v=double(v);
%------------------------

N1=1;
if(para.cit~=0)
    N1=para.cit;
    N=10;%+para.step;
end

 for i=N1:N
     eta=etaz*(1-i/N);
     
    for j=1:n
     %find winning prototype by euclidean
     %mini=(norm(x(j,:)-v(1,:)));
       %dif(1)=mini;
       %win=1;
        %for k=2:c
          % dif(k)=(norm(x(j,:)-v(k,:)));
           %   if(dif(k)<mini)
           %   mini=dif(k);
           %   win=k;
           %end
           
        
           %end
         
           mini=(((repmat(x(j,:),[c 1])-v(:,:)).^2))';
           
           %--------------------
           %t=find(mini==0);
           %mini(t(1:end))=.01;
           %t=find(mini==inf);
           %mini(t(1:end))=10000;
           %---------------------
if(not (size(x,2)==1))
    mini=(sum(mini))';
end
mini=sqrt(mini);

m=min(mini);
temp=find(mini==m);
if(length(temp)==1)
    win=temp;
else
win=temp(1);
end
dif=mini;
     %-------------------------------------
     
     %calculate u,w,n
     %---------------------
     [u ,w ,nw]=findweight(dif,win,c,fno,para.alpha,para.beta,para.gama);
     %--,---------------------
     
     %update prototype
     
     vnew=v(win,:)+eta*(x(j,:)-v(win,:)).*(1+sum(w));
      for k=1:c
          v(k,:) = v(k,:) + eta.*(x(j,:)-v(k,:)).*nw(k);
      end
     v(win,:)=vnew;
     
   clear temp;  
 end
 
end
v=v(:,1:s*s);


            

⌨️ 快捷键说明

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