Lloydmax.m
上传用户:loeagle
上传日期:2013-03-02
资源大小:1236k
文件大小:1k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. function [a,y,dist]=lloydmax(funfcn,b,n,tol,p1,p2,p3)
  2. %LLOYDMAX  returns the the Lloyd-Max quantizer and the mean-squared 
  3. %    quantization error for a symmetric distribution
  4. %          [A,Y,DIST]=LLOYDMAX(FUNFCN,B,N,TOL,P1,P2,P3).     
  5. %     funfcn=The density function given 
  6. %    in an m-file. It can depend on up to three 
  7. %    parameters, p1,p2,p3.
  8. %     a=the vector giving the boundaries of the 
  9. %    quantization regions. 
  10. %    [-b,b] approximates support of the density function.
  11. %    n=the number of quantization regions.
  12. %    y=the quantization levels.
  13. %     p1,p2,p3=parameters of funfcn.
  14. %    tol=the relative error.
  15. args=[];
  16. for j=1:nargin-4
  17.   args=[args,',p',int2str(j)];
  18. end
  19. args=[args,')'];
  20. v=eval(['variance(funfcn,-b,b,tol',args]);
  21. a(1)=-b;
  22. d=2*b/n;
  23. for i=2:n
  24.   a(i)=a(i-1)+d;
  25. end
  26. a(n+1)=b;
  27. dist=v;
  28. [y,newdist]=eval(['mse_dist(funfcn,a,tol',args]);
  29. while(newdist<0.99*dist),
  30.   for i=2:n
  31.     a(i)=(y(i-1)+y(i))/2;
  32.   end
  33.   dist=newdist;
  34.   [y,newdist]=eval(['mse_dist(funfcn,a,tol',args]);
  35. end