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

通讯编程文档

开发平台:

Matlab

  1. function dist=uq_mdpnt(funfcn,b,n,delta,tol,p1,p2,p3)
  2. %UQ_MDPNT  returns the distortion of a uniform quantizer
  3. %     with quantization points set to the midpoints
  4. %    DIST=UQ_MDPNT(FUNFCN,B,N,DELTA,TOL,P1,P2,P3).
  5. %    funfcn=source density function given in an m-file 
  6. %    with at most three parameters, p1,p2,p3. The density
  7. %    function is assumed to be an even function.
  8. %    [-b,b]=the support of the source density function.
  9. %    n=number of levels.
  10. %     delta=level size.
  11. %     p1,p2,p3=parameters of the input function.
  12. %    dist=distortion.
  13. %    tol=the relative error.
  14. if (2*b<delta*(n-1))
  15.   error('Too many levels for this range.'); return
  16. end
  17. args=[];
  18. for j=1:nargin-5
  19.   args=[args,',p',int2str(j)];
  20. end
  21. args=[args,')'];
  22. a(1)=-b;
  23. a(n+1)=b;
  24. a(2)=-(n/2-1)*delta;
  25. y(1)=a(2)-delta/2;
  26. for i=3:n
  27.   a(i)=a(i-1)+delta;
  28.   y(i-1)=a(i)-delta/2;
  29. end
  30. y(n)=a(n)+delta;
  31. dist=0;
  32. for i=1:n
  33.   newfun = 'x_a2_fnct' ;
  34.   dist=dist+eval(['quad(newfun,a(i),a(i+1),tol,[],funfcn,', num2str(y(i)), args]);
  35. end