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

通讯编程文档

开发平台:

Matlab

  1. function [y,dist]=uq_dist(funfcn,b,c,n,delta,s,tol,p1,p2,p3)
  2. %UQ_DIST  returns the distortion of a uniform quantizer
  3. %    with quantization points set to the centroids
  4. %   [Y,DIST]=UQ_DIST(FUNFCN,B,C,N,DELTA,S,TOL,P1,P2,P3)
  5. %   funfcn=source density function given in an m-file 
  6. %   with at most three parameters, p1,p2,p3.
  7. %   [b,c]=The support of the source density function.
  8. %   n=number of levels.
  9. %    delta=level size.
  10. %   s=the leftmost quantization region boundary.
  11. %    p1,p2,p3=parameters of the input function.
  12. %   y=quantization levels.
  13. %   dist=distortion.
  14. %   tol=the relative error.
  15. if (c-b<delta*(n-2))
  16.   error('Too many levels for this range.'); return
  17. end
  18. if (s<b)
  19.   error('The leftmost boundary too small.'); return
  20. end
  21. if (s+(n-2)*delta>c)
  22.   error('The leftmost boundary too large.'); return
  23. end
  24. args=[];
  25. for j=1:nargin-7
  26.   args=[args,',p',int2str(j)];
  27. end
  28. args=[args,')'];
  29. a(1)=b;
  30. for i=2:n
  31.   a(i)=s+(i-2)*delta;
  32. end
  33. a(n+1)=c;
  34. [y,dist]=eval(['mse_dist(funfcn,a,tol',args]);